This is an automated email from the ASF dual-hosted git repository.

cdeppisch 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 db733235d9b CAMEL-21017: Consolidate open-api options for Camel JBang 
export command
db733235d9b is described below

commit db733235d9bfd20abf0b892b43628c6146debead
Author: Christoph Deppisch <[email protected]>
AuthorDate: Fri Jul 26 09:35:16 2024 +0200

    CAMEL-21017: Consolidate open-api options for Camel JBang export command
    
    - Use single command option --open-api
    - Kubernetes trait configures ConfigMap volume mount for values starting 
with prefix "configmap:"
    - Arbitrary export command adds OpenAPI specification as source to exported 
project for values without "configmap:" prefix
---
 .../modules/ROOT/pages/camel-jbang-kubernetes.adoc           | 12 ++++++------
 .../camel/dsl/jbang/core/commands/k/IntegrationRun.java      |  4 +++-
 .../dsl/jbang/core/commands/kubernetes/KubernetesExport.java | 11 +++++++----
 .../dsl/jbang/core/commands/kubernetes/KubernetesRun.java    |  4 ++--
 .../jbang/core/commands/kubernetes/traits/TraitHelper.java   |  6 +++---
 .../jbang/core/commands/kubernetes/KubernetesExportTest.java |  5 +++--
 6 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
index cdcef3e3568..3e25175e420 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
@@ -112,7 +112,7 @@ The Camel JBang Kubernetes export command provides several 
options to customize
 |--resource
 |Add a runtime resource from a Configmap or a Secret (syntax: 
[configmap,secret]:name[/key][@path], where name represents the 
configmap/secret name, key optionally represents the configmap/secret key to be 
filtered and path represents the destination path).
 
-|--open-api-spec
+|--open-api
 |Add an OpenAPI spec (syntax: [configmap,file]:name).
 
 |--env
@@ -921,17 +921,17 @@ The syntax to specify openapi trait options is as follows:
 camel kubernetes export Sample.java --trait openapi.[key]=[value]
 ----
 
-TIP: There is also a shortcut option `--open-api-spec=configmap:my-configmap`.
-
+.Example
 [source,bash]
 ----
-camel kubernetes export Sample.java --open-api-spec configmap:[value]
+camel kubernetes export Sample.java --trait 
openapi.configmaps=configmap:my-spec
 ----
 
-.Example
+TIP: There is also a shortcut option `--open-api=configmap:my-configmap`.
+
 [source,bash]
 ----
-camel kubernetes export Sample.java --trait 
openapi.configmaps=configmap:my-spec
+camel kubernetes export Sample.java --open-api configmap:[name-of-configmap]
 ----
 
 This results in the following container specification in the Deployment 
resource.
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/IntegrationRun.java
 
b/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/IntegrationRun.java
index 0f5913ad88e..a15ed6c4034 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/IntegrationRun.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/IntegrationRun.java
@@ -363,7 +363,9 @@ public class IntegrationRun extends KubernetesBaseCommand {
 
     private void convertOptionsToTraits(Traits traitsSpec) {
         TraitHelper.configureMountTrait(traitsSpec, configs, resources, 
volumes);
-        TraitHelper.configureOpenApiSpec(traitsSpec, openApis);
+        if (openApis != null) {
+            Stream.of(openApis).forEach(openapi -> 
TraitHelper.configureOpenApiSpec(traitsSpec, openapi));
+        }
         TraitHelper.configureProperties(traitsSpec, properties);
         TraitHelper.configureBuildProperties(traitsSpec, buildProperties);
         TraitHelper.configureEnvVars(traitsSpec, envVars);
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 10fac52011b..f91ea10be36 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
@@ -70,9 +70,6 @@ public class KubernetesExport extends Export {
                         description = "Add a runtime resource from a Configmap 
or a Secret (syntax: [configmap|secret]:name[/key][@path], where name 
represents the configmap/secret name, key optionally represents the 
configmap/secret key to be filtered and path represents the destination path).")
     protected String[] resources;
 
-    @CommandLine.Option(names = { "--open-api-spec" }, description = "Add an 
OpenAPI spec (syntax: [configmap|file]:name).")
-    protected String[] openApis;
-
     @CommandLine.Option(names = { "--env" },
                         description = "Set an environment variable in the 
integration container, for instance \"-e MY_VAR=my-value\".")
     protected String[] envVars;
@@ -140,6 +137,7 @@ public class KubernetesExport extends Export {
         exportDir = configurer.exportDir;
         files = configurer.files;
         gav = configurer.gav;
+        openapi = configurer.openapi;
         fresh = configurer.fresh;
         download = configurer.download;
         quiet = configurer.quiet;
@@ -224,7 +222,11 @@ public class KubernetesExport extends Export {
         Traits traitsSpec = getTraitSpec();
 
         TraitHelper.configureMountTrait(traitsSpec, configs, resources, 
volumes);
-        TraitHelper.configureOpenApiSpec(traitsSpec, openApis);
+        if (openapi != null && openapi.startsWith("configmap:")) {
+            TraitHelper.configureOpenApiSpec(traitsSpec, openapi);
+            // Remove OpenAPI spec option to avoid duplicate handling by 
parent export command
+            openapi = null;
+        }
         TraitHelper.configureProperties(traitsSpec, properties);
         TraitHelper.configureContainerImage(traitsSpec, image,
                 resolvedImageRegistry, resolvedImageGroup, projectName, 
getVersion());
@@ -472,6 +474,7 @@ public class KubernetesExport extends Export {
             String exportDir,
             List<String> files,
             String gav,
+            String openapi,
             boolean fresh,
             boolean download,
             boolean quiet,
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
index 853c658f710..34f5376d237 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
@@ -68,7 +68,7 @@ public class KubernetesRun extends KubernetesBaseCommand {
     String[] resources;
 
     @CommandLine.Option(names = { "--open-api" }, description = "Add an 
OpenAPI spec (syntax: [configmap|file]:name).")
-    String[] openApis;
+    String openApi;
 
     @CommandLine.Option(names = { "--env" },
                         description = "Set an environment variable in the 
integration container, for instance \"-e MY_VAR=my-value\".")
@@ -182,6 +182,7 @@ public class KubernetesRun extends KubernetesBaseCommand {
                         workingDir,
                         List.of(filePaths),
                         gav,
+                        openApi,
                         true,
                         true,
                         true,
@@ -198,7 +199,6 @@ public class KubernetesRun extends KubernetesBaseCommand {
         export.properties = properties;
         export.configs = configs;
         export.resources = resources;
-        export.openApis = openApis;
         export.envVars = envVars;
         export.volumes = volumes;
         export.connects = connects;
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/TraitHelper.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/TraitHelper.java
index 6e7a9bf32b2..0c7a6e87b1c 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/TraitHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/TraitHelper.java
@@ -244,8 +244,8 @@ public final class TraitHelper {
         traitsSpec.setCamel(camelTrait);
     }
 
-    public static void configureOpenApiSpec(Traits traitsSpec, String[] 
openApis) {
-        if (openApis == null || openApis.length == 0) {
+    public static void configureOpenApiSpec(Traits traitsSpec, String openApi) 
{
+        if (openApi == null || !openApi.startsWith("configmap:")) {
             return;
         }
 
@@ -253,7 +253,7 @@ public final class TraitHelper {
         if (openapiTrait.getConfigmaps() == null) {
             openapiTrait.setConfigmaps(new ArrayList<>());
         }
-        openapiTrait.getConfigmaps().addAll(List.of(openApis));
+        openapiTrait.getConfigmaps().add(openApi);
         traitsSpec.setOpenapi(openapiTrait);
     }
 
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 6e75daf6bff..a8f50586117 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
@@ -600,8 +600,9 @@ class KubernetesExportTest extends KubernetesBaseTest {
     @ParameterizedTest
     @MethodSource("runtimeProvider")
     public void shouldAddOpenApis(RuntimeType rt) throws Exception {
-        KubernetesExport command = createCommand(new String[] { 
"classpath:route.yaml" }, "--runtime=" + rt.runtime());
-        command.openApis = new String[] { "configmap:openapi/spec.yaml" };
+        KubernetesExport command = createCommand(new String[] { 
"classpath:route.yaml" },
+                "--runtime=" + rt.runtime(),
+                "--open-api=configmap:openapi/spec.yaml");
         command.doCall();
 
         Deployment deployment = getDeployment(rt);

Reply via email to