oscerd opened a new issue #2203:
URL: https://github.com/apache/camel-k/issues/2203
If you create a simple kamelet like this.
```
apiVersion: camel.apache.org/v1alpha1
kind: Kamelet
metadata:
name: azure-storage-blob-sink
annotations:
camel.apache.org/kamelet.icon: ""
camel.apache.org/provider: "Apache Software Foundation"
labels:
camel.apache.org/kamelet.type: "sink"
spec:
definition:
title: "Azure Storage Blob Sink"
description: |-
Upload data to Azure Storage Blob.
The Kamelet expects the following headers to be set:
- `file` / `ce-file`: as the file name to upload
If the header won't be set the exchange ID will be used as file name.
required:
- accountName
- containerName
- accessKey
properties:
accountName:
title: Account Name
description: The Azure Storage Blob account name.
type: string
containerName:
title: Container Name
description: The Azure Storage Blob container name.
type: string
accessKey:
title: Access Key
description: The Azure Storage Blob access Key.
type: string
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:password
operation:
title: Operation name
description: The operation to perform.
type: string
default: uploadBlockBlob
flow:
from:
uri: "kamelet:source"
steps:
- choice:
when:
- simple: "${header[file]}"
steps:
- set-header:
name: CamelAzureStorageBlobBlobName
simple: "${header[file]}"
- simple: "${header[ce-file]}"
steps:
- set-header:
name: CamelAzureStorageBlobBlobName
simple: "${header[ce-file]}"
otherwise:
steps:
- set-header:
name: CamelAzureStorageBlobBlobName
simple: "${exchangeId}"
- to:
uri: "azure-storage-blob://{{accountName}}/{{containerName}}"
parameters:
accessKey: "{{accessKey}}"
operation: "{{operation}}"
```
With camel-k master.
After apply the file through kubectl, by running the following command:
```
kubectl describe kamelet azure-storage-blob-sink
....
Flow:
From:
Steps:
Choice:
Otherwise:
Steps:
Set - Header:
Name: CamelAwsS3Key
Simple: ${exchangeId}
When:
Simple: ${header[file]}
Steps:
Set - Header:
Name: CamelAwsS3Key
Simple: ${header[file]}
Simple: ${header[ce-file]}
Steps:
Set - Header:
Name: CamelAwsS3Key
Simple: ${header[ce-file]}
To:
Parameters:
Access Key: {{accessKey}}
Auto Create Bucket: {{autoCreateBucket}}
Override Endpoint: {{overrideEndpoint}}
Region: {{region}}
Secret Key: {{secretKey}}
Uri Endpoint Override: {{uriEndpointOverride}}
Uri: aws2-s3:{{bucketNameOrArn}}
Uri: kamelet:source
...
```
The wrong order will lead to the following error while running a binding
including the kamelet
```
[1] 2021-04-12 09:47:42,212 INFO [org.apa.cam.k.Runtime] (main) Apache
Camel K Runtime 1.7.0-SNAPSHOT
[1] 2021-04-12 09:47:42,214 INFO
[org.apa.cam.qua.cor.CamelBootstrapRecorder] (main) bootstrap runtime:
org.apache.camel.quarkus.main.CamelMainRuntime
[1] 2021-04-12 09:47:42,252 INFO [org.apa.cam.k.lis.SourcesConfigurer]
(main) Loading routes from: SourceDefinition{name='camel-k-embedded-flow',
language='yaml', location='file:/etc/camel/sources/camel-k-embedded-flow.yaml',
}
[1] 2021-04-12 09:47:42,305 INFO [org.apa.cam.k.lis.SourcesConfigurer]
(main) Loading routes from: SourceDefinition{name='azure-storage-blob-sink',
language='yaml', type='template', propertyNames='[accessKey, accountName,
containerName, operation]',
location='file:/etc/camel/sources/azure-storage-blob-sink.yaml', }
[1] 2021-04-12 09:47:42,307 INFO [org.apa.cam.k.lis.SourcesConfigurer]
(main) Loading routes from: SourceDefinition{name='simulation-source',
language='yaml', type='template', propertyNames='[contentType, message,
period]', location='file:/etc/camel/sources/simulation-source.yaml', }
[1] 2021-04-12 09:47:42,485 ERROR [org.apa.cam.qua.mai.CamelMainRuntime]
(main) Failed to start application:
org.snakeyaml.engine.v2.exceptions.YamlEngineException:
java.lang.IllegalStateException: url must be set before setting properties
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.construct(BaseConstructor.java:93)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructSingleDocument(BaseConstructor.java:74)
[1] at org.snakeyaml.engine.v2.api.Load.loadOne(Load.java:84)
[1] at org.snakeyaml.engine.v2.api.Load.loadFromInputStream(Load.java:96)
[1] at
org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader$1.configure(YamlRoutesBuilderLoader.java:113)
[1] at
org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:540)
[1] at
org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:487)
[1] at
org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:462)
[1] at
org.apache.camel.impl.engine.AbstractCamelContext.addRoutes(AbstractCamelContext.java:1161)
[1] at
org.apache.camel.main.RoutesConfigurer.configureRoutes(RoutesConfigurer.java:200)
[1] at
org.apache.camel.quarkus.main.CamelMain.configureRoutes(CamelMain.java:70)
[1] at
org.apache.camel.main.BaseMainSupport.postProcessCamelContext(BaseMainSupport.java:546)
[1] at
org.apache.camel.quarkus.main.CamelMain.initCamelContext(CamelMain.java:116)
[1] at org.apache.camel.quarkus.main.CamelMain.doInit(CamelMain.java:86)
[1] at
org.apache.camel.support.service.BaseService.init(BaseService.java:83)
[1] at
org.apache.camel.quarkus.main.CamelMain.startEngine(CamelMain.java:137)
[1] at
org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:49)
[1] at
org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:45)
[1] at
io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy_0(CamelBootstrapProcessor$boot-173480958.zig:101)
[1] at
io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy(CamelBootstrapProcessor$boot-173480958.zig:40)
[1] at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:719)
[1] at io.quarkus.runtime.Application.start(Application.java:90)
[1] at
io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:100)
[1] at io.quarkus.runtime.Quarkus.run(Quarkus.java:66)
[1] at io.quarkus.runtime.Quarkus.run(Quarkus.java:42)
[1] at io.quarkus.runtime.Quarkus.run(Quarkus.java:119)
[1] at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29)
[1] at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[1] at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[1] at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[1] at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[1] at
io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:48)
[1] at
io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:25)
[1] Caused by: java.lang.IllegalStateException: url must be set before
setting properties
[1] at
org.apache.camel.dsl.yaml.deserializers.ModelDeserializers$ToDefinitionDeserializer.setProperty(ModelDeserializers.java:14189)
[1] at
org.apache.camel.dsl.yaml.deserializers.ModelDeserializers$ToDefinitionDeserializer.setProperty(ModelDeserializers.java:14141)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerBase.setProperties(YamlDeserializerBase.java:103)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerBase.construct(YamlDeserializerBase.java:51)
[1] at
org.apache.camel.k.loader.yaml.YamlSourceLoaderDeserializerResolver$ToDeserializer.construct(YamlSourceLoaderDeserializerResolver.java:65)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializationContext$2.construct(YamlDeserializationContext.java:194)
[1] at
org.apache.camel.dsl.yaml.deserializers.ProcessorDefinitionDeserializer.construct(ProcessorDefinitionDeserializer.java:36)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializationContext$1.construct(YamlDeserializationContext.java:152)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asType(YamlDeserializerSupport.java:290)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asCollection(YamlDeserializerSupport.java:268)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asFlatCollection(YamlDeserializerSupport.java:249)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asFlatList(YamlDeserializerSupport.java:223)
[1] at
org.apache.camel.dsl.yaml.deserializers.RouteFromDefinitionDeserializer.setProperties(RouteFromDefinitionDeserializer.java:76)
[1] at
org.apache.camel.dsl.yaml.deserializers.RouteFromDefinitionDeserializer.setProperties(RouteFromDefinitionDeserializer.java:36)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerBase.construct(YamlDeserializerBase.java:51)
[1] at
org.apache.camel.k.loader.yaml.YamlSourceLoaderDeserializerResolver$RouteFromDeserializer.construct(YamlSourceLoaderDeserializerResolver.java:57)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializationContext$2.construct(YamlDeserializationContext.java:194)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:140)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObject(BaseConstructor.java:128)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructSequenceStep2(BaseConstructor.java:206)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructSequence(BaseConstructor.java:199)
[1] at
org.snakeyaml.engine.v2.constructor.StandardConstructor$ConstructYamlSeq.construct(StandardConstructor.java:340)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:140)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObject(BaseConstructor.java:128)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.construct(BaseConstructor.java:87)
[1] ... 32 more
[1]
[1] 2021-04-12 09:47:42,517 ERROR [io.qua.run.Application] (main) Failed to
start application (with profile prod): java.lang.IllegalStateException: url
must be set before setting properties
[1] at
org.apache.camel.dsl.yaml.deserializers.ModelDeserializers$ToDefinitionDeserializer.setProperty(ModelDeserializers.java:14189)
[1] at
org.apache.camel.dsl.yaml.deserializers.ModelDeserializers$ToDefinitionDeserializer.setProperty(ModelDeserializers.java:14141)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerBase.setProperties(YamlDeserializerBase.java:103)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerBase.construct(YamlDeserializerBase.java:51)
[1] at
org.apache.camel.k.loader.yaml.YamlSourceLoaderDeserializerResolver$ToDeserializer.construct(YamlSourceLoaderDeserializerResolver.java:65)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializationContext$2.construct(YamlDeserializationContext.java:194)
[1] at
org.apache.camel.dsl.yaml.deserializers.ProcessorDefinitionDeserializer.construct(ProcessorDefinitionDeserializer.java:36)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializationContext$1.construct(YamlDeserializationContext.java:152)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asType(YamlDeserializerSupport.java:290)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asCollection(YamlDeserializerSupport.java:268)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asFlatCollection(YamlDeserializerSupport.java:249)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asFlatList(YamlDeserializerSupport.java:223)
[1] at
org.apache.camel.dsl.yaml.deserializers.RouteFromDefinitionDeserializer.setProperties(RouteFromDefinitionDeserializer.java:76)
[1] at
org.apache.camel.dsl.yaml.deserializers.RouteFromDefinitionDeserializer.setProperties(RouteFromDefinitionDeserializer.java:36)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializerBase.construct(YamlDeserializerBase.java:51)
[1] at
org.apache.camel.k.loader.yaml.YamlSourceLoaderDeserializerResolver$RouteFromDeserializer.construct(YamlSourceLoaderDeserializerResolver.java:57)
[1] at
org.apache.camel.dsl.yaml.common.YamlDeserializationContext$2.construct(YamlDeserializationContext.java:194)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:140)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObject(BaseConstructor.java:128)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructSequenceStep2(BaseConstructor.java:206)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructSequence(BaseConstructor.java:199)
[1] at
org.snakeyaml.engine.v2.constructor.StandardConstructor$ConstructYamlSeq.construct(StandardConstructor.java:340)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:140)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructObject(BaseConstructor.java:128)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.construct(BaseConstructor.java:87)
[1] at
org.snakeyaml.engine.v2.constructor.BaseConstructor.constructSingleDocument(BaseConstructor.java:74)
[1] at org.snakeyaml.engine.v2.api.Load.loadOne(Load.java:84)
[1] at org.snakeyaml.engine.v2.api.Load.loadFromInputStream(Load.java:96)
[1] at
org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader$1.configure(YamlRoutesBuilderLoader.java:113)
[1] at
org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:540)
[1] at
org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:487)
[1] at
org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:462)
[1] at
org.apache.camel.impl.engine.AbstractCamelContext.addRoutes(AbstractCamelContext.java:1161)
[1] at
org.apache.camel.main.RoutesConfigurer.configureRoutes(RoutesConfigurer.java:200)
[1] at
org.apache.camel.quarkus.main.CamelMain.configureRoutes(CamelMain.java:70)
[1] at
org.apache.camel.main.BaseMainSupport.postProcessCamelContext(BaseMainSupport.java:546)
[1] at
org.apache.camel.quarkus.main.CamelMain.initCamelContext(CamelMain.java:116)
[1] at org.apache.camel.quarkus.main.CamelMain.doInit(CamelMain.java:86)
[1] at
org.apache.camel.support.service.BaseService.init(BaseService.java:83)
[1] at
org.apache.camel.quarkus.main.CamelMain.startEngine(CamelMain.java:137)
[1] at
org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:49)
[1] at
org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:45)
[1] at
io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy_0(CamelBootstrapProcessor$boot-173480958.zig:101)
[1] at
io.quarkus.deployment.steps.CamelBootstrapProcessor$boot-173480958.deploy(CamelBootstrapProcessor$boot-173480958.zig:40)
[1] at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:719)
[1] at io.quarkus.runtime.Application.start(Application.java:90)
[1] at
io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:100)
[1] at io.quarkus.runtime.Quarkus.run(Quarkus.java:66)
[1] at io.quarkus.runtime.Quarkus.run(Quarkus.java:42)
[1] at io.quarkus.runtime.Quarkus.run(Quarkus.java:119)
[1] at io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:29)
[1] at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[1] at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[1] at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[1] at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[1] at
io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:48)
[1] at
io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:25)
```
All the kamelets of the kamelet-catalog are affected.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]