camel-k icon indicating copy to clipboard operation
camel-k copied to clipboard

Unable to specify any CloudEvent attributes or extensions, except for `type`

Open matzew opened this issue 1 year ago • 0 comments

Requirement

Creating a Pipe that is reading from a Knative Broker, requires to set the type attribute of the CloudEvent, see #5529 for reference. This is than used when Camel-K creates a Knative Trigger and passed to the spec.filter.attribues of that Trigger

However it is not possible to provide any other CE metadata (e.g. defined attributes or extensions), such as:

apiVersion: camel.apache.org/v1
kind: Pipe
metadata:
  name: log-sink-pipe
spec:
  source:
    ref:
      kind: Broker
      apiVersion: eventing.knative.dev/v1
      name: test-broker-2
    properties:
      type: com.corp.my.beer.source
      source: /bar
  sink:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1
      name: log-sink

It would be nice if there would be a better support for any CE attribute/extension, and than being applied down to the Trigger, perhaps has as a custom propertie? So that Camel-k could create as flexible/powerful Triggers

Problem

Camel-K seems to not support creating Knative Triggers with filter attributes, other than the type of the CloudEvent message.

On the pod of the pipe, I see this log:

2024-05-22 12:24:27,542 INFO  [org.apa.cam.k.Runtime] (main) Apache Camel K Runtime 3.8.1
2024-05-22 12:24:27,547 INFO  [org.apa.cam.qua.cor.CamelBootstrapRecorder] (main) Bootstrap runtime: org.apache.camel.quarkus.main.CamelMainRuntime
2024-05-22 12:24:27,552 INFO  [org.apa.cam.mai.MainSupport] (main) Apache Camel (Main) 4.4.1 is starting
2024-05-22 12:24:27,610 INFO  [org.apa.cam.k.sup.SourcesSupport] (main) Loading routes from: SourceDefinition{name='camel-k-embedded-flow', language='yaml', type='source', location='file:/etc/camel/sources/camel-k-embedded-flow.yaml', }
2024-05-22 12:24:27,937 ERROR [org.apa.cam.qua.mai.CamelMainRuntime] (main) Failed to start application: org.apache.camel.FailedToCreateRouteException: Failed to create route binding: Route(binding)[From[knative:event/com.corp.my.beer.source?ap... because of Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{source=/bar}]
	at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:85)
	at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:728)
	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:594)
	at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2385)
	at org.apache.camel.quarkus.core.FastCamelContext.doInit(FastCamelContext.java:194)
	at org.apache.camel.support.service.BaseService.init(BaseService.java:78)
	at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2021)
	at org.apache.camel.support.service.BaseService.start(BaseService.java:105)
	at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2040)
	at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:212)
	at org.apache.camel.quarkus.main.CamelMain.doStart(CamelMain.java:94)
	at org.apache.camel.support.service.BaseService.start(BaseService.java:113)
	at org.apache.camel.quarkus.main.CamelMain.startEngine(CamelMain.java:140)
	at org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:49)
	at org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:45)
	at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot173480958.deploy_0(Unknown Source)
	at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot173480958.deploy(Unknown Source)
	at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
	at io.quarkus.runtime.Application.start(Application.java:101)
	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
	at io.quarkus.runner.GeneratedMain.main(Unknown Source)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:62)
	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:33)
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{source=/bar}]
	at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:830)
	at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:730)
	at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:61)
	at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:195)
	at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:99)
	at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:79)
	... 30 more
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{source=/bar}]
	at org.apache.camel.support.DefaultComponent.validateParameters(DefaultComponent.java:302)
	at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:191)
	at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:796)
	... 35 more

2024-05-22 12:24:27,998 ERROR [io.qua.run.Application] (main) Failed to start application (with profile [prod]): java.lang.RuntimeException: Failed to start quarkus
	at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
	at io.quarkus.runtime.Application.start(Application.java:101)
	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
	at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
	at io.quarkus.runner.GeneratedMain.main(Unknown Source)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:62)
	at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:33)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: org.apache.camel.FailedToCreateRouteException: Failed to create route binding: Route(binding)[From[knative:event/com.corp.my.beer.source?ap... because of Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{source=/bar}]
	at org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:47)
	at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot173480958.deploy_0(Unknown Source)
	at io.quarkus.deployment.steps.CamelBootstrapProcessor$boot173480958.deploy(Unknown Source)
	... 13 more
Caused by: java.lang.RuntimeException: org.apache.camel.FailedToCreateRouteException: Failed to create route binding: Route(binding)[From[knative:event/com.corp.my.beer.source?ap... because of Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{source=/bar}]
	at org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:65)
	at org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:45)
	... 15 more
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route binding: Route(binding)[From[knative:event/com.corp.my.beer.source?ap... because of Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{source=/bar}]
	at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:85)
	at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:728)
	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:594)
	at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2385)
	at org.apache.camel.quarkus.core.FastCamelContext.doInit(FastCamelContext.java:194)
	at org.apache.camel.support.service.BaseService.init(BaseService.java:78)
	at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2021)
	at org.apache.camel.support.service.BaseService.start(BaseService.java:105)
	at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2040)
	at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:212)
	at org.apache.camel.quarkus.main.CamelMain.doStart(CamelMain.java:94)
	at org.apache.camel.support.service.BaseService.start(BaseService.java:113)
	at org.apache.camel.quarkus.main.CamelMain.startEngine(CamelMain.java:140)
	at org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:49)
	... 16 more
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{source=/bar}]
	at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:830)
	at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:730)
	at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:61)
	at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:195)
	at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:99)
	at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:79)
	... 30 more
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: knative://event/com.corp.my.beer.source?apiVersion=eventing.knative.dev%2Fv1&kind=Broker&name=test-broker-2&source=%2Fbar due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{source=/bar}]
	at org.apache.camel.support.DefaultComponent.validateParameters(DefaultComponent.java:302)
	at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:191)
	at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:796)
	... 35 more

Proposal

No response

Open questions

No response

matzew avatar May 22 '24 12:05 matzew