This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new d414ba6d948 camel-jbang - Only observe for k8s by default when
exporting (#18670)
d414ba6d948 is described below
commit d414ba6d94866c3a4c1314edca500ed8481b1151
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Jul 21 17:12:19 2025 +0200
camel-jbang - Only observe for k8s by default when exporting (#18670)
* 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 ++++++++++++++++++++++
.../core/commands/kubernetes/KubernetesExport.java | 1 +
.../kubernetes/KubernetesExportBaseTest.java | 22 ++++++++++++++++
.../commands/kubernetes/KubernetesExportTest.java | 28 +++++++++++++++++++++
10 files changed, 93 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/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java
index 00ca75ceaad..6ada2e40f1d 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java
@@ -181,6 +181,7 @@ public class KubernetesExport extends Export {
logging = configurer.logging;
loggingLevel = configurer.loggingLevel;
verbose = configurer.verbose;
+ observe = true; // always include observability-services for kubernetes
}
public Integer export() throws Exception {
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));
+ }
+ }
+
}