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));
+        }
+    }
+
 }

Reply via email to