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 51d632ae34b camel-jbang-plugin-kubernetes disable the knative by 
default (#16975)
51d632ae34b is described below

commit 51d632ae34b72ae564ace9f33fabbe7dbc5b381a
Author: Claudio Miranda <clau...@claudius.com.br>
AuthorDate: Thu Jan 30 03:12:48 2025 -0300

    camel-jbang-plugin-kubernetes disable the knative by default (#16975)
    
    If the knative trait is enabled by default, the MetadataHelper
    loads the route, resulting in the following error
    IllegalStateException: Cannot find RestConsumerFactory in Registry or as a 
Component to use
    when there is a http consumer.
---
 .../modules/ROOT/pages/camel-jbang-kubernetes.adoc           | 10 +++++++++-
 .../kubernetes/traits/knative/KnativeServiceTrait.java       |  4 ----
 .../commands/kubernetes/traits/knative/KnativeTrait.java     | 12 +++++++-----
 .../commands/kubernetes/KubernetesExportKnativeTest.java     | 11 +++++++++++
 4 files changed, 27 insertions(+), 10 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 99f180c82fd..0b3eaabe6ac 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
@@ -449,7 +449,7 @@ https://knative.dev/docs/serving/[Knative serving] defines 
a set of resources on
 When Knative serving is available on the target Kubernetes cluster, you may 
want to use the Knative service resource instead of an arbitrary Kubernetes 
service resource.
 The Knative service trait will create such a resource as part of the 
Kubernetes manifest.
 
-NOTE: You need to enable the Knative service trait with `--trait 
knative-service.enabled=true` option. Otherwise, the Camel JBang export will 
always create an arbitrary Kubernetes service resource.
+NOTE: The `knative-service` trait is disabled by default, you need to enable 
the Knative service trait with `--trait knative-service.enabled=true` option. 
Otherwise, the Camel JBang export will always create an arbitrary Kubernetes 
service resource.
 
 The trait offers following options for customization:
 
@@ -532,6 +532,8 @@ The export command assists you in configuring both the 
Knative component and the
 
 You can configure the Knative component with the Knative trait.
 
+NOTE: The `knative` trait is disabled by default, you need to enable the 
Knative trait with `--trait knative.enabled=true` option.
+
 The trait offers the following options for customization:
 
 [cols="2m,1m,5a"]
@@ -595,6 +597,8 @@ to connect your Camel application with the Knative broker.
 
 The Camel JBang Kubernetes plugin is able to automatically create this trigger 
for you.
 
+NOTE: The `knative` trait is disabled by default, you need to enable the 
Knative trait with `--trait knative.enabled=true` option.
+
 The following Camel route uses the Knative event component and references a 
Knative broker by its name.
 The plugin inspects the code and automatically generates the Knative trigger 
as part of the Kubernetes manifest that is used
 to run the Camel application on Kubernetes.
@@ -672,6 +676,8 @@ Now you can just deploy the application using the 
Kubernetes manifest and see th
 Knative channels represent another form of producing and consuming events from 
the Knative broker.
 Instead of using a trigger, you can create a subscription for a Knative 
channel to consume events.
 
+NOTE: The `knative` trait is disabled by default, you need to enable the 
Knative trait with `--trait knative.enabled=true` option.
+
 The Camel route that connects to a Knative channel in order to receive events 
looks like this:
 
 [source,yaml]
@@ -750,6 +756,8 @@ The Knative eventing operator will automatically resolve 
the Knative resource (e
 
 The Camel JBang Kubernetes plugin leverages the sink binding concept for all 
routes that use the Knative component as an output.
 
+NOTE: The `knative` trait is disabled by default, you need to enable the 
Knative trait with `--trait knative.enabled=true` option.
+
 The following route produces events on a Knative broker:
 
 [source, yaml]
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeServiceTrait.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeServiceTrait.java
index 0b0fbc8330e..0507fe5fe21 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeServiceTrait.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeServiceTrait.java
@@ -52,15 +52,11 @@ public class KnativeServiceTrait extends KnativeBaseTrait {
         if (context.getKnativeService().isPresent()) {
             return false;
         }
-
         // one of Knative traits needs to be explicitly enabled
         boolean enabled = false;
         if (traitConfig.getKnativeService() != null) {
             enabled = 
Optional.ofNullable(traitConfig.getKnativeService().getEnabled()).orElse(false);
-        } else if (traitConfig.getKnative() != null) {
-            enabled = 
Optional.ofNullable(traitConfig.getKnative().getEnabled()).orElse(false);
         }
-
         return enabled && TraitHelper.exposesHttpService(context);
     }
 
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java
index f83d2262595..187423f4c33 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java
@@ -64,13 +64,15 @@ public class KnativeTrait extends KnativeBaseTrait {
 
     @Override
     public boolean configure(Traits traitConfig, TraitContext context) {
-        Knative knativeTrait = 
Optional.ofNullable(traitConfig.getKnative()).orElseGet(Knative::new);
-
-        if (knativeTrait.getEnabled() != null && !knativeTrait.getEnabled()) {
-            // Knative explicitly disabled
+        // Knative trait needs to be explicitly enabled
+        boolean enabled = false;
+        if (traitConfig.getKnative() != null) {
+            enabled = 
Optional.ofNullable(traitConfig.getKnative().getEnabled()).orElse(false);
+        }
+        if (!enabled) {
             return false;
         }
-
+        Knative knativeTrait = 
Optional.ofNullable(traitConfig.getKnative()).orElseGet(Knative::new);
         List<SourceMetadata> allSourcesMetadata = context.getSourceMetadata();
 
         if (knativeTrait.getChannelSources() == null) {
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportKnativeTest.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportKnativeTest.java
index ea75ef881d0..c3e345198df 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportKnativeTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportKnativeTest.java
@@ -98,6 +98,7 @@ public class KubernetesExportKnativeTest extends 
KubernetesExportBaseTest {
         KubernetesExport command = createCommand(new String[] { 
"classpath:knative-event-source.yaml" },
                 "--image-group=camel-test", "--runtime=" + rt.runtime());
         command.traits = new String[] {
+                "knative.enabled=true",
                 "knative.filters=source=my-source" };
         int exit = command.doCall();
         Assertions.assertEquals(0, exit);
@@ -142,6 +143,8 @@ public class KubernetesExportKnativeTest extends 
KubernetesExportBaseTest {
     public void shouldAddKnativeSubscription(RuntimeType rt) throws Exception {
         KubernetesExport command = createCommand(new String[] { 
"classpath:knative-channel-source.yaml" },
                 "--image-group=camel-test", "--runtime=" + rt.runtime());
+        command.traits = new String[] {
+                "knative.enabled=true" };
         command.doCall();
 
         Assertions.assertTrue(hasService(rt));
@@ -181,6 +184,9 @@ public class KubernetesExportKnativeTest extends 
KubernetesExportBaseTest {
     public void shouldAddKnativeBrokerSinkBinding(RuntimeType rt) throws 
Exception {
         KubernetesExport command = createCommand(new String[] { 
"classpath:knative-event-sink.yaml" },
                 "--image-group=camel-test", "--runtime=" + rt.runtime());
+
+        command.traits = new String[] {
+                "knative.enabled=true" };
         command.doCall();
 
         Assertions.assertTrue(hasService(rt));
@@ -221,6 +227,9 @@ public class KubernetesExportKnativeTest extends 
KubernetesExportBaseTest {
     public void shouldAddKnativeChannelSinkBinding(RuntimeType rt) throws 
Exception {
         KubernetesExport command = createCommand(new String[] { 
"classpath:knative-channel-sink.yaml" },
                 "--image-group=camel-test", "--runtime=" + rt.runtime());
+
+        command.traits = new String[] {
+                "knative.enabled=true" };
         command.doCall();
 
         Assertions.assertTrue(hasService(rt));
@@ -261,6 +270,8 @@ public class KubernetesExportKnativeTest extends 
KubernetesExportBaseTest {
     public void shouldAddKnativeEndpointSinkBinding(RuntimeType rt) throws 
Exception {
         KubernetesExport command = createCommand(new String[] { 
"classpath:knative-endpoint-sink.yaml" },
                 "--image-group=camel-test", "--runtime=" + rt.runtime());
+        command.traits = new String[] {
+                "knative.enabled=true" };
         command.doCall();
 
         Assertions.assertTrue(hasService(rt));

Reply via email to