You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2025/07/21 13:48:41 UTC
(camel) 01/01: CAMEL-22187: camel-jbang - Camel export should only include observability if --observe=true
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch obs
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 3f3c7e92abd366bd9b2a50eb4edc2693f70edafb
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Jul 21 15:48:19 2025 +0200
CAMEL-22187: camel-jbang - Camel export should only include observability if --observe=true
---
.../ROOT/pages/camel-4x-upgrade-guide-4_14.adoc | 7 ++++++
.../camel/dsl/jbang/core/commands/Export.java | 1 +
.../dsl/jbang/core/commands/ExportBaseCommand.java | 5 ++++
.../src/main/resources/templates/main-pom.tmpl | 4 ---
.../src/main/resources/templates/quarkus-pom.tmpl | 4 ---
.../main/resources/templates/spring-boot-pom.tmpl | 4 ---
.../camel/dsl/jbang/core/commands/ExportTest.java | 29 ++++++++++++++++++++++
.../kubernetes/KubernetesExportBaseTest.java | 22 ++++++++++++++++
.../commands/kubernetes/KubernetesExportTest.java | 28 +++++++++++++++++++++
9 files changed, 92 insertions(+), 12 deletions(-)
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_14.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_14.adoc
index 3e1e1f8e50c..848acb59ebd 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_14.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_14.adoc
@@ -8,6 +8,13 @@ from both 4.0 to 4.1 and 4.1 to 4.2.
=== camel-core
+=== camel-jbang
+
+The `camel export` will not include `camel-observabilities-services` out of the box. To include this, then use `--observe` to enable
+this during export.
+
+Notice when exporting to kubernetes then `camel-observabilities-services` is always enabled.
+
=== camel-google
The scopes parameter for camel-google-calendar, camel-google-calendar-streams, camel-google-drive, camel-google-mail, camel-google-mail-streams and camel-google-sheets-streams has been defined as String instead of Collection<String>. For the migration users will need to, eventually, define scopes as a comma separated list of scopes instead of a Collection instance. For more information the related issue is CAMEL-22247.
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index 075da7f830e..772c44e3585 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -172,6 +172,7 @@ public class Export extends ExportBaseCommand {
cmd.name = this.name;
cmd.port = this.port;
cmd.managementPort = this.managementPort;
+ cmd.observe = this.observe;
cmd.gav = this.gav;
cmd.mavenSettings = this.mavenSettings;
cmd.mavenSettingsSecurity = this.mavenSettingsSecurity;
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 0d27c8dc55a..989d4d85dbb 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -208,6 +208,10 @@ public abstract class ExportBaseCommand extends CamelCommand {
@CommandLine.Option(names = { "--open-api" }, description = "Adds an OpenAPI spec from the given file (json or yaml file)")
protected String openapi;
+ @CommandLine.Option(names = { "--observe" }, defaultValue = "false",
+ description = "Enable observability services")
+ protected boolean observe;
+
@CommandLine.Option(names = {
"--dir",
"--directory" }, description = "Directory where the project will be exported", defaultValue = ".")
@@ -360,6 +364,7 @@ public abstract class ExportBaseCommand extends CamelCommand {
run.managementPort = managementPort;
run.excludes = excludes;
run.openapi = openapi;
+ run.observe = observe;
run.download = download;
run.packageScanJars = packageScanJars;
run.runtime = runtime;
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl
index f8f893a6e64..215128c1de1 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl
@@ -35,10 +35,6 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-main</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-observability-services</artifactId>
- </dependency>
{{ .CamelDependencies }}
<!-- for logging in color -->
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/quarkus-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/quarkus-pom.tmpl
index 502fc4e4e8d..5f6cd38ae21 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/quarkus-pom.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/quarkus-pom.tmpl
@@ -49,10 +49,6 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-core</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-observability-services</artifactId>
- </dependency>
{{ .CamelDependencies }}
<dependency>
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl
index e97ad707dce..71e22e080f7 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl
@@ -52,10 +52,6 @@
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.camel.springboot</groupId>
- <artifactId>camel-observability-services-starter</artifactId>
- </dependency>
{{ .CamelDependencies }}
<dependency>
<groupId>org.springframework.boot</groupId>
diff --git a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
index f78e0d169dd..475306a1915 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/ExportTest.java
@@ -585,4 +585,33 @@ class ExportTest {
Assertions.assertTrue(f.exists());
}
+ @ParameterizedTest
+ @MethodSource("runtimeProvider")
+ public void shouldExportObserve(RuntimeType rt) throws Exception {
+ LOG.info("shouldExportObserve {}", rt);
+ Export command = new Export(new CamelJBangMain());
+ CommandLine.populateCommand(command, "--gav=examples:route:1.0.0", "--dir=" + workingDir,
+ "--runtime=%s".formatted(rt.runtime()), "--observe=true", "target/test-classes/route.yaml");
+ int exit = command.doCall();
+
+ Assertions.assertEquals(0, exit);
+ Model model = readMavenModel();
+ Assertions.assertEquals("examples", model.getGroupId());
+ Assertions.assertEquals("route", model.getArtifactId());
+ Assertions.assertEquals("1.0.0", model.getVersion());
+
+ if (rt == RuntimeType.main) {
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(), "org.apache.camel", "camel-observability-services", null));
+ } else if (rt == RuntimeType.springBoot) {
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(), "org.apache.camel.springboot",
+ "camel-observability-services-starter", null));
+ } else if (rt == RuntimeType.quarkus) {
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(), "org.apache.camel.quarkus",
+ "camel-quarkus-observability-services", null));
+ }
+ }
+
}
diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportBaseTest.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportBaseTest.java
index bfb2f3a244a..d4f19a47645 100644
--- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportBaseTest.java
+++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportBaseTest.java
@@ -40,6 +40,7 @@ import org.apache.camel.RuntimeCamelException;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
import org.apache.camel.dsl.jbang.core.common.RuntimeType;
import org.apache.camel.util.IOHelper;
+import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.junit.jupiter.api.Assertions;
@@ -150,4 +151,25 @@ public class KubernetesExportBaseTest extends KubernetesBaseTest {
model.setPomFile(f);
return model;
}
+
+ boolean containsDependency(List<Dependency> deps, String group, String artifact, String version) {
+ Dependency dep = new Dependency();
+ dep.setGroupId(group);
+ dep.setArtifactId(artifact);
+ dep.setVersion(version);
+ boolean found = false;
+ for (int i = 0; i < deps.size() && !found; i++) {
+ Dependency d = deps.get(i);
+ if (version == null) {
+ d.setVersion(null);
+ }
+ found = toGAV(d).equals(toGAV(dep));
+ }
+ return found;
+ }
+
+ private String toGAV(Dependency d) {
+ return d.getGroupId() + ":" + d.getArtifactId() + ":" + d.getVersion();
+ }
+
}
diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
index af3a2083f74..6b4cb7da3b9 100644
--- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
+++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
@@ -673,4 +673,32 @@ class KubernetesExportTest extends KubernetesExportBaseTest {
Assertions.assertEquals(8779, ports.get(1).getPort());
Assertions.assertEquals("jolokia", ports.get(1).getTargetPort().getStrVal());
}
+
+ @ParameterizedTest
+ @MethodSource("runtimeProvider")
+ public void shouldObserveByDefault(RuntimeType rt) throws Exception {
+ KubernetesExport command = createCommand(new String[] { "classpath:route.yaml" },
+ "--gav=examples:route:1.0.0", "--runtime=" + rt.runtime());
+ int exit = command.doCall();
+ Assertions.assertEquals(0, exit);
+
+ Model model = readMavenModel();
+ Assertions.assertEquals("examples", model.getGroupId());
+ Assertions.assertEquals("route", model.getArtifactId());
+ Assertions.assertEquals("1.0.0", model.getVersion());
+
+ if (rt == RuntimeType.main) {
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(), "org.apache.camel", "camel-observability-services", null));
+ } else if (rt == RuntimeType.springBoot) {
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(), "org.apache.camel.springboot",
+ "camel-observability-services-starter", null));
+ } else if (rt == RuntimeType.quarkus) {
+ Assertions.assertTrue(
+ containsDependency(model.getDependencies(), "org.apache.camel.quarkus",
+ "camel-quarkus-observability-services", null));
+ }
+ }
+
}