This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch kt in repository https://gitbox.apache.org/repos/asf/camel.git
commit 15035bb6e58a60d431115eb4869e2f349ef739fe Author: Claus Ibsen <[email protected]> AuthorDate: Tue Aug 19 16:07:01 2025 +0200 CAMEL-22335: camel k8s export - Fix to load traits defined in application.properties --- .../core/commands/kubernetes/KubernetesExport.java | 12 ++++++++++++ .../core/commands/kubernetes/KubernetesExportTest.java | 12 ++++++++++++ .../commands/kubernetes/traits/TraitHelperTest.java | 4 +++- .../src/test/resources/application.properties | 18 ++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) 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 7310ab74668..83955df26d5 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 @@ -201,6 +201,9 @@ public class KubernetesExport extends Export { RunHelper.dirToFiles(name, files); } } + if (exportBaseDir == null) { + exportBaseDir = Paths.get("."); + } printer().println("Exporting application ..."); @@ -290,6 +293,15 @@ public class KubernetesExport extends Export { // override from profile specific configuration applicationProfileProperties = extractPropertiesTraits(exportBaseDir.resolve("application-" + profile + ".properties")); + } else { + for (String f : files) { + String name = FileUtil.stripPath(f); + if ("application.properties".equals(name)) { + // load default properties configuration + applicationProfileProperties + = extractPropertiesTraits(exportBaseDir.resolve(f)); + } + } } Traits traitsSpec = getTraitSpec(applicationProfileProperties, applicationProperties); 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 7730a93b0d2..51f21a05b5e 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 @@ -764,4 +764,16 @@ class KubernetesExportTest extends KubernetesExportBaseTest { } } + @ParameterizedTest + @MethodSource("runtimeProvider") + public void ingressTrait(RuntimeType rt) throws Exception { + KubernetesExport command + = createCommand(new String[] { "classpath:route.yaml", "src/test/resources/application.properties", }, + "--gav=examples:route:1.0.0", "--runtime=" + rt.runtime()); + int exit = command.doCall(); + Assertions.assertEquals(0, exit); + + Assertions.assertTrue(hasIngress(rt)); + } + } diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/TraitHelperTest.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/TraitHelperTest.java index bd49ae0911b..7b773bc7aa4 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/TraitHelperTest.java +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/TraitHelperTest.java @@ -74,11 +74,13 @@ public class TraitHelperTest { Properties properties = new Properties(); properties.setProperty("camel.jbang.trait.container.port", "8080"); properties.setProperty("camel.jbang.trait.container.port-name", "custom"); + properties.setProperty("camel.jbang.trait.environment.FOO", "my value"); properties.setProperty("camel.jbang.name", "MyRoute"); String[] result = TraitHelper.extractTraitsFromProperties(properties); Assertions.assertNotNull(result); - Assertions.assertEquals(2, result.length); + Assertions.assertEquals(3, result.length); Assertions.assertTrue(Arrays.asList(result).contains("container.port-name=custom")); + Assertions.assertTrue(Arrays.asList(result).contains("environment.FOO=my value")); String[] resultEmpty = TraitHelper.extractTraitsFromProperties(new Properties()); Assertions.assertNotNull(resultEmpty); diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/resources/application.properties b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/resources/application.properties new file mode 100644 index 00000000000..c1ff17b8e05 --- /dev/null +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/resources/application.properties @@ -0,0 +1,18 @@ +## --------------------------------------------------------------------------- +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## --------------------------------------------------------------------------- + +camel.jbang.trait.ingress.enabled = true \ No newline at end of file
