From 340cdeb8c5edf78a3cfe2964ac15d0979b3a8ab6 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 4 Jun 2021 11:20:27 +0200 Subject: [PATCH 001/105] Regen chuck norris source kamelet through generator --- .../images/kamelets/chuck-norris-source.svg | 103 ++++++++++++++++++ docs/modules/ROOT/nav.adoc | 1 + .../ROOT/pages/chuck-norris-source.adoc | 60 ++++++++++ 3 files changed, 164 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/chuck-norris-source.svg create mode 100644 docs/modules/ROOT/pages/chuck-norris-source.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/chuck-norris-source.svg b/docs/modules/ROOT/assets/images/kamelets/chuck-norris-source.svg new file mode 100644 index 000000000..042ab165d --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/chuck-norris-source.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 4642fbd84..ee24c904f 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -22,6 +22,7 @@ * xref:ROOT:caffeine-action.adoc[image:kamelets/caffeine-action.svg[] Caffeine Action] * xref:ROOT:cassandra-sink.adoc[image:kamelets/cassandra-sink.svg[] Cassandra Sink] * xref:ROOT:cassandra-source.adoc[image:kamelets/cassandra-source.svg[] Cassandra Source] +* xref:ROOT:chuck-norris-source.adoc[image:kamelets/chuck-norris-source.svg[] Chuck Norris Source] * xref:ROOT:cron-source.adoc[image:kamelets/cron-source.svg[] Cron Source] * xref:ROOT:dns-dig-action.adoc[image:kamelets/dns-dig-action.svg[] DNS DIG Action] * xref:ROOT:dns-ip-action.adoc[image:kamelets/dns-ip-action.svg[] DNS IP Action] diff --git a/docs/modules/ROOT/pages/chuck-norris-source.adoc b/docs/modules/ROOT/pages/chuck-norris-source.adoc new file mode 100644 index 000000000..83bd691e9 --- /dev/null +++ b/docs/modules/ROOT/pages/chuck-norris-source.adoc @@ -0,0 +1,60 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/chuck-norris-source.svg[] Chuck Norris Source + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Gets peridically Chuck Norris jokes from http://www.icndb.com/ + +== Configuration Options + +The following table summarizes the configuration options available for the `chuck-norris-source` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| period| Period| The interval (msec) to wait before getting the next joke| integer| `10000`| +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `chuck-norris-source` can be used in various contexts. + +=== Knative Source + +The `chuck-norris-source` Kamelet can be used as Knative source by binding it to a Knative object. + +.chuck-norris-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: chuck-norris-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: chuck-norris-source + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `chuck-norris-source-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the source using the following command: + +[source,shell] +---- +kubectl apply -f chuck-norris-source-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From e583dd695b9cdfd74376a96ccd13b12b869813d6 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 4 Jun 2021 13:13:47 +0200 Subject: [PATCH 002/105] Added AWS-S3 Streaming Upload Sink Kamelet --- aws-s3-streaming-upload-sink.kamelet.yaml | 101 ++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 aws-s3-streaming-upload-sink.kamelet.yaml diff --git a/aws-s3-streaming-upload-sink.kamelet.yaml b/aws-s3-streaming-upload-sink.kamelet.yaml new file mode 100644 index 000000000..393bb6455 --- /dev/null +++ b/aws-s3-streaming-upload-sink.kamelet.yaml @@ -0,0 +1,101 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: aws-s3-streaming-upload-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "AWS S3" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "AWS S3 Streaming upload Sink" + description: |- + Upload data to AWS S3 in streaming upload mode. + required: + - bucketNameOrArn + - accessKey + - secretKey + - region + - keyName + type: object + properties: + bucketNameOrArn: + title: Bucket Name + description: The S3 Bucket name or ARN. + type: string + accessKey: + title: Access Key + description: The access key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + region: + title: AWS Region + description: The AWS region to connect to. + type: string + example: eu-west-1 + autoCreateBucket: + title: Autocreate Bucket + description: Setting the autocreation of the S3 bucket bucketName. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + streamingUploadMode: + title: Streaming Upload Mode + description: Setting the Streaming Upload Mode + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true + restartingPolicy: + title: Restarting Policy + description: The restarting policy to use in streaming upload mode. There are 2 enums and the value can be one of override, lastPart + type: string + default: "lastPart" + batchMessageNumber: + title: Batch Message Number + description: The number of messages composing a batch in streaming upload mode + type: int + default: 10 + namingStrategy: + title: Naming Strategy + description: The naming strategy to use in streaming upload mode. There are 2 enums and the value can be one of progressive, random + type: string + default: "progressive" + keyName: + title: Key Name + description: Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this will be the base for the progressive creation of files. + type: string + dependencies: + - "camel:aws2-s3" + - "camel:kamelet" + flow: + from: + uri: "kamelet:source" + steps: + - to: + uri: "aws2-s3:{{bucketNameOrArn}}" + parameters: + secretKey: "{{secretKey}}" + accessKey: "{{accessKey}}" + region: "{{region}}" + autoCreateBucket: "{{autoCreateBucket}}" + streamingUploadMode: "{{streamingUploadMode}}" + restartingPolicy: "{{restartingPolicy}}" + batchMessageNumber: "{{batchMessageNumber}}" + namingStrategy: "{{namingStrategy}}" + keyName: "{{keyName}}" + From d6ca46cf71295800fc96491a5b3818df724db106 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 4 Jun 2021 13:14:28 +0200 Subject: [PATCH 003/105] Added AWS-S3 Streaming Upload Sink Kamelet --- .../aws-s3-streaming-upload-sink.kamelet.yaml | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml new file mode 100644 index 000000000..393bb6455 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml @@ -0,0 +1,101 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: aws-s3-streaming-upload-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "AWS S3" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "AWS S3 Streaming upload Sink" + description: |- + Upload data to AWS S3 in streaming upload mode. + required: + - bucketNameOrArn + - accessKey + - secretKey + - region + - keyName + type: object + properties: + bucketNameOrArn: + title: Bucket Name + description: The S3 Bucket name or ARN. + type: string + accessKey: + title: Access Key + description: The access key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + region: + title: AWS Region + description: The AWS region to connect to. + type: string + example: eu-west-1 + autoCreateBucket: + title: Autocreate Bucket + description: Setting the autocreation of the S3 bucket bucketName. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + streamingUploadMode: + title: Streaming Upload Mode + description: Setting the Streaming Upload Mode + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true + restartingPolicy: + title: Restarting Policy + description: The restarting policy to use in streaming upload mode. There are 2 enums and the value can be one of override, lastPart + type: string + default: "lastPart" + batchMessageNumber: + title: Batch Message Number + description: The number of messages composing a batch in streaming upload mode + type: int + default: 10 + namingStrategy: + title: Naming Strategy + description: The naming strategy to use in streaming upload mode. There are 2 enums and the value can be one of progressive, random + type: string + default: "progressive" + keyName: + title: Key Name + description: Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this will be the base for the progressive creation of files. + type: string + dependencies: + - "camel:aws2-s3" + - "camel:kamelet" + flow: + from: + uri: "kamelet:source" + steps: + - to: + uri: "aws2-s3:{{bucketNameOrArn}}" + parameters: + secretKey: "{{secretKey}}" + accessKey: "{{accessKey}}" + region: "{{region}}" + autoCreateBucket: "{{autoCreateBucket}}" + streamingUploadMode: "{{streamingUploadMode}}" + restartingPolicy: "{{restartingPolicy}}" + batchMessageNumber: "{{batchMessageNumber}}" + namingStrategy: "{{namingStrategy}}" + keyName: "{{keyName}}" + From cb7506dba8539d85cb68efaff4420a4642913091 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 4 Jun 2021 13:15:10 +0200 Subject: [PATCH 004/105] Added AWS-S3 Streaming Upload Sink Kamelet --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index ee24c904f..70cf43ff0 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -6,6 +6,7 @@ * xref:ROOT:aws-lambda-sink.adoc[image:kamelets/aws-lambda-sink.svg[] AWS Lambda Sink] * xref:ROOT:aws-s3-sink.adoc[image:kamelets/aws-s3-sink.svg[] AWS S3 Sink] * xref:ROOT:aws-s3-source.adoc[image:kamelets/aws-s3-source.svg[] AWS S3 Source] +* xref:ROOT:aws-s3-streaming-upload-sink.adoc[image:kamelets/aws-s3-streaming-upload-sink.svg[] AWS S3 Streaming upload Sink] * xref:ROOT:aws-sns-fifo-sink.adoc[image:kamelets/aws-sns-fifo-sink.svg[] AWS SNS FIFO Sink] * xref:ROOT:aws-sns-sink.adoc[image:kamelets/aws-sns-sink.svg[] AWS SNS Sink] * xref:ROOT:aws-sqs-batch-sink.adoc[image:kamelets/aws-sqs-batch-sink.svg[] AWS SQS Batch Sink] From df01c65a5f83bf30044521f7f613dc42a2c28b32 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 4 Jun 2021 13:15:22 +0200 Subject: [PATCH 005/105] Added AWS-S3 Streaming Upload Sink Kamelet --- .../kamelets/aws-s3-streaming-upload-sink.svg | 1 + .../pages/aws-s3-streaming-upload-sink.adoc | 75 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/aws-s3-streaming-upload-sink.svg create mode 100644 docs/modules/ROOT/pages/aws-s3-streaming-upload-sink.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/aws-s3-streaming-upload-sink.svg b/docs/modules/ROOT/assets/images/kamelets/aws-s3-streaming-upload-sink.svg new file mode 100644 index 000000000..1d0f76baa --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/aws-s3-streaming-upload-sink.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/modules/ROOT/pages/aws-s3-streaming-upload-sink.adoc b/docs/modules/ROOT/pages/aws-s3-streaming-upload-sink.adoc new file mode 100644 index 000000000..053cb22fa --- /dev/null +++ b/docs/modules/ROOT/pages/aws-s3-streaming-upload-sink.adoc @@ -0,0 +1,75 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/aws-s3-streaming-upload-sink.svg[] AWS S3 Streaming upload Sink + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Upload data to AWS S3 in streaming upload mode. + +== Configuration Options + +The following table summarizes the configuration options available for the `aws-s3-streaming-upload-sink` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *accessKey {empty}* *| Access Key| The access key obtained from AWS.| string| | +| *bucketNameOrArn {empty}* *| Bucket Name| The S3 Bucket name or ARN.| string| | +| *keyName {empty}* *| Key Name| Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this will be the base for the progressive creation of files.| string| | +| *region {empty}* *| AWS Region| The AWS region to connect to.| string| | `"eu-west-1"` +| *secretKey {empty}* *| Secret Key| The secret key obtained from AWS.| string| | +| autoCreateBucket| Autocreate Bucket| Setting the autocreation of the S3 bucket bucketName.| boolean| `false`| +| batchMessageNumber| Batch Message Number| The number of messages composing a batch in streaming upload mode| int| `10`| +| namingStrategy| Naming Strategy| The naming strategy to use in streaming upload mode. There are 2 enums and the value can be one of progressive, random| string| `"progressive"`| +| restartingPolicy| Restarting Policy| The restarting policy to use in streaming upload mode. There are 2 enums and the value can be one of override, lastPart| string| `"lastPart"`| +| streamingUploadMode| Streaming Upload Mode| Setting the Streaming Upload Mode| boolean| `true`| +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `aws-s3-streaming-upload-sink` can be used in various contexts. + +=== Knative Sink + +The `aws-s3-streaming-upload-sink` Kamelet can be used as Knative sink by binding it to a Knative object. + +.aws-s3-streaming-upload-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: aws-s3-streaming-upload-sink-binding +spec: + source: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: aws-s3-streaming-upload-sink + properties: + accessKey: "The Access Key" + bucketNameOrArn: "The Bucket Name" + keyName: "The Key Name" + region: "eu-west-1" + secretKey: "The Secret Key" + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `aws-s3-streaming-upload-sink-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the sink using the following command: + +[source,shell] +---- +kubectl apply -f aws-s3-streaming-upload-sink-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From 18df1945138614a3746506f7ef97ff5c2ce50261 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 4 Jun 2021 15:22:22 +0200 Subject: [PATCH 006/105] AWS S3 Sink Kamelet: Removed URI Override Endpoint options --- aws-s3-sink.kamelet.yaml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/aws-s3-sink.kamelet.yaml b/aws-s3-sink.kamelet.yaml index efcac6ebf..6102a595d 100644 --- a/aws-s3-sink.kamelet.yaml +++ b/aws-s3-sink.kamelet.yaml @@ -51,18 +51,6 @@ spec: description: The AWS region to connect to. type: string example: eu-west-1 - overrideEndpoint: - title: Override Endpoint - description: Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride. - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - uriEndpointOverride: - title: Override Endpoint URI - description: Set the overriding uri endpoint. This option needs to be used in combination with overrideEndpoint option. - type: string - example: "http://another-s3-endpoint:9000" autoCreateBucket: title: Autocreate Bucket description: Setting the autocreation of the S3 bucket bucketName. @@ -100,6 +88,4 @@ spec: secretKey: "{{secretKey}}" accessKey: "{{accessKey}}" region: "{{region}}" - uriEndpointOverride: "{{uriEndpointOverride}}" - overrideEndpoint: "{{overrideEndpoint}}" autoCreateBucket: "{{autoCreateBucket}}" From b43a8da8525d73d1a9c351597b333de578cf7c23 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 4 Jun 2021 15:24:21 +0200 Subject: [PATCH 007/105] AWS S3 Sink Kamelet: Removed URI Override Endpoint options --- .../resources/kamelets/aws-s3-sink.kamelet.yaml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml index efcac6ebf..6102a595d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml @@ -51,18 +51,6 @@ spec: description: The AWS region to connect to. type: string example: eu-west-1 - overrideEndpoint: - title: Override Endpoint - description: Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride. - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - uriEndpointOverride: - title: Override Endpoint URI - description: Set the overriding uri endpoint. This option needs to be used in combination with overrideEndpoint option. - type: string - example: "http://another-s3-endpoint:9000" autoCreateBucket: title: Autocreate Bucket description: Setting the autocreation of the S3 bucket bucketName. @@ -100,6 +88,4 @@ spec: secretKey: "{{secretKey}}" accessKey: "{{accessKey}}" region: "{{region}}" - uriEndpointOverride: "{{uriEndpointOverride}}" - overrideEndpoint: "{{overrideEndpoint}}" autoCreateBucket: "{{autoCreateBucket}}" From ede38f5a9c645c77c4d9a701b20ebb19101919b9 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 4 Jun 2021 15:24:54 +0200 Subject: [PATCH 008/105] AWS S3 Sink Kamelet: Removed URI Override Endpoint options --- docs/modules/ROOT/pages/aws-s3-sink.adoc | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/modules/ROOT/pages/aws-s3-sink.adoc b/docs/modules/ROOT/pages/aws-s3-sink.adoc index f43a1d291..b7627de73 100644 --- a/docs/modules/ROOT/pages/aws-s3-sink.adoc +++ b/docs/modules/ROOT/pages/aws-s3-sink.adoc @@ -24,8 +24,6 @@ The following table summarizes the configuration options available for the `aws- | *region {empty}* *| AWS Region| The AWS region to connect to.| string| | `"eu-west-1"` | *secretKey {empty}* *| Secret Key| The secret key obtained from AWS.| string| | | autoCreateBucket| Autocreate Bucket| Setting the autocreation of the S3 bucket bucketName.| boolean| `false`| -| overrideEndpoint| Override Endpoint| Set the need for overidding the endpoint. This option needs to be used in combination with uriEndpointOverride.| boolean| `false`| -| uriEndpointOverride| Override Endpoint URI| Set the overriding uri endpoint. This option needs to be used in combination with overrideEndpoint option.| string| | `"http://another-s3-endpoint:9000"` |=== NOTE: Fields marked with ({empty}*) are mandatory. From ae07cd6070d0685be6432167801ab33ec845139c Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 7 Jun 2021 08:59:18 +0200 Subject: [PATCH 009/105] Added Azure Storage Queue Source Kamelet --- azure-storage-queue-source.kamelet.yaml | 54 +++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 azure-storage-queue-source.kamelet.yaml diff --git a/azure-storage-queue-source.kamelet.yaml b/azure-storage-queue-source.kamelet.yaml new file mode 100644 index 000000000..ee795b133 --- /dev/null +++ b/azure-storage-queue-source.kamelet.yaml @@ -0,0 +1,54 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: azure-storage-queue-source + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OGMtLjIzOCAwLS40NzUgMC0uNzEzLS4yNDRsLTkuMDI0LTcuMzE3djExLjk1MWgyMC42NlYzNy4zMTdsLTkuNzM2IDcuNTYxYy0uNDc1LjI0NC0uOTUuMjQ0LTEuMTg3LjI0NHptMjkuNjgzIDBjLS4yMzggMC0uNzEzIDAtLjcxMy0uMjQ0bC05LjI2MS03LjMxN3YxMS45NTFoMjAuNjZWMzcuMzE3bC05LjczNiA3LjU2MWMtLjQ3NS4yNDQtLjcxMy4yNDQtLjk1LjI0NHpNNjcuNjc4IDBIMjIuNTU5TDAgNDBsMjIuNTU5IDQwSDY3LjQ0TDkwIDQwIDY3LjY3OCAwem03LjgzNiA1Ny4wNzNIMTQuMDExYy0xLjkgMC0zLjMyNS0xLjcwNy0zLjMyNS0zLjY1OVYyOS4yNjhjMC0xLjk1MSAxLjQyNS0zLjY1OCAzLjMyNS0zLjY1OGg2MS41MDRjLjcxMyAwIDEuOSAwIDkuOTc0IDE1LjYxbC4yMzcuNzMyLS4yMzcuNzMyYy04LjA3NCAxNC4zOS05LjI2MSAxNC4zOS05Ljk3NCAxNC4zOXpNNDAuMzcgMzQuNjM0SDIwLjY2bDkuNzM2IDcuODA1em0tMjYuMzU5LTYuMzQxYy0uNDc1IDAtLjk1LjQ4OC0uOTUuOTc2djI0LjE0NmMwIC40ODguNDc1IDEuMjIuOTUgMS4yMkg3NS4wNGMxLjE4OC0xLjIyIDQuNzQ5LTcuMDczIDcuODM3LTEyLjY4My0zLjA4Ny02LjA5OC02Ljg4Ni0xMi40MzktNy44MzctMTMuNjU5SDE0LjAxMXptMjkuOTIxIDIyLjQzOWMwIC43MzItLjcxMyAxLjQ2My0xLjY2MyAxLjQ2M0gxOC45OThjLS43MTMgMC0uOTUtLjczMi0uOTUtMS40NjNWMzIuOTI3YzAtLjczMi4yMzgtLjk3Ni45NS0uOTc2SDQyLjI3Yy43MTIgMCAxLjY2My4yNDQgMS42NjMuOTc2djE3LjgwNXptMjkuMjA5IDBjMCAuNzMyLS40NzUgMS40NjMtMS4xODggMS40NjNINDguOTE5Yy0uNzEyIDAtMS4xODctLjczMi0xLjE4Ny0xLjQ2M1YzMi45MjdjMC0uNzMyLjQ3NS0uOTc2IDEuMTg3LS45NzZoMjMuMDM0Yy43MTMgMCAxLjE4OC4yNDQgMS4xODguOTc2djE3LjgwNXoiIGZpbGw9IiMwMDc4ZDciIHN0cm9rZT0ibm9uZSIvPjwvc3ltYm9sPjwvc3ZnPg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Azure Storage Queue" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Azure Storage Queue Source" + description: |- + Receive Messages from Azure Storage queues. + required: + - accountName + - queueName + - accessKey + type: object + properties: + accountName: + title: Account Name + description: The Azure Storage Queue account name. + type: string + queueName: + title: Queue Name + description: The Azure Storage Queue container name. + type: string + accessKey: + title: Access Key + description: The Azure Storage Queue access Key. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + maxMessages: + title: Maximum Messages + description: Maximum number of messages to get, if there are less messages exist in the queue than requested all the messages will be returned. By default it will consider 1 message to be retrieved, the allowed range is 1 to 32 messages. + type: int + default: 1 + dependencies: + - "camel:azure-storage-queue" + - "camel:kamelet" + flow: + from: + uri: "azure-storage-queue://{{accountName}}/{{queueName}}" + parameters: + accessKey: "{{accessKey}}" + maxMessages: "{{maxMessages}}" + steps: + - to: "kamelet:sink" From c5fee31d66ac3408fcb91f98936d808ec1b58cc3 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 7 Jun 2021 09:00:12 +0200 Subject: [PATCH 010/105] Added Azure Storage Queue Source Kamelet --- .../azure-storage-queue-source.kamelet.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml new file mode 100644 index 000000000..ee795b133 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml @@ -0,0 +1,54 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: azure-storage-queue-source + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OGMtLjIzOCAwLS40NzUgMC0uNzEzLS4yNDRsLTkuMDI0LTcuMzE3djExLjk1MWgyMC42NlYzNy4zMTdsLTkuNzM2IDcuNTYxYy0uNDc1LjI0NC0uOTUuMjQ0LTEuMTg3LjI0NHptMjkuNjgzIDBjLS4yMzggMC0uNzEzIDAtLjcxMy0uMjQ0bC05LjI2MS03LjMxN3YxMS45NTFoMjAuNjZWMzcuMzE3bC05LjczNiA3LjU2MWMtLjQ3NS4yNDQtLjcxMy4yNDQtLjk1LjI0NHpNNjcuNjc4IDBIMjIuNTU5TDAgNDBsMjIuNTU5IDQwSDY3LjQ0TDkwIDQwIDY3LjY3OCAwem03LjgzNiA1Ny4wNzNIMTQuMDExYy0xLjkgMC0zLjMyNS0xLjcwNy0zLjMyNS0zLjY1OVYyOS4yNjhjMC0xLjk1MSAxLjQyNS0zLjY1OCAzLjMyNS0zLjY1OGg2MS41MDRjLjcxMyAwIDEuOSAwIDkuOTc0IDE1LjYxbC4yMzcuNzMyLS4yMzcuNzMyYy04LjA3NCAxNC4zOS05LjI2MSAxNC4zOS05Ljk3NCAxNC4zOXpNNDAuMzcgMzQuNjM0SDIwLjY2bDkuNzM2IDcuODA1em0tMjYuMzU5LTYuMzQxYy0uNDc1IDAtLjk1LjQ4OC0uOTUuOTc2djI0LjE0NmMwIC40ODguNDc1IDEuMjIuOTUgMS4yMkg3NS4wNGMxLjE4OC0xLjIyIDQuNzQ5LTcuMDczIDcuODM3LTEyLjY4My0zLjA4Ny02LjA5OC02Ljg4Ni0xMi40MzktNy44MzctMTMuNjU5SDE0LjAxMXptMjkuOTIxIDIyLjQzOWMwIC43MzItLjcxMyAxLjQ2My0xLjY2MyAxLjQ2M0gxOC45OThjLS43MTMgMC0uOTUtLjczMi0uOTUtMS40NjNWMzIuOTI3YzAtLjczMi4yMzgtLjk3Ni45NS0uOTc2SDQyLjI3Yy43MTIgMCAxLjY2My4yNDQgMS42NjMuOTc2djE3LjgwNXptMjkuMjA5IDBjMCAuNzMyLS40NzUgMS40NjMtMS4xODggMS40NjNINDguOTE5Yy0uNzEyIDAtMS4xODctLjczMi0xLjE4Ny0xLjQ2M1YzMi45MjdjMC0uNzMyLjQ3NS0uOTc2IDEuMTg3LS45NzZoMjMuMDM0Yy43MTMgMCAxLjE4OC4yNDQgMS4xODguOTc2djE3LjgwNXoiIGZpbGw9IiMwMDc4ZDciIHN0cm9rZT0ibm9uZSIvPjwvc3ltYm9sPjwvc3ZnPg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Azure Storage Queue" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Azure Storage Queue Source" + description: |- + Receive Messages from Azure Storage queues. + required: + - accountName + - queueName + - accessKey + type: object + properties: + accountName: + title: Account Name + description: The Azure Storage Queue account name. + type: string + queueName: + title: Queue Name + description: The Azure Storage Queue container name. + type: string + accessKey: + title: Access Key + description: The Azure Storage Queue access Key. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + maxMessages: + title: Maximum Messages + description: Maximum number of messages to get, if there are less messages exist in the queue than requested all the messages will be returned. By default it will consider 1 message to be retrieved, the allowed range is 1 to 32 messages. + type: int + default: 1 + dependencies: + - "camel:azure-storage-queue" + - "camel:kamelet" + flow: + from: + uri: "azure-storage-queue://{{accountName}}/{{queueName}}" + parameters: + accessKey: "{{accessKey}}" + maxMessages: "{{maxMessages}}" + steps: + - to: "kamelet:sink" From fb99e3125b410b3bae67f739a42897936203543e Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 7 Jun 2021 09:01:29 +0200 Subject: [PATCH 011/105] Added Azure Storage Queue Source Kamelet --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 70cf43ff0..0767c5750 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -19,6 +19,7 @@ * xref:ROOT:azure-storage-blob-sink.adoc[image:kamelets/azure-storage-blob-sink.svg[] Azure Storage Blob Sink] * xref:ROOT:azure-storage-blob-source.adoc[image:kamelets/azure-storage-blob-source.svg[] Azure Storage Blob Source] * xref:ROOT:azure-storage-queue-sink.adoc[image:kamelets/azure-storage-queue-sink.svg[] Azure Storage Queue Sink] +* xref:ROOT:azure-storage-queue-source.adoc[image:kamelets/azure-storage-queue-source.svg[] Azure Storage Queue Source] * xref:ROOT:bitcoin-source.adoc[image:kamelets/bitcoin-source.svg[] Bitcoin Source] * xref:ROOT:caffeine-action.adoc[image:kamelets/caffeine-action.svg[] Caffeine Action] * xref:ROOT:cassandra-sink.adoc[image:kamelets/cassandra-sink.svg[] Cassandra Sink] From ad8d3b80ee39145aa9ef66cf28dcd0dffaeb34b5 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 7 Jun 2021 09:01:56 +0200 Subject: [PATCH 012/105] Added Azure Storage Queue Source Kamelet --- .../kamelets/azure-storage-queue-source.svg | 1 + .../pages/azure-storage-queue-source.adoc | 67 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/azure-storage-queue-source.svg create mode 100644 docs/modules/ROOT/pages/azure-storage-queue-source.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/azure-storage-queue-source.svg b/docs/modules/ROOT/assets/images/kamelets/azure-storage-queue-source.svg new file mode 100644 index 000000000..3d7400f84 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/azure-storage-queue-source.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/modules/ROOT/pages/azure-storage-queue-source.adoc b/docs/modules/ROOT/pages/azure-storage-queue-source.adoc new file mode 100644 index 000000000..40d61ca4a --- /dev/null +++ b/docs/modules/ROOT/pages/azure-storage-queue-source.adoc @@ -0,0 +1,67 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/azure-storage-queue-source.svg[] Azure Storage Queue Source + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Receive Messages from Azure Storage queues. + +== Configuration Options + +The following table summarizes the configuration options available for the `azure-storage-queue-source` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *accessKey {empty}* *| Access Key| The Azure Storage Queue access Key.| string| | +| *accountName {empty}* *| Account Name| The Azure Storage Queue account name.| string| | +| *queueName {empty}* *| Queue Name| The Azure Storage Queue container name.| string| | +| maxMessages| Maximum Messages| Maximum number of messages to get, if there are less messages exist in the queue than requested all the messages will be returned. By default it will consider 1 message to be retrieved, the allowed range is 1 to 32 messages.| int| `1`| +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `azure-storage-queue-source` can be used in various contexts. + +=== Knative Source + +The `azure-storage-queue-source` Kamelet can be used as Knative source by binding it to a Knative object. + +.azure-storage-queue-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: azure-storage-queue-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: azure-storage-queue-source + properties: + accessKey: "The Access Key" + accountName: "The Account Name" + queueName: "The Queue Name" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `azure-storage-queue-source-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the source using the following command: + +[source,shell] +---- +kubectl apply -f azure-storage-queue-source-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From f8b8955c9cd7abcbdb28b537f1d9ffef022ceefb Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Fri, 4 Jun 2021 12:15:40 +0200 Subject: [PATCH 013/105] stage lib for avro schema resolution --- avro-serialize-action.kamelet.yaml | 49 +++++++++++++++++++ library/camel-kamelets-utils/pom.xml | 5 ++ .../InflightAvroSchemaResolver.java | 21 ++++++++ pom.xml | 2 +- 4 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 avro-serialize-action.kamelet.yaml create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightAvroSchemaResolver.java diff --git a/avro-serialize-action.kamelet.yaml b/avro-serialize-action.kamelet.yaml new file mode 100644 index 000000000..4a7778757 --- /dev/null +++ b/avro-serialize-action.kamelet.yaml @@ -0,0 +1,49 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: avro-serialize-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Avro Serialize Action" + description: "Serialize payload to Avro" + type: object + properties: + schema: + title: Schema + description: The Avro schema to use during serialization (in JSON format) + type: string + validate: + title: Validate + description: Indicates if the content must be validated against the schema + type: boolean + default: true + dependencies: +# - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "github:nicolaferraro.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-avro" + flow: + from: + uri: kamelet:source + steps: + - set-property: + name: schema + constant: "{{schema}}" + - set-property: + name: validate + constant: "{{validate}}" + - marshal: + avro: + library: Jackson + unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" + - set-header: + name: "Content-Type" + constant: "application/avro" diff --git a/library/camel-kamelets-utils/pom.xml b/library/camel-kamelets-utils/pom.xml index 14b7fd820..0d2041eb2 100644 --- a/library/camel-kamelets-utils/pom.xml +++ b/library/camel-kamelets-utils/pom.xml @@ -56,6 +56,11 @@ camel-jackson + + org.apache.camel + camel-jackson-avro + + org.apache.camel camel-kafka diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightAvroSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightAvroSchemaResolver.java new file mode 100644 index 000000000..1faf12195 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightAvroSchemaResolver.java @@ -0,0 +1,21 @@ +package org.apache.camel.kamelets.utils.serialization; + +import com.fasterxml.jackson.core.FormatSchema; +import com.fasterxml.jackson.dataformat.avro.AvroSchema; + +import org.apache.avro.Schema; +import org.apache.camel.Exchange; +import org.apache.camel.component.jackson.SchemaResolver; + +public class InflightAvroSchemaResolver implements SchemaResolver { + + @Override + public FormatSchema resolve(Exchange exchange) { + String schemaJson = (String) exchange.getProperty("schema"); + Boolean validate = Boolean.valueOf((String) exchange.getProperty("validate")); + Schema raw = new Schema.Parser().setValidate(validate).parse(schemaJson); + AvroSchema schema = new AvroSchema(raw); + return schema; + } + +} diff --git a/pom.xml b/pom.xml index 0d0b1a9bb..ecbc4ef5e 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ 3.1.0 1.7 - 3.9.0 + 3.10.0 2.13.3 2.11.4 5.3.1 From 95fd734c242f3ff78ffc4117d94c74130b9701aa Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Fri, 4 Jun 2021 15:44:50 +0200 Subject: [PATCH 014/105] Add Kamelets for JSON and Avro serialization --- avro-deserialize-action.kamelet copy.yaml | 43 +++++++++++++++++++ avro-serialize-action.kamelet.yaml | 3 +- .../avro-deserialize-action.kamelet.yaml | 31 +++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 avro-deserialize-action.kamelet copy.yaml create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml diff --git a/avro-deserialize-action.kamelet copy.yaml b/avro-deserialize-action.kamelet copy.yaml new file mode 100644 index 000000000..8c3ed9e0f --- /dev/null +++ b/avro-deserialize-action.kamelet copy.yaml @@ -0,0 +1,43 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: avro-deserialize-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Avro Deserialize Action" + description: "Deserialize payload to Avro" + type: object + properties: + schema: + title: Schema + description: The Avro schema to use during serialization (as single-line, using JSON format) + type: string + example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}' + validate: + title: Validate + description: Indicates if the content must be validated against the schema + type: boolean + default: true + dependencies: +# - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "github:nicolaferraro.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-avro" + flow: + from: + uri: kamelet:source + steps: + - unmarshal: + avro: + library: Jackson + unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" + - remove-header: + header-name: "Content-Type" diff --git a/avro-serialize-action.kamelet.yaml b/avro-serialize-action.kamelet.yaml index 4a7778757..0130540fd 100644 --- a/avro-serialize-action.kamelet.yaml +++ b/avro-serialize-action.kamelet.yaml @@ -16,8 +16,9 @@ spec: properties: schema: title: Schema - description: The Avro schema to use during serialization (in JSON format) + description: The Avro schema to use during serialization (as single-line, using JSON format) type: string + example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}' validate: title: Validate description: Indicates if the content must be validated against the schema diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml new file mode 100644 index 000000000..ce01c669c --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml @@ -0,0 +1,31 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: avro-deserialize-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Json Deserialize Action" + description: "Deserialize payload to JSON" + type: object + dependencies: +# - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "github:nicolaferraro.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "camel:kamelet" + - "camel:core" + - "camel:jackson" + flow: + from: + uri: kamelet:source + steps: + - unmarshal: + json: + library: Jackson + unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode + - remove-header: + header-name: "Content-Type" From 7a4ae59faf10e82c1a8cb771b2dbccdf0606f051 Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Fri, 4 Jun 2021 15:46:47 +0200 Subject: [PATCH 015/105] Use fixed references in kamelets --- avro-deserialize-action.kamelet copy.yaml | 3 +-- avro-serialize-action.kamelet.yaml | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/avro-deserialize-action.kamelet copy.yaml b/avro-deserialize-action.kamelet copy.yaml index 8c3ed9e0f..ad90efc6d 100644 --- a/avro-deserialize-action.kamelet copy.yaml +++ b/avro-deserialize-action.kamelet copy.yaml @@ -25,8 +25,7 @@ spec: type: boolean default: true dependencies: -# - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - - "github:nicolaferraro.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - "camel:kamelet" - "camel:core" - "camel:jackson-avro" diff --git a/avro-serialize-action.kamelet.yaml b/avro-serialize-action.kamelet.yaml index 0130540fd..413847560 100644 --- a/avro-serialize-action.kamelet.yaml +++ b/avro-serialize-action.kamelet.yaml @@ -25,8 +25,7 @@ spec: type: boolean default: true dependencies: -# - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - - "github:nicolaferraro.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - "camel:kamelet" - "camel:core" - "camel:jackson-avro" From 1c1f8aad0dd2ae41aa60a28deb83a2ea74a4d965 Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Fri, 4 Jun 2021 15:48:00 +0200 Subject: [PATCH 016/105] Regen docs --- ...ml => avro-deserialize-action.kamelet.yaml | 0 .../avro-deserialize-action.kamelet.yaml | 23 ++++++--- .../avro-serialize-action.kamelet.yaml | 49 +++++++++++++++++++ 3 files changed, 66 insertions(+), 6 deletions(-) rename avro-deserialize-action.kamelet copy.yaml => avro-deserialize-action.kamelet.yaml (100%) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml diff --git a/avro-deserialize-action.kamelet copy.yaml b/avro-deserialize-action.kamelet.yaml similarity index 100% rename from avro-deserialize-action.kamelet copy.yaml rename to avro-deserialize-action.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml index ce01c669c..ad90efc6d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml @@ -10,22 +10,33 @@ metadata: camel.apache.org/kamelet.group: "Actions" spec: definition: - title: "Json Deserialize Action" - description: "Deserialize payload to JSON" + title: "Avro Deserialize Action" + description: "Deserialize payload to Avro" type: object + properties: + schema: + title: Schema + description: The Avro schema to use during serialization (as single-line, using JSON format) + type: string + example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}' + validate: + title: Validate + description: Indicates if the content must be validated against the schema + type: boolean + default: true dependencies: -# - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - - "github:nicolaferraro.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - "camel:kamelet" - "camel:core" - - "camel:jackson" + - "camel:jackson-avro" flow: from: uri: kamelet:source steps: - unmarshal: - json: + avro: library: Jackson unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" - remove-header: header-name: "Content-Type" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml new file mode 100644 index 000000000..413847560 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml @@ -0,0 +1,49 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: avro-serialize-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Avro Serialize Action" + description: "Serialize payload to Avro" + type: object + properties: + schema: + title: Schema + description: The Avro schema to use during serialization (as single-line, using JSON format) + type: string + example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}' + validate: + title: Validate + description: Indicates if the content must be validated against the schema + type: boolean + default: true + dependencies: + - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-avro" + flow: + from: + uri: kamelet:source + steps: + - set-property: + name: schema + constant: "{{schema}}" + - set-property: + name: validate + constant: "{{validate}}" + - marshal: + avro: + library: Jackson + unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" + - set-header: + name: "Content-Type" + constant: "application/avro" From 4d98f9b0ac813580fe37fe8c3e391a112cccbe7f Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Fri, 4 Jun 2021 15:51:16 +0200 Subject: [PATCH 017/105] Set required fields and generate docs --- avro-deserialize-action.kamelet.yaml | 2 + avro-serialize-action.kamelet.yaml | 2 + .../kamelets/avro-deserialize-action.svg | 59 ++++++++++++++++ .../images/kamelets/avro-serialize-action.svg | 59 ++++++++++++++++ docs/modules/ROOT/nav.adoc | 2 + .../ROOT/pages/avro-deserialize-action.adoc | 68 +++++++++++++++++++ .../ROOT/pages/avro-serialize-action.adoc | 68 +++++++++++++++++++ .../avro-deserialize-action.kamelet.yaml | 2 + .../avro-serialize-action.kamelet.yaml | 2 + 9 files changed, 264 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/avro-deserialize-action.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/avro-serialize-action.svg create mode 100644 docs/modules/ROOT/pages/avro-deserialize-action.adoc create mode 100644 docs/modules/ROOT/pages/avro-serialize-action.adoc diff --git a/avro-deserialize-action.kamelet.yaml b/avro-deserialize-action.kamelet.yaml index ad90efc6d..835cdcc66 100644 --- a/avro-deserialize-action.kamelet.yaml +++ b/avro-deserialize-action.kamelet.yaml @@ -13,6 +13,8 @@ spec: title: "Avro Deserialize Action" description: "Deserialize payload to Avro" type: object + required: + - schema properties: schema: title: Schema diff --git a/avro-serialize-action.kamelet.yaml b/avro-serialize-action.kamelet.yaml index 413847560..31207b10d 100644 --- a/avro-serialize-action.kamelet.yaml +++ b/avro-serialize-action.kamelet.yaml @@ -13,6 +13,8 @@ spec: title: "Avro Serialize Action" description: "Serialize payload to Avro" type: object + required: + - schema properties: schema: title: Schema diff --git a/docs/modules/ROOT/assets/images/kamelets/avro-deserialize-action.svg b/docs/modules/ROOT/assets/images/kamelets/avro-deserialize-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/avro-deserialize-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/assets/images/kamelets/avro-serialize-action.svg b/docs/modules/ROOT/assets/images/kamelets/avro-serialize-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/avro-serialize-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 0767c5750..0c31a6266 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -1,4 +1,6 @@ // THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT +* xref:ROOT:avro-deserialize-action.adoc[image:kamelets/avro-deserialize-action.svg[] Avro Deserialize Action] +* xref:ROOT:avro-serialize-action.adoc[image:kamelets/avro-serialize-action.svg[] Avro Serialize Action] * xref:ROOT:aws-ddb-streams-source.adoc[image:kamelets/aws-ddb-streams-source.svg[] AWS DynamoDB Streams Source] * xref:ROOT:aws-kinesis-firehose-sink.adoc[image:kamelets/aws-kinesis-firehose-sink.svg[] AWS Kinesis Firehose Sink] * xref:ROOT:aws-kinesis-sink.adoc[image:kamelets/aws-kinesis-sink.svg[] AWS Kinesis Sink] diff --git a/docs/modules/ROOT/pages/avro-deserialize-action.adoc b/docs/modules/ROOT/pages/avro-deserialize-action.adoc new file mode 100644 index 000000000..da7ca4563 --- /dev/null +++ b/docs/modules/ROOT/pages/avro-deserialize-action.adoc @@ -0,0 +1,68 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/avro-deserialize-action.svg[] Avro Deserialize Action + +*Provided by: "Apache Software Foundation"* + +Deserialize payload to Avro + +== Configuration Options + +The following table summarizes the configuration options available for the `avro-deserialize-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *schema {empty}* *| Schema| The Avro schema to use during serialization (as single-line, using JSON format)| string| | `"{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}"` +| validate| Validate| Indicates if the content must be validated against the schema| boolean| `true`| +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `avro-deserialize-action` can be used in various contexts. + +=== Knative Action + +The `avro-deserialize-action` Kamelet can be used as intermediate step in a binding. + +.avro-deserialize-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: avro-deserialize-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: avro-deserialize-action + properties: + schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `avro-deserialize-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f avro-deserialize-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/avro-serialize-action.adoc b/docs/modules/ROOT/pages/avro-serialize-action.adoc new file mode 100644 index 000000000..bf11d5714 --- /dev/null +++ b/docs/modules/ROOT/pages/avro-serialize-action.adoc @@ -0,0 +1,68 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/avro-serialize-action.svg[] Avro Serialize Action + +*Provided by: "Apache Software Foundation"* + +Serialize payload to Avro + +== Configuration Options + +The following table summarizes the configuration options available for the `avro-serialize-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *schema {empty}* *| Schema| The Avro schema to use during serialization (as single-line, using JSON format)| string| | `"{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}"` +| validate| Validate| Indicates if the content must be validated against the schema| boolean| `true`| +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `avro-serialize-action` can be used in various contexts. + +=== Knative Action + +The `avro-serialize-action` Kamelet can be used as intermediate step in a binding. + +.avro-serialize-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: avro-serialize-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: avro-serialize-action + properties: + schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `avro-serialize-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f avro-serialize-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml index ad90efc6d..835cdcc66 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml @@ -13,6 +13,8 @@ spec: title: "Avro Deserialize Action" description: "Deserialize payload to Avro" type: object + required: + - schema properties: schema: title: Schema diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml index 413847560..31207b10d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml @@ -13,6 +13,8 @@ spec: title: "Avro Serialize Action" description: "Serialize payload to Avro" type: object + required: + - schema properties: schema: title: Schema From 977213f209ed8e4d6bf092373bf80c66b11b1ccf Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Fri, 4 Jun 2021 16:11:59 +0200 Subject: [PATCH 018/105] Add missing annotations and regen --- avro-deserialize-action.kamelet.yaml | 8 ++++++-- avro-serialize-action.kamelet.yaml | 8 ++++++-- docs/modules/ROOT/pages/avro-deserialize-action.adoc | 2 ++ docs/modules/ROOT/pages/avro-serialize-action.adoc | 2 ++ .../kamelets/avro-deserialize-action.kamelet.yaml | 8 ++++++-- .../resources/kamelets/avro-serialize-action.kamelet.yaml | 8 ++++++-- 6 files changed, 28 insertions(+), 8 deletions(-) diff --git a/avro-deserialize-action.kamelet.yaml b/avro-deserialize-action.kamelet.yaml index 835cdcc66..8a7c12606 100644 --- a/avro-deserialize-action.kamelet.yaml +++ b/avro-deserialize-action.kamelet.yaml @@ -2,12 +2,14 @@ apiVersion: camel.apache.org/v1alpha1 kind: Kamelet metadata: name: avro-deserialize-action - labels: - camel.apache.org/kamelet.type: "action" annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Apache Software Foundation" camel.apache.org/kamelet.group: "Actions" + labels: + camel.apache.org/kamelet.type: "action" spec: definition: title: "Avro Deserialize Action" @@ -26,6 +28,8 @@ spec: description: Indicates if the content must be validated against the schema type: boolean default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - "camel:kamelet" diff --git a/avro-serialize-action.kamelet.yaml b/avro-serialize-action.kamelet.yaml index 31207b10d..eaef74422 100644 --- a/avro-serialize-action.kamelet.yaml +++ b/avro-serialize-action.kamelet.yaml @@ -2,12 +2,14 @@ apiVersion: camel.apache.org/v1alpha1 kind: Kamelet metadata: name: avro-serialize-action - labels: - camel.apache.org/kamelet.type: "action" annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Apache Software Foundation" camel.apache.org/kamelet.group: "Actions" + labels: + camel.apache.org/kamelet.type: "action" spec: definition: title: "Avro Serialize Action" @@ -26,6 +28,8 @@ spec: description: Indicates if the content must be validated against the schema type: boolean default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - "camel:kamelet" diff --git a/docs/modules/ROOT/pages/avro-deserialize-action.adoc b/docs/modules/ROOT/pages/avro-deserialize-action.adoc index da7ca4563..077df053b 100644 --- a/docs/modules/ROOT/pages/avro-deserialize-action.adoc +++ b/docs/modules/ROOT/pages/avro-deserialize-action.adoc @@ -3,6 +3,8 @@ *Provided by: "Apache Software Foundation"* +*Support Level for this Kamelet is: "Preview"* + Deserialize payload to Avro == Configuration Options diff --git a/docs/modules/ROOT/pages/avro-serialize-action.adoc b/docs/modules/ROOT/pages/avro-serialize-action.adoc index bf11d5714..9e0bbcc6f 100644 --- a/docs/modules/ROOT/pages/avro-serialize-action.adoc +++ b/docs/modules/ROOT/pages/avro-serialize-action.adoc @@ -3,6 +3,8 @@ *Provided by: "Apache Software Foundation"* +*Support Level for this Kamelet is: "Preview"* + Serialize payload to Avro == Configuration Options diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml index 835cdcc66..8a7c12606 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml @@ -2,12 +2,14 @@ apiVersion: camel.apache.org/v1alpha1 kind: Kamelet metadata: name: avro-deserialize-action - labels: - camel.apache.org/kamelet.type: "action" annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Apache Software Foundation" camel.apache.org/kamelet.group: "Actions" + labels: + camel.apache.org/kamelet.type: "action" spec: definition: title: "Avro Deserialize Action" @@ -26,6 +28,8 @@ spec: description: Indicates if the content must be validated against the schema type: boolean default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - "camel:kamelet" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml index 31207b10d..eaef74422 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml @@ -2,12 +2,14 @@ apiVersion: camel.apache.org/v1alpha1 kind: Kamelet metadata: name: avro-serialize-action - labels: - camel.apache.org/kamelet.type: "action" annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Apache Software Foundation" camel.apache.org/kamelet.group: "Actions" + labels: + camel.apache.org/kamelet.type: "action" spec: definition: title: "Avro Serialize Action" @@ -26,6 +28,8 @@ spec: description: Indicates if the content must be validated against the schema type: boolean default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" - "camel:kamelet" From 08eb5eebb13c31ed618c5d8b317e1777eae78fb8 Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Mon, 7 Jun 2021 10:23:23 +0200 Subject: [PATCH 019/105] Remove property leak --- avro-deserialize-action.kamelet.yaml | 12 +++++++++++- avro-serialize-action.kamelet.yaml | 6 +++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/avro-deserialize-action.kamelet.yaml b/avro-deserialize-action.kamelet.yaml index 8a7c12606..e618ac886 100644 --- a/avro-deserialize-action.kamelet.yaml +++ b/avro-deserialize-action.kamelet.yaml @@ -39,10 +39,20 @@ spec: from: uri: kamelet:source steps: + - set-property: + name: schema + constant: "{{schema}}" + - set-property: + name: validate + constant: "{{validate}}" - unmarshal: - avro: + avro: library: Jackson unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" + - remove-property: + property-name: schema + - remove-property: + property-name: validate - remove-header: header-name: "Content-Type" diff --git a/avro-serialize-action.kamelet.yaml b/avro-serialize-action.kamelet.yaml index eaef74422..3e8fa60cf 100644 --- a/avro-serialize-action.kamelet.yaml +++ b/avro-serialize-action.kamelet.yaml @@ -46,10 +46,14 @@ spec: name: validate constant: "{{validate}}" - marshal: - avro: + avro: library: Jackson unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" + - remove-property: + property-name: schema + - remove-property: + property-name: validate - set-header: name: "Content-Type" constant: "application/avro" From 74224048af2f24c2b649665880c8e5f80b4ea738 Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Mon, 7 Jun 2021 10:27:48 +0200 Subject: [PATCH 020/105] Add license header and regen --- .../avro-deserialize-action.kamelet.yaml | 12 +++++++++++- .../kamelets/avro-serialize-action.kamelet.yaml | 6 +++++- .../InflightAvroSchemaResolver.java | 16 ++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml index 8a7c12606..e618ac886 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml @@ -39,10 +39,20 @@ spec: from: uri: kamelet:source steps: + - set-property: + name: schema + constant: "{{schema}}" + - set-property: + name: validate + constant: "{{validate}}" - unmarshal: - avro: + avro: library: Jackson unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" + - remove-property: + property-name: schema + - remove-property: + property-name: validate - remove-header: header-name: "Content-Type" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml index eaef74422..3e8fa60cf 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml @@ -46,10 +46,14 @@ spec: name: validate constant: "{{validate}}" - marshal: - avro: + avro: library: Jackson unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" + - remove-property: + property-name: schema + - remove-property: + property-name: validate - set-header: name: "Content-Type" constant: "application/avro" diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightAvroSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightAvroSchemaResolver.java index 1faf12195..a75df4d12 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightAvroSchemaResolver.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightAvroSchemaResolver.java @@ -1,3 +1,19 @@ +/* + * 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. + */ package org.apache.camel.kamelets.utils.serialization; import com.fasterxml.jackson.core.FormatSchema; From 908cf83ef755631943725e8efd7f86754ac4eeae Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Fri, 4 Jun 2021 16:45:22 +0200 Subject: [PATCH 021/105] Add protobuf serdes --- .../kamelets/protobuf-deserialize-action.svg | 59 ++++++++++++++++ .../kamelets/protobuf-serialize-action.svg | 59 ++++++++++++++++ docs/modules/ROOT/nav.adoc | 2 + .../pages/protobuf-deserialize-action.adoc | 69 +++++++++++++++++++ .../ROOT/pages/protobuf-serialize-action.adoc | 69 +++++++++++++++++++ .../protobuf-deserialize-action.kamelet.yaml | 41 +++++++++++ .../protobuf-serialize-action.kamelet.yaml | 45 ++++++++++++ library/camel-kamelets-utils/pom.xml | 5 ++ .../InflightProtobufSchemaResolver.java | 25 +++++++ protobuf-deserialize-action.kamelet.yaml | 41 +++++++++++ protobuf-serialize-action.kamelet.yaml | 45 ++++++++++++ 11 files changed, 460 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/protobuf-deserialize-action.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/protobuf-serialize-action.svg create mode 100644 docs/modules/ROOT/pages/protobuf-deserialize-action.adoc create mode 100644 docs/modules/ROOT/pages/protobuf-serialize-action.adoc create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java create mode 100644 protobuf-deserialize-action.kamelet.yaml create mode 100644 protobuf-serialize-action.kamelet.yaml diff --git a/docs/modules/ROOT/assets/images/kamelets/protobuf-deserialize-action.svg b/docs/modules/ROOT/assets/images/kamelets/protobuf-deserialize-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/protobuf-deserialize-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/assets/images/kamelets/protobuf-serialize-action.svg b/docs/modules/ROOT/assets/images/kamelets/protobuf-serialize-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/protobuf-serialize-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 0c31a6266..8d23d3676 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -75,6 +75,8 @@ * xref:ROOT:openai-classification-action.adoc[image:kamelets/openai-classification-action.svg[] OpenAI Classification Action] * xref:ROOT:openai-completion-action.adoc[image:kamelets/openai-completion-action.svg[] OpenAI Completion Action] * xref:ROOT:pdf-action.adoc[image:kamelets/pdf-action.svg[] PDF Action] +* xref:ROOT:protobuf-deserialize-action.adoc[image:kamelets/protobuf-deserialize-action.svg[] Protobuf Deserialize Action] +* xref:ROOT:protobuf-serialize-action.adoc[image:kamelets/protobuf-serialize-action.svg[] Protobuf Serialize Action] * xref:ROOT:rabbitmq-source.adoc[image:kamelets/rabbitmq-source.svg[] RabbitMQ Source] * xref:ROOT:regex-router-action.adoc[image:kamelets/regex-router-action.svg[] Regex Router Action] * xref:ROOT:replace-field-action.adoc[image:kamelets/replace-field-action.svg[] Replace Field Action] diff --git a/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc b/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc new file mode 100644 index 000000000..244ee292d --- /dev/null +++ b/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc @@ -0,0 +1,69 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/protobuf-deserialize-action.svg[] Protobuf Deserialize Action + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Deserialize payload to Protobuf + +== Configuration Options + +The following table summarizes the configuration options available for the `protobuf-deserialize-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *schema {empty}* *| Schema| The Protobuf schema to use during serialization (as single-line)| string| | `"message Person { required string first = 1; required string last = 2; }"` +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `protobuf-deserialize-action` can be used in various contexts. + +=== Knative Action + +The `protobuf-deserialize-action` Kamelet can be used as intermediate step in a binding. + +.protobuf-deserialize-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: protobuf-deserialize-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: protobuf-deserialize-action + properties: + schema: "message Person { required string first = 1; required string last = 2; }" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `protobuf-deserialize-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f protobuf-deserialize-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/protobuf-serialize-action.adoc b/docs/modules/ROOT/pages/protobuf-serialize-action.adoc new file mode 100644 index 000000000..b8d59f692 --- /dev/null +++ b/docs/modules/ROOT/pages/protobuf-serialize-action.adoc @@ -0,0 +1,69 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/protobuf-serialize-action.svg[] Protobuf Serialize Action + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Serialize payload to Protobuf + +== Configuration Options + +The following table summarizes the configuration options available for the `protobuf-serialize-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *schema {empty}* *| Schema| The Protobuf schema to use during serialization (as single-line)| string| | `"message Person { required string first = 1; required string last = 2; }"` +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `protobuf-serialize-action` can be used in various contexts. + +=== Knative Action + +The `protobuf-serialize-action` Kamelet can be used as intermediate step in a binding. + +.protobuf-serialize-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: protobuf-serialize-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: protobuf-serialize-action + properties: + schema: "message Person { required string first = 1; required string last = 2; }" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `protobuf-serialize-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f protobuf-serialize-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml new file mode 100644 index 000000000..212502dcb --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml @@ -0,0 +1,41 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: protobuf-deserialize-action + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Protobuf Deserialize Action" + description: "Deserialize payload to Protobuf" + type: object + required: + - schema + properties: + schema: + title: Schema + description: The Protobuf schema to use during serialization (as single-line) + type: string + example: 'message Person { required string first = 1; required string last = 2; }' + dependencies: + - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-protobuf" + flow: + from: + uri: kamelet:source + steps: + - unmarshal: + protobuf: + library: Jackson + unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" + - remove-header: + header-name: "Content-Type" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml new file mode 100644 index 000000000..c5ce0bd46 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml @@ -0,0 +1,45 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: protobuf-serialize-action + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Protobuf Serialize Action" + description: "Serialize payload to Protobuf" + type: object + required: + - schema + properties: + schema: + title: Schema + description: The Protobuf schema to use during serialization (as single-line) + type: string + example: 'message Person { required string first = 1; required string last = 2; }' + dependencies: + - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-protobuf" + flow: + from: + uri: kamelet:source + steps: + - set-property: + name: schema + constant: "{{schema}}" + - marshal: + protobuf: + library: Jackson + unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" + - set-header: + name: "Content-Type" + constant: "application/protobuf" diff --git a/library/camel-kamelets-utils/pom.xml b/library/camel-kamelets-utils/pom.xml index 0d2041eb2..cb71d0705 100644 --- a/library/camel-kamelets-utils/pom.xml +++ b/library/camel-kamelets-utils/pom.xml @@ -51,6 +51,11 @@ camel-api + + org.apache.camel + camel-jackson-protobuf + + org.apache.camel camel-jackson diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java new file mode 100644 index 000000000..f4d39dddb --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java @@ -0,0 +1,25 @@ +package org.apache.camel.kamelets.utils.serialization; + +import java.io.IOException; + +import com.fasterxml.jackson.core.FormatSchema; +import com.fasterxml.jackson.dataformat.protobuf.schema.ProtobufSchema; +import com.fasterxml.jackson.dataformat.protobuf.schema.ProtobufSchemaLoader; + +import org.apache.camel.Exchange; +import org.apache.camel.RuntimeCamelException; +import org.apache.camel.component.jackson.SchemaResolver; + +public class InflightProtobufSchemaResolver implements SchemaResolver { + + @Override + public FormatSchema resolve(Exchange exchange) { + String schemaStr = (String) exchange.getProperty("schema"); + try { + ProtobufSchema schema = ProtobufSchemaLoader.std.parse(schemaStr); + return schema; + } catch(IOException e) { + throw new RuntimeCamelException("Cannot parse protobuf schema", e); + } + } +} diff --git a/protobuf-deserialize-action.kamelet.yaml b/protobuf-deserialize-action.kamelet.yaml new file mode 100644 index 000000000..212502dcb --- /dev/null +++ b/protobuf-deserialize-action.kamelet.yaml @@ -0,0 +1,41 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: protobuf-deserialize-action + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Protobuf Deserialize Action" + description: "Deserialize payload to Protobuf" + type: object + required: + - schema + properties: + schema: + title: Schema + description: The Protobuf schema to use during serialization (as single-line) + type: string + example: 'message Person { required string first = 1; required string last = 2; }' + dependencies: + - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-protobuf" + flow: + from: + uri: kamelet:source + steps: + - unmarshal: + protobuf: + library: Jackson + unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" + - remove-header: + header-name: "Content-Type" diff --git a/protobuf-serialize-action.kamelet.yaml b/protobuf-serialize-action.kamelet.yaml new file mode 100644 index 000000000..c5ce0bd46 --- /dev/null +++ b/protobuf-serialize-action.kamelet.yaml @@ -0,0 +1,45 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: protobuf-serialize-action + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Protobuf Serialize Action" + description: "Serialize payload to Protobuf" + type: object + required: + - schema + properties: + schema: + title: Schema + description: The Protobuf schema to use during serialization (as single-line) + type: string + example: 'message Person { required string first = 1; required string last = 2; }' + dependencies: + - "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-protobuf" + flow: + from: + uri: kamelet:source + steps: + - set-property: + name: schema + constant: "{{schema}}" + - marshal: + protobuf: + library: Jackson + unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" + - set-header: + name: "Content-Type" + constant: "application/protobuf" From 105f180de2ff0b81e856f8bcbf54bbc8ab16cc6e Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Mon, 7 Jun 2021 10:26:44 +0200 Subject: [PATCH 022/105] Avoid property leak --- .../InflightProtobufSchemaResolver.java | 16 ++++++++++++++++ protobuf-deserialize-action.kamelet.yaml | 7 ++++++- protobuf-serialize-action.kamelet.yaml | 4 +++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java index f4d39dddb..4d09f9d5e 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java @@ -1,3 +1,19 @@ +/* + * 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. + */ package org.apache.camel.kamelets.utils.serialization; import java.io.IOException; diff --git a/protobuf-deserialize-action.kamelet.yaml b/protobuf-deserialize-action.kamelet.yaml index 212502dcb..490b5eaaa 100644 --- a/protobuf-deserialize-action.kamelet.yaml +++ b/protobuf-deserialize-action.kamelet.yaml @@ -32,10 +32,15 @@ spec: from: uri: kamelet:source steps: + - set-property: + name: schema + constant: "{{schema}}" - unmarshal: - protobuf: + protobuf: library: Jackson unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" + - remove-property: + property-name: schema - remove-header: header-name: "Content-Type" diff --git a/protobuf-serialize-action.kamelet.yaml b/protobuf-serialize-action.kamelet.yaml index c5ce0bd46..7b9a67b35 100644 --- a/protobuf-serialize-action.kamelet.yaml +++ b/protobuf-serialize-action.kamelet.yaml @@ -36,10 +36,12 @@ spec: name: schema constant: "{{schema}}" - marshal: - protobuf: + protobuf: library: Jackson unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" + - remove-property: + property-name: schema - set-header: name: "Content-Type" constant: "application/protobuf" From a0036d5296aff8a3745e813788dcd7928be75514 Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Mon, 7 Jun 2021 10:28:16 +0200 Subject: [PATCH 023/105] Regen --- .../kamelets/protobuf-deserialize-action.kamelet.yaml | 7 ++++++- .../kamelets/protobuf-serialize-action.kamelet.yaml | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml index 212502dcb..490b5eaaa 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml @@ -32,10 +32,15 @@ spec: from: uri: kamelet:source steps: + - set-property: + name: schema + constant: "{{schema}}" - unmarshal: - protobuf: + protobuf: library: Jackson unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" + - remove-property: + property-name: schema - remove-header: header-name: "Content-Type" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml index c5ce0bd46..7b9a67b35 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml @@ -36,10 +36,12 @@ spec: name: schema constant: "{{schema}}" - marshal: - protobuf: + protobuf: library: Jackson unmarshalTypeName: com.fasterxml.jackson.databind.JsonNode schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" + - remove-property: + property-name: schema - set-header: name: "Content-Type" constant: "application/protobuf" From fca35a0a2715400ceaf6de6526389f43d83c6d2f Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:03:21 +0200 Subject: [PATCH 024/105] Added Has Header action for filtering --- has-header-action.kamelet.yaml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 has-header-action.kamelet.yaml diff --git a/has-header-action.kamelet.yaml b/has-header-action.kamelet.yaml new file mode 100644 index 000000000..bdb5416df --- /dev/null +++ b/has-header-action.kamelet.yaml @@ -0,0 +1,30 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: has-header-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Filter" + description: "Filter based on the presence of one header" + required: + - name + properties: + name: + title: Header Name + description: The header name to evaluate + type: string + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[{{name}}]} == null" + steps: + - stop: {} From c8fec0fa659fea1e414c4289091f1ee2da06306b Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:08:53 +0200 Subject: [PATCH 025/105] Added Has Header action for filtering --- has-header-action.kamelet.yaml | 2 +- .../kamelets/has-header-action.kamelet.yaml | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml diff --git a/has-header-action.kamelet.yaml b/has-header-action.kamelet.yaml index bdb5416df..ff280e2cd 100644 --- a/has-header-action.kamelet.yaml +++ b/has-header-action.kamelet.yaml @@ -11,7 +11,7 @@ metadata: camel.apache.org/kamelet.group: "Actions" spec: definition: - title: "Filter" + title: "Has Header Action" description: "Filter based on the presence of one header" required: - name diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml new file mode 100644 index 000000000..bdb5416df --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml @@ -0,0 +1,30 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: has-header-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Filter" + description: "Filter based on the presence of one header" + required: + - name + properties: + name: + title: Header Name + description: The header name to evaluate + type: string + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[{{name}}]} == null" + steps: + - stop: {} From cd9c62809143db5b02dc5ae9a30b1e7ec9826d9b Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:09:26 +0200 Subject: [PATCH 026/105] Added Has Header action for filtering --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 8d23d3676..89a81ddf4 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -48,6 +48,7 @@ * xref:ROOT:google-calendar-source.adoc[image:kamelets/google-calendar-source.svg[] Google Calendar Source] * xref:ROOT:google-mail-source.adoc[image:kamelets/google-mail-source.svg[] Google Mail Source] * xref:ROOT:google-sheets-source.adoc[image:kamelets/google-sheets-source.svg[] Google Sheets Source] +* xref:ROOT:has-header-action.adoc[image:kamelets/has-header-action.svg[] Has Header Action] * xref:ROOT:hoist-field-action.adoc[image:kamelets/hoist-field-action.svg[] Hoist Field Action] * xref:ROOT:http-secured-sink.adoc[image:kamelets/http-secured-sink.svg[] Secured HTTP Sink] * xref:ROOT:http-secured-source.adoc[image:kamelets/http-secured-source.svg[] HTTP Secured Source] From 8d834b0652f2705c7989feb3200b7490b22bb1f0 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:09:36 +0200 Subject: [PATCH 027/105] Added Has Header action for filtering --- .../images/kamelets/has-header-action.svg | 59 ++++++++++++++++ .../modules/ROOT/pages/has-header-action.adoc | 69 +++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/has-header-action.svg create mode 100644 docs/modules/ROOT/pages/has-header-action.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/has-header-action.svg b/docs/modules/ROOT/assets/images/kamelets/has-header-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/has-header-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/pages/has-header-action.adoc b/docs/modules/ROOT/pages/has-header-action.adoc new file mode 100644 index 000000000..5d07fb862 --- /dev/null +++ b/docs/modules/ROOT/pages/has-header-action.adoc @@ -0,0 +1,69 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/has-header-action.svg[] Has Header Action + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Filter based on the presence of one header + +== Configuration Options + +The following table summarizes the configuration options available for the `has-header-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *name {empty}* *| Header Name| The header name to evaluate| string| | +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `has-header-action` can be used in various contexts. + +=== Knative Action + +The `has-header-action` Kamelet can be used as intermediate step in a binding. + +.has-header-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: has-header-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: has-header-action + properties: + name: "The Header Name" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `has-header-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f has-header-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From af00675baa22769a47827acfce6e66d49d7af3fa Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:11:35 +0200 Subject: [PATCH 028/105] Added Has Header action for filtering --- has-header-action.kamelet.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/has-header-action.kamelet.yaml b/has-header-action.kamelet.yaml index ff280e2cd..455429882 100644 --- a/has-header-action.kamelet.yaml +++ b/has-header-action.kamelet.yaml @@ -6,6 +6,7 @@ metadata: camel.apache.org/kamelet.type: "action" annotations: camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Apache Software Foundation" camel.apache.org/kamelet.group: "Actions" @@ -20,6 +21,10 @@ spec: title: Header Name description: The header name to evaluate type: string + type: object + dependencies: + - "camel:core" + - "camel:kamelet" flow: from: uri: kamelet:source From c19b745e5d2c3c3be1a99e5e3f71a015e4e5008d Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:12:14 +0200 Subject: [PATCH 029/105] Added Has Header action for filtering --- .../main/resources/kamelets/has-header-action.kamelet.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml index bdb5416df..455429882 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml @@ -6,12 +6,13 @@ metadata: camel.apache.org/kamelet.type: "action" annotations: camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Apache Software Foundation" camel.apache.org/kamelet.group: "Actions" spec: definition: - title: "Filter" + title: "Has Header Action" description: "Filter based on the presence of one header" required: - name @@ -20,6 +21,10 @@ spec: title: Header Name description: The header name to evaluate type: string + type: object + dependencies: + - "camel:core" + - "camel:kamelet" flow: from: uri: kamelet:source From ff3bca619b888cbef10fc7c150d5e33e7d6788fb Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:19:08 +0200 Subject: [PATCH 030/105] Added Has Header action for filtering --- has-header-filter-action.kamelet.yaml | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 has-header-filter-action.kamelet.yaml diff --git a/has-header-filter-action.kamelet.yaml b/has-header-filter-action.kamelet.yaml new file mode 100644 index 000000000..a5b4121f5 --- /dev/null +++ b/has-header-filter-action.kamelet.yaml @@ -0,0 +1,35 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: has-header-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Has Header Filter Action" + description: "Filter based on the presence of one header" + required: + - name + properties: + name: + title: Header Name + description: The header name to evaluate + type: string + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[{{name}}]} == null" + steps: + - stop: {} From db3e8ea0c68d2e28f36935c36c9ecf1ac6781611 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:20:35 +0200 Subject: [PATCH 031/105] Added Has Header action for filtering --- .../images/kamelets/has-header-action.svg | 59 ---------------- .../modules/ROOT/pages/has-header-action.adoc | 69 ------------------- has-header-action.kamelet.yaml | 35 ---------- .../kamelets/has-header-action.kamelet.yaml | 35 ---------- 4 files changed, 198 deletions(-) delete mode 100644 docs/modules/ROOT/assets/images/kamelets/has-header-action.svg delete mode 100644 docs/modules/ROOT/pages/has-header-action.adoc delete mode 100644 has-header-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml diff --git a/docs/modules/ROOT/assets/images/kamelets/has-header-action.svg b/docs/modules/ROOT/assets/images/kamelets/has-header-action.svg deleted file mode 100644 index fa06352da..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/has-header-action.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/docs/modules/ROOT/pages/has-header-action.adoc b/docs/modules/ROOT/pages/has-header-action.adoc deleted file mode 100644 index 5d07fb862..000000000 --- a/docs/modules/ROOT/pages/has-header-action.adoc +++ /dev/null @@ -1,69 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT -= image:kamelets/has-header-action.svg[] Has Header Action - -*Provided by: "Apache Software Foundation"* - -*Support Level for this Kamelet is: "Preview"* - -Filter based on the presence of one header - -== Configuration Options - -The following table summarizes the configuration options available for the `has-header-action` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *name {empty}* *| Header Name| The header name to evaluate| string| | -|=== - -NOTE: Fields marked with ({empty}*) are mandatory. - -== Usage - -This section summarizes how the `has-header-action` can be used in various contexts. - -=== Knative Action - -The `has-header-action` Kamelet can be used as intermediate step in a binding. - -.has-header-action-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: has-header-action-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: timer-source - properties: - message: "Hello" - steps: - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: has-header-action - properties: - name: "The Header Name" - sink: - ref: - kind: InMemoryChannel - apiVersion: messaging.knative.dev/v1 - name: mychannel - ----- - -Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. - -Save the `has-header-action-binding.yaml` file into your hard drive, then configure it according to your needs. - -You can run the action using the following command: - -[source,shell] ----- -kubectl apply -f has-header-action-binding.yaml ----- -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/has-header-action.kamelet.yaml b/has-header-action.kamelet.yaml deleted file mode 100644 index 455429882..000000000 --- a/has-header-action.kamelet.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: has-header-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/kamelet.support.level: "Preview" - camel.apache.org/catalog.version: "main-SNAPSHOT" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Apache Software Foundation" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Has Header Action" - description: "Filter based on the presence of one header" - required: - - name - properties: - name: - title: Header Name - description: The header name to evaluate - type: string - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - flow: - from: - uri: kamelet:source - steps: - - filter: - simple: "${header[{{name}}]} == null" - steps: - - stop: {} diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml deleted file mode 100644 index 455429882..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-action.kamelet.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: has-header-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/kamelet.support.level: "Preview" - camel.apache.org/catalog.version: "main-SNAPSHOT" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Apache Software Foundation" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Has Header Action" - description: "Filter based on the presence of one header" - required: - - name - properties: - name: - title: Header Name - description: The header name to evaluate - type: string - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - flow: - from: - uri: kamelet:source - steps: - - filter: - simple: "${header[{{name}}]} == null" - steps: - - stop: {} From ad8637016187e8fa528bd454a91aba191c962bcf Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:20:44 +0200 Subject: [PATCH 032/105] Added Has Header action for filtering --- .../has-header-filter-action.kamelet.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml new file mode 100644 index 000000000..a5b4121f5 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml @@ -0,0 +1,35 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: has-header-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Has Header Filter Action" + description: "Filter based on the presence of one header" + required: + - name + properties: + name: + title: Header Name + description: The header name to evaluate + type: string + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[{{name}}]} == null" + steps: + - stop: {} From 19e868ce351a9abbac99a58468a3a6198d9c2ac2 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:21:22 +0200 Subject: [PATCH 033/105] Added Has Header action for filtering --- docs/modules/ROOT/nav.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 89a81ddf4..0021c89ea 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -48,7 +48,7 @@ * xref:ROOT:google-calendar-source.adoc[image:kamelets/google-calendar-source.svg[] Google Calendar Source] * xref:ROOT:google-mail-source.adoc[image:kamelets/google-mail-source.svg[] Google Mail Source] * xref:ROOT:google-sheets-source.adoc[image:kamelets/google-sheets-source.svg[] Google Sheets Source] -* xref:ROOT:has-header-action.adoc[image:kamelets/has-header-action.svg[] Has Header Action] +* xref:ROOT:has-header-filter-action.adoc[image:kamelets/has-header-filter-action.svg[] Has Header Filter Action] * xref:ROOT:hoist-field-action.adoc[image:kamelets/hoist-field-action.svg[] Hoist Field Action] * xref:ROOT:http-secured-sink.adoc[image:kamelets/http-secured-sink.svg[] Secured HTTP Sink] * xref:ROOT:http-secured-source.adoc[image:kamelets/http-secured-source.svg[] HTTP Secured Source] From 681714832d89fb616483484f272cca4ee32c9d43 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 11:21:34 +0200 Subject: [PATCH 034/105] Added Has Header action for filtering --- .../kamelets/has-header-filter-action.svg | 59 ++++++++++++++++ .../ROOT/pages/has-header-filter-action.adoc | 69 +++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/has-header-filter-action.svg create mode 100644 docs/modules/ROOT/pages/has-header-filter-action.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/has-header-filter-action.svg b/docs/modules/ROOT/assets/images/kamelets/has-header-filter-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/has-header-filter-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/pages/has-header-filter-action.adoc b/docs/modules/ROOT/pages/has-header-filter-action.adoc new file mode 100644 index 000000000..3401ca2d9 --- /dev/null +++ b/docs/modules/ROOT/pages/has-header-filter-action.adoc @@ -0,0 +1,69 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/has-header-filter-action.svg[] Has Header Filter Action + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Filter based on the presence of one header + +== Configuration Options + +The following table summarizes the configuration options available for the `has-header-filter-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *name {empty}* *| Header Name| The header name to evaluate| string| | +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `has-header-filter-action` can be used in various contexts. + +=== Knative Action + +The `has-header-filter-action` Kamelet can be used as intermediate step in a binding. + +.has-header-filter-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: has-header-filter-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: has-header-filter-action + properties: + name: "The Header Name" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `has-header-filter-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f has-header-filter-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From 0b5e485fc1109bb84e204a83835e298940e86b29 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 13:06:40 +0200 Subject: [PATCH 035/105] Added Tombstone Filter Action --- is-tombstone-filter-action.kamelet.yaml | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 is-tombstone-filter-action.kamelet.yaml diff --git a/is-tombstone-filter-action.kamelet.yaml b/is-tombstone-filter-action.kamelet.yaml new file mode 100644 index 000000000..35051be76 --- /dev/null +++ b/is-tombstone-filter-action.kamelet.yaml @@ -0,0 +1,28 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: is-tombstone-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Is Tombstone Filter Action" + description: "Filter based on the presence of body or not" + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${body} == null || ${body} == ''" + steps: + - stop: {} From fe5feaba7fb4d8706b7adbb8d949b2ad45ad748c Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 13:07:49 +0200 Subject: [PATCH 036/105] Added Tombstone Filter Action --- .../is-tombstone-filter-action.kamelet.yaml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml new file mode 100644 index 000000000..35051be76 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml @@ -0,0 +1,28 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: is-tombstone-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Is Tombstone Filter Action" + description: "Filter based on the presence of body or not" + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${body} == null || ${body} == ''" + steps: + - stop: {} From 048065f8feca71b51419c8145b630424f462c942 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 13:10:03 +0200 Subject: [PATCH 037/105] Added Tombstone Filter Action --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 0021c89ea..ec8caf26e 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -57,6 +57,7 @@ * xref:ROOT:infinispan-source.adoc[image:kamelets/infinispan-source.svg[] Infinispan Source] * xref:ROOT:insert-field-action.adoc[image:kamelets/insert-field-action.svg[] Insert Field Action] * xref:ROOT:insert-header-action.adoc[image:kamelets/insert-header-action.svg[] Insert Header Action] +* xref:ROOT:is-tombstone-filter-action.adoc[image:kamelets/is-tombstone-filter-action.svg[] Is Tombstone Filter Action] * xref:ROOT:jira-source.adoc[image:kamelets/jira-source.svg[] Jira Source] * xref:ROOT:json-deserialize-action.adoc[image:kamelets/json-deserialize-action.svg[] Json Deserialize Action] * xref:ROOT:json-serialize-action.adoc[image:kamelets/json-serialize-action.svg[] Json Serialize Action] From 1ae2594d8e08d713532d12983baf815e20be212c Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 13:10:12 +0200 Subject: [PATCH 038/105] Added Tombstone Filter Action --- .../kamelets/is-tombstone-filter-action.svg | 59 ++++++++++++++++++ .../pages/is-tombstone-filter-action.adoc | 60 +++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/is-tombstone-filter-action.svg create mode 100644 docs/modules/ROOT/pages/is-tombstone-filter-action.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/is-tombstone-filter-action.svg b/docs/modules/ROOT/assets/images/kamelets/is-tombstone-filter-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/is-tombstone-filter-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/pages/is-tombstone-filter-action.adoc b/docs/modules/ROOT/pages/is-tombstone-filter-action.adoc new file mode 100644 index 000000000..2c26e302d --- /dev/null +++ b/docs/modules/ROOT/pages/is-tombstone-filter-action.adoc @@ -0,0 +1,60 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/is-tombstone-filter-action.svg[] Is Tombstone Filter Action + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Filter based on the presence of body or not + +== Configuration Options + +The Kamelet does not specify any configuration option. + +== Usage + +This section summarizes how the `is-tombstone-filter-action` can be used in various contexts. + +=== Knative Action + +The `is-tombstone-filter-action` Kamelet can be used as intermediate step in a binding. + +.is-tombstone-filter-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: is-tombstone-filter-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: is-tombstone-filter-action + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `is-tombstone-filter-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f is-tombstone-filter-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From e196b9046b230169101101cf760c490847f9762d Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 14:36:54 +0200 Subject: [PATCH 039/105] Topic Name Matches Filter Action --- topic-name-matches-filter-action.kamelet.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 topic-name-matches-filter-action.kamelet.yaml diff --git a/topic-name-matches-filter-action.kamelet.yaml b/topic-name-matches-filter-action.kamelet.yaml new file mode 100644 index 000000000..237d07f50 --- /dev/null +++ b/topic-name-matches-filter-action.kamelet.yaml @@ -0,0 +1,35 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: topic-name-matches-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Kafka Topic Name Matches Filter Action" + description: "Filter based on kafka topic value compared to regex" + required: + - regex + properties: + regex: + title: Regex + description: The Regex to Evaluate against the Kafka topic name + type: string + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[kafka.TOPIC]} !regex '{{regex}}'" + steps: + - stop: {} From 6846880d8d968917ab8af179a76040646b170259 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 14:39:03 +0200 Subject: [PATCH 040/105] Topic Name Matches Filter Action --- ...ic-name-matches-filter-action.kamelet.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml new file mode 100644 index 000000000..237d07f50 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml @@ -0,0 +1,35 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: topic-name-matches-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Kafka Topic Name Matches Filter Action" + description: "Filter based on kafka topic value compared to regex" + required: + - regex + properties: + regex: + title: Regex + description: The Regex to Evaluate against the Kafka topic name + type: string + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[kafka.TOPIC]} !regex '{{regex}}'" + steps: + - stop: {} From c048a768457fd5815dad4459ded58e3f5db68afb Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 14:39:36 +0200 Subject: [PATCH 041/105] Topic Name Matches Filter Action --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index ec8caf26e..e7d8fdb9f 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -91,6 +91,7 @@ * xref:ROOT:telegram-source.adoc[image:kamelets/telegram-source.svg[] Telegram Source] * xref:ROOT:timer-source.adoc[image:kamelets/timer-source.svg[] Timer Source] * xref:ROOT:timestamp-router-action.adoc[image:kamelets/timestamp-router-action.svg[] Timestamp Router Action] +* xref:ROOT:topic-name-matches-filter-action.adoc[image:kamelets/topic-name-matches-filter-action.svg[] Kafka Topic Name Matches Filter Action] * xref:ROOT:twitter-directmessage-source.adoc[image:kamelets/twitter-directmessage-source.svg[] Twitter Direct Message Source] * xref:ROOT:twitter-search-source.adoc[image:kamelets/twitter-search-source.svg[] Twitter Search Source] * xref:ROOT:twitter-timeline-source.adoc[image:kamelets/twitter-timeline-source.svg[] Twitter Timeline Source] From f5d626b4f875838ae1bcae886b948301a2124b23 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 14:39:47 +0200 Subject: [PATCH 042/105] Topic Name Matches Filter Action --- .../topic-name-matches-filter-action.svg | 59 ++++++++++++++++ .../topic-name-matches-filter-action.adoc | 69 +++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/topic-name-matches-filter-action.svg create mode 100644 docs/modules/ROOT/pages/topic-name-matches-filter-action.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/topic-name-matches-filter-action.svg b/docs/modules/ROOT/assets/images/kamelets/topic-name-matches-filter-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/topic-name-matches-filter-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/pages/topic-name-matches-filter-action.adoc b/docs/modules/ROOT/pages/topic-name-matches-filter-action.adoc new file mode 100644 index 000000000..ec9b6da90 --- /dev/null +++ b/docs/modules/ROOT/pages/topic-name-matches-filter-action.adoc @@ -0,0 +1,69 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/topic-name-matches-filter-action.svg[] Kafka Topic Name Matches Filter Action + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Filter based on kafka topic value compared to regex + +== Configuration Options + +The following table summarizes the configuration options available for the `topic-name-matches-filter-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *regex {empty}* *| Regex| The Regex to Evaluate against the Kafka topic name| string| | +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `topic-name-matches-filter-action` can be used in various contexts. + +=== Knative Action + +The `topic-name-matches-filter-action` Kamelet can be used as intermediate step in a binding. + +.topic-name-matches-filter-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: topic-name-matches-filter-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: topic-name-matches-filter-action + properties: + regex: "The Regex" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `topic-name-matches-filter-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f topic-name-matches-filter-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From 62051705263e36656246aecb0bf4cad36b41ac04 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 17:55:57 +0200 Subject: [PATCH 043/105] Added Predicate Filter Action Kamelet --- predicate-filter-action.kamelet.yaml | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 predicate-filter-action.kamelet.yaml diff --git a/predicate-filter-action.kamelet.yaml b/predicate-filter-action.kamelet.yaml new file mode 100644 index 000000000..6af19bb2d --- /dev/null +++ b/predicate-filter-action.kamelet.yaml @@ -0,0 +1,36 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: predicate-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Predicate Filter Action" + description: "Filter based on a JsonPath Expression" + required: + - expression + properties: + expression: + title: Expression + description: The JsonPath Expression to evaluate, without the external parenthesis. Since this is a filter, the expression will be a negation, this means that if the foo field of the example is equals to John, the message will go ahead, otherwise it will be filtered out. + type: string + example: '@.foo =~ /.*John/' + dependencies: + - "camel:core" + - "camel:kamelet" + - "camel:jsonpath" + flow: + from: + uri: kamelet:source + steps: + - filter: + jsonpath: "$[?(!({{expression}}))]" + steps: + - stop: {} From 1f6143bc74fad6596ec73c53759885a7b24c927e Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 17:56:47 +0200 Subject: [PATCH 044/105] Added Predicate Filter Action Kamelet --- .../predicate-filter-action.kamelet.yaml | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml new file mode 100644 index 000000000..6af19bb2d --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml @@ -0,0 +1,36 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: predicate-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Predicate Filter Action" + description: "Filter based on a JsonPath Expression" + required: + - expression + properties: + expression: + title: Expression + description: The JsonPath Expression to evaluate, without the external parenthesis. Since this is a filter, the expression will be a negation, this means that if the foo field of the example is equals to John, the message will go ahead, otherwise it will be filtered out. + type: string + example: '@.foo =~ /.*John/' + dependencies: + - "camel:core" + - "camel:kamelet" + - "camel:jsonpath" + flow: + from: + uri: kamelet:source + steps: + - filter: + jsonpath: "$[?(!({{expression}}))]" + steps: + - stop: {} From 21721302508ea7943c187f2eed0f76275929617d Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 17:57:26 +0200 Subject: [PATCH 045/105] Added Predicate Filter Action Kamelet --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index e7d8fdb9f..2bb2733dd 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -77,6 +77,7 @@ * xref:ROOT:openai-classification-action.adoc[image:kamelets/openai-classification-action.svg[] OpenAI Classification Action] * xref:ROOT:openai-completion-action.adoc[image:kamelets/openai-completion-action.svg[] OpenAI Completion Action] * xref:ROOT:pdf-action.adoc[image:kamelets/pdf-action.svg[] PDF Action] +* xref:ROOT:predicate-filter-action.adoc[image:kamelets/predicate-filter-action.svg[] Predicate Filter Action] * xref:ROOT:protobuf-deserialize-action.adoc[image:kamelets/protobuf-deserialize-action.svg[] Protobuf Deserialize Action] * xref:ROOT:protobuf-serialize-action.adoc[image:kamelets/protobuf-serialize-action.svg[] Protobuf Serialize Action] * xref:ROOT:rabbitmq-source.adoc[image:kamelets/rabbitmq-source.svg[] RabbitMQ Source] From 2dcb0c7df64160ab0b50a50e0834995ca5f10237 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 17:57:35 +0200 Subject: [PATCH 046/105] Added Predicate Filter Action Kamelet --- .../kamelets/predicate-filter-action.svg | 59 ++++++++++++++++ .../ROOT/pages/predicate-filter-action.adoc | 69 +++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/predicate-filter-action.svg create mode 100644 docs/modules/ROOT/pages/predicate-filter-action.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/predicate-filter-action.svg b/docs/modules/ROOT/assets/images/kamelets/predicate-filter-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/predicate-filter-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/pages/predicate-filter-action.adoc b/docs/modules/ROOT/pages/predicate-filter-action.adoc new file mode 100644 index 000000000..9095c5b85 --- /dev/null +++ b/docs/modules/ROOT/pages/predicate-filter-action.adoc @@ -0,0 +1,69 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/predicate-filter-action.svg[] Predicate Filter Action + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Filter based on a JsonPath Expression + +== Configuration Options + +The following table summarizes the configuration options available for the `predicate-filter-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *expression {empty}* *| Expression| The JsonPath Expression to evaluate, without the external parenthesis. Since this is a filter, the expression will be a negation, this means that if the foo field of the example is equals to John, the message will go ahead, otherwise it will be filtered out.| string| | `"@.foo =~ /.*John/"` +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `predicate-filter-action` can be used in various contexts. + +=== Knative Action + +The `predicate-filter-action` Kamelet can be used as intermediate step in a binding. + +.predicate-filter-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: predicate-filter-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: predicate-filter-action + properties: + expression: "@.foo =~ /.*John/" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `predicate-filter-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f predicate-filter-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From dfe207ae334638035c8cd069d7f7171f17725eb4 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 18:05:14 +0200 Subject: [PATCH 047/105] Added Predicate Filter Action Kamelet --- predicate-filter-action.kamelet.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/predicate-filter-action.kamelet.yaml b/predicate-filter-action.kamelet.yaml index 6af19bb2d..993b0e3d8 100644 --- a/predicate-filter-action.kamelet.yaml +++ b/predicate-filter-action.kamelet.yaml @@ -22,6 +22,7 @@ spec: description: The JsonPath Expression to evaluate, without the external parenthesis. Since this is a filter, the expression will be a negation, this means that if the foo field of the example is equals to John, the message will go ahead, otherwise it will be filtered out. type: string example: '@.foo =~ /.*John/' + type: object dependencies: - "camel:core" - "camel:kamelet" From 999982bf6cb5cd78a29bc59f7a5d45be93baa062 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Wed, 9 Jun 2021 18:05:53 +0200 Subject: [PATCH 048/105] Added Predicate Filter Action Kamelet --- .../main/resources/kamelets/predicate-filter-action.kamelet.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml index 6af19bb2d..993b0e3d8 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml @@ -22,6 +22,7 @@ spec: description: The JsonPath Expression to evaluate, without the external parenthesis. Since this is a filter, the expression will be a negation, this means that if the foo field of the example is equals to John, the message will go ahead, otherwise it will be filtered out. type: string example: '@.foo =~ /.*John/' + type: object dependencies: - "camel:core" - "camel:kamelet" From 44dc8e432611a9cc76ed3c8fb1fc3bb54b5e5f5c Mon Sep 17 00:00:00 2001 From: lfabriko Date: Wed, 9 Jun 2021 21:54:18 +0200 Subject: [PATCH 049/105] Space in property "name" of insert-header-action seems to cause java.lang.IllegalArgumentException [1] 2021-06-09 19:43:08,803 INFO [org.apa.cam.imp.eng.AbstractCamelContext] (main) Apache Camel 3.9.0 (camel-1) started in 269ms (build:0ms init:211ms start:58ms) [1] 2021-06-09 19:43:08,899 INFO [io.quarkus] (main) camel-k-integration 1.4.0 on JVM (powered by Quarkus 1.13.0.Final) started in 1.604s. Listening on: http://0.0.0.0:8080 [1] 2021-06-09 19:43:08,900 INFO [io.quarkus] (main) Profile prod activated. [1] 2021-06-09 19:43:08,900 INFO [io.quarkus] (main) Installed features: [camel-attachments, camel-bean, camel-core, camel-k-cloudevents, camel-k-core, camel-k-knative, camel-k-knative-producer, camel-k-loader-yaml, camel-k-runtime, camel-kamelet, camel-platform-http, camel-support-common, camel-timer, camel-yaml-dsl, cdi, mutiny, smallrye-context-propagation, vertx, vertx-web] I observed following exception on OCP 4.7, community operator Camel K 1.4: [1] 2021-06-09 19:43:09,858 WARN [org.apa.cam.imp.eng.DefaultReactiveExecutor] (Camel (camel-1) thread #0 - timer://tick) Error executing reactive work due to a header name cannot contain the following prohibited characters: =,;: \t\r\n\v\f: The Name. This exception is ignored.: java.lang.IllegalArgumentException: a header name cannot contain the following prohibited characters: =,;: \t\r\n\v\f: The Name [1] at io.vertx.core.http.impl.HttpUtils.validateHeaderName(HttpUtils.java:766) [1] at io.vertx.core.http.impl.HttpUtils.validateHeader(HttpUtils.java:673) [1] at io.vertx.core.http.impl.headers.VertxHttpHeaders.add0(VertxHttpHeaders.java:531) --- docs/modules/ROOT/pages/insert-header-action.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/insert-header-action.adoc b/docs/modules/ROOT/pages/insert-header-action.adoc index 19934dfdb..22d864e40 100644 --- a/docs/modules/ROOT/pages/insert-header-action.adoc +++ b/docs/modules/ROOT/pages/insert-header-action.adoc @@ -48,7 +48,7 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: insert-header-action properties: - name: "The Name" + name: "TheName" value: "The Value" sink: ref: From 04286fc2301aea15023dcbf02facfec22ac19ef0 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 07:29:35 +0200 Subject: [PATCH 050/105] Space in property "name" of insert-header-action cause IllegalArgumentException --- docs/modules/ROOT/pages/insert-header-action.adoc | 2 +- insert-header-action.kamelet.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/insert-header-action.adoc b/docs/modules/ROOT/pages/insert-header-action.adoc index 22d864e40..19934dfdb 100644 --- a/docs/modules/ROOT/pages/insert-header-action.adoc +++ b/docs/modules/ROOT/pages/insert-header-action.adoc @@ -48,7 +48,7 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: insert-header-action properties: - name: "TheName" + name: "The Name" value: "The Value" sink: ref: diff --git a/insert-header-action.kamelet.yaml b/insert-header-action.kamelet.yaml index 21f3f7f24..3e8fff69b 100644 --- a/insert-header-action.kamelet.yaml +++ b/insert-header-action.kamelet.yaml @@ -22,6 +22,7 @@ spec: title: Name description: The name of the header to be added type: string + example: headername value: title: Value description: The value of the header From a8ec148d813d7c8146ee0283f4799e7fbe6c9c3a Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 07:29:57 +0200 Subject: [PATCH 051/105] Space in property "name" of insert-header-action cause IllegalArgumentException --- .../main/resources/kamelets/insert-header-action.kamelet.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-header-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-header-action.kamelet.yaml index 21f3f7f24..3e8fff69b 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-header-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-header-action.kamelet.yaml @@ -22,6 +22,7 @@ spec: title: Name description: The name of the header to be added type: string + example: headername value: title: Value description: The value of the header From e6d2cb9ecfabb2ad27352066af31028c8aeda89b Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 07:30:18 +0200 Subject: [PATCH 052/105] Space in property "name" of insert-header-action cause IllegalArgumentException --- docs/modules/ROOT/pages/insert-header-action.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/ROOT/pages/insert-header-action.adoc b/docs/modules/ROOT/pages/insert-header-action.adoc index 19934dfdb..ba395cc07 100644 --- a/docs/modules/ROOT/pages/insert-header-action.adoc +++ b/docs/modules/ROOT/pages/insert-header-action.adoc @@ -13,7 +13,7 @@ The following table summarizes the configuration options available for the `inse [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *name {empty}* *| Name| The name of the header to be added| string| | +| *name {empty}* *| Name| The name of the header to be added| string| | `"headername"` | *value {empty}* *| Value| The value of the header| string| | |=== @@ -48,7 +48,7 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: insert-header-action properties: - name: "The Name" + name: "headername" value: "The Value" sink: ref: From e5a296da9438c50dfdcdeb9ed08518b1ec3a5cfa Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 07:32:32 +0200 Subject: [PATCH 053/105] AWS Kinesis Kamelets: Region is not capitalized --- aws-kinesis-sink.kamelet.yaml | 2 +- aws-kinesis-source.kamelet.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/aws-kinesis-sink.kamelet.yaml b/aws-kinesis-sink.kamelet.yaml index 25216259f..521778f0a 100644 --- a/aws-kinesis-sink.kamelet.yaml +++ b/aws-kinesis-sink.kamelet.yaml @@ -54,7 +54,7 @@ spec: - urn:alm:descriptor:com.tectonic.ui:password region: title: AWS Region - description: The AWS region to connect to (capitalized name) + description: The AWS region to connect to type: string example: eu-west-1 dependencies: diff --git a/aws-kinesis-source.kamelet.yaml b/aws-kinesis-source.kamelet.yaml index 32ae5717a..9e0aeace7 100644 --- a/aws-kinesis-source.kamelet.yaml +++ b/aws-kinesis-source.kamelet.yaml @@ -42,7 +42,7 @@ spec: - urn:alm:descriptor:com.tectonic.ui:password region: title: AWS Region - description: The AWS region to connect to (capitalized name) + description: The AWS region to connect to type: string example: eu-west-1 dependencies: From c99c5c4860a922cc97a6b3aeb55941d0538fd893 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 07:32:51 +0200 Subject: [PATCH 054/105] AWS Kinesis Kamelets: Region is not capitalized --- .../src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml | 2 +- .../src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml index 25216259f..521778f0a 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml @@ -54,7 +54,7 @@ spec: - urn:alm:descriptor:com.tectonic.ui:password region: title: AWS Region - description: The AWS region to connect to (capitalized name) + description: The AWS region to connect to type: string example: eu-west-1 dependencies: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml index 32ae5717a..9e0aeace7 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml @@ -42,7 +42,7 @@ spec: - urn:alm:descriptor:com.tectonic.ui:password region: title: AWS Region - description: The AWS region to connect to (capitalized name) + description: The AWS region to connect to type: string example: eu-west-1 dependencies: From 1456774c2c0890e504d0b4ddb4c2f9b2fbc25e3d Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 07:33:07 +0200 Subject: [PATCH 055/105] AWS Kinesis Kamelets: Region is not capitalized --- docs/modules/ROOT/pages/aws-kinesis-sink.adoc | 2 +- docs/modules/ROOT/pages/aws-kinesis-source.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/ROOT/pages/aws-kinesis-sink.adoc b/docs/modules/ROOT/pages/aws-kinesis-sink.adoc index 6b45c1644..ddcd98abf 100644 --- a/docs/modules/ROOT/pages/aws-kinesis-sink.adoc +++ b/docs/modules/ROOT/pages/aws-kinesis-sink.adoc @@ -26,7 +26,7 @@ The following table summarizes the configuration options available for the `aws- |=== | Property| Name| Description| Type| Default| Example | *accessKey {empty}* *| Access Key| The access key obtained from AWS| string| | -| *region {empty}* *| AWS Region| The AWS region to connect to (capitalized name)| string| | `"eu-west-1"` +| *region {empty}* *| AWS Region| The AWS region to connect to| string| | `"eu-west-1"` | *secretKey {empty}* *| Secret Key| The secret key obtained from AWS| string| | | *stream {empty}* *| Stream Name| The Kinesis stream that you want to access (needs to be created in advance)| string| | |=== diff --git a/docs/modules/ROOT/pages/aws-kinesis-source.adoc b/docs/modules/ROOT/pages/aws-kinesis-source.adoc index 9380bac0d..aeebf92c0 100644 --- a/docs/modules/ROOT/pages/aws-kinesis-source.adoc +++ b/docs/modules/ROOT/pages/aws-kinesis-source.adoc @@ -14,7 +14,7 @@ The following table summarizes the configuration options available for the `aws- |=== | Property| Name| Description| Type| Default| Example | *accessKey {empty}* *| Access Key| The access key obtained from AWS| string| | -| *region {empty}* *| AWS Region| The AWS region to connect to (capitalized name)| string| | `"eu-west-1"` +| *region {empty}* *| AWS Region| The AWS region to connect to| string| | `"eu-west-1"` | *secretKey {empty}* *| Secret Key| The secret key obtained from AWS| string| | | *stream {empty}* *| Stream Name| The Kinesis stream that you want to access (needs to be created in advance)| string| | |=== From cac2b630df0b0be3f918d3349f7c4b5d7ad83a9a Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 08:29:14 +0200 Subject: [PATCH 056/105] Header Matches Filter Action Kamelet --- header-matches-filter-action.kamelet.yaml | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 header-matches-filter-action.kamelet.yaml diff --git a/header-matches-filter-action.kamelet.yaml b/header-matches-filter-action.kamelet.yaml new file mode 100644 index 000000000..3fbc29a4d --- /dev/null +++ b/header-matches-filter-action.kamelet.yaml @@ -0,0 +1,40 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: header-matches-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Header Matches Filter Action" + description: "Filter based on header value compared to regex" + required: + - regex + properties: + regex: + title: Regex + description: The Regex to Evaluate against the Kafka topic name + type: string + headerName: + title: Header Name + description: The header name to get the value to compare + type: string + example: headerName + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[{{headerName}}]} !regex '{{regex}}'" + steps: + - stop: {} From 2fcc4f3b06960a319a3a03313453e77c89cb45bc Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 08:29:21 +0200 Subject: [PATCH 057/105] Header Matches Filter Action Kamelet --- .../header-matches-filter-action.kamelet.yaml | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/header-matches-filter-action.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/header-matches-filter-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/header-matches-filter-action.kamelet.yaml new file mode 100644 index 000000000..3fbc29a4d --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/header-matches-filter-action.kamelet.yaml @@ -0,0 +1,40 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: header-matches-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "Actions" +spec: + definition: + title: "Header Matches Filter Action" + description: "Filter based on header value compared to regex" + required: + - regex + properties: + regex: + title: Regex + description: The Regex to Evaluate against the Kafka topic name + type: string + headerName: + title: Header Name + description: The header name to get the value to compare + type: string + example: headerName + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + flow: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[{{headerName}}]} !regex '{{regex}}'" + steps: + - stop: {} From 7075fc55768ae57f083f6fda8d7c1f3dd19c34a1 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 08:29:59 +0200 Subject: [PATCH 058/105] Header Matches Filter Action Kamelet --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 2bb2733dd..e82372b66 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -49,6 +49,7 @@ * xref:ROOT:google-mail-source.adoc[image:kamelets/google-mail-source.svg[] Google Mail Source] * xref:ROOT:google-sheets-source.adoc[image:kamelets/google-sheets-source.svg[] Google Sheets Source] * xref:ROOT:has-header-filter-action.adoc[image:kamelets/has-header-filter-action.svg[] Has Header Filter Action] +* xref:ROOT:header-matches-filter-action.adoc[image:kamelets/header-matches-filter-action.svg[] Header Matches Filter Action] * xref:ROOT:hoist-field-action.adoc[image:kamelets/hoist-field-action.svg[] Hoist Field Action] * xref:ROOT:http-secured-sink.adoc[image:kamelets/http-secured-sink.svg[] Secured HTTP Sink] * xref:ROOT:http-secured-source.adoc[image:kamelets/http-secured-source.svg[] HTTP Secured Source] From d7ea3b2132108ccb322abd7c9966189f4c7fb45a Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 08:34:46 +0200 Subject: [PATCH 059/105] Header Matches Filter Action Kamelet --- .../kamelets/header-matches-filter-action.svg | 59 ++++++++++++++++ .../pages/header-matches-filter-action.adoc | 70 +++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/header-matches-filter-action.svg create mode 100644 docs/modules/ROOT/pages/header-matches-filter-action.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/header-matches-filter-action.svg b/docs/modules/ROOT/assets/images/kamelets/header-matches-filter-action.svg new file mode 100644 index 000000000..fa06352da --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/header-matches-filter-action.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/docs/modules/ROOT/pages/header-matches-filter-action.adoc b/docs/modules/ROOT/pages/header-matches-filter-action.adoc new file mode 100644 index 000000000..4ab3efff4 --- /dev/null +++ b/docs/modules/ROOT/pages/header-matches-filter-action.adoc @@ -0,0 +1,70 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/header-matches-filter-action.svg[] Header Matches Filter Action + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Filter based on header value compared to regex + +== Configuration Options + +The following table summarizes the configuration options available for the `header-matches-filter-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *regex {empty}* *| Regex| The Regex to Evaluate against the Kafka topic name| string| | +| headerName| Header Name| The header name to get the value to compare| string| | `"headerName"` +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `header-matches-filter-action` can be used in various contexts. + +=== Knative Action + +The `header-matches-filter-action` Kamelet can be used as intermediate step in a binding. + +.header-matches-filter-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: header-matches-filter-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: header-matches-filter-action + properties: + regex: "The Regex" + sink: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `header-matches-filter-action-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the action using the following command: + +[source,shell] +---- +kubectl apply -f header-matches-filter-action-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From 33c22631d62bb5d23f122780d1e2078ba0c79738 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 15:28:26 +0200 Subject: [PATCH 060/105] Added Example to has header Kamelet Filter Action --- has-header-filter-action.kamelet.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/has-header-filter-action.kamelet.yaml b/has-header-filter-action.kamelet.yaml index a5b4121f5..918bbe130 100644 --- a/has-header-filter-action.kamelet.yaml +++ b/has-header-filter-action.kamelet.yaml @@ -21,6 +21,7 @@ spec: title: Header Name description: The header name to evaluate type: string + example: headerName type: object dependencies: - "camel:core" From 7572fd1f74078fff7924e153f608804968d7fe7a Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Thu, 10 Jun 2021 15:29:23 +0200 Subject: [PATCH 061/105] Added Example to has header Kamelet Filter Action --- .../resources/kamelets/has-header-filter-action.kamelet.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml index a5b4121f5..918bbe130 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml @@ -21,6 +21,7 @@ spec: title: Header Name description: The header name to evaluate type: string + example: headerName type: object dependencies: - "camel:core" From 984f83fcf33dfead3d87c3253309fcf14530406c Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 15:37:14 +0200 Subject: [PATCH 062/105] Added MySQL Sink Kamelet --- mysql-sink.kamelet.yaml | 90 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 mysql-sink.kamelet.yaml diff --git a/mysql-sink.kamelet.yaml b/mysql-sink.kamelet.yaml new file mode 100644 index 000000000..1c0343aaf --- /dev/null +++ b/mysql-sink.kamelet.yaml @@ -0,0 +1,90 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: mysql-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmVyc2lvbj0iMSI+CiA8cmVjdCBmaWxsPSIjMjY1NTdjIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHg9Ii0zMCIgeT0iLTMwIiByeD0iMS40IiByeT0iMS40IiB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLC0xLDAsMCwwKSIvPgogPHBhdGggb3BhY2l0eT0iLjIiIGQ9Im04LjAyNTQgOC4wMDAxYy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43Mjk5IDAuODgyOCAxLjQ0MTkgMC42MzEyMiAwLjc5MDkgMC44ODUxNCAxLjIyMjcgMS4xNjAyIDEuOTcwNyAwLjQzMzYgMS4xNzkzIDAuNjM0MDMgMS41NzQ4IDAuOTg2MzMgMS45NDM0IDAuMjczNjYgMC4yODYzIDAuMjczNjkgMC4yODcxMiAwLjA4OTg0IDAuODcxMDktMC4yODUwNyAwLjkwNTU2LTAuMzQ0MDcgMi43MjA3LTAuMTE1MjMgMy41NzQyIDAuMzQyNDggMS4yNzc0IDAuNzY0MDIgMS44NTc0IDEuMzUxNiAxLjg1NzQgMC40MTk2OCAwIDAuNzYzNjQtMC4zNTA5MiAwLjg4NjcyLTAuOTA0MyAwLjA0MjY4LTAuMTkxODYgMC4xMjI0OS0wLjQ2NjA3IDAuMTc3NzMtMC42MDkzOCAwLjA5NTM1LTAuMjQ3MjggMC4xMjA5My0wLjIyODE4IDAuNDk0MTQgMC4zODA4NiAwLjIxNjI4IDAuMzUyOTYgMC42Mjg2NiAwLjg3ODYxIDAuOTE2MDIgMS4xNjggMC42NjM4IDAuNjY4NDUgMS41NzQ5IDEuNDIxNyAxLjY0MDYgMS4zNTc0IDAuMDI3NzUtMC4wMjcxMy0wLjIzOC0wLjQyMTc3LTAuNTg5ODQtMC44Nzg5MXMtMS4wMTUxLTEuNTE4OS0xLjQ3NDYtMi4zNTk0Yy0wLjUzNTkzLTAuOTgwMjktMC44OTk3LTEuNTI4Ni0xLjAxMzctMS41MjkzLTAuMzcwNDUtMC4wMDI1LTAuNzE1ODggMC41ODAwNC0wLjkxNjAyIDEuNTQ2OS0wLjIzMDU2IDEuMTEzOC0wLjYzNjc1IDAuOTI3MDgtMC45NjY4LTAuNDQ1MzEtMC4xOTAxOS0wLjc5MDg1LTAuMDkxMDYtMS44NTYgMC4yNjM2Ny0yLjg1MzUgMC4xNjEzNy0wLjQ1Mzc2IDAuMjkyOTctMC44NzM3MyAwLjI5Mjk3LTAuOTMxNjRzLTAuMjU3MzEtMC41NDM0OC0wLjU3MjI3LTEuMDgwMWMtMC4zMTUtMC41MzctMC42ODUxLTEuMjk3LTAuODIyLTEuNjktMC4zMzI2LTAuOTU0LTAuNDkwNS0xLjIzMi0xLjE1ODItMi4wNDMtMC42ODc5LTAuODM0Ni0wLjc1My0xLjIyMDMtMC4yMDUxLTEuMjE2NiAwLjQyNTU0IDAuMDAyODEgMS4xMTIzIDAuMjg5NDQgMS44MDI3IDAuNzUzOTEgMC40MzcxIDAuMjk0MDQgMC41ODUyMyAwLjMzMzk4IDEuMjg3MSAwLjMzMzk4IDAuODgxNDIgMCAxLjA3MDkgMC4wNzIyIDIuMjkzIDAuODc2OTUgMS4yNDQ1IDAuODE5NTggMi4xNzIyIDEuNTgxMyAyLjgxNDUgMi4zMTI1IDAuNTcwNCAwLjY0OTM3IDAuODgyMDEgMS4yMTM4IDIuNTYwNSA0LjY1NjIgMC42NDQzMyAxLjMyMTQgMS4yMTU4IDEuOTU5MyAyLjAwMzkgMi4yMzI0IDEuMjE3MyAwLjQyMTg1IDEuNjMxNyAwLjYxMzE0IDIuMTY4IDAuOTk4MDVsMC41NjY0MSAwLjQwNjI1LTAuMzgwODYgMC4wNzQyMmMtMC4yMTAzIDAuMDQwMzMtMC42Njg0NyAwLjEwNjE2LTEuMDE3NiAwLjE0NjQ4LTAuNzI3NDEgMC4wODQtMS4yMDMxIDAuMzg1NzMtMS4yMDMxIDAuNzYzNjcgMCAwLjQyNTkyIDEuNDUxMyAxLjY0NTMgMi45MDYyIDIuNDQxNCAwLjY5OTAzIDAuMzgyNDcgMS4zNzE2IDAuNzU5MjcgMS40OTQxIDAuODM3ODkgMC4zMjU5OCAwLjIwOTIyIDAuNDE0MjQgMC4xODM4OSAwLjMzMDA4LTAuMDkxOC0wLjE3NjI0LTAuNTc3MzgtMC43NzI3OS0xLjEzOTgtMi40Mjk3LTIuMjk0OS0wLjk3MTk3LTAuNjc3Ni0wLjk4MTk5LTAuNjUyNDQgMC4zMTY0MS0wLjc4MTI1IDAuOTI1LTAuMDkxIDEuMzkyLTAuMjQ5IDEuMzkyLTAuNDcyIDAtMC4xMDItMC40Ny0wLjY0NC0xLjA0NS0xLjIwMy0wLjktMC44NzYtMS4yMDQtMS4wOTQtMi4xOTUtMS41NzctMS4zNS0wLjY1Ni0xLjg0Mi0xLjE3Ny0yLjE1My0yLjI4My0wLjQ2NC0xLjY0OS0xLjcxMi0zLjU4Ny0zLjM3MS01LjIzLTEuNzEyLTEuNjk2LTMuMzQ3LTIuNjM0NC00Ljg0NS0yLjc4MTQtMC42MDktMC4wNTk4LTAuOTI0LTAuMTUyMi0xLjIzOS0wLjM2NTMtMC41MzMyLTAuMzYxMS0xLjc3MTctMC43Njg0LTIuMzc2Ni0wLjc4MTJ6bTIuOTYyOSAzLjAwMmMtMC4xMjI2Ni0wLjAwNzktMC4yMjk0NSAwLjAwODUtMC4zMDI3MyAwLjA1ODU5LTAuMjczNDEgMC4xODY5OS0wLjI0MDk5IDAuNDE1MDQgMC4wODAwOCAwLjU1NjY0IDAuMTUwOTIgMC4wNjY1NiAwLjM2NTAxIDAuMzAxNDcgMC40NzY1NiAwLjUyMTQ4IDAuMzc1MSAwLjczOTc4IDAuOTQ5ODUgMC4yNDQ1IDAuNjkzMzYtMC41OTc2Ni0wLjA4MDg1LTAuMjY1NDYtMC41NzkzLTAuNTE1NDctMC45NDcyNy0wLjUzOTA2eiIvPgogPHBhdGggZmlsbD0iI2ZmZiIgZD0ibTguMDI1NCA3Yy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43MzAyIDAuODgyOCAxLjQ0MTQgMC42MzEyIDAuNzkwNiAwLjg4NTIgMS4yMjI2IDEuMTYwMiAxLjk3MDYgMC40MzM2IDEuMTc5IDAuNjM0IDEuNTc1IDAuOTg1OSAxLjk0MyAwLjI3NCAwLjI4NyAwLjI3NCAwLjI4OCAwLjA5IDAuODcyLTAuMjg0OCAwLjkwNS0wLjM0MzggMi43Mi0wLjExNSAzLjU3NCAwLjM0MiAxLjI3NyAwLjc2NCAxLjg1NyAxLjM1MiAxLjg1NyAwLjQxOSAwIDAuNzYzLTAuMzUxIDAuODg2LTAuOTA0IDAuMDQzLTAuMTkyIDAuMTIzLTAuNDY2IDAuMTc4LTAuNjA5IDAuMDk1LTAuMjQ4IDAuMTIxLTAuMjI5IDAuNDk0IDAuMzggMC4yMTYgMC4zNTMgMC42MjkgMC44NzkgMC45MTYgMS4xNjggMC42NjQgMC42NjkgMS41NzUgMS40MjIgMS42NDEgMS4zNTggMC4wMjgtMC4wMjctMC4yMzgtMC40MjItMC41OS0wLjg3OXMtMS4wMTUtMS41MTktMS40NzUtMi4zNTljLTAuNTM2LTAuOTgxLTAuODk5LTEuNTI5LTEuMDEzLTEuNTMtMC4zNzEtMC4wMDItMC43MTYgMC41OC0wLjkxNiAxLjU0Ny0wLjIzMSAxLjExNC0wLjYzNyAwLjkyNy0wLjk2Ny0wLjQ0NS0wLjE5LTAuNzkxLTAuMDkxLTEuODU2IDAuMjY0LTIuODU0IDAuMTYxLTAuNDUzIDAuMjkzLTAuODczIDAuMjkzLTAuOTMxcy0wLjI1OC0wLjU0NC0wLjU3My0xLjA4Yy0wLjMxNS0wLjUzNy0wLjY4NTEtMS4yOTctMC44MjItMS42OS0wLjMzMjYtMC45NTQtMC40OTA1LTEuMjMyLTEuMTU4Mi0yLjA0MjktMC42ODc5LTAuODM0OC0wLjc1My0xLjIyMDQtMC4yMDUxLTEuMjE2OCAwLjQyNTUgMC4wMDI5IDEuMTEyMyAwLjI4OTUgMS44MDIzIDAuNzUzOSAwLjQzOCAwLjI5NDEgMC41ODYgMC4zMzQgMS4yODggMC4zMzQgMC44ODEgMCAxLjA3IDAuMDcyMiAyLjI5MyAwLjg3NyAxLjI0NCAwLjgxOTggMi4xNzIgMS41ODE4IDIuODE0IDIuMzEyOCAwLjU3IDAuNjQ5IDAuODgyIDEuMjE0IDIuNTYxIDQuNjU2IDAuNjQ0IDEuMzIxIDEuMjE1IDEuOTU5IDIuMDAzIDIuMjMyIDEuMjE4IDAuNDIyIDEuNjMyIDAuNjEzIDIuMTY4IDAuOTk4bDAuNTY3IDAuNDA3LTAuMzgxIDAuMDc0Yy0wLjIxIDAuMDQtMC42NjkgMC4xMDYtMS4wMTggMC4xNDYtMC43MjcgMC4wODQtMS4yMDMgMC4zODYtMS4yMDMgMC43NjQgMCAwLjQyNiAxLjQ1MSAxLjY0NSAyLjkwNiAyLjQ0MSAwLjcgMC4zODMgMS4zNzIgMC43NiAxLjQ5NSAwLjgzOCAwLjMyNiAwLjIxIDAuNDE0IDAuMTg0IDAuMzMtMC4wOTEtMC4xNzctMC41NzgtMC43NzMtMS4xNC0yLjQzLTIuMjk1LTAuOTcyLTAuNjc4LTAuOTgyLTAuNjUzIDAuMzE2LTAuNzgyIDAuOTI2LTAuMDkyIDEuMzkzLTAuMjUgMS4zOTMtMC40NzIgMC0wLjEwMi0wLjQ3LTAuNjQ0LTEuMDQ1LTEuMjAzLTAuOS0wLjg3Ny0xLjIwNC0xLjA5NC0yLjE5NS0xLjU3Ny0xLjM1LTAuNjU2LTEuODQyLTEuMTc3LTIuMTUzLTIuMjgzLTAuNDY0LTEuNjUtMS43MTItMy41ODctMy4zNzEtNS4yMy0xLjcxMi0xLjY5NjUtMy4zNDctMi42MzQ1LTQuODQ1LTIuNzgxNS0wLjYwOS0wLjA1OTgtMC45MjQtMC4xNTIyLTEuMjM5LTAuMzY1My0wLjUzMzItMC4zNjExLTEuNzcxNy0wLjc2ODQtMi4zNzY2LTAuNzgxMnptMi45NjI2IDMuMDAyYy0wLjEyMi0wLjAwNzktMC4yMjkgMC4wMDgtMC4zMDIgMC4wNTktMC4yNzQgMC4xODctMC4yNDEgMC40MTUgMC4wOCAwLjU1NiAwLjE1MSAwLjA2NyAwLjM2NSAwLjMwMiAwLjQ3NiAwLjUyMiAwLjM3NSAwLjczOSAwLjk1IDAuMjQ0IDAuNjk0LTAuNTk4LTAuMDgxLTAuMjY1LTAuNTgtMC41MTUtMC45NDgtMC41Mzl6Ii8+CiA8cGF0aCBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuMSIgZD0ibTMuNDAwNCAyYy0wLjc3NTYgMC0xLjQwMDQgMC42MjQ4LTEuNDAwNCAxLjQwMDR2MWMwLTAuNzc1NiAwLjYyNDgtMS40MDA0IDEuNDAwNC0xLjQwMDRoMjUuMmMwLjc3NSAwIDEuNCAwLjYyNDggMS40IDEuNDAwNHYtMWMwLTAuNzc1Ni0wLjYyNS0xLjQwMDQtMS40LTEuNDAwNGgtMjUuMnoiLz4KIDxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJtMiAyOC42djFjMCAwLjc3NSAwLjYyNDggMS40IDEuNDAwNCAxLjRoMjUuMmMwLjc3NSAwIDEuNC0wLjYyNSAxLjQtMS40di0xYzAgMC43NzUtMC42MjUgMS40LTEuNCAxLjRoLTI1LjJjLTAuNzc1MiAwLTEuNC0wLjYyNS0xLjQtMS40eiIvPgo8L3N2Zz4K" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "SQL" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "MySQL Sink" + description: |- + Send data to a MySQL Database. + + In you KameletBinding file you'll need to explicitly declare the mysql driver dependency, like in the following YAML snippet + + spec: + integration: + dependencies: + - "mvn:mysql:mysql-connector-java:" + required: + - serverName + - port + - username + - password + - databaseName + - query + type: object + properties: + serverName: + title: Server Name + description: Server Name for the data source + type: string + example: localhost + port: + title: Port + description: Server Port for the data source + type: string + example: 3306 + username: + title: Username + description: The username to use for accessing a secured MySQL Database + type: string + password: + title: Password + description: The password to use for accessing a secured MySQL Database + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + query: + title: Query + description: The Query to execute against the MySQL Database + type: string + databaseName: + title: Database Name + description: The Database Name we are pointing + type: string + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.apache.commons:commons-dbcp2:2.8.0" + flow: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + property: + - key: username + value: '{{username}}' + - key: password + value: '{{password}}' + - key: url + value: 'jdbc:mysql://{{serverName}}:{{port}}/{{databaseName}}' + - key: driverClassName + value: 'com.mysql.cj.jdbc.Driver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" From 0e1068df28526e0a21f27f588dd164ef23722e8a Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 15:37:41 +0200 Subject: [PATCH 063/105] Added MySQL Sink Kamelet --- .../kamelets/mysql-sink.kamelet.yaml | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml new file mode 100644 index 000000000..1c0343aaf --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml @@ -0,0 +1,90 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: mysql-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmVyc2lvbj0iMSI+CiA8cmVjdCBmaWxsPSIjMjY1NTdjIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHg9Ii0zMCIgeT0iLTMwIiByeD0iMS40IiByeT0iMS40IiB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLC0xLDAsMCwwKSIvPgogPHBhdGggb3BhY2l0eT0iLjIiIGQ9Im04LjAyNTQgOC4wMDAxYy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43Mjk5IDAuODgyOCAxLjQ0MTkgMC42MzEyMiAwLjc5MDkgMC44ODUxNCAxLjIyMjcgMS4xNjAyIDEuOTcwNyAwLjQzMzYgMS4xNzkzIDAuNjM0MDMgMS41NzQ4IDAuOTg2MzMgMS45NDM0IDAuMjczNjYgMC4yODYzIDAuMjczNjkgMC4yODcxMiAwLjA4OTg0IDAuODcxMDktMC4yODUwNyAwLjkwNTU2LTAuMzQ0MDcgMi43MjA3LTAuMTE1MjMgMy41NzQyIDAuMzQyNDggMS4yNzc0IDAuNzY0MDIgMS44NTc0IDEuMzUxNiAxLjg1NzQgMC40MTk2OCAwIDAuNzYzNjQtMC4zNTA5MiAwLjg4NjcyLTAuOTA0MyAwLjA0MjY4LTAuMTkxODYgMC4xMjI0OS0wLjQ2NjA3IDAuMTc3NzMtMC42MDkzOCAwLjA5NTM1LTAuMjQ3MjggMC4xMjA5My0wLjIyODE4IDAuNDk0MTQgMC4zODA4NiAwLjIxNjI4IDAuMzUyOTYgMC42Mjg2NiAwLjg3ODYxIDAuOTE2MDIgMS4xNjggMC42NjM4IDAuNjY4NDUgMS41NzQ5IDEuNDIxNyAxLjY0MDYgMS4zNTc0IDAuMDI3NzUtMC4wMjcxMy0wLjIzOC0wLjQyMTc3LTAuNTg5ODQtMC44Nzg5MXMtMS4wMTUxLTEuNTE4OS0xLjQ3NDYtMi4zNTk0Yy0wLjUzNTkzLTAuOTgwMjktMC44OTk3LTEuNTI4Ni0xLjAxMzctMS41MjkzLTAuMzcwNDUtMC4wMDI1LTAuNzE1ODggMC41ODAwNC0wLjkxNjAyIDEuNTQ2OS0wLjIzMDU2IDEuMTEzOC0wLjYzNjc1IDAuOTI3MDgtMC45NjY4LTAuNDQ1MzEtMC4xOTAxOS0wLjc5MDg1LTAuMDkxMDYtMS44NTYgMC4yNjM2Ny0yLjg1MzUgMC4xNjEzNy0wLjQ1Mzc2IDAuMjkyOTctMC44NzM3MyAwLjI5Mjk3LTAuOTMxNjRzLTAuMjU3MzEtMC41NDM0OC0wLjU3MjI3LTEuMDgwMWMtMC4zMTUtMC41MzctMC42ODUxLTEuMjk3LTAuODIyLTEuNjktMC4zMzI2LTAuOTU0LTAuNDkwNS0xLjIzMi0xLjE1ODItMi4wNDMtMC42ODc5LTAuODM0Ni0wLjc1My0xLjIyMDMtMC4yMDUxLTEuMjE2NiAwLjQyNTU0IDAuMDAyODEgMS4xMTIzIDAuMjg5NDQgMS44MDI3IDAuNzUzOTEgMC40MzcxIDAuMjk0MDQgMC41ODUyMyAwLjMzMzk4IDEuMjg3MSAwLjMzMzk4IDAuODgxNDIgMCAxLjA3MDkgMC4wNzIyIDIuMjkzIDAuODc2OTUgMS4yNDQ1IDAuODE5NTggMi4xNzIyIDEuNTgxMyAyLjgxNDUgMi4zMTI1IDAuNTcwNCAwLjY0OTM3IDAuODgyMDEgMS4yMTM4IDIuNTYwNSA0LjY1NjIgMC42NDQzMyAxLjMyMTQgMS4yMTU4IDEuOTU5MyAyLjAwMzkgMi4yMzI0IDEuMjE3MyAwLjQyMTg1IDEuNjMxNyAwLjYxMzE0IDIuMTY4IDAuOTk4MDVsMC41NjY0MSAwLjQwNjI1LTAuMzgwODYgMC4wNzQyMmMtMC4yMTAzIDAuMDQwMzMtMC42Njg0NyAwLjEwNjE2LTEuMDE3NiAwLjE0NjQ4LTAuNzI3NDEgMC4wODQtMS4yMDMxIDAuMzg1NzMtMS4yMDMxIDAuNzYzNjcgMCAwLjQyNTkyIDEuNDUxMyAxLjY0NTMgMi45MDYyIDIuNDQxNCAwLjY5OTAzIDAuMzgyNDcgMS4zNzE2IDAuNzU5MjcgMS40OTQxIDAuODM3ODkgMC4zMjU5OCAwLjIwOTIyIDAuNDE0MjQgMC4xODM4OSAwLjMzMDA4LTAuMDkxOC0wLjE3NjI0LTAuNTc3MzgtMC43NzI3OS0xLjEzOTgtMi40Mjk3LTIuMjk0OS0wLjk3MTk3LTAuNjc3Ni0wLjk4MTk5LTAuNjUyNDQgMC4zMTY0MS0wLjc4MTI1IDAuOTI1LTAuMDkxIDEuMzkyLTAuMjQ5IDEuMzkyLTAuNDcyIDAtMC4xMDItMC40Ny0wLjY0NC0xLjA0NS0xLjIwMy0wLjktMC44NzYtMS4yMDQtMS4wOTQtMi4xOTUtMS41NzctMS4zNS0wLjY1Ni0xLjg0Mi0xLjE3Ny0yLjE1My0yLjI4My0wLjQ2NC0xLjY0OS0xLjcxMi0zLjU4Ny0zLjM3MS01LjIzLTEuNzEyLTEuNjk2LTMuMzQ3LTIuNjM0NC00Ljg0NS0yLjc4MTQtMC42MDktMC4wNTk4LTAuOTI0LTAuMTUyMi0xLjIzOS0wLjM2NTMtMC41MzMyLTAuMzYxMS0xLjc3MTctMC43Njg0LTIuMzc2Ni0wLjc4MTJ6bTIuOTYyOSAzLjAwMmMtMC4xMjI2Ni0wLjAwNzktMC4yMjk0NSAwLjAwODUtMC4zMDI3MyAwLjA1ODU5LTAuMjczNDEgMC4xODY5OS0wLjI0MDk5IDAuNDE1MDQgMC4wODAwOCAwLjU1NjY0IDAuMTUwOTIgMC4wNjY1NiAwLjM2NTAxIDAuMzAxNDcgMC40NzY1NiAwLjUyMTQ4IDAuMzc1MSAwLjczOTc4IDAuOTQ5ODUgMC4yNDQ1IDAuNjkzMzYtMC41OTc2Ni0wLjA4MDg1LTAuMjY1NDYtMC41NzkzLTAuNTE1NDctMC45NDcyNy0wLjUzOTA2eiIvPgogPHBhdGggZmlsbD0iI2ZmZiIgZD0ibTguMDI1NCA3Yy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43MzAyIDAuODgyOCAxLjQ0MTQgMC42MzEyIDAuNzkwNiAwLjg4NTIgMS4yMjI2IDEuMTYwMiAxLjk3MDYgMC40MzM2IDEuMTc5IDAuNjM0IDEuNTc1IDAuOTg1OSAxLjk0MyAwLjI3NCAwLjI4NyAwLjI3NCAwLjI4OCAwLjA5IDAuODcyLTAuMjg0OCAwLjkwNS0wLjM0MzggMi43Mi0wLjExNSAzLjU3NCAwLjM0MiAxLjI3NyAwLjc2NCAxLjg1NyAxLjM1MiAxLjg1NyAwLjQxOSAwIDAuNzYzLTAuMzUxIDAuODg2LTAuOTA0IDAuMDQzLTAuMTkyIDAuMTIzLTAuNDY2IDAuMTc4LTAuNjA5IDAuMDk1LTAuMjQ4IDAuMTIxLTAuMjI5IDAuNDk0IDAuMzggMC4yMTYgMC4zNTMgMC42MjkgMC44NzkgMC45MTYgMS4xNjggMC42NjQgMC42NjkgMS41NzUgMS40MjIgMS42NDEgMS4zNTggMC4wMjgtMC4wMjctMC4yMzgtMC40MjItMC41OS0wLjg3OXMtMS4wMTUtMS41MTktMS40NzUtMi4zNTljLTAuNTM2LTAuOTgxLTAuODk5LTEuNTI5LTEuMDEzLTEuNTMtMC4zNzEtMC4wMDItMC43MTYgMC41OC0wLjkxNiAxLjU0Ny0wLjIzMSAxLjExNC0wLjYzNyAwLjkyNy0wLjk2Ny0wLjQ0NS0wLjE5LTAuNzkxLTAuMDkxLTEuODU2IDAuMjY0LTIuODU0IDAuMTYxLTAuNDUzIDAuMjkzLTAuODczIDAuMjkzLTAuOTMxcy0wLjI1OC0wLjU0NC0wLjU3My0xLjA4Yy0wLjMxNS0wLjUzNy0wLjY4NTEtMS4yOTctMC44MjItMS42OS0wLjMzMjYtMC45NTQtMC40OTA1LTEuMjMyLTEuMTU4Mi0yLjA0MjktMC42ODc5LTAuODM0OC0wLjc1My0xLjIyMDQtMC4yMDUxLTEuMjE2OCAwLjQyNTUgMC4wMDI5IDEuMTEyMyAwLjI4OTUgMS44MDIzIDAuNzUzOSAwLjQzOCAwLjI5NDEgMC41ODYgMC4zMzQgMS4yODggMC4zMzQgMC44ODEgMCAxLjA3IDAuMDcyMiAyLjI5MyAwLjg3NyAxLjI0NCAwLjgxOTggMi4xNzIgMS41ODE4IDIuODE0IDIuMzEyOCAwLjU3IDAuNjQ5IDAuODgyIDEuMjE0IDIuNTYxIDQuNjU2IDAuNjQ0IDEuMzIxIDEuMjE1IDEuOTU5IDIuMDAzIDIuMjMyIDEuMjE4IDAuNDIyIDEuNjMyIDAuNjEzIDIuMTY4IDAuOTk4bDAuNTY3IDAuNDA3LTAuMzgxIDAuMDc0Yy0wLjIxIDAuMDQtMC42NjkgMC4xMDYtMS4wMTggMC4xNDYtMC43MjcgMC4wODQtMS4yMDMgMC4zODYtMS4yMDMgMC43NjQgMCAwLjQyNiAxLjQ1MSAxLjY0NSAyLjkwNiAyLjQ0MSAwLjcgMC4zODMgMS4zNzIgMC43NiAxLjQ5NSAwLjgzOCAwLjMyNiAwLjIxIDAuNDE0IDAuMTg0IDAuMzMtMC4wOTEtMC4xNzctMC41NzgtMC43NzMtMS4xNC0yLjQzLTIuMjk1LTAuOTcyLTAuNjc4LTAuOTgyLTAuNjUzIDAuMzE2LTAuNzgyIDAuOTI2LTAuMDkyIDEuMzkzLTAuMjUgMS4zOTMtMC40NzIgMC0wLjEwMi0wLjQ3LTAuNjQ0LTEuMDQ1LTEuMjAzLTAuOS0wLjg3Ny0xLjIwNC0xLjA5NC0yLjE5NS0xLjU3Ny0xLjM1LTAuNjU2LTEuODQyLTEuMTc3LTIuMTUzLTIuMjgzLTAuNDY0LTEuNjUtMS43MTItMy41ODctMy4zNzEtNS4yMy0xLjcxMi0xLjY5NjUtMy4zNDctMi42MzQ1LTQuODQ1LTIuNzgxNS0wLjYwOS0wLjA1OTgtMC45MjQtMC4xNTIyLTEuMjM5LTAuMzY1My0wLjUzMzItMC4zNjExLTEuNzcxNy0wLjc2ODQtMi4zNzY2LTAuNzgxMnptMi45NjI2IDMuMDAyYy0wLjEyMi0wLjAwNzktMC4yMjkgMC4wMDgtMC4zMDIgMC4wNTktMC4yNzQgMC4xODctMC4yNDEgMC40MTUgMC4wOCAwLjU1NiAwLjE1MSAwLjA2NyAwLjM2NSAwLjMwMiAwLjQ3NiAwLjUyMiAwLjM3NSAwLjczOSAwLjk1IDAuMjQ0IDAuNjk0LTAuNTk4LTAuMDgxLTAuMjY1LTAuNTgtMC41MTUtMC45NDgtMC41Mzl6Ii8+CiA8cGF0aCBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuMSIgZD0ibTMuNDAwNCAyYy0wLjc3NTYgMC0xLjQwMDQgMC42MjQ4LTEuNDAwNCAxLjQwMDR2MWMwLTAuNzc1NiAwLjYyNDgtMS40MDA0IDEuNDAwNC0xLjQwMDRoMjUuMmMwLjc3NSAwIDEuNCAwLjYyNDggMS40IDEuNDAwNHYtMWMwLTAuNzc1Ni0wLjYyNS0xLjQwMDQtMS40LTEuNDAwNGgtMjUuMnoiLz4KIDxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJtMiAyOC42djFjMCAwLjc3NSAwLjYyNDggMS40IDEuNDAwNCAxLjRoMjUuMmMwLjc3NSAwIDEuNC0wLjYyNSAxLjQtMS40di0xYzAgMC43NzUtMC42MjUgMS40LTEuNCAxLjRoLTI1LjJjLTAuNzc1MiAwLTEuNC0wLjYyNS0xLjQtMS40eiIvPgo8L3N2Zz4K" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "SQL" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "MySQL Sink" + description: |- + Send data to a MySQL Database. + + In you KameletBinding file you'll need to explicitly declare the mysql driver dependency, like in the following YAML snippet + + spec: + integration: + dependencies: + - "mvn:mysql:mysql-connector-java:" + required: + - serverName + - port + - username + - password + - databaseName + - query + type: object + properties: + serverName: + title: Server Name + description: Server Name for the data source + type: string + example: localhost + port: + title: Port + description: Server Port for the data source + type: string + example: 3306 + username: + title: Username + description: The username to use for accessing a secured MySQL Database + type: string + password: + title: Password + description: The password to use for accessing a secured MySQL Database + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + query: + title: Query + description: The Query to execute against the MySQL Database + type: string + databaseName: + title: Database Name + description: The Database Name we are pointing + type: string + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.apache.commons:commons-dbcp2:2.8.0" + flow: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + property: + - key: username + value: '{{username}}' + - key: password + value: '{{password}}' + - key: url + value: 'jdbc:mysql://{{serverName}}:{{port}}/{{databaseName}}' + - key: driverClassName + value: 'com.mysql.cj.jdbc.Driver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" From a90a284115edeeb8fef6fce41de625d9da982317 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 15:38:23 +0200 Subject: [PATCH 064/105] Added MySQL Sink Kamelet --- docs/modules/ROOT/nav.adoc | 1 + docs/modules/ROOT/pages/has-header-filter-action.adoc | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index e82372b66..f6544d46d 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -73,6 +73,7 @@ * xref:ROOT:minio-sink.adoc[image:kamelets/minio-sink.svg[] Minio Sink] * xref:ROOT:minio-source.adoc[image:kamelets/minio-source.svg[] Minio Source] * xref:ROOT:mqtt-source.adoc[image:kamelets/mqtt-source.svg[] MQTT Source] +* xref:ROOT:mysql-sink.adoc[image:kamelets/mysql-sink.svg[] MySQL Sink] * xref:ROOT:nats-sink.adoc[image:kamelets/nats-sink.svg[] NATS Sink] * xref:ROOT:nats-source.adoc[image:kamelets/nats-source.svg[] NATS Source] * xref:ROOT:openai-classification-action.adoc[image:kamelets/openai-classification-action.svg[] OpenAI Classification Action] diff --git a/docs/modules/ROOT/pages/has-header-filter-action.adoc b/docs/modules/ROOT/pages/has-header-filter-action.adoc index 3401ca2d9..5693d042e 100644 --- a/docs/modules/ROOT/pages/has-header-filter-action.adoc +++ b/docs/modules/ROOT/pages/has-header-filter-action.adoc @@ -13,7 +13,7 @@ The following table summarizes the configuration options available for the `has- [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *name {empty}* *| Header Name| The header name to evaluate| string| | +| *name {empty}* *| Header Name| The header name to evaluate| string| | `"headerName"` |=== NOTE: Fields marked with ({empty}*) are mandatory. @@ -47,7 +47,7 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: has-header-filter-action properties: - name: "The Header Name" + name: "headerName" sink: ref: kind: InMemoryChannel From 681e2d952a13610613c91f67cb508fa84e911164 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 15:38:32 +0200 Subject: [PATCH 065/105] Added MySQL Sink Kamelet --- .../assets/images/kamelets/mysql-sink.svg | 7 ++ docs/modules/ROOT/pages/mysql-sink.adoc | 79 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/mysql-sink.svg create mode 100644 docs/modules/ROOT/pages/mysql-sink.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/mysql-sink.svg b/docs/modules/ROOT/assets/images/kamelets/mysql-sink.svg new file mode 100644 index 000000000..e7224e288 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/mysql-sink.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/modules/ROOT/pages/mysql-sink.adoc b/docs/modules/ROOT/pages/mysql-sink.adoc new file mode 100644 index 000000000..03986affb --- /dev/null +++ b/docs/modules/ROOT/pages/mysql-sink.adoc @@ -0,0 +1,79 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/mysql-sink.svg[] MySQL Sink + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Send data to a MySQL Database. + +In you KameletBinding file you'll need to explicitly declare the mysql driver dependency, like in the following YAML snippet + +spec: + integration: + dependencies: + - "mvn:mysql:mysql-connector-java:" + +== Configuration Options + +The following table summarizes the configuration options available for the `mysql-sink` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | +| *password {empty}* *| Password| The password to use for accessing a secured MySQL Database| string| | +| *port {empty}* *| Port| Server Port for the data source| string| | `3306` +| *query {empty}* *| Query| The Query to execute against the MySQL Database| string| | +| *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` +| *username {empty}* *| Username| The username to use for accessing a secured MySQL Database| string| | +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `mysql-sink` can be used in various contexts. + +=== Knative Sink + +The `mysql-sink` Kamelet can be used as Knative sink by binding it to a Knative object. + +.mysql-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: mysql-sink-binding +spec: + source: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: mysql-sink + properties: + databaseName: "The Database Name" + password: "The Password" + port: 3306 + query: "The Query" + serverName: "localhost" + username: "The Username" + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `mysql-sink-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the sink using the following command: + +[source,shell] +---- +kubectl apply -f mysql-sink-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From 5eedc8d78ac15c00a3f424ad621bfad9c032c719 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 18:25:05 +0200 Subject: [PATCH 066/105] Added PostgreSQL Sink Kamelet --- postgresql-sink.kamelet.yaml | 83 ++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 postgresql-sink.kamelet.yaml diff --git a/postgresql-sink.kamelet.yaml b/postgresql-sink.kamelet.yaml new file mode 100644 index 000000000..14f30c133 --- /dev/null +++ b/postgresql-sink.kamelet.yaml @@ -0,0 +1,83 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: postgresql-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+UG9zdGdyZVNRTCBpY29uPC90aXRsZT48cGF0aCBkPSJNMTcuMTI4IDBhMTAuMTM0IDEwLjEzNCAwIDAgMC0yLjc1NS40MDNsLS4wNjMuMDJBMTAuOTIyIDEwLjkyMiAwIDAgMCAxMi42LjI1OEMxMS40MjIuMjM4IDEwLjQxLjUyNCA5LjU5NCAxIDguNzkuNzIxIDcuMTIyLjI0IDUuMzY0LjMzNiA0LjE0LjQwMyAyLjgwNC43NzUgMS44MTQgMS44Mi44MjcgMi44NjUuMzA1IDQuNDgyLjQxNSA2LjY4MmMuMDMuNjA3LjIwMyAxLjU5Ny40OSAyLjg3OXMuNjkgMi43ODMgMS4xOTMgNC4xNTJjLjUwMyAxLjM3IDEuMDU0IDIuNiAxLjkxNSAzLjQzNi40My40MTkgMS4wMjIuNzcxIDEuNzIuNzQyLjQ5LS4wMi45MzMtLjIzNSAxLjMxNS0uNTUyLjE4Ni4yNDUuMzg1LjM1Mi41NjYuNDUxLjIyOC4xMjUuNDUuMjEuNjguMjY2LjQxMy4xMDMgMS4xMi4yNDEgMS45NDguMS4yODItLjA0Ny41NzktLjEzOS44NzUtLjI3LjAxMS4zMy4wMjQuNjUzLjAzNy45OC4wNDEgMS4wMzYuMDY3IDEuOTkzLjM3OCAyLjgzMi4wNS4xMzcuMTg3Ljg0My43MjcgMS40NjYuNTQuNjI0IDEuNTk4IDEuMDEzIDIuODAzLjc1NS44NS0uMTgyIDEuOTMxLS41MSAyLjY0OS0xLjUzMi43MS0xLjAxIDEuMDMtMi40NTkgMS4wOTMtNC44MDkuMDE2LS4xMjcuMDM1LS4yMzUuMDU1LS4zMzZsLjE2OS4wMTVoLjAyYy45MDcuMDQxIDEuODkxLS4wODggMi43MTMtLjQ3LjcyOC0uMzM3IDEuMjc5LS42NzggMS42OC0xLjI4My4xLS4xNS4yMS0uMzMxLjI0LS42NDNzLS4xNDktLjgtLjQ0Ni0xLjAyNWMtLjU5NS0uNDUyLS45NjktLjI4LTEuMzctLjE5N2E2LjI3IDYuMjcgMCAwIDEtMS4yMDIuMTQ2YzEuMTU2LTEuOTQ3IDEuOTg1LTQuMDE1IDIuNDU4LTUuODQ1LjI4LTEuMDguNDM3LTIuMDc2LjQ1LTIuOTQ3LjAxMy0uODcxLS4wNTgtMS42NDItLjU4LTIuMzA5QzIxLjM2LjYgMTkuMDY3LjAyNCAxNy4yOTMuMDA0Yy0uMDU1LS4wMDEtLjExLS4wMDItLjE2NS0uMDAxem0tLjA0Ny42NGMxLjY3OC0uMDE2IDMuODIyLjQ1NSA1LjM2MSAyLjQyMi4zNDYuNDQyLjQ0OSAxLjA4OC40MzcgMS44ODQtLjAxMy43OTUtLjE2IDEuNzQ3LS40MjkgMi43OS0uNTIyIDIuMDItMS41MDggNC4zNzUtMi44OTcgNi40ODhhLjc1Ni43NTYgMCAwIDAgLjE1OC4wODZjLjI5LjEyLjk1MS4yMjMgMi4yNy0uMDQ4LjMzMi0uMDcuNTc1LS4xMTcuODI3LjA3NWEuNTIuNTIgMCAwIDEgLjE4My40MjUuNzA0LjcwNCAwIDAgMS0uMTMuMzM2Yy0uMjU1LjM4My0uNzU4Ljc0Ni0xLjQwMyAxLjA0NS0uNTcxLjI2Ni0xLjM5LjQwNS0yLjExNi40MTMtLjM2NC4wMDQtLjctLjAyNC0uOTg1LS4xMTNsLS4wMTgtLjAwN2MtLjExIDEuMDYtLjM2MyAzLjE1My0uNTI4IDQuMTA4LS4xMzIuNzctLjM2MyAxLjM4Mi0uODA0IDEuODQtLjQ0LjQ1OC0xLjA2My43MzQtMS45MDEuOTE0LTEuMDM4LjIyMy0xLjc5NS0uMDE3LTIuMjgzLS40MjgtLjQ4Ny0uNDEtLjcxLS45NTQtLjg0NC0xLjI4Ny0uMDkyLS4yMy0uMTQtLjUyOC0uMTg2LS45MjYtLjA0Ni0uMzk4LS4wOC0uODg1LS4xMDMtMS40MzRhNTEuNDI2IDUxLjQyNiAwIDAgMS0uMDMtMi41MjMgMy4wNjEgMy4wNjEgMCAwIDEtMS41NTIuNzZjLS42ODkuMTE3LTEuMzA0LjAwMi0xLjY3MS0uMDlhMi4yNzYgMi4yNzYgMCAwIDEtLjUyLS4yMDFjLS4xNy0uMDkxLS4zMzItLjE5NC0uNDQtLjM5N2EuNTYuNTYgMCAwIDEtLjA1Ny0uMzgxLjYxLjYxIDAgMCAxIC4yMTgtLjMzMWMuMTk4LS4xNjEuNDYtLjI1MS44NTUtLjMzMy43MTktLjE0OC45Ny0uMjQ5IDEuMTIzLS4zNy4xMy0uMTA0LjI3Ny0uMzE0LjUzNy0uNjIyYTEuMTYgMS4xNiAwIDAgMS0uMDAzLS4wNDEgMi45NiAyLjk2IDAgMCAxLTEuMzMtLjM1OGMtLjE1LjE1OC0uOTE2Ljk2OC0xLjg1IDIuMDkyLS4zOTMuNDctLjgyNy43NC0xLjI4NS43NTktLjQ1OC4wMi0uODcyLS4yMTEtMS4yMjQtLjU1Mi0uNzAzLS42ODMtMS4yNjQtMS44NTgtMS43NTMtMy4xODYtLjQ4OC0xLjMyOC0uODg1LTIuODA3LTEuMTY3LTQuMDY3LS4yODMtMS4yNi0uNDUtMi4yNzYtLjQ3NC0yLjc2Ni0uMTA1LTIuMDgyLjM4Mi0zLjQ4NSAxLjIxNy00LjM3LjgzNi0uODg1IDEuOTgyLTEuMjIgMy4wOTktMS4yODQgMi4wMDUtLjExNSAzLjkwOS41ODQgNC4yOTQuNzM0Ljc0Mi0uNTA0IDEuNjk4LS44MTggMi44OTItLjc5OGE3LjM5IDcuMzkgMCAwIDEgMS42ODEuMjE4bC4wMi0uMDA5YTYuODU0IDYuODU0IDAgMCAxIC43MzktLjIxNEE5LjYyNiA5LjYyNiAwIDAgMSAxNy4wOC42NDJ6bS4xNTIuNjdoLS4xNDZhOC43NCA4Ljc0IDAgMCAwLTEuNzA0LjE5MmMxLjI0Ni41NTIgMi4xODcgMS40MDIgMi44NSAyLjI1YTguNDQgOC40NCAwIDAgMSAxLjEzMiAxLjkyYy4xMS4yNjQuMTg0LjQ4Ny4yMjYuNjYuMDIxLjA4Ny4wMzUuMTYuMDQuMjM2LjAwMi4wMzguMDA0LjA3Ny0uMDEyLjE0NCAwIC4wMDMtLjAwNS4wMS0uMDA2LjAxMy4wMy44NzYtLjE4NyAxLjQ3LS4yMTMgMi4zMDYtLjAyLjYwNi4xMzUgMS4zMTguMTczIDIuMDk1LjAzNi43My0uMDUyIDEuNTMyLS41MjYgMi4zMTkuMDQuMDQ4LjA3Ni4wOTYuMTE0LjE0NCAxLjI1NC0xLjk3NSAyLjE1OC00LjE2IDIuNjQtNi4wMjMuMjU4LTEuMDAzLjM5NS0xLjkxMi40MDctMi42MzIuMDEtLjcyLS4xMjQtMS4yNDItLjI5NS0xLjQ2LTEuMzQyLTEuNzE2LTMuMTU4LTIuMTUzLTQuNjgtMi4xNjV6bS00Ljc5LjI1NmMtMS4xODIuMDAzLTIuMDMuMzYtMi42NzMuODk1LS42NjMuNTUzLTEuMTA4IDEuMzEtMS40IDIuMDg1LS4zNDcuOTItLjQ2NiAxLjgxLS41MTMgMi40MTRsLjAxMy0uMDA4Yy4zNTctLjIuODI2LS40IDEuMzI4LS41MTYuNTAyLS4xMTUgMS4wNDMtLjE1MSAxLjUzMy4wMzlzLjg5NS42MzcgMS4wNDIgMS4zMTVjLjcwNCAzLjI1Ny0uMjE5IDQuNDY4LS41NTkgNS4zODJhOS42MSA5LjYxIDAgMCAwLS4zMzEgMS4wMTNjLjA0My0uMDEuMDg2LS4wMjIuMTI5LS4wMjYuMjQtLjAyLjQyOC4wNi41NC4xMDguMzQyLjE0Mi41NzcuNDQuNzA0Ljc4LjAzMy4wODkuMDU3LjE4NS4wNzEuMjg0YS4zMzYuMzM2IDAgMCAxIC4wMi4xMjcgNTUuMTQgNTUuMTQgMCAwIDAgLjAxMyAzLjczOGMuMDIzLjUzOC4wNTcgMS4wMTIuMSAxLjM4Ni4wNDMuMzczLjEwNC42NTcuMTQzLjc1My4xMjguMzIuMzE1LjczOS42NTMgMS4wMjQuMzM4LjI4NC44MjMuNDc0IDEuNzA5LjI4NC43NjgtLjE2NSAxLjI0Mi0uMzk0IDEuNTU5LS43MjMuMzE2LS4zMjkuNTA1LS43ODcuNjI2LTEuNDg4LjE4MS0xLjA1LjU0NS00LjA5NS41ODktNC42NjgtLjAyLS40MzIuMDQ0LS43NjQuMTgyLTEuMDE3LjE0Mi0uMjYuMzYyLS40MTkuNTUyLS41MDUuMDk1LS4wNDMuMTg0LS4wNzIuMjU3LS4wOTNhNS45NTYgNS45NTYgMCAwIDAtLjI0My0uMzI1IDQuNDU2IDQuNDU2IDAgMCAxLS42NjYtMS4wOTkgOC4yOTYgOC4yOTYgMCAwIDAtLjI1Ny0uNDgzYy0uMTMzLS4yNC0uMzAxLS41NC0uNDc3LS44NzctLjM1Mi0uNjc1LS43MzUtMS40OTMtLjkzNC0yLjI5LS4xOTgtLjc5Ni0uMjI3LTEuNjIuMjgxLTIuMjAxLjQ1LS41MTYgMS4yNC0uNzMgMi40MjYtLjYxLS4wMzUtLjEwNS0uMDU2LS4xOTItLjExNS0uMzMyYTcuODE3IDcuODE3IDAgMCAwLTEuMDQxLTEuNzY0Yy0xLjAwNS0xLjI4NS0yLjYzMi0yLjU1OS01LjE0Ni0yLjZoLS4xMTV6bS02LjY0Mi4wNTJjLS4xMjcgMC0uMjU0LjAwNC0uMzguMDExLTEuMDEuMDU4LTEuOTY1LjM1MS0yLjY0OCAxLjA3NS0uNjg0LjcyNC0xLjEzNCAxLjkxMS0xLjAzNiAzLjg3Ni4wMTkuMzcyLjE4MSAxLjQxNC40NTkgMi42NTIuMjc3IDEuMjM4LjY3IDIuNjk1IDEuMTQyIDMuOTgyLjQ3MyAxLjI4NyAxLjA0NiAyLjQwNyAxLjU5IDIuOTM3LjI3NC4yNjUuNTEyLjM3Mi43MjguMzYzLjIxNy0uMDEuNDc4LS4xMzUuNzk3LS41MThhNDMuMjQ0IDQzLjI0NCAwIDAgMSAxLjgxLTIuMDQ4IDMuNDk3IDMuNDk3IDAgMCAxLTEuMTY3LTMuMTVjLjEwMy0uNzM5LjExNy0xLjQzLjEwNS0xLjk3Ni0uMDEyLS41MzItLjA1LS44ODYtLjA1LTEuMTA3YS4zMzYuMzM2IDAgMCAxIDAtLjAxOXYtLjAwNWwtLjAwMS0uMDA2di0uMDAxYTkuODkzIDkuODkzIDAgMCAxIC41OTItMy4zNzZjLjI4LS43NDQuNjk3LTEuNSAxLjMyMi0yLjExMi0uNjE0LS4yMDItMS43MDQtLjUxLTIuODg0LS41NjhhNy42MDMgNy42MDMgMCAwIDAtLjM4LS4wMXpNMTguMTk5IDYuOWMtLjY3OS4wMDktMS4wNi4xODQtMS4yNi40MTMtLjI4My4zMjUtLjMxLjg5NS0uMTM0IDEuNTk3LjE3NS43MDMuNTM3IDEuNDg5Ljg3NyAyLjE0Mi4xNy4zMjcuMzM1LjYyMS40NjguODYuMTM0LjI0LjIzMi40MS4yOTIuNTU1LjA1NS4xMzQuMTE2LjI1Mi4xNzguMzYyLjI2My0uNTU1LjMxLTEuMS4yODMtMS42NjgtLjAzNS0uNzAzLS4xOTgtMS40MjItLjE3NC0yLjE1LjAyNy0uODUxLjE5NS0xLjQwNS4yMS0yLjA2M2E1Ljc5MyA1Ljc5MyAwIDAgMC0uNzQtLjA0OHptLTguMjM0LjExNWEyLjgyIDIuODIgMCAwIDAtLjYxNi4wNzQgNC42NjUgNC42NjUgMCAwIDAtMS4xNTMuNDQ5IDIuNDE3IDIuNDE3IDAgMCAwLS4zNDkuMjI4bC0uMDIyLjAyYy4wMDYuMTQ2LjAzNS41LjA0NyAxLjAyMS4wMTIuNTctLjAwMiAxLjI5Ny0uMTEyIDIuMDg0LS4yMzkgMS43MSAxLjAwMiAzLjEyNiAyLjQ2IDMuMTI4LjA4NS0uMzUxLjIyNS0uNzA3LjM2NS0xLjA4Mi40MDYtMS4wOTQgMS4yMDUtMS44OTIuNTMyLTUuMDA2LS4xMS0uNTEtLjMyOC0uNzE2LS42MjgtLjgzMmExLjQ3NCAxLjQ3NCAwIDAgMC0uNTI0LS4wODR6bTcuOTE3LjIwNGguMDVjLjA2Ni4wMDIuMTI3LjAwOS4xOC4wMjIuMDU0LjAxMi4xLjAzLjEzOC4wNTVhLjE2NC4xNjQgMCAwIDEgLjA3NS4xMWwtLjAwMS4wMDhoLjAwMS0uMDAxYS4yNC4yNCAwIDAgMS0uMDM1LjEzNS42NjguNjY4IDAgMCAxLS4xMS4xNS42NzcuNjc3IDAgMCAxLS4zODYuMjEyLjU5LjU5IDAgMCAxLS40MS0uMTAzLjYwOC42MDggMCAwIDEtLjEzLS4xMTguMjYuMjYgMCAwIDEtLjA2My0uMTI3LjE3LjE3IDAgMCAxIC4wNDItLjEyOC4zODQuMzg0IDAgMCAxIC4xMTctLjA5Yy4wOTYtLjA1NC4yMjYtLjA5NC4zNzMtLjExNi4wNTUtLjAwOC4xMDktLjAxMi4xNi0uMDEzem0tNy44Mi4xNjhjLjA1MyAwIC4xMDkuMDA1LjE2Ni4wMTMuMTUzLjAyMS4yODkuMDYyLjM5My4xMjJhLjQ0Ni40NDYgMCAwIDEgLjEzMy4xMDYuMjIzLjIyMyAwIDAgMSAuMDU0LjE3LjMwMi4zMDIgMCAwIDEtLjA3NS4xNTQuNjQ5LjY0OSAwIDAgMS0uMTQzLjEzLjY0LjY0IDAgMCAxLS40NDguMTEzLjcyOC43MjggMCAwIDEtLjQyLS4yMjguNzEuNzEgMCAwIDEtLjExOC0uMTY0LjI4LjI4IDAgMCAxLS4wNDEtLjE3N2MuMDE1LS4xMDguMTA0LS4xNjQuMTkxLS4xOTVhLjg2Ni44NjYgMCAwIDEgLjMwNy0uMDR6bTkuMDYgNy4zNDNsLS4wMDMuMDAxYy0uMTQ3LjA1My0uMjY4LjA3NS0uMzcuMTJhLjQ1Mi40NTIgMCAwIDAtLjIzOS4yMTRjLS4wNjMuMTE1LS4xMTcuMzE5LS4xMDEuNjY2YS41MS41MSAwIDAgMCAuMTQ4LjA3Yy4xNzEuMDUyLjQ1OC4wODYuNzc4LjA4MS42MzgtLjAwNyAxLjQyMy0uMTU2IDEuODQtLjM1YTMuOTUgMy45NSAwIDAgMCAuOTQzLS42MTVoLS4wMDFjLTEuMzkzLjI4OC0yLjE4LjIxMS0yLjY2My4wMTJhMS4zMTUgMS4zMTUgMCAwIDEtLjMzMi0uMnptLTguMDMxLjA5NGgtLjAyMWMtLjA1My4wMDUtLjEzLjAyMy0uMjc5LjE4OC0uMzQ4LjM5LS40Ny42MzUtLjc1Ny44NjQtLjI4Ny4yMjgtLjY2LjM1LTEuNDA1LjUwMy0uMjM2LjA0OC0uMzcxLjEwMS0uNDYxLjE0NC4wMjkuMDI0LjAyNi4wMy4wNy4wNTMuMTA5LjA2LjI0OS4xMTMuMzYyLjE0Mi4zMi4wOC44NDYuMTczIDEuMzk1LjA4LjU0OS0uMDk0IDEuMTItLjM1NyAxLjYwNy0xLjA0LjA4NC0uMTE4LjA5My0uMjkyLjAyNC0uNDc5LS4wNy0uMTg3LS4yMjMtLjM0OC0uMzMxLS4zOTNhLjY1My42NTMgMCAwIDAtLjIwNC0uMDZ6Ii8+PC9zdmc+" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "SQL" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "PostgreSQL Sink" + description: |- + Send data to a PostgreSQL Database. + required: + - serverName + - username + - password + - query + type: object + properties: + serverName: + title: Server Name + description: Server Name for the data source + type: string + example: localhost + port: + title: Port + description: Server Port for the data source + type: string + default: 5432 + username: + title: Username + description: The username to use for accessing a secured PostgreSQL Database + type: string + password: + title: Password + description: The password to use for accessing a secured PostgreSQL Database + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + query: + title: Query + description: The Query to execute against the PostgreSQL Database + type: string + databaseName: + title: Database Name + description: The Database Name we are pointing + type: string + default: postgres + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.postgresql:postgresql:42.2.14" + - "mvn:org.apache.commons:commons-dbcp2:2.8.0" + flow: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + property: + - key: username + value: '{{username}}' + - key: password + value: '{{password}}' + - key: url + value: 'jdbc:postgresql://{{serverName}}:{{port}}/{{databaseName}}' + - key: driverClassName + value: 'org.postgresql.Driver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" From 810185aa2a2d85220bf2bd70755e0b55e11d22a7 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 18:26:34 +0200 Subject: [PATCH 067/105] Added PostgreSQL Sink Kamelet --- .../kamelets/postgresql-sink.kamelet.yaml | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml new file mode 100644 index 000000000..14f30c133 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml @@ -0,0 +1,83 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: postgresql-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+UG9zdGdyZVNRTCBpY29uPC90aXRsZT48cGF0aCBkPSJNMTcuMTI4IDBhMTAuMTM0IDEwLjEzNCAwIDAgMC0yLjc1NS40MDNsLS4wNjMuMDJBMTAuOTIyIDEwLjkyMiAwIDAgMCAxMi42LjI1OEMxMS40MjIuMjM4IDEwLjQxLjUyNCA5LjU5NCAxIDguNzkuNzIxIDcuMTIyLjI0IDUuMzY0LjMzNiA0LjE0LjQwMyAyLjgwNC43NzUgMS44MTQgMS44Mi44MjcgMi44NjUuMzA1IDQuNDgyLjQxNSA2LjY4MmMuMDMuNjA3LjIwMyAxLjU5Ny40OSAyLjg3OXMuNjkgMi43ODMgMS4xOTMgNC4xNTJjLjUwMyAxLjM3IDEuMDU0IDIuNiAxLjkxNSAzLjQzNi40My40MTkgMS4wMjIuNzcxIDEuNzIuNzQyLjQ5LS4wMi45MzMtLjIzNSAxLjMxNS0uNTUyLjE4Ni4yNDUuMzg1LjM1Mi41NjYuNDUxLjIyOC4xMjUuNDUuMjEuNjguMjY2LjQxMy4xMDMgMS4xMi4yNDEgMS45NDguMS4yODItLjA0Ny41NzktLjEzOS44NzUtLjI3LjAxMS4zMy4wMjQuNjUzLjAzNy45OC4wNDEgMS4wMzYuMDY3IDEuOTkzLjM3OCAyLjgzMi4wNS4xMzcuMTg3Ljg0My43MjcgMS40NjYuNTQuNjI0IDEuNTk4IDEuMDEzIDIuODAzLjc1NS44NS0uMTgyIDEuOTMxLS41MSAyLjY0OS0xLjUzMi43MS0xLjAxIDEuMDMtMi40NTkgMS4wOTMtNC44MDkuMDE2LS4xMjcuMDM1LS4yMzUuMDU1LS4zMzZsLjE2OS4wMTVoLjAyYy45MDcuMDQxIDEuODkxLS4wODggMi43MTMtLjQ3LjcyOC0uMzM3IDEuMjc5LS42NzggMS42OC0xLjI4My4xLS4xNS4yMS0uMzMxLjI0LS42NDNzLS4xNDktLjgtLjQ0Ni0xLjAyNWMtLjU5NS0uNDUyLS45NjktLjI4LTEuMzctLjE5N2E2LjI3IDYuMjcgMCAwIDEtMS4yMDIuMTQ2YzEuMTU2LTEuOTQ3IDEuOTg1LTQuMDE1IDIuNDU4LTUuODQ1LjI4LTEuMDguNDM3LTIuMDc2LjQ1LTIuOTQ3LjAxMy0uODcxLS4wNTgtMS42NDItLjU4LTIuMzA5QzIxLjM2LjYgMTkuMDY3LjAyNCAxNy4yOTMuMDA0Yy0uMDU1LS4wMDEtLjExLS4wMDItLjE2NS0uMDAxem0tLjA0Ny42NGMxLjY3OC0uMDE2IDMuODIyLjQ1NSA1LjM2MSAyLjQyMi4zNDYuNDQyLjQ0OSAxLjA4OC40MzcgMS44ODQtLjAxMy43OTUtLjE2IDEuNzQ3LS40MjkgMi43OS0uNTIyIDIuMDItMS41MDggNC4zNzUtMi44OTcgNi40ODhhLjc1Ni43NTYgMCAwIDAgLjE1OC4wODZjLjI5LjEyLjk1MS4yMjMgMi4yNy0uMDQ4LjMzMi0uMDcuNTc1LS4xMTcuODI3LjA3NWEuNTIuNTIgMCAwIDEgLjE4My40MjUuNzA0LjcwNCAwIDAgMS0uMTMuMzM2Yy0uMjU1LjM4My0uNzU4Ljc0Ni0xLjQwMyAxLjA0NS0uNTcxLjI2Ni0xLjM5LjQwNS0yLjExNi40MTMtLjM2NC4wMDQtLjctLjAyNC0uOTg1LS4xMTNsLS4wMTgtLjAwN2MtLjExIDEuMDYtLjM2MyAzLjE1My0uNTI4IDQuMTA4LS4xMzIuNzctLjM2MyAxLjM4Mi0uODA0IDEuODQtLjQ0LjQ1OC0xLjA2My43MzQtMS45MDEuOTE0LTEuMDM4LjIyMy0xLjc5NS0uMDE3LTIuMjgzLS40MjgtLjQ4Ny0uNDEtLjcxLS45NTQtLjg0NC0xLjI4Ny0uMDkyLS4yMy0uMTQtLjUyOC0uMTg2LS45MjYtLjA0Ni0uMzk4LS4wOC0uODg1LS4xMDMtMS40MzRhNTEuNDI2IDUxLjQyNiAwIDAgMS0uMDMtMi41MjMgMy4wNjEgMy4wNjEgMCAwIDEtMS41NTIuNzZjLS42ODkuMTE3LTEuMzA0LjAwMi0xLjY3MS0uMDlhMi4yNzYgMi4yNzYgMCAwIDEtLjUyLS4yMDFjLS4xNy0uMDkxLS4zMzItLjE5NC0uNDQtLjM5N2EuNTYuNTYgMCAwIDEtLjA1Ny0uMzgxLjYxLjYxIDAgMCAxIC4yMTgtLjMzMWMuMTk4LS4xNjEuNDYtLjI1MS44NTUtLjMzMy43MTktLjE0OC45Ny0uMjQ5IDEuMTIzLS4zNy4xMy0uMTA0LjI3Ny0uMzE0LjUzNy0uNjIyYTEuMTYgMS4xNiAwIDAgMS0uMDAzLS4wNDEgMi45NiAyLjk2IDAgMCAxLTEuMzMtLjM1OGMtLjE1LjE1OC0uOTE2Ljk2OC0xLjg1IDIuMDkyLS4zOTMuNDctLjgyNy43NC0xLjI4NS43NTktLjQ1OC4wMi0uODcyLS4yMTEtMS4yMjQtLjU1Mi0uNzAzLS42ODMtMS4yNjQtMS44NTgtMS43NTMtMy4xODYtLjQ4OC0xLjMyOC0uODg1LTIuODA3LTEuMTY3LTQuMDY3LS4yODMtMS4yNi0uNDUtMi4yNzYtLjQ3NC0yLjc2Ni0uMTA1LTIuMDgyLjM4Mi0zLjQ4NSAxLjIxNy00LjM3LjgzNi0uODg1IDEuOTgyLTEuMjIgMy4wOTktMS4yODQgMi4wMDUtLjExNSAzLjkwOS41ODQgNC4yOTQuNzM0Ljc0Mi0uNTA0IDEuNjk4LS44MTggMi44OTItLjc5OGE3LjM5IDcuMzkgMCAwIDEgMS42ODEuMjE4bC4wMi0uMDA5YTYuODU0IDYuODU0IDAgMCAxIC43MzktLjIxNEE5LjYyNiA5LjYyNiAwIDAgMSAxNy4wOC42NDJ6bS4xNTIuNjdoLS4xNDZhOC43NCA4Ljc0IDAgMCAwLTEuNzA0LjE5MmMxLjI0Ni41NTIgMi4xODcgMS40MDIgMi44NSAyLjI1YTguNDQgOC40NCAwIDAgMSAxLjEzMiAxLjkyYy4xMS4yNjQuMTg0LjQ4Ny4yMjYuNjYuMDIxLjA4Ny4wMzUuMTYuMDQuMjM2LjAwMi4wMzguMDA0LjA3Ny0uMDEyLjE0NCAwIC4wMDMtLjAwNS4wMS0uMDA2LjAxMy4wMy44NzYtLjE4NyAxLjQ3LS4yMTMgMi4zMDYtLjAyLjYwNi4xMzUgMS4zMTguMTczIDIuMDk1LjAzNi43My0uMDUyIDEuNTMyLS41MjYgMi4zMTkuMDQuMDQ4LjA3Ni4wOTYuMTE0LjE0NCAxLjI1NC0xLjk3NSAyLjE1OC00LjE2IDIuNjQtNi4wMjMuMjU4LTEuMDAzLjM5NS0xLjkxMi40MDctMi42MzIuMDEtLjcyLS4xMjQtMS4yNDItLjI5NS0xLjQ2LTEuMzQyLTEuNzE2LTMuMTU4LTIuMTUzLTQuNjgtMi4xNjV6bS00Ljc5LjI1NmMtMS4xODIuMDAzLTIuMDMuMzYtMi42NzMuODk1LS42NjMuNTUzLTEuMTA4IDEuMzEtMS40IDIuMDg1LS4zNDcuOTItLjQ2NiAxLjgxLS41MTMgMi40MTRsLjAxMy0uMDA4Yy4zNTctLjIuODI2LS40IDEuMzI4LS41MTYuNTAyLS4xMTUgMS4wNDMtLjE1MSAxLjUzMy4wMzlzLjg5NS42MzcgMS4wNDIgMS4zMTVjLjcwNCAzLjI1Ny0uMjE5IDQuNDY4LS41NTkgNS4zODJhOS42MSA5LjYxIDAgMCAwLS4zMzEgMS4wMTNjLjA0My0uMDEuMDg2LS4wMjIuMTI5LS4wMjYuMjQtLjAyLjQyOC4wNi41NC4xMDguMzQyLjE0Mi41NzcuNDQuNzA0Ljc4LjAzMy4wODkuMDU3LjE4NS4wNzEuMjg0YS4zMzYuMzM2IDAgMCAxIC4wMi4xMjcgNTUuMTQgNTUuMTQgMCAwIDAgLjAxMyAzLjczOGMuMDIzLjUzOC4wNTcgMS4wMTIuMSAxLjM4Ni4wNDMuMzczLjEwNC42NTcuMTQzLjc1My4xMjguMzIuMzE1LjczOS42NTMgMS4wMjQuMzM4LjI4NC44MjMuNDc0IDEuNzA5LjI4NC43NjgtLjE2NSAxLjI0Mi0uMzk0IDEuNTU5LS43MjMuMzE2LS4zMjkuNTA1LS43ODcuNjI2LTEuNDg4LjE4MS0xLjA1LjU0NS00LjA5NS41ODktNC42NjgtLjAyLS40MzIuMDQ0LS43NjQuMTgyLTEuMDE3LjE0Mi0uMjYuMzYyLS40MTkuNTUyLS41MDUuMDk1LS4wNDMuMTg0LS4wNzIuMjU3LS4wOTNhNS45NTYgNS45NTYgMCAwIDAtLjI0My0uMzI1IDQuNDU2IDQuNDU2IDAgMCAxLS42NjYtMS4wOTkgOC4yOTYgOC4yOTYgMCAwIDAtLjI1Ny0uNDgzYy0uMTMzLS4yNC0uMzAxLS41NC0uNDc3LS44NzctLjM1Mi0uNjc1LS43MzUtMS40OTMtLjkzNC0yLjI5LS4xOTgtLjc5Ni0uMjI3LTEuNjIuMjgxLTIuMjAxLjQ1LS41MTYgMS4yNC0uNzMgMi40MjYtLjYxLS4wMzUtLjEwNS0uMDU2LS4xOTItLjExNS0uMzMyYTcuODE3IDcuODE3IDAgMCAwLTEuMDQxLTEuNzY0Yy0xLjAwNS0xLjI4NS0yLjYzMi0yLjU1OS01LjE0Ni0yLjZoLS4xMTV6bS02LjY0Mi4wNTJjLS4xMjcgMC0uMjU0LjAwNC0uMzguMDExLTEuMDEuMDU4LTEuOTY1LjM1MS0yLjY0OCAxLjA3NS0uNjg0LjcyNC0xLjEzNCAxLjkxMS0xLjAzNiAzLjg3Ni4wMTkuMzcyLjE4MSAxLjQxNC40NTkgMi42NTIuMjc3IDEuMjM4LjY3IDIuNjk1IDEuMTQyIDMuOTgyLjQ3MyAxLjI4NyAxLjA0NiAyLjQwNyAxLjU5IDIuOTM3LjI3NC4yNjUuNTEyLjM3Mi43MjguMzYzLjIxNy0uMDEuNDc4LS4xMzUuNzk3LS41MThhNDMuMjQ0IDQzLjI0NCAwIDAgMSAxLjgxLTIuMDQ4IDMuNDk3IDMuNDk3IDAgMCAxLTEuMTY3LTMuMTVjLjEwMy0uNzM5LjExNy0xLjQzLjEwNS0xLjk3Ni0uMDEyLS41MzItLjA1LS44ODYtLjA1LTEuMTA3YS4zMzYuMzM2IDAgMCAxIDAtLjAxOXYtLjAwNWwtLjAwMS0uMDA2di0uMDAxYTkuODkzIDkuODkzIDAgMCAxIC41OTItMy4zNzZjLjI4LS43NDQuNjk3LTEuNSAxLjMyMi0yLjExMi0uNjE0LS4yMDItMS43MDQtLjUxLTIuODg0LS41NjhhNy42MDMgNy42MDMgMCAwIDAtLjM4LS4wMXpNMTguMTk5IDYuOWMtLjY3OS4wMDktMS4wNi4xODQtMS4yNi40MTMtLjI4My4zMjUtLjMxLjg5NS0uMTM0IDEuNTk3LjE3NS43MDMuNTM3IDEuNDg5Ljg3NyAyLjE0Mi4xNy4zMjcuMzM1LjYyMS40NjguODYuMTM0LjI0LjIzMi40MS4yOTIuNTU1LjA1NS4xMzQuMTE2LjI1Mi4xNzguMzYyLjI2My0uNTU1LjMxLTEuMS4yODMtMS42NjgtLjAzNS0uNzAzLS4xOTgtMS40MjItLjE3NC0yLjE1LjAyNy0uODUxLjE5NS0xLjQwNS4yMS0yLjA2M2E1Ljc5MyA1Ljc5MyAwIDAgMC0uNzQtLjA0OHptLTguMjM0LjExNWEyLjgyIDIuODIgMCAwIDAtLjYxNi4wNzQgNC42NjUgNC42NjUgMCAwIDAtMS4xNTMuNDQ5IDIuNDE3IDIuNDE3IDAgMCAwLS4zNDkuMjI4bC0uMDIyLjAyYy4wMDYuMTQ2LjAzNS41LjA0NyAxLjAyMS4wMTIuNTctLjAwMiAxLjI5Ny0uMTEyIDIuMDg0LS4yMzkgMS43MSAxLjAwMiAzLjEyNiAyLjQ2IDMuMTI4LjA4NS0uMzUxLjIyNS0uNzA3LjM2NS0xLjA4Mi40MDYtMS4wOTQgMS4yMDUtMS44OTIuNTMyLTUuMDA2LS4xMS0uNTEtLjMyOC0uNzE2LS42MjgtLjgzMmExLjQ3NCAxLjQ3NCAwIDAgMC0uNTI0LS4wODR6bTcuOTE3LjIwNGguMDVjLjA2Ni4wMDIuMTI3LjAwOS4xOC4wMjIuMDU0LjAxMi4xLjAzLjEzOC4wNTVhLjE2NC4xNjQgMCAwIDEgLjA3NS4xMWwtLjAwMS4wMDhoLjAwMS0uMDAxYS4yNC4yNCAwIDAgMS0uMDM1LjEzNS42NjguNjY4IDAgMCAxLS4xMS4xNS42NzcuNjc3IDAgMCAxLS4zODYuMjEyLjU5LjU5IDAgMCAxLS40MS0uMTAzLjYwOC42MDggMCAwIDEtLjEzLS4xMTguMjYuMjYgMCAwIDEtLjA2My0uMTI3LjE3LjE3IDAgMCAxIC4wNDItLjEyOC4zODQuMzg0IDAgMCAxIC4xMTctLjA5Yy4wOTYtLjA1NC4yMjYtLjA5NC4zNzMtLjExNi4wNTUtLjAwOC4xMDktLjAxMi4xNi0uMDEzem0tNy44Mi4xNjhjLjA1MyAwIC4xMDkuMDA1LjE2Ni4wMTMuMTUzLjAyMS4yODkuMDYyLjM5My4xMjJhLjQ0Ni40NDYgMCAwIDEgLjEzMy4xMDYuMjIzLjIyMyAwIDAgMSAuMDU0LjE3LjMwMi4zMDIgMCAwIDEtLjA3NS4xNTQuNjQ5LjY0OSAwIDAgMS0uMTQzLjEzLjY0LjY0IDAgMCAxLS40NDguMTEzLjcyOC43MjggMCAwIDEtLjQyLS4yMjguNzEuNzEgMCAwIDEtLjExOC0uMTY0LjI4LjI4IDAgMCAxLS4wNDEtLjE3N2MuMDE1LS4xMDguMTA0LS4xNjQuMTkxLS4xOTVhLjg2Ni44NjYgMCAwIDEgLjMwNy0uMDR6bTkuMDYgNy4zNDNsLS4wMDMuMDAxYy0uMTQ3LjA1My0uMjY4LjA3NS0uMzcuMTJhLjQ1Mi40NTIgMCAwIDAtLjIzOS4yMTRjLS4wNjMuMTE1LS4xMTcuMzE5LS4xMDEuNjY2YS41MS41MSAwIDAgMCAuMTQ4LjA3Yy4xNzEuMDUyLjQ1OC4wODYuNzc4LjA4MS42MzgtLjAwNyAxLjQyMy0uMTU2IDEuODQtLjM1YTMuOTUgMy45NSAwIDAgMCAuOTQzLS42MTVoLS4wMDFjLTEuMzkzLjI4OC0yLjE4LjIxMS0yLjY2My4wMTJhMS4zMTUgMS4zMTUgMCAwIDEtLjMzMi0uMnptLTguMDMxLjA5NGgtLjAyMWMtLjA1My4wMDUtLjEzLjAyMy0uMjc5LjE4OC0uMzQ4LjM5LS40Ny42MzUtLjc1Ny44NjQtLjI4Ny4yMjgtLjY2LjM1LTEuNDA1LjUwMy0uMjM2LjA0OC0uMzcxLjEwMS0uNDYxLjE0NC4wMjkuMDI0LjAyNi4wMy4wNy4wNTMuMTA5LjA2LjI0OS4xMTMuMzYyLjE0Mi4zMi4wOC44NDYuMTczIDEuMzk1LjA4LjU0OS0uMDk0IDEuMTItLjM1NyAxLjYwNy0xLjA0LjA4NC0uMTE4LjA5My0uMjkyLjAyNC0uNDc5LS4wNy0uMTg3LS4yMjMtLjM0OC0uMzMxLS4zOTNhLjY1My42NTMgMCAwIDAtLjIwNC0uMDZ6Ii8+PC9zdmc+" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "SQL" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "PostgreSQL Sink" + description: |- + Send data to a PostgreSQL Database. + required: + - serverName + - username + - password + - query + type: object + properties: + serverName: + title: Server Name + description: Server Name for the data source + type: string + example: localhost + port: + title: Port + description: Server Port for the data source + type: string + default: 5432 + username: + title: Username + description: The username to use for accessing a secured PostgreSQL Database + type: string + password: + title: Password + description: The password to use for accessing a secured PostgreSQL Database + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + query: + title: Query + description: The Query to execute against the PostgreSQL Database + type: string + databaseName: + title: Database Name + description: The Database Name we are pointing + type: string + default: postgres + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.postgresql:postgresql:42.2.14" + - "mvn:org.apache.commons:commons-dbcp2:2.8.0" + flow: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + property: + - key: username + value: '{{username}}' + - key: password + value: '{{password}}' + - key: url + value: 'jdbc:postgresql://{{serverName}}:{{port}}/{{databaseName}}' + - key: driverClassName + value: 'org.postgresql.Driver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" From e7b526affc8cdc10f55da69508911fa3223835ae Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 18:28:04 +0200 Subject: [PATCH 068/105] Added PostgreSQL Sink Kamelet --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index f6544d46d..68740ac84 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -79,6 +79,7 @@ * xref:ROOT:openai-classification-action.adoc[image:kamelets/openai-classification-action.svg[] OpenAI Classification Action] * xref:ROOT:openai-completion-action.adoc[image:kamelets/openai-completion-action.svg[] OpenAI Completion Action] * xref:ROOT:pdf-action.adoc[image:kamelets/pdf-action.svg[] PDF Action] +* xref:ROOT:postgresql-sink.adoc[image:kamelets/postgresql-sink.svg[] PostgreSQL Sink] * xref:ROOT:predicate-filter-action.adoc[image:kamelets/predicate-filter-action.svg[] Predicate Filter Action] * xref:ROOT:protobuf-deserialize-action.adoc[image:kamelets/protobuf-deserialize-action.svg[] Protobuf Deserialize Action] * xref:ROOT:protobuf-serialize-action.adoc[image:kamelets/protobuf-serialize-action.svg[] Protobuf Serialize Action] From 442df47a03ca3b4f5aea08f2ef38f8d67bac05ef Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 18:28:17 +0200 Subject: [PATCH 069/105] Added PostgreSQL Sink Kamelet --- .../images/kamelets/postgresql-sink.svg | 1 + docs/modules/ROOT/pages/postgresql-sink.adoc | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/postgresql-sink.svg create mode 100644 docs/modules/ROOT/pages/postgresql-sink.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/postgresql-sink.svg b/docs/modules/ROOT/assets/images/kamelets/postgresql-sink.svg new file mode 100644 index 000000000..b102a0e8b --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/postgresql-sink.svg @@ -0,0 +1 @@ +PostgreSQL icon \ No newline at end of file diff --git a/docs/modules/ROOT/pages/postgresql-sink.adoc b/docs/modules/ROOT/pages/postgresql-sink.adoc new file mode 100644 index 000000000..510d46fe0 --- /dev/null +++ b/docs/modules/ROOT/pages/postgresql-sink.adoc @@ -0,0 +1,70 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/postgresql-sink.svg[] PostgreSQL Sink + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Send data to a PostgreSQL Database. + +== Configuration Options + +The following table summarizes the configuration options available for the `postgresql-sink` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *password {empty}* *| Password| The password to use for accessing a secured PostgreSQL Database| string| | +| *query {empty}* *| Query| The Query to execute against the PostgreSQL Database| string| | +| *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` +| *username {empty}* *| Username| The username to use for accessing a secured PostgreSQL Database| string| | +| databaseName| Database Name| The Database Name we are pointing| string| `"postgres"`| +| port| Port| Server Port for the data source| string| `5432`| +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `postgresql-sink` can be used in various contexts. + +=== Knative Sink + +The `postgresql-sink` Kamelet can be used as Knative sink by binding it to a Knative object. + +.postgresql-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: postgresql-sink-binding +spec: + source: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: postgresql-sink + properties: + password: "The Password" + query: "The Query" + serverName: "localhost" + username: "The Username" + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `postgresql-sink-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the sink using the following command: + +[source,shell] +---- +kubectl apply -f postgresql-sink-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From 4ff07ebbd2b9541b7e18739b7d72d0df42b86005 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 18:47:31 +0200 Subject: [PATCH 070/105] Minor fix to default values for Mysql Sink Kamelet --- mysql-sink.kamelet.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mysql-sink.kamelet.yaml b/mysql-sink.kamelet.yaml index 1c0343aaf..0818d05de 100644 --- a/mysql-sink.kamelet.yaml +++ b/mysql-sink.kamelet.yaml @@ -24,10 +24,8 @@ spec: - "mvn:mysql:mysql-connector-java:" required: - serverName - - port - username - password - - databaseName - query type: object properties: @@ -40,7 +38,7 @@ spec: title: Port description: Server Port for the data source type: string - example: 3306 + default: 3306 username: title: Username description: The username to use for accessing a secured MySQL Database @@ -60,6 +58,7 @@ spec: title: Database Name description: The Database Name we are pointing type: string + default: mysql dependencies: - "camel:jackson" - "camel:kamelet" From 2796b4d02fdfa0e71f5c72aa1d3478b5e5236436 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 18:48:27 +0200 Subject: [PATCH 071/105] Regen catalog --- .../src/main/resources/kamelets/mysql-sink.kamelet.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml index 1c0343aaf..0818d05de 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml @@ -24,10 +24,8 @@ spec: - "mvn:mysql:mysql-connector-java:" required: - serverName - - port - username - password - - databaseName - query type: object properties: @@ -40,7 +38,7 @@ spec: title: Port description: Server Port for the data source type: string - example: 3306 + default: 3306 username: title: Username description: The username to use for accessing a secured MySQL Database @@ -60,6 +58,7 @@ spec: title: Database Name description: The Database Name we are pointing type: string + default: mysql dependencies: - "camel:jackson" - "camel:kamelet" From eeeb45d266526fe92e4f89b0f58b3b11d5550d5d Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Fri, 11 Jun 2021 18:48:52 +0200 Subject: [PATCH 072/105] Regen docs --- docs/modules/ROOT/pages/mysql-sink.adoc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/modules/ROOT/pages/mysql-sink.adoc b/docs/modules/ROOT/pages/mysql-sink.adoc index 03986affb..f9e555224 100644 --- a/docs/modules/ROOT/pages/mysql-sink.adoc +++ b/docs/modules/ROOT/pages/mysql-sink.adoc @@ -20,12 +20,12 @@ The following table summarizes the configuration options available for the `mysq [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | | *password {empty}* *| Password| The password to use for accessing a secured MySQL Database| string| | -| *port {empty}* *| Port| Server Port for the data source| string| | `3306` | *query {empty}* *| Query| The Query to execute against the MySQL Database| string| | | *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` | *username {empty}* *| Username| The username to use for accessing a secured MySQL Database| string| | +| databaseName| Database Name| The Database Name we are pointing| string| `"mysql"`| +| port| Port| Server Port for the data source| string| `3306`| |=== NOTE: Fields marked with ({empty}*) are mandatory. @@ -57,9 +57,7 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: mysql-sink properties: - databaseName: "The Database Name" password: "The Password" - port: 3306 query: "The Query" serverName: "localhost" username: "The Username" From 8df2f1d06ee1d2bcdb4cd4cf4016d42f4abf6adc Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 09:56:10 +0200 Subject: [PATCH 073/105] Added MariaDB Sink Kamelet --- mariadb-sink.kamelet.yaml | 89 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 mariadb-sink.kamelet.yaml diff --git a/mariadb-sink.kamelet.yaml b/mariadb-sink.kamelet.yaml new file mode 100644 index 000000000..fdf0f9f4a --- /dev/null +++ b/mariadb-sink.kamelet.yaml @@ -0,0 +1,89 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: mariadb-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmVyc2lvbj0iMSI+CiA8cmVjdCBmaWxsPSIjMjY1NTdjIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHg9Ii0zMCIgeT0iLTMwIiByeD0iMS40IiByeT0iMS40IiB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLC0xLDAsMCwwKSIvPgogPHBhdGggb3BhY2l0eT0iLjIiIGQ9Im04LjAyNTQgOC4wMDAxYy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43Mjk5IDAuODgyOCAxLjQ0MTkgMC42MzEyMiAwLjc5MDkgMC44ODUxNCAxLjIyMjcgMS4xNjAyIDEuOTcwNyAwLjQzMzYgMS4xNzkzIDAuNjM0MDMgMS41NzQ4IDAuOTg2MzMgMS45NDM0IDAuMjczNjYgMC4yODYzIDAuMjczNjkgMC4yODcxMiAwLjA4OTg0IDAuODcxMDktMC4yODUwNyAwLjkwNTU2LTAuMzQ0MDcgMi43MjA3LTAuMTE1MjMgMy41NzQyIDAuMzQyNDggMS4yNzc0IDAuNzY0MDIgMS44NTc0IDEuMzUxNiAxLjg1NzQgMC40MTk2OCAwIDAuNzYzNjQtMC4zNTA5MiAwLjg4NjcyLTAuOTA0MyAwLjA0MjY4LTAuMTkxODYgMC4xMjI0OS0wLjQ2NjA3IDAuMTc3NzMtMC42MDkzOCAwLjA5NTM1LTAuMjQ3MjggMC4xMjA5My0wLjIyODE4IDAuNDk0MTQgMC4zODA4NiAwLjIxNjI4IDAuMzUyOTYgMC42Mjg2NiAwLjg3ODYxIDAuOTE2MDIgMS4xNjggMC42NjM4IDAuNjY4NDUgMS41NzQ5IDEuNDIxNyAxLjY0MDYgMS4zNTc0IDAuMDI3NzUtMC4wMjcxMy0wLjIzOC0wLjQyMTc3LTAuNTg5ODQtMC44Nzg5MXMtMS4wMTUxLTEuNTE4OS0xLjQ3NDYtMi4zNTk0Yy0wLjUzNTkzLTAuOTgwMjktMC44OTk3LTEuNTI4Ni0xLjAxMzctMS41MjkzLTAuMzcwNDUtMC4wMDI1LTAuNzE1ODggMC41ODAwNC0wLjkxNjAyIDEuNTQ2OS0wLjIzMDU2IDEuMTEzOC0wLjYzNjc1IDAuOTI3MDgtMC45NjY4LTAuNDQ1MzEtMC4xOTAxOS0wLjc5MDg1LTAuMDkxMDYtMS44NTYgMC4yNjM2Ny0yLjg1MzUgMC4xNjEzNy0wLjQ1Mzc2IDAuMjkyOTctMC44NzM3MyAwLjI5Mjk3LTAuOTMxNjRzLTAuMjU3MzEtMC41NDM0OC0wLjU3MjI3LTEuMDgwMWMtMC4zMTUtMC41MzctMC42ODUxLTEuMjk3LTAuODIyLTEuNjktMC4zMzI2LTAuOTU0LTAuNDkwNS0xLjIzMi0xLjE1ODItMi4wNDMtMC42ODc5LTAuODM0Ni0wLjc1My0xLjIyMDMtMC4yMDUxLTEuMjE2NiAwLjQyNTU0IDAuMDAyODEgMS4xMTIzIDAuMjg5NDQgMS44MDI3IDAuNzUzOTEgMC40MzcxIDAuMjk0MDQgMC41ODUyMyAwLjMzMzk4IDEuMjg3MSAwLjMzMzk4IDAuODgxNDIgMCAxLjA3MDkgMC4wNzIyIDIuMjkzIDAuODc2OTUgMS4yNDQ1IDAuODE5NTggMi4xNzIyIDEuNTgxMyAyLjgxNDUgMi4zMTI1IDAuNTcwNCAwLjY0OTM3IDAuODgyMDEgMS4yMTM4IDIuNTYwNSA0LjY1NjIgMC42NDQzMyAxLjMyMTQgMS4yMTU4IDEuOTU5MyAyLjAwMzkgMi4yMzI0IDEuMjE3MyAwLjQyMTg1IDEuNjMxNyAwLjYxMzE0IDIuMTY4IDAuOTk4MDVsMC41NjY0MSAwLjQwNjI1LTAuMzgwODYgMC4wNzQyMmMtMC4yMTAzIDAuMDQwMzMtMC42Njg0NyAwLjEwNjE2LTEuMDE3NiAwLjE0NjQ4LTAuNzI3NDEgMC4wODQtMS4yMDMxIDAuMzg1NzMtMS4yMDMxIDAuNzYzNjcgMCAwLjQyNTkyIDEuNDUxMyAxLjY0NTMgMi45MDYyIDIuNDQxNCAwLjY5OTAzIDAuMzgyNDcgMS4zNzE2IDAuNzU5MjcgMS40OTQxIDAuODM3ODkgMC4zMjU5OCAwLjIwOTIyIDAuNDE0MjQgMC4xODM4OSAwLjMzMDA4LTAuMDkxOC0wLjE3NjI0LTAuNTc3MzgtMC43NzI3OS0xLjEzOTgtMi40Mjk3LTIuMjk0OS0wLjk3MTk3LTAuNjc3Ni0wLjk4MTk5LTAuNjUyNDQgMC4zMTY0MS0wLjc4MTI1IDAuOTI1LTAuMDkxIDEuMzkyLTAuMjQ5IDEuMzkyLTAuNDcyIDAtMC4xMDItMC40Ny0wLjY0NC0xLjA0NS0xLjIwMy0wLjktMC44NzYtMS4yMDQtMS4wOTQtMi4xOTUtMS41NzctMS4zNS0wLjY1Ni0xLjg0Mi0xLjE3Ny0yLjE1My0yLjI4My0wLjQ2NC0xLjY0OS0xLjcxMi0zLjU4Ny0zLjM3MS01LjIzLTEuNzEyLTEuNjk2LTMuMzQ3LTIuNjM0NC00Ljg0NS0yLjc4MTQtMC42MDktMC4wNTk4LTAuOTI0LTAuMTUyMi0xLjIzOS0wLjM2NTMtMC41MzMyLTAuMzYxMS0xLjc3MTctMC43Njg0LTIuMzc2Ni0wLjc4MTJ6bTIuOTYyOSAzLjAwMmMtMC4xMjI2Ni0wLjAwNzktMC4yMjk0NSAwLjAwODUtMC4zMDI3MyAwLjA1ODU5LTAuMjczNDEgMC4xODY5OS0wLjI0MDk5IDAuNDE1MDQgMC4wODAwOCAwLjU1NjY0IDAuMTUwOTIgMC4wNjY1NiAwLjM2NTAxIDAuMzAxNDcgMC40NzY1NiAwLjUyMTQ4IDAuMzc1MSAwLjczOTc4IDAuOTQ5ODUgMC4yNDQ1IDAuNjkzMzYtMC41OTc2Ni0wLjA4MDg1LTAuMjY1NDYtMC41NzkzLTAuNTE1NDctMC45NDcyNy0wLjUzOTA2eiIvPgogPHBhdGggZmlsbD0iI2ZmZiIgZD0ibTguMDI1NCA3Yy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43MzAyIDAuODgyOCAxLjQ0MTQgMC42MzEyIDAuNzkwNiAwLjg4NTIgMS4yMjI2IDEuMTYwMiAxLjk3MDYgMC40MzM2IDEuMTc5IDAuNjM0IDEuNTc1IDAuOTg1OSAxLjk0MyAwLjI3NCAwLjI4NyAwLjI3NCAwLjI4OCAwLjA5IDAuODcyLTAuMjg0OCAwLjkwNS0wLjM0MzggMi43Mi0wLjExNSAzLjU3NCAwLjM0MiAxLjI3NyAwLjc2NCAxLjg1NyAxLjM1MiAxLjg1NyAwLjQxOSAwIDAuNzYzLTAuMzUxIDAuODg2LTAuOTA0IDAuMDQzLTAuMTkyIDAuMTIzLTAuNDY2IDAuMTc4LTAuNjA5IDAuMDk1LTAuMjQ4IDAuMTIxLTAuMjI5IDAuNDk0IDAuMzggMC4yMTYgMC4zNTMgMC42MjkgMC44NzkgMC45MTYgMS4xNjggMC42NjQgMC42NjkgMS41NzUgMS40MjIgMS42NDEgMS4zNTggMC4wMjgtMC4wMjctMC4yMzgtMC40MjItMC41OS0wLjg3OXMtMS4wMTUtMS41MTktMS40NzUtMi4zNTljLTAuNTM2LTAuOTgxLTAuODk5LTEuNTI5LTEuMDEzLTEuNTMtMC4zNzEtMC4wMDItMC43MTYgMC41OC0wLjkxNiAxLjU0Ny0wLjIzMSAxLjExNC0wLjYzNyAwLjkyNy0wLjk2Ny0wLjQ0NS0wLjE5LTAuNzkxLTAuMDkxLTEuODU2IDAuMjY0LTIuODU0IDAuMTYxLTAuNDUzIDAuMjkzLTAuODczIDAuMjkzLTAuOTMxcy0wLjI1OC0wLjU0NC0wLjU3My0xLjA4Yy0wLjMxNS0wLjUzNy0wLjY4NTEtMS4yOTctMC44MjItMS42OS0wLjMzMjYtMC45NTQtMC40OTA1LTEuMjMyLTEuMTU4Mi0yLjA0MjktMC42ODc5LTAuODM0OC0wLjc1My0xLjIyMDQtMC4yMDUxLTEuMjE2OCAwLjQyNTUgMC4wMDI5IDEuMTEyMyAwLjI4OTUgMS44MDIzIDAuNzUzOSAwLjQzOCAwLjI5NDEgMC41ODYgMC4zMzQgMS4yODggMC4zMzQgMC44ODEgMCAxLjA3IDAuMDcyMiAyLjI5MyAwLjg3NyAxLjI0NCAwLjgxOTggMi4xNzIgMS41ODE4IDIuODE0IDIuMzEyOCAwLjU3IDAuNjQ5IDAuODgyIDEuMjE0IDIuNTYxIDQuNjU2IDAuNjQ0IDEuMzIxIDEuMjE1IDEuOTU5IDIuMDAzIDIuMjMyIDEuMjE4IDAuNDIyIDEuNjMyIDAuNjEzIDIuMTY4IDAuOTk4bDAuNTY3IDAuNDA3LTAuMzgxIDAuMDc0Yy0wLjIxIDAuMDQtMC42NjkgMC4xMDYtMS4wMTggMC4xNDYtMC43MjcgMC4wODQtMS4yMDMgMC4zODYtMS4yMDMgMC43NjQgMCAwLjQyNiAxLjQ1MSAxLjY0NSAyLjkwNiAyLjQ0MSAwLjcgMC4zODMgMS4zNzIgMC43NiAxLjQ5NSAwLjgzOCAwLjMyNiAwLjIxIDAuNDE0IDAuMTg0IDAuMzMtMC4wOTEtMC4xNzctMC41NzgtMC43NzMtMS4xNC0yLjQzLTIuMjk1LTAuOTcyLTAuNjc4LTAuOTgyLTAuNjUzIDAuMzE2LTAuNzgyIDAuOTI2LTAuMDkyIDEuMzkzLTAuMjUgMS4zOTMtMC40NzIgMC0wLjEwMi0wLjQ3LTAuNjQ0LTEuMDQ1LTEuMjAzLTAuOS0wLjg3Ny0xLjIwNC0xLjA5NC0yLjE5NS0xLjU3Ny0xLjM1LTAuNjU2LTEuODQyLTEuMTc3LTIuMTUzLTIuMjgzLTAuNDY0LTEuNjUtMS43MTItMy41ODctMy4zNzEtNS4yMy0xLjcxMi0xLjY5NjUtMy4zNDctMi42MzQ1LTQuODQ1LTIuNzgxNS0wLjYwOS0wLjA1OTgtMC45MjQtMC4xNTIyLTEuMjM5LTAuMzY1My0wLjUzMzItMC4zNjExLTEuNzcxNy0wLjc2ODQtMi4zNzY2LTAuNzgxMnptMi45NjI2IDMuMDAyYy0wLjEyMi0wLjAwNzktMC4yMjkgMC4wMDgtMC4zMDIgMC4wNTktMC4yNzQgMC4xODctMC4yNDEgMC40MTUgMC4wOCAwLjU1NiAwLjE1MSAwLjA2NyAwLjM2NSAwLjMwMiAwLjQ3NiAwLjUyMiAwLjM3NSAwLjczOSAwLjk1IDAuMjQ0IDAuNjk0LTAuNTk4LTAuMDgxLTAuMjY1LTAuNTgtMC41MTUtMC45NDgtMC41Mzl6Ii8+CiA8cGF0aCBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuMSIgZD0ibTMuNDAwNCAyYy0wLjc3NTYgMC0xLjQwMDQgMC42MjQ4LTEuNDAwNCAxLjQwMDR2MWMwLTAuNzc1NiAwLjYyNDgtMS40MDA0IDEuNDAwNC0xLjQwMDRoMjUuMmMwLjc3NSAwIDEuNCAwLjYyNDggMS40IDEuNDAwNHYtMWMwLTAuNzc1Ni0wLjYyNS0xLjQwMDQtMS40LTEuNDAwNGgtMjUuMnoiLz4KIDxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJtMiAyOC42djFjMCAwLjc3NSAwLjYyNDggMS40IDEuNDAwNCAxLjRoMjUuMmMwLjc3NSAwIDEuNC0wLjYyNSAxLjQtMS40di0xYzAgMC43NzUtMC42MjUgMS40LTEuNCAxLjRoLTI1LjJjLTAuNzc1MiAwLTEuNC0wLjYyNS0xLjQtMS40eiIvPgo8L3N2Zz4K" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "SQL" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "MariaDB Sink" + description: |- + Send data to a MariaDB Database. + + In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + + spec: + integration: + dependencies: + - "mvn:org.mariadb.jdbc:mariadb-java-client:" + required: + - serverName + - username + - password + - query + - databaseName + type: object + properties: + serverName: + title: Server Name + description: Server Name for the data source + type: string + example: localhost + port: + title: Port + description: Server Port for the data source + type: string + default: 3306 + username: + title: Username + description: The username to use for accessing a secured MariaDB Database + type: string + password: + title: Password + description: The password to use for accessing a secured MariaDB Database + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + query: + title: Query + description: The Query to execute against the MariaDB Database + type: string + databaseName: + title: Database Name + description: The Database Name we are pointing + type: string + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.apache.commons:commons-dbcp2:2.8.0" + flow: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + property: + - key: username + value: '{{username}}' + - key: password + value: '{{password}}' + - key: url + value: 'jdbc:mariadb://{{serverName}}:{{port}}/{{databaseName}}' + - key: driverClassName + value: 'org.mariadb.jdbc.Driver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" From 86e2190104678e8f0c86a40d9fabd80f4e098517 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 09:59:10 +0200 Subject: [PATCH 074/105] Added MariaDB Sink Kamelet --- mariadb-sink.kamelet.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mariadb-sink.kamelet.yaml b/mariadb-sink.kamelet.yaml index fdf0f9f4a..fac5e76f6 100644 --- a/mariadb-sink.kamelet.yaml +++ b/mariadb-sink.kamelet.yaml @@ -5,7 +5,7 @@ metadata: annotations: camel.apache.org/kamelet.support.level: "Preview" camel.apache.org/catalog.version: "main-SNAPSHOT" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmVyc2lvbj0iMSI+CiA8cmVjdCBmaWxsPSIjMjY1NTdjIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHg9Ii0zMCIgeT0iLTMwIiByeD0iMS40IiByeT0iMS40IiB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLC0xLDAsMCwwKSIvPgogPHBhdGggb3BhY2l0eT0iLjIiIGQ9Im04LjAyNTQgOC4wMDAxYy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43Mjk5IDAuODgyOCAxLjQ0MTkgMC42MzEyMiAwLjc5MDkgMC44ODUxNCAxLjIyMjcgMS4xNjAyIDEuOTcwNyAwLjQzMzYgMS4xNzkzIDAuNjM0MDMgMS41NzQ4IDAuOTg2MzMgMS45NDM0IDAuMjczNjYgMC4yODYzIDAuMjczNjkgMC4yODcxMiAwLjA4OTg0IDAuODcxMDktMC4yODUwNyAwLjkwNTU2LTAuMzQ0MDcgMi43MjA3LTAuMTE1MjMgMy41NzQyIDAuMzQyNDggMS4yNzc0IDAuNzY0MDIgMS44NTc0IDEuMzUxNiAxLjg1NzQgMC40MTk2OCAwIDAuNzYzNjQtMC4zNTA5MiAwLjg4NjcyLTAuOTA0MyAwLjA0MjY4LTAuMTkxODYgMC4xMjI0OS0wLjQ2NjA3IDAuMTc3NzMtMC42MDkzOCAwLjA5NTM1LTAuMjQ3MjggMC4xMjA5My0wLjIyODE4IDAuNDk0MTQgMC4zODA4NiAwLjIxNjI4IDAuMzUyOTYgMC42Mjg2NiAwLjg3ODYxIDAuOTE2MDIgMS4xNjggMC42NjM4IDAuNjY4NDUgMS41NzQ5IDEuNDIxNyAxLjY0MDYgMS4zNTc0IDAuMDI3NzUtMC4wMjcxMy0wLjIzOC0wLjQyMTc3LTAuNTg5ODQtMC44Nzg5MXMtMS4wMTUxLTEuNTE4OS0xLjQ3NDYtMi4zNTk0Yy0wLjUzNTkzLTAuOTgwMjktMC44OTk3LTEuNTI4Ni0xLjAxMzctMS41MjkzLTAuMzcwNDUtMC4wMDI1LTAuNzE1ODggMC41ODAwNC0wLjkxNjAyIDEuNTQ2OS0wLjIzMDU2IDEuMTEzOC0wLjYzNjc1IDAuOTI3MDgtMC45NjY4LTAuNDQ1MzEtMC4xOTAxOS0wLjc5MDg1LTAuMDkxMDYtMS44NTYgMC4yNjM2Ny0yLjg1MzUgMC4xNjEzNy0wLjQ1Mzc2IDAuMjkyOTctMC44NzM3MyAwLjI5Mjk3LTAuOTMxNjRzLTAuMjU3MzEtMC41NDM0OC0wLjU3MjI3LTEuMDgwMWMtMC4zMTUtMC41MzctMC42ODUxLTEuMjk3LTAuODIyLTEuNjktMC4zMzI2LTAuOTU0LTAuNDkwNS0xLjIzMi0xLjE1ODItMi4wNDMtMC42ODc5LTAuODM0Ni0wLjc1My0xLjIyMDMtMC4yMDUxLTEuMjE2NiAwLjQyNTU0IDAuMDAyODEgMS4xMTIzIDAuMjg5NDQgMS44MDI3IDAuNzUzOTEgMC40MzcxIDAuMjk0MDQgMC41ODUyMyAwLjMzMzk4IDEuMjg3MSAwLjMzMzk4IDAuODgxNDIgMCAxLjA3MDkgMC4wNzIyIDIuMjkzIDAuODc2OTUgMS4yNDQ1IDAuODE5NTggMi4xNzIyIDEuNTgxMyAyLjgxNDUgMi4zMTI1IDAuNTcwNCAwLjY0OTM3IDAuODgyMDEgMS4yMTM4IDIuNTYwNSA0LjY1NjIgMC42NDQzMyAxLjMyMTQgMS4yMTU4IDEuOTU5MyAyLjAwMzkgMi4yMzI0IDEuMjE3MyAwLjQyMTg1IDEuNjMxNyAwLjYxMzE0IDIuMTY4IDAuOTk4MDVsMC41NjY0MSAwLjQwNjI1LTAuMzgwODYgMC4wNzQyMmMtMC4yMTAzIDAuMDQwMzMtMC42Njg0NyAwLjEwNjE2LTEuMDE3NiAwLjE0NjQ4LTAuNzI3NDEgMC4wODQtMS4yMDMxIDAuMzg1NzMtMS4yMDMxIDAuNzYzNjcgMCAwLjQyNTkyIDEuNDUxMyAxLjY0NTMgMi45MDYyIDIuNDQxNCAwLjY5OTAzIDAuMzgyNDcgMS4zNzE2IDAuNzU5MjcgMS40OTQxIDAuODM3ODkgMC4zMjU5OCAwLjIwOTIyIDAuNDE0MjQgMC4xODM4OSAwLjMzMDA4LTAuMDkxOC0wLjE3NjI0LTAuNTc3MzgtMC43NzI3OS0xLjEzOTgtMi40Mjk3LTIuMjk0OS0wLjk3MTk3LTAuNjc3Ni0wLjk4MTk5LTAuNjUyNDQgMC4zMTY0MS0wLjc4MTI1IDAuOTI1LTAuMDkxIDEuMzkyLTAuMjQ5IDEuMzkyLTAuNDcyIDAtMC4xMDItMC40Ny0wLjY0NC0xLjA0NS0xLjIwMy0wLjktMC44NzYtMS4yMDQtMS4wOTQtMi4xOTUtMS41NzctMS4zNS0wLjY1Ni0xLjg0Mi0xLjE3Ny0yLjE1My0yLjI4My0wLjQ2NC0xLjY0OS0xLjcxMi0zLjU4Ny0zLjM3MS01LjIzLTEuNzEyLTEuNjk2LTMuMzQ3LTIuNjM0NC00Ljg0NS0yLjc4MTQtMC42MDktMC4wNTk4LTAuOTI0LTAuMTUyMi0xLjIzOS0wLjM2NTMtMC41MzMyLTAuMzYxMS0xLjc3MTctMC43Njg0LTIuMzc2Ni0wLjc4MTJ6bTIuOTYyOSAzLjAwMmMtMC4xMjI2Ni0wLjAwNzktMC4yMjk0NSAwLjAwODUtMC4zMDI3MyAwLjA1ODU5LTAuMjczNDEgMC4xODY5OS0wLjI0MDk5IDAuNDE1MDQgMC4wODAwOCAwLjU1NjY0IDAuMTUwOTIgMC4wNjY1NiAwLjM2NTAxIDAuMzAxNDcgMC40NzY1NiAwLjUyMTQ4IDAuMzc1MSAwLjczOTc4IDAuOTQ5ODUgMC4yNDQ1IDAuNjkzMzYtMC41OTc2Ni0wLjA4MDg1LTAuMjY1NDYtMC41NzkzLTAuNTE1NDctMC45NDcyNy0wLjUzOTA2eiIvPgogPHBhdGggZmlsbD0iI2ZmZiIgZD0ibTguMDI1NCA3Yy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43MzAyIDAuODgyOCAxLjQ0MTQgMC42MzEyIDAuNzkwNiAwLjg4NTIgMS4yMjI2IDEuMTYwMiAxLjk3MDYgMC40MzM2IDEuMTc5IDAuNjM0IDEuNTc1IDAuOTg1OSAxLjk0MyAwLjI3NCAwLjI4NyAwLjI3NCAwLjI4OCAwLjA5IDAuODcyLTAuMjg0OCAwLjkwNS0wLjM0MzggMi43Mi0wLjExNSAzLjU3NCAwLjM0MiAxLjI3NyAwLjc2NCAxLjg1NyAxLjM1MiAxLjg1NyAwLjQxOSAwIDAuNzYzLTAuMzUxIDAuODg2LTAuOTA0IDAuMDQzLTAuMTkyIDAuMTIzLTAuNDY2IDAuMTc4LTAuNjA5IDAuMDk1LTAuMjQ4IDAuMTIxLTAuMjI5IDAuNDk0IDAuMzggMC4yMTYgMC4zNTMgMC42MjkgMC44NzkgMC45MTYgMS4xNjggMC42NjQgMC42NjkgMS41NzUgMS40MjIgMS42NDEgMS4zNTggMC4wMjgtMC4wMjctMC4yMzgtMC40MjItMC41OS0wLjg3OXMtMS4wMTUtMS41MTktMS40NzUtMi4zNTljLTAuNTM2LTAuOTgxLTAuODk5LTEuNTI5LTEuMDEzLTEuNTMtMC4zNzEtMC4wMDItMC43MTYgMC41OC0wLjkxNiAxLjU0Ny0wLjIzMSAxLjExNC0wLjYzNyAwLjkyNy0wLjk2Ny0wLjQ0NS0wLjE5LTAuNzkxLTAuMDkxLTEuODU2IDAuMjY0LTIuODU0IDAuMTYxLTAuNDUzIDAuMjkzLTAuODczIDAuMjkzLTAuOTMxcy0wLjI1OC0wLjU0NC0wLjU3My0xLjA4Yy0wLjMxNS0wLjUzNy0wLjY4NTEtMS4yOTctMC44MjItMS42OS0wLjMzMjYtMC45NTQtMC40OTA1LTEuMjMyLTEuMTU4Mi0yLjA0MjktMC42ODc5LTAuODM0OC0wLjc1My0xLjIyMDQtMC4yMDUxLTEuMjE2OCAwLjQyNTUgMC4wMDI5IDEuMTEyMyAwLjI4OTUgMS44MDIzIDAuNzUzOSAwLjQzOCAwLjI5NDEgMC41ODYgMC4zMzQgMS4yODggMC4zMzQgMC44ODEgMCAxLjA3IDAuMDcyMiAyLjI5MyAwLjg3NyAxLjI0NCAwLjgxOTggMi4xNzIgMS41ODE4IDIuODE0IDIuMzEyOCAwLjU3IDAuNjQ5IDAuODgyIDEuMjE0IDIuNTYxIDQuNjU2IDAuNjQ0IDEuMzIxIDEuMjE1IDEuOTU5IDIuMDAzIDIuMjMyIDEuMjE4IDAuNDIyIDEuNjMyIDAuNjEzIDIuMTY4IDAuOTk4bDAuNTY3IDAuNDA3LTAuMzgxIDAuMDc0Yy0wLjIxIDAuMDQtMC42NjkgMC4xMDYtMS4wMTggMC4xNDYtMC43MjcgMC4wODQtMS4yMDMgMC4zODYtMS4yMDMgMC43NjQgMCAwLjQyNiAxLjQ1MSAxLjY0NSAyLjkwNiAyLjQ0MSAwLjcgMC4zODMgMS4zNzIgMC43NiAxLjQ5NSAwLjgzOCAwLjMyNiAwLjIxIDAuNDE0IDAuMTg0IDAuMzMtMC4wOTEtMC4xNzctMC41NzgtMC43NzMtMS4xNC0yLjQzLTIuMjk1LTAuOTcyLTAuNjc4LTAuOTgyLTAuNjUzIDAuMzE2LTAuNzgyIDAuOTI2LTAuMDkyIDEuMzkzLTAuMjUgMS4zOTMtMC40NzIgMC0wLjEwMi0wLjQ3LTAuNjQ0LTEuMDQ1LTEuMjAzLTAuOS0wLjg3Ny0xLjIwNC0xLjA5NC0yLjE5NS0xLjU3Ny0xLjM1LTAuNjU2LTEuODQyLTEuMTc3LTIuMTUzLTIuMjgzLTAuNDY0LTEuNjUtMS43MTItMy41ODctMy4zNzEtNS4yMy0xLjcxMi0xLjY5NjUtMy4zNDctMi42MzQ1LTQuODQ1LTIuNzgxNS0wLjYwOS0wLjA1OTgtMC45MjQtMC4xNTIyLTEuMjM5LTAuMzY1My0wLjUzMzItMC4zNjExLTEuNzcxNy0wLjc2ODQtMi4zNzY2LTAuNzgxMnptMi45NjI2IDMuMDAyYy0wLjEyMi0wLjAwNzktMC4yMjkgMC4wMDgtMC4zMDIgMC4wNTktMC4yNzQgMC4xODctMC4yNDEgMC40MTUgMC4wOCAwLjU1NiAwLjE1MSAwLjA2NyAwLjM2NSAwLjMwMiAwLjQ3NiAwLjUyMiAwLjM3NSAwLjczOSAwLjk1IDAuMjQ0IDAuNjk0LTAuNTk4LTAuMDgxLTAuMjY1LTAuNTgtMC41MTUtMC45NDgtMC41Mzl6Ii8+CiA8cGF0aCBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuMSIgZD0ibTMuNDAwNCAyYy0wLjc3NTYgMC0xLjQwMDQgMC42MjQ4LTEuNDAwNCAxLjQwMDR2MWMwLTAuNzc1NiAwLjYyNDgtMS40MDA0IDEuNDAwNC0xLjQwMDRoMjUuMmMwLjc3NSAwIDEuNCAwLjYyNDggMS40IDEuNDAwNHYtMWMwLTAuNzc1Ni0wLjYyNS0xLjQwMDQtMS40LTEuNDAwNGgtMjUuMnoiLz4KIDxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJtMiAyOC42djFjMCAwLjc3NSAwLjYyNDggMS40IDEuNDAwNCAxLjRoMjUuMmMwLjc3NSAwIDEuNC0wLjYyNSAxLjQtMS40di0xYzAgMC43NzUtMC42MjUgMS40LTEuNCAxLjRoLTI1LjJjLTAuNzc1MiAwLTEuNC0wLjYyNS0xLjQtMS40eiIvPgo8L3N2Zz4K" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBoZWlnaHQ9IjExOC4xIiB2aWV3Qm94PSIwLDAsNDE2LjQsMTE4LjEiIHdpZHRoPSI0MTYuNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDxtZXRhZGF0YS8+CiA8c3dpdGNoIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMy45MSAtMjMuOTUpIj4KICA8Zm9yZWlnbk9iamVjdCBoZWlnaHQ9IjEiIHJlcXVpcmVkRXh0ZW5zaW9ucz0iaHR0cDovL25zLmFkb2JlLmNvbS9BZG9iZUlsbHVzdHJhdG9yLzEwLjAvIiB3aWR0aD0iMSIvPgogIDxnPgogICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYxNCAtMTQuMTgpIj4KICAgIDxwYXRoIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibTE4MTIgMzguMTNjLTIuNzMuMDktMS45NCAxLjMyLTcuODUgMi43OC01Ljk3IDEuNDctMTMuMTkuNTctMTkuNjEgMy4yNy0xNi44IDcuMDQtMTkuNTIgMzQuMjYtMzkuNTMgNDQuNzktMTMuMTIgNy40MS0yNi41IDkuMTEtMzguNDYgMTIuODYtOS42IDMuODUtMTUuNTcgNi40LTIyLjYxIDEyLjQ3LTUuNDYgNC43MS02Ljc5IDkuMjgtMTIuNSAxNS4xOS01Ljc5IDcuODctMjcuNzQuODgtMzMuMzkgMTAuNzUgMi45OCAxLjkzIDQuNyAyLjQ2IDkuOTMgMS43Ny0xLjA4IDIuMDUtNy45NiA0Ljc1LTYuNzEgNy43NyAwIDAgMTYuNjMgMy4wMyAzMC42NS01LjQzIDYuNTQtMi42NiAxMi42Ny04LjI5IDIyLjgzLTkuNjQgMTMuMTYtMS43NSAyNy45OSAyLjc2IDQzLjkgNC4wMy0zLjI5IDYuNS02LjY4IDEwLjM0LTEwLjMxIDE1LjctMS4xMiAxLjIxLjk2IDIuMjggNC44MiAxLjU1IDYuOTQtMS43MiAxMS45Ny0zLjU4IDE2Ljk2LTcuMDMgNi41MS00LjQ5IDkuMzEtOC42IDE0LjgtMTUuMTEgNC43NyA3LjY1IDIxLjU5IDkuMzMgMjUuMDQgMi43Mi02LjQyLTIuNzItNy43OS0xNi44Ny01LjU5LTIyLjk4IDIuNi01LjgyIDQuNDctMTQuMDUgNi41Ny0yMS43IDEuODktNi44OSAzLjA2LTE3LjQgNS4zMi0yMi43OCAyLjctNi42OSA3Ljk1LTguNzggMTEuODktMTIuMzNzNy44Ni02LjUxIDcuNzQtMTQuNjNjLS4wNC0yLjY0LTEuNC00LjEtMy44OS00LjAyeiIgZmlsbD0iIzFmMzA1ZiIgZmlsbC1ydWxlPSJldmVub2RkIi8+CiAgICA8cGF0aCBkPSJtMTY0MyAxNDguNGMxMC4zMS4zMSAxMy4xMS4wNCAyMS4yNi0zLjUgNi45My0zLjAxIDE2LjItMTEuMTIgMjQuMzktMTMuNzQgMTIuMDItMy44NiAyNC45MS0zLjI4IDM3LjctMS43NyA0LjI4LjUxIDguNTggMS4yMiAxMS42NS44OSA0Ljc5LTIuOTQgNS4wMi0xMC45MiA3Ljk5LTExLjU2LS44MSAxNS40NC03LjQzIDI1LjMyLTE0LjA1IDM0LjI4IDEzLjk1LTIuNDYgMjMuMjctMTEuMTcgMjguOTEtMjEuOTUgMS43MS0zLjI3IDQuNTUtOC42MiA1Ljg1LTEyLjMgMS4wMyAyLjQ0LTEuMzQgMy45OS0uMjMgNi42NSA4Ljk4LTcuNDEgMTMuMjItMTUuODUgMTYuODYtMjguMjEgNC4yMi0xNC4zIDguNTUtMjYuNTkgMTEuMjctMzAuODIgMi42NS00LjEzIDYuNzgtNi42OCAxMC41NS05LjMyIDQuMjgtMy4wMSA4LjExLTYuMTQgOC43Ny0xMS44Ny00LjUyLS40Mi01LjU2LTEuNDYtNi4yMy0zLjc0LTIuMjYgMS4yNy00LjM0IDEuNTUtNi42OSAxLjYyLTIuMDQuMDYtNC4yOC0uMDMtNy4wMi4yNS0yMi42MyAyLjMyLTIzLjY4IDI0LjQ0LTQwLjEzIDQwLjY4LTEuMDYgMS4wMy0yLjg3IDIuNTUtNC4wNyAzLjQ1LTUuMDggMy43OS0xMC41MiA1Ljg3LTE2LjI1IDguMDYtOS4yOCAzLjU0LTE4LjA4IDQuNTctMjYuNzggNy42My02LjM5IDIuMjQtMTIuMzMgNC44MS0xNy41OCA4LjQtMS4zMS45LTMuMDkgMi41LTQuMjMgMy40My0zLjA4IDIuNTItNS4xIDUuMzEtNy4wNiA4LjE5LTIuMDIgMi45Ni0zLjk2IDYuMDEtNi45MyA4LjkyLTQuODEgNC43Mi0yMi43NyAxLjM4LTI5LjEgNS43Ni0uNy40OS0xLjI3IDEuMDctMS42NSAxLjc3IDMuNDUgMS41NyA1Ljc2LjYxIDkuNzMgMS4wNC40OSAzLjc5LTguMjIgNi4wMy02LjkzIDcuNzZ6IiBmaWxsPSIjYzA3NjVhIi8+CiAgICA8cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0xNzg3IDUyLjY1YzMuMiAyLjc4IDkuOTIuNTUgOC43Mi00Ljk4LTQuOTgtLjQyLTcuODYgMS4yNy04LjcyIDQuOTh6IiBmaWxsPSIjMWYzMDVmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz4KICAgIDxwYXRoIGQ9Im0xODA5IDQ2LjE4Yy0uODUgMS43OS0yLjQ4IDQuMDktMi40OCA4LjY0LS4wMS43OC0uNTkgMS4zMi0uNi4xMS4wNC00LjQ1IDEuMjItNi4zNyAyLjQ3LTguODkuNTctMS4wMy45Mi0uNjEuNjEuMTR6IiBmaWxsPSIjMWYzMDVmIi8+CiAgICA8cGF0aCBkPSJtMTgwOCA0NS41MWMtMS4wMSAxLjctMy40MyA0LjgxLTMuODIgOS4zNS0uMDcuNzgtLjcxIDEuMjYtLjYxLjA2LjQ0LTQuNDIgMi4zNy03LjE5IDMuODQtOS42LjY2LS45OC45Ny0uNTMuNTkuMTl6IiBmaWxsPSIjMWYzMDVmIi8+CiAgICA8cGF0aCBkPSJtMTgwNyA0NC42MmMtMS4xNSAxLjYxLTQuODcgNS4zNS01LjY1IDkuODMtLjE0Ljc3LS44MSAxLjE5LS42MS4wMS44MS00LjM3IDQuMDItNy44MSA1LjY4LTEwLjA4Ljc0LS45MyAxLjAyLS40NS41OC4yNHoiIGZpbGw9IiMxZjMwNWYiLz4KICAgIDxwYXRoIGQ9Im0xODA3IDQzLjYyYy0xLjM2IDEuNDQtNS44IDYuMi03LjIgMTAuNTMtLjI1Ljc0LS45NyAxLjA3LS42MS0uMDggMS40MS00LjIyIDUuMy04Ljc2IDcuMjctMTAuNzcuODctLjgxIDEuMDctLjI5LjU0LjMyeiIgZmlsbD0iIzFmMzA1ZiIvPgogICA8L2c+CiAgIDxwYXRoIGQ9Im00NDkuNy0xOS40NHYzMS4yMmgtMy45NHYtNS4zNWMtMy41NyA0LjI3LTcuNjQgNi40MS0xMi4yMyA2LjQxcy04LjQ3LTEuNjMtMTEuNjQtNC44OGMtMy4xNC0zLjI5LTQuNy03LjE5LTQuNy0xMS43IDAtNC41NSAxLjU5LTguNDMgNC43Ni0xMS42NCAzLjE3LTMuMjUgNi45OC00Ljg4IDExLjQxLTQuODggNS4xIDAgOS4yMyAyLjE4IDEyLjQxIDYuNTN2LTUuN2gzLjkzbS0zLjcgMTUuNzRjMC0zLjU3LTEuMi02LjU3LTMuNTktOS0yLjM5LTIuNDctNS4zMy0zLjctOC44Mi0zLjctMy40NSAwLTYuMzcgMS4yNy04Ljc2IDMuODItMi4zOSAyLjUxLTMuNTkgNS40OS0zLjU5IDguOTRzMS4yMiA2LjQ1IDMuNjUgOWMyLjQzIDIuNTEgNS4zMyAzLjc2IDguNyAzLjc2IDMuNDEgMCA2LjMzLTEuMjIgOC43Ni0zLjY1IDIuNDQtMi40MiAzLjY1LTUuNDggMy42NS05LjE3IiBmaWxsPSIjMWYzMDVmIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtODMuMDcgOTIuNTUpIi8+CiAgIDxwYXRoIGQ9Im00NTguNCAxMS43OHYtNDIuMjFoOC43NmM2IDAgMTAuMzkuNDUgMTMuMTcgMS4zNSAyLjgyLjg2IDUuMjUgMi4yNSA3LjI5IDQuMTcgMi4wNCAxLjg4IDMuNjEgNC4xOSA0LjcgNi45NCAxLjEgMi43NCAxLjY1IDUuOTYgMS42NSA5LjY0IDAgMy42NS0uODYgNy4wOS0yLjU5IDEwLjM1LTEuNjkgMy4yMS00IDUuNjQtNi45NCA3LjI5LTIuOSAxLjY1LTcuMDkgMi40Ny0xMi41OCAyLjQ3em00LjA2LTRoNC44OGM1LjEgMCA4Ljc4LS4yNSAxMS4wNS0uNzYgMi4zMS0uNTEgNC4zMy0xLjUxIDYuMDYtMyAxLjcyLTEuNTMgMy4wNC0zLjM3IDMuOTQtNS41M3MxLjM1LTQuNjIgMS4zNS03LjQxYzAtMi43OC0uNTMtNS4zNS0xLjU5LTcuNy0xLjAyLTIuMzUtMi40OS00LjI5LTQuNDEtNS44MnMtNC4xOS0yLjU1LTYuODItMy4wNmMtMi41OS0uNTUtNi40MS0uODItMTEuNDYtLjgyaC0zeiIgZmlsbD0iIzFmMzA1ZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTgzLjgyIDkyLjU1KSIvPgogICA8cGF0aCBkPSJtNDA2LTI4LjE0YzAtLjkuMzEtMS42OS45NC0yLjM1LjY3LS42NyAxLjQ1LTEgMi4zNS0xIC45NCAwIDEuNzIuMzMgMi4zNSAxIC42Ny42MyAxIDEuNDEgMSAyLjM1IDAgLjktLjMzIDEuNjktMSAyLjM1LS42My42My0xLjQxLjk0LTIuMzUuOTQtLjkgMC0xLjY5LS4zMy0yLjM1LTEtLjYzLS42Ny0uOTQtMS40My0uOTQtMi4yOW0xLjI5IDguN2g0LjA2djMxLjIyaC00LjA2eiIgZmlsbD0iIzFmMzA1ZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTgzLjgyIDkyLjU1KSIvPgogICA8cGF0aCBkPSJtMjk2LjcgMTEuNzggNi00Mi4yMWguNjVsMTcuMTYgMzQuNjIgMTcuMDUtMzQuNjNoLjY1bDYuMDYgNDIuMjFoLTQuMTdsLTQuMTItMzAuMjItMTQuOTMgMzAuMjJoLTEuMDZsLTE1LjExLTMwLjQ1LTQuMTIgMzAuNDVoLTQuMDYiIGZpbGw9IiMxZjMwNWYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04NC4zMyA5Mi41NSkiLz4KICAgPHBhdGggZD0ibTM4MS4xLTE5LjQ0djMxLjIyaC0zLjk0di01LjM1Yy0zLjU3IDQuMjctNy42NCA2LjQxLTEyLjIzIDYuNDFzLTguNDctMS42My0xMS42NC00Ljg4Yy0zLjE0LTMuMjktNC43LTcuMTktNC43LTExLjcgMC00LjU1IDEuNTktOC40MyA0Ljc2LTExLjY0IDMuMTctMy4yNSA2Ljk4LTQuODggMTEuNDEtNC44OCA1LjEgMCA5LjIzIDIuMTggMTIuNDEgNi41M3YtNS43aDMuOTNtLTMuNyAxNS43NGMwLTMuNTctMS4yLTYuNTctMy41OS05LTIuMzktMi40Ny01LjMzLTMuNy04LjgyLTMuNy0zLjQ1IDAtNi4zNyAxLjI3LTguNzYgMy44Mi0yLjM5IDIuNTEtMy41OSA1LjQ5LTMuNTkgOC45NHMxLjIxIDYuNDUgMy42NSA5YzIuNDMgMi41MSA1LjMzIDMuNzYgOC43IDMuNzYgMy40MSAwIDYuMzMtMS4yMiA4Ljc2LTMuNjUgMi40My0yLjQyIDMuNjUtNS40OCAzLjY1LTkuMTciIGZpbGw9IiMxZjMwNWYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04NC41OCA5Mi41NSkiLz4KICAgPHBhdGggZD0ibTM4OC43LTE5LjQ0aDQuMTJ2NC41M2MxLjEtMS44NCAyLjE2LTMuMTkgMy4xNy00LjA2IDEuMDYtLjg2IDIuMjEtMS4yOSAzLjQ3LTEuMjkgMS4yOSAwIDIuNTkuMzUgMy44OCAxLjA2bC0yLjEyIDMuNDFjLS41OS0uMzUtMS4yLS41My0xLjgyLS41My0xLjIxIDAtMi4zNy42My0zLjQ3IDEuODgtMS4wNiAxLjI1LTEuODQgMi44OC0yLjM1IDQuODgtLjUxIDEuOTYtLjc2IDUuNTUtLjc2IDEwLjc2djEwLjU4aC00LjEyeiIgZmlsbD0iIzFmMzA1ZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg1LjM0IDkyLjU1KSIvPgogICA8cGF0aCBkPSJtNDk4LjMtMzAuNDRoOC4zNWM0LjQzIDAgNy43OC45IDEwLjA1IDIuNyAyLjMxIDEuNzYgMy40NyA0LjMxIDMuNDcgNy42NCAwIDEuODQtLjQ3IDMuNTUtMS40MSA1LjExLS45IDEuNTMtMi4yMyAyLjc2LTQgMy43IDIuOS45NCA1LjEgMi4zNSA2LjU4IDQuMjMgMS41MyAxLjg4IDIuMjkgNC4xMiAyLjI5IDYuNyAwIDMuNDktMS4yNyA2LjM5LTMuODIgOC43LTIuNTUgMi4yNy01Ljg0IDMuNDEtOS44OCAzLjQxaC0xMS42M3ptNC4xNyA0LjEydjEzLjUyaDIuNDFjMy42OCAwIDYuNDMtLjU5IDguMjMtMS43NiAxLjgtMS4xOCAyLjctMy4wMiAyLjctNS41MyAwLTQuMTUtMi44Mi02LjIzLTguNDctNi4yM3ptMCAxNy43NnYxNi4yMmg1LjIzYzMuMDIgMCA1LjIzLS4yOSA2LjY0LS44OCAxLjQ1LS42MyAyLjYzLTEuNTcgMy41My0yLjgyLjktMS4yOSAxLjM1LTIuNjEgMS4zNS0zLjk0cy0uMjUtMi41MS0uNzYtMy41My0xLjI3LTEuOTItMi4yOS0yLjdjLS45OC0uNzgtMi4xOC0xLjM3LTMuNTktMS43Ni0xLjM3LS4zOS0zLjk2LS41OS03Ljc2LS41OXoiIGZpbGw9IiMxZjMwNWYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04My4zMiA5Mi41NSkiLz4KICA8L2c+CiA8L3N3aXRjaD4KPC9zdmc+Cg==" camel.apache.org/provider: "Apache Software Foundation" camel.apache.org/kamelet.group: "SQL" labels: From ff06ea555faff2cc4480773c9a0a2e7a9afe7f3c Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 09:59:49 +0200 Subject: [PATCH 075/105] Added MariaDB Sink Kamelet --- .../kamelets/mariadb-sink.kamelet.yaml | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml new file mode 100644 index 000000000..fac5e76f6 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml @@ -0,0 +1,89 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: mariadb-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBoZWlnaHQ9IjExOC4xIiB2aWV3Qm94PSIwLDAsNDE2LjQsMTE4LjEiIHdpZHRoPSI0MTYuNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDxtZXRhZGF0YS8+CiA8c3dpdGNoIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMy45MSAtMjMuOTUpIj4KICA8Zm9yZWlnbk9iamVjdCBoZWlnaHQ9IjEiIHJlcXVpcmVkRXh0ZW5zaW9ucz0iaHR0cDovL25zLmFkb2JlLmNvbS9BZG9iZUlsbHVzdHJhdG9yLzEwLjAvIiB3aWR0aD0iMSIvPgogIDxnPgogICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYxNCAtMTQuMTgpIj4KICAgIDxwYXRoIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibTE4MTIgMzguMTNjLTIuNzMuMDktMS45NCAxLjMyLTcuODUgMi43OC01Ljk3IDEuNDctMTMuMTkuNTctMTkuNjEgMy4yNy0xNi44IDcuMDQtMTkuNTIgMzQuMjYtMzkuNTMgNDQuNzktMTMuMTIgNy40MS0yNi41IDkuMTEtMzguNDYgMTIuODYtOS42IDMuODUtMTUuNTcgNi40LTIyLjYxIDEyLjQ3LTUuNDYgNC43MS02Ljc5IDkuMjgtMTIuNSAxNS4xOS01Ljc5IDcuODctMjcuNzQuODgtMzMuMzkgMTAuNzUgMi45OCAxLjkzIDQuNyAyLjQ2IDkuOTMgMS43Ny0xLjA4IDIuMDUtNy45NiA0Ljc1LTYuNzEgNy43NyAwIDAgMTYuNjMgMy4wMyAzMC42NS01LjQzIDYuNTQtMi42NiAxMi42Ny04LjI5IDIyLjgzLTkuNjQgMTMuMTYtMS43NSAyNy45OSAyLjc2IDQzLjkgNC4wMy0zLjI5IDYuNS02LjY4IDEwLjM0LTEwLjMxIDE1LjctMS4xMiAxLjIxLjk2IDIuMjggNC44MiAxLjU1IDYuOTQtMS43MiAxMS45Ny0zLjU4IDE2Ljk2LTcuMDMgNi41MS00LjQ5IDkuMzEtOC42IDE0LjgtMTUuMTEgNC43NyA3LjY1IDIxLjU5IDkuMzMgMjUuMDQgMi43Mi02LjQyLTIuNzItNy43OS0xNi44Ny01LjU5LTIyLjk4IDIuNi01LjgyIDQuNDctMTQuMDUgNi41Ny0yMS43IDEuODktNi44OSAzLjA2LTE3LjQgNS4zMi0yMi43OCAyLjctNi42OSA3Ljk1LTguNzggMTEuODktMTIuMzNzNy44Ni02LjUxIDcuNzQtMTQuNjNjLS4wNC0yLjY0LTEuNC00LjEtMy44OS00LjAyeiIgZmlsbD0iIzFmMzA1ZiIgZmlsbC1ydWxlPSJldmVub2RkIi8+CiAgICA8cGF0aCBkPSJtMTY0MyAxNDguNGMxMC4zMS4zMSAxMy4xMS4wNCAyMS4yNi0zLjUgNi45My0zLjAxIDE2LjItMTEuMTIgMjQuMzktMTMuNzQgMTIuMDItMy44NiAyNC45MS0zLjI4IDM3LjctMS43NyA0LjI4LjUxIDguNTggMS4yMiAxMS42NS44OSA0Ljc5LTIuOTQgNS4wMi0xMC45MiA3Ljk5LTExLjU2LS44MSAxNS40NC03LjQzIDI1LjMyLTE0LjA1IDM0LjI4IDEzLjk1LTIuNDYgMjMuMjctMTEuMTcgMjguOTEtMjEuOTUgMS43MS0zLjI3IDQuNTUtOC42MiA1Ljg1LTEyLjMgMS4wMyAyLjQ0LTEuMzQgMy45OS0uMjMgNi42NSA4Ljk4LTcuNDEgMTMuMjItMTUuODUgMTYuODYtMjguMjEgNC4yMi0xNC4zIDguNTUtMjYuNTkgMTEuMjctMzAuODIgMi42NS00LjEzIDYuNzgtNi42OCAxMC41NS05LjMyIDQuMjgtMy4wMSA4LjExLTYuMTQgOC43Ny0xMS44Ny00LjUyLS40Mi01LjU2LTEuNDYtNi4yMy0zLjc0LTIuMjYgMS4yNy00LjM0IDEuNTUtNi42OSAxLjYyLTIuMDQuMDYtNC4yOC0uMDMtNy4wMi4yNS0yMi42MyAyLjMyLTIzLjY4IDI0LjQ0LTQwLjEzIDQwLjY4LTEuMDYgMS4wMy0yLjg3IDIuNTUtNC4wNyAzLjQ1LTUuMDggMy43OS0xMC41MiA1Ljg3LTE2LjI1IDguMDYtOS4yOCAzLjU0LTE4LjA4IDQuNTctMjYuNzggNy42My02LjM5IDIuMjQtMTIuMzMgNC44MS0xNy41OCA4LjQtMS4zMS45LTMuMDkgMi41LTQuMjMgMy40My0zLjA4IDIuNTItNS4xIDUuMzEtNy4wNiA4LjE5LTIuMDIgMi45Ni0zLjk2IDYuMDEtNi45MyA4LjkyLTQuODEgNC43Mi0yMi43NyAxLjM4LTI5LjEgNS43Ni0uNy40OS0xLjI3IDEuMDctMS42NSAxLjc3IDMuNDUgMS41NyA1Ljc2LjYxIDkuNzMgMS4wNC40OSAzLjc5LTguMjIgNi4wMy02LjkzIDcuNzZ6IiBmaWxsPSIjYzA3NjVhIi8+CiAgICA8cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0xNzg3IDUyLjY1YzMuMiAyLjc4IDkuOTIuNTUgOC43Mi00Ljk4LTQuOTgtLjQyLTcuODYgMS4yNy04LjcyIDQuOTh6IiBmaWxsPSIjMWYzMDVmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz4KICAgIDxwYXRoIGQ9Im0xODA5IDQ2LjE4Yy0uODUgMS43OS0yLjQ4IDQuMDktMi40OCA4LjY0LS4wMS43OC0uNTkgMS4zMi0uNi4xMS4wNC00LjQ1IDEuMjItNi4zNyAyLjQ3LTguODkuNTctMS4wMy45Mi0uNjEuNjEuMTR6IiBmaWxsPSIjMWYzMDVmIi8+CiAgICA8cGF0aCBkPSJtMTgwOCA0NS41MWMtMS4wMSAxLjctMy40MyA0LjgxLTMuODIgOS4zNS0uMDcuNzgtLjcxIDEuMjYtLjYxLjA2LjQ0LTQuNDIgMi4zNy03LjE5IDMuODQtOS42LjY2LS45OC45Ny0uNTMuNTkuMTl6IiBmaWxsPSIjMWYzMDVmIi8+CiAgICA8cGF0aCBkPSJtMTgwNyA0NC42MmMtMS4xNSAxLjYxLTQuODcgNS4zNS01LjY1IDkuODMtLjE0Ljc3LS44MSAxLjE5LS42MS4wMS44MS00LjM3IDQuMDItNy44MSA1LjY4LTEwLjA4Ljc0LS45MyAxLjAyLS40NS41OC4yNHoiIGZpbGw9IiMxZjMwNWYiLz4KICAgIDxwYXRoIGQ9Im0xODA3IDQzLjYyYy0xLjM2IDEuNDQtNS44IDYuMi03LjIgMTAuNTMtLjI1Ljc0LS45NyAxLjA3LS42MS0uMDggMS40MS00LjIyIDUuMy04Ljc2IDcuMjctMTAuNzcuODctLjgxIDEuMDctLjI5LjU0LjMyeiIgZmlsbD0iIzFmMzA1ZiIvPgogICA8L2c+CiAgIDxwYXRoIGQ9Im00NDkuNy0xOS40NHYzMS4yMmgtMy45NHYtNS4zNWMtMy41NyA0LjI3LTcuNjQgNi40MS0xMi4yMyA2LjQxcy04LjQ3LTEuNjMtMTEuNjQtNC44OGMtMy4xNC0zLjI5LTQuNy03LjE5LTQuNy0xMS43IDAtNC41NSAxLjU5LTguNDMgNC43Ni0xMS42NCAzLjE3LTMuMjUgNi45OC00Ljg4IDExLjQxLTQuODggNS4xIDAgOS4yMyAyLjE4IDEyLjQxIDYuNTN2LTUuN2gzLjkzbS0zLjcgMTUuNzRjMC0zLjU3LTEuMi02LjU3LTMuNTktOS0yLjM5LTIuNDctNS4zMy0zLjctOC44Mi0zLjctMy40NSAwLTYuMzcgMS4yNy04Ljc2IDMuODItMi4zOSAyLjUxLTMuNTkgNS40OS0zLjU5IDguOTRzMS4yMiA2LjQ1IDMuNjUgOWMyLjQzIDIuNTEgNS4zMyAzLjc2IDguNyAzLjc2IDMuNDEgMCA2LjMzLTEuMjIgOC43Ni0zLjY1IDIuNDQtMi40MiAzLjY1LTUuNDggMy42NS05LjE3IiBmaWxsPSIjMWYzMDVmIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtODMuMDcgOTIuNTUpIi8+CiAgIDxwYXRoIGQ9Im00NTguNCAxMS43OHYtNDIuMjFoOC43NmM2IDAgMTAuMzkuNDUgMTMuMTcgMS4zNSAyLjgyLjg2IDUuMjUgMi4yNSA3LjI5IDQuMTcgMi4wNCAxLjg4IDMuNjEgNC4xOSA0LjcgNi45NCAxLjEgMi43NCAxLjY1IDUuOTYgMS42NSA5LjY0IDAgMy42NS0uODYgNy4wOS0yLjU5IDEwLjM1LTEuNjkgMy4yMS00IDUuNjQtNi45NCA3LjI5LTIuOSAxLjY1LTcuMDkgMi40Ny0xMi41OCAyLjQ3em00LjA2LTRoNC44OGM1LjEgMCA4Ljc4LS4yNSAxMS4wNS0uNzYgMi4zMS0uNTEgNC4zMy0xLjUxIDYuMDYtMyAxLjcyLTEuNTMgMy4wNC0zLjM3IDMuOTQtNS41M3MxLjM1LTQuNjIgMS4zNS03LjQxYzAtMi43OC0uNTMtNS4zNS0xLjU5LTcuNy0xLjAyLTIuMzUtMi40OS00LjI5LTQuNDEtNS44MnMtNC4xOS0yLjU1LTYuODItMy4wNmMtMi41OS0uNTUtNi40MS0uODItMTEuNDYtLjgyaC0zeiIgZmlsbD0iIzFmMzA1ZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTgzLjgyIDkyLjU1KSIvPgogICA8cGF0aCBkPSJtNDA2LTI4LjE0YzAtLjkuMzEtMS42OS45NC0yLjM1LjY3LS42NyAxLjQ1LTEgMi4zNS0xIC45NCAwIDEuNzIuMzMgMi4zNSAxIC42Ny42MyAxIDEuNDEgMSAyLjM1IDAgLjktLjMzIDEuNjktMSAyLjM1LS42My42My0xLjQxLjk0LTIuMzUuOTQtLjkgMC0xLjY5LS4zMy0yLjM1LTEtLjYzLS42Ny0uOTQtMS40My0uOTQtMi4yOW0xLjI5IDguN2g0LjA2djMxLjIyaC00LjA2eiIgZmlsbD0iIzFmMzA1ZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTgzLjgyIDkyLjU1KSIvPgogICA8cGF0aCBkPSJtMjk2LjcgMTEuNzggNi00Mi4yMWguNjVsMTcuMTYgMzQuNjIgMTcuMDUtMzQuNjNoLjY1bDYuMDYgNDIuMjFoLTQuMTdsLTQuMTItMzAuMjItMTQuOTMgMzAuMjJoLTEuMDZsLTE1LjExLTMwLjQ1LTQuMTIgMzAuNDVoLTQuMDYiIGZpbGw9IiMxZjMwNWYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04NC4zMyA5Mi41NSkiLz4KICAgPHBhdGggZD0ibTM4MS4xLTE5LjQ0djMxLjIyaC0zLjk0di01LjM1Yy0zLjU3IDQuMjctNy42NCA2LjQxLTEyLjIzIDYuNDFzLTguNDctMS42My0xMS42NC00Ljg4Yy0zLjE0LTMuMjktNC43LTcuMTktNC43LTExLjcgMC00LjU1IDEuNTktOC40MyA0Ljc2LTExLjY0IDMuMTctMy4yNSA2Ljk4LTQuODggMTEuNDEtNC44OCA1LjEgMCA5LjIzIDIuMTggMTIuNDEgNi41M3YtNS43aDMuOTNtLTMuNyAxNS43NGMwLTMuNTctMS4yLTYuNTctMy41OS05LTIuMzktMi40Ny01LjMzLTMuNy04LjgyLTMuNy0zLjQ1IDAtNi4zNyAxLjI3LTguNzYgMy44Mi0yLjM5IDIuNTEtMy41OSA1LjQ5LTMuNTkgOC45NHMxLjIxIDYuNDUgMy42NSA5YzIuNDMgMi41MSA1LjMzIDMuNzYgOC43IDMuNzYgMy40MSAwIDYuMzMtMS4yMiA4Ljc2LTMuNjUgMi40My0yLjQyIDMuNjUtNS40OCAzLjY1LTkuMTciIGZpbGw9IiMxZjMwNWYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04NC41OCA5Mi41NSkiLz4KICAgPHBhdGggZD0ibTM4OC43LTE5LjQ0aDQuMTJ2NC41M2MxLjEtMS44NCAyLjE2LTMuMTkgMy4xNy00LjA2IDEuMDYtLjg2IDIuMjEtMS4yOSAzLjQ3LTEuMjkgMS4yOSAwIDIuNTkuMzUgMy44OCAxLjA2bC0yLjEyIDMuNDFjLS41OS0uMzUtMS4yLS41My0xLjgyLS41My0xLjIxIDAtMi4zNy42My0zLjQ3IDEuODgtMS4wNiAxLjI1LTEuODQgMi44OC0yLjM1IDQuODgtLjUxIDEuOTYtLjc2IDUuNTUtLjc2IDEwLjc2djEwLjU4aC00LjEyeiIgZmlsbD0iIzFmMzA1ZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg1LjM0IDkyLjU1KSIvPgogICA8cGF0aCBkPSJtNDk4LjMtMzAuNDRoOC4zNWM0LjQzIDAgNy43OC45IDEwLjA1IDIuNyAyLjMxIDEuNzYgMy40NyA0LjMxIDMuNDcgNy42NCAwIDEuODQtLjQ3IDMuNTUtMS40MSA1LjExLS45IDEuNTMtMi4yMyAyLjc2LTQgMy43IDIuOS45NCA1LjEgMi4zNSA2LjU4IDQuMjMgMS41MyAxLjg4IDIuMjkgNC4xMiAyLjI5IDYuNyAwIDMuNDktMS4yNyA2LjM5LTMuODIgOC43LTIuNTUgMi4yNy01Ljg0IDMuNDEtOS44OCAzLjQxaC0xMS42M3ptNC4xNyA0LjEydjEzLjUyaDIuNDFjMy42OCAwIDYuNDMtLjU5IDguMjMtMS43NiAxLjgtMS4xOCAyLjctMy4wMiAyLjctNS41MyAwLTQuMTUtMi44Mi02LjIzLTguNDctNi4yM3ptMCAxNy43NnYxNi4yMmg1LjIzYzMuMDIgMCA1LjIzLS4yOSA2LjY0LS44OCAxLjQ1LS42MyAyLjYzLTEuNTcgMy41My0yLjgyLjktMS4yOSAxLjM1LTIuNjEgMS4zNS0zLjk0cy0uMjUtMi41MS0uNzYtMy41My0xLjI3LTEuOTItMi4yOS0yLjdjLS45OC0uNzgtMi4xOC0xLjM3LTMuNTktMS43Ni0xLjM3LS4zOS0zLjk2LS41OS03Ljc2LS41OXoiIGZpbGw9IiMxZjMwNWYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04My4zMiA5Mi41NSkiLz4KICA8L2c+CiA8L3N3aXRjaD4KPC9zdmc+Cg==" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "SQL" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "MariaDB Sink" + description: |- + Send data to a MariaDB Database. + + In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + + spec: + integration: + dependencies: + - "mvn:org.mariadb.jdbc:mariadb-java-client:" + required: + - serverName + - username + - password + - query + - databaseName + type: object + properties: + serverName: + title: Server Name + description: Server Name for the data source + type: string + example: localhost + port: + title: Port + description: Server Port for the data source + type: string + default: 3306 + username: + title: Username + description: The username to use for accessing a secured MariaDB Database + type: string + password: + title: Password + description: The password to use for accessing a secured MariaDB Database + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + query: + title: Query + description: The Query to execute against the MariaDB Database + type: string + databaseName: + title: Database Name + description: The Database Name we are pointing + type: string + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.apache.commons:commons-dbcp2:2.8.0" + flow: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + property: + - key: username + value: '{{username}}' + - key: password + value: '{{password}}' + - key: url + value: 'jdbc:mariadb://{{serverName}}:{{port}}/{{databaseName}}' + - key: driverClassName + value: 'org.mariadb.jdbc.Driver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" From 0d6c75abb854494dffd1fe8dc1511776e789ec27 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 10:00:43 +0200 Subject: [PATCH 076/105] Added MariaDB Sink Kamelet --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 68740ac84..57a3b15b6 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -68,6 +68,7 @@ * xref:ROOT:kafka-sink.adoc[image:kamelets/kafka-sink.svg[] Kafka Sink] * xref:ROOT:kafka-source.adoc[image:kamelets/kafka-source.svg[] Kafka Source] * xref:ROOT:mail-imap-source.adoc[image:kamelets/mail-imap-source.svg[] Mail IMAP Source] +* xref:ROOT:mariadb-sink.adoc[image:kamelets/mariadb-sink.svg[] MariaDB Sink] * xref:ROOT:mask-field-action.adoc[image:kamelets/mask-field-action.svg[] Mask Fields Action] * xref:ROOT:message-timestamp-router-action.adoc[image:kamelets/message-timestamp-router-action.svg[] Message Timestamp Router Action] * xref:ROOT:minio-sink.adoc[image:kamelets/minio-sink.svg[] Minio Sink] From 26653c8b0e5c4cdc5418b9abdc0195d5968337f0 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 10:00:55 +0200 Subject: [PATCH 077/105] Added MariaDB Sink Kamelet --- .../assets/images/kamelets/mariadb-sink.svg | 25 ++++++ docs/modules/ROOT/pages/mariadb-sink.adoc | 78 +++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/mariadb-sink.svg create mode 100644 docs/modules/ROOT/pages/mariadb-sink.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/mariadb-sink.svg b/docs/modules/ROOT/assets/images/kamelets/mariadb-sink.svg new file mode 100644 index 000000000..eefbeaea4 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/mariadb-sink.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/ROOT/pages/mariadb-sink.adoc b/docs/modules/ROOT/pages/mariadb-sink.adoc new file mode 100644 index 000000000..b140a2b82 --- /dev/null +++ b/docs/modules/ROOT/pages/mariadb-sink.adoc @@ -0,0 +1,78 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/mariadb-sink.svg[] MariaDB Sink + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Send data to a MariaDB Database. + +In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + +spec: + integration: + dependencies: + - "mvn:org.mariadb.jdbc:mariadb-java-client:" + +== Configuration Options + +The following table summarizes the configuration options available for the `mariadb-sink` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | +| *password {empty}* *| Password| The password to use for accessing a secured MariaDB Database| string| | +| *query {empty}* *| Query| The Query to execute against the MariaDB Database| string| | +| *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` +| *username {empty}* *| Username| The username to use for accessing a secured MariaDB Database| string| | +| port| Port| Server Port for the data source| string| `3306`| +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `mariadb-sink` can be used in various contexts. + +=== Knative Sink + +The `mariadb-sink` Kamelet can be used as Knative sink by binding it to a Knative object. + +.mariadb-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: mariadb-sink-binding +spec: + source: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: mariadb-sink + properties: + databaseName: "The Database Name" + password: "The Password" + query: "The Query" + serverName: "localhost" + username: "The Username" + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `mariadb-sink-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the sink using the following command: + +[source,shell] +---- +kubectl apply -f mariadb-sink-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From 7e0877f4384b502885bd0288da2b375d22765d78 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 12:15:03 +0200 Subject: [PATCH 078/105] Added SQL Server Sink Kamelet --- sqlserver-sink.kamelet.yaml | 89 +++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 sqlserver-sink.kamelet.yaml diff --git a/sqlserver-sink.kamelet.yaml b/sqlserver-sink.kamelet.yaml new file mode 100644 index 000000000..d19181d79 --- /dev/null +++ b/sqlserver-sink.kamelet.yaml @@ -0,0 +1,89 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: sqlserver-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPG1ldGFkYXRhPiBTdmcgVmVjdG9yIEljb25zIDogaHR0cDovL3d3dy5vbmxpbmV3ZWJmb250cy5jb20vaWNvbiA8L21ldGFkYXRhPg0KPGc+PHBhdGggZD0iTTQyNi45LDkwYzEwLjMsMC0yMS43LTgwLTIxLjctODBTMjkxLjksNjAuMywyODUuMSw2NkMyNzguMiw3MS44LDQxNi42LDkwLDQyNi45LDkweiIvPjxwYXRoIGQ9Ik0zNTYuOSwxNDkuNWw3Mi00NC42Yy0xNy40LDIuMy0xNTguNy0yOS43LTE1OC43LTI5LjdjMi4zLDYuOSw2OC42LDc0LjMsNjguNiw3NC4zTDM1Ni45LDE0OS41TDM1Ni45LDE0OS41eiIvPjxwYXRoIGQ9Ik00NjEuMiwxNjYuN2wtMjAuNi00OS4ybC01OS41LDM2LjZMNDYxLjIsMTY2LjdMNDYxLjIsMTY2Ljd6Ii8+PHBhdGggZD0iTTMwNi44LDE0Mi4xbC01MC4zLTU4LjljMCwwLTQwLDI3LjQtMzQuMywzNC4zQzIyNy45LDEyNC40LDMwNi44LDE0Mi4xLDMwNi44LDE0Mi4xTDMwNi44LDE0Mi4xeiIvPjxwYXRoIGQ9Ik0yNDguNSwxNDkuNWMyMC42LDE0LjksNjguNiw3Ny44LDY4LjYsNzcuOGwtMTguMy02MC42TDI0OC41LDE0OS41TDI0OC41LDE0OS41eiIvPjxwYXRoIGQ9Ik0zMzguOCwyNDQuNGw4Mi4zLTYxLjhsLTEwOS44LTE2QzMxMS40LDE2Ni43LDMzOC44LDIzMC43LDMzOC44LDI0NC40TDMzOC44LDI0NC40eiIvPjxwYXRoIGQ9Ik00MzMuNywxODguNGwtNzYuOSw2Ni4zYzIxLjUsNC42LDkxLjcsMzAuOSw5MS43LDMwLjlDNDUzLjIsMjEwLjEsNDMzLjcsMTg4LjQsNDMzLjcsMTg4LjRMNDMzLjcsMTg4LjR6Ii8+PHBhdGggZD0iTTQ2MS4yLDI4Mi4yYzAsMCwxMTIuMS02Mi45LDEyMC4xLTY2LjNsLTEzMi0yNy40QzQ0OS4zLDE4OC40LDQ3OC4zLDIyOS42LDQ2MS4yLDI4Mi4yTDQ2MS4yLDI4Mi4yeiIvPjxwYXRoIGQ9Ik01NjEuOCwzMzdjNDMuNS03NC4zLDQzLjUtMTE2LjYsNDMuNS0xMTYuNmwtMTIwLjQsNzcuOEM1MDUuMiwzMDMuOSw1NjEuOCwzMzcsNTYxLjgsMzM3TDU2MS44LDMzN3oiLz48cGF0aCBkPSJNNTg5LjMsMzM3YzU3LjItMjkuNywxODAuNy02NCwxODAuNy02NGMtMjYuMy0xOC4zLTE0OS44LTUyLjYtMTQ5LjgtNTIuNkM2MjEuMywyMzcuNiw1ODkuMywzMzcsNTg5LjMsMzM3TDU4OS4zLDMzN3oiLz48cGF0aCBkPSJNNTg5LjMsMzUzLjFjMzcuNCwyMS43LDc2LjYsODQuNiw3Ni42LDg0LjZjNzItNzAuOSwxMTUuNS0xNTIuMSwxMTUuNS0xNTIuMUM3NjQuMiwyODYuNyw1ODkuMywzNTMuMSw1ODkuMywzNTMuMUw1ODkuMywzNTMuMXoiLz48cGF0aCBkPSJNODAwLjgsMjg1LjZDNzgzLjcsMzMxLjMsNjk2LjgsNDMyLDY5Ni44LDQzMmM0NC42LTE4LjMsMjM2LjctMzQuMywyMzYuNy0zNC4zQzkxNi4zLDM2Mi4yLDgwMC44LDI4NS42LDgwMC44LDI4NS42TDgwMC44LDI4NS42eiIvPjxwYXRoIGQ9Ik00MjguOSwzMTEuOWMtMjQuMy0xNi03OS40LTI5LjctNzkuNC0yOS43YzYuMiwzLjQsNy4zLDk4LjMsNy4zLDk4LjNDMzg0LjEsMzU1LjMsNDI4LjksMzExLjksNDI4LjksMzExLjlMNDI4LjksMzExLjl6Ii8+PHBhdGggZD0iTTQzOS41LDMzMS4zYy04LDYuOS04Mi42LDY4LjYtODIuNiw2OC42YzEyLjMsOCw0MC4zLDMyLDQwLjMsMzJDNDI2LjksMzk0LjIsNDM5LjUsMzMxLjMsNDM5LjUsMzMxLjNMNDM5LjUsMzMxLjN6Ii8+PHBhdGggZD0iTTQ2MS4yLDMxOS45YzEuMSwxNy4yLTI2LjMsOTIuNi0yNi4zLDkyLjZsOTguMy01My43TDQ2MS4yLDMxOS45TDQ2MS4yLDMxOS45eiIvPjxwYXRoIGQ9Ik00MDguNiw0NDkuMWMxMS40LDkuMSwyMC4zLDY3LjUsMjAuMyw2Ny41YzEwLTE0LjksMTA0LjMtMTM0LjksMTA0LjMtMTM0LjlDNDU4LjksNDI1LjEsNDA4LjYsNDQ5LjEsNDA4LjYsNDQ5LjF6Ii8+PHBhdGggZD0iTTU2MS44LDM4MC41Yy01LjcsMTMuNy0xMDYuMywxMjUuOC0xMDYuMywxMjUuOGMyNi41LTEwLjMsMTkxLTYxLjgsMTkxLTYxLjhDNjI0LjcsNDExLjQsNTYxLjgsMzgwLjUsNTYxLjgsMzgwLjVMNTYxLjgsMzgwLjV6Ii8+PHBhdGggZD0iTTM4OS4yLDQ3NC4zYy03LjksMTMuNy0xNDYuNSwxMjguMS0xNDYuNSwxMjguMWMyMS43LTE0LjksMTY1LjgtODAsMTY1LjgtODBDNDEwLjksNDg4LDM4OS4yLDQ3NC4zLDM4OS4yLDQ3NC4zTDM4OS4yLDQ3NC4zeiIvPjxwYXRoIGQ9Ik0zMTEuNCw0OTUuOGMyNy40LTE3LjMsNjAuNi00Ni43LDYwLjYtNDYuN2MtOS4xLTExLjQtMjguNi0xNy4yLTI4LjYtMTcuMkMzNDIuMyw0NDIuMywzMTEuNCw0OTUuOCwzMTEuNCw0OTUuOHoiLz48cGF0aCBkPSJNMzY2LjMsNDgyLjNjLTQ5LjQsMjEuMS05MS41LDYwLTkxLjUsNjBsLTQ1LjcsNjBMMzY2LjMsNDgyLjNMMzY2LjMsNDgyLjN6Ii8+PHBhdGggZD0iTTU2NC4xLDQ5NS44bC04OC4xLDI5LjljMCwwLDY4LjYsNDEuMiw5My44LDUxLjVDNTY5LjgsNTc3LjIsNTcyLjEsNTI2LjUsNTY0LjEsNDk1LjhMNTY0LjEsNDk1Ljh6Ii8+PHBhdGggZD0iTTU2MS44LDU5MC45TDQ2MCw1MzAuM2MwLDAsMy43LDg2LjktMTAuNywxMjEuMkM0NDkuMyw2NTEuNSw1NDcsNjA1LjgsNTYxLjgsNTkwLjlMNTYxLjgsNTkwLjl6Ii8+PHBhdGggZD0iTTQ0OS4zLDY3MWMwLDAsNTUuMyw0Mi4zLDEwNi44LDU0LjljMCwwLDIxLjItNTcuMiwxNC0xMTguOUM1NzAuMSw2MDYuOSw0NzQsNjY0LjEsNDQ5LjMsNjcxTDQ0OS4zLDY3MXoiLz48cGF0aCBkPSJNNDM0LjksNTM4LjNsLTc4LDMyYzI0LjcsNTguMiw2NC4zLDgxLjIsNjQuMyw4MS4yQzQ0Ni4zLDU5Mi4xLDQzNC45LDUzOC4zLDQzNC45LDUzOC4zTDQzNC45LDUzOC4zeiIvPjxwYXRoIGQ9Ik0zNDEuNyw1NzcuMmMyLjksMTQuOS03NiwxNDguNy03NiwxNDguN2MxMDAuNi0zMC45LDE0My4xLTU5LjUsMTQzLjEtNTkuNUMzNTAuNiw2MTMuOCwzNDEuNyw1NzcuMiwzNDEuNyw1NzcuMkwzNDEuNyw1NzcuMnoiLz48cGF0aCBkPSJNMzA0LjUsNTkwLjljLTEzLjcsNC42LTgzLjUsNDEuMi04My41LDQxLjJjMi4zLDY3LjUsMTcuMiw4NS44LDE3LjIsODUuOEMyNzEuNCw2ODQuNywzMDQuNSw1OTAuOSwzMDQuNSw1OTAuOUwzMDQuNSw1OTAuOXoiLz48cGF0aCBkPSJNMTkyLjUsNjQ0LjdDODAuNCw2OTguNCw2Ni43LDc3OS42LDY2LjcsNzc5LjZjMjAuNiwwLDE0OC43LTQwLDE0OC43LTQwQzE5MC4yLDY4MS4yLDE5Mi41LDY0NC43LDE5Mi41LDY0NC43TDE5Mi41LDY0NC43eiIvPjxwYXRoIGQ9Ik02Ni43LDc4OS45YzAsMC01LjcsNTEuNSw1Ny4yLDk0LjljMCwwLDgwLTEwNC4xLDg1LjgtMTI0LjZDMjA5LjYsNzYwLjIsMTA0LjQsNzg5LjksNjYuNyw3ODkuOUw2Ni43LDc4OS45eiIvPjxwYXRoIGQ9Ik0yMjkuMSw3NjdMMTMzLDg5MC41bDUuMSw2LjlsMTc5LTY1LjJDMjcxLjQsODA3LDIyOS4xLDc2NywyMjkuMSw3NjdMMjI5LjEsNzY3eiIvPjxwYXRoIGQ9Ik0xNDksODk5LjdjNDIuMywzOC45LDExNi42LDQ5LjIsMTE2LjYsNDkuMmw2NS4yLTk4LjNMMTQ5LDg5OS43TDE0OSw4OTkuN3oiLz48cGF0aCBkPSJNMzU2LjksODUwLjVjMC45LDYuOS04Mi4xLDEwNy4zLTgyLjEsMTA3LjNjNTIuNi0yLjUsMjM1LjctNzMsMjM1LjctNzNDNDMyLjgsODgzLjYsMzU2LjksODUwLjUsMzU2LjksODUwLjV6Ii8+PHBhdGggZD0iTTQ3Ni4xLDk5MGMxMS40LTEzLjcsMzkuMi05Mi42LDM5LjItOTIuNmMtOTIuMywzOC45LTIwMy45LDYwLjQtMjAzLjksNjAuNEMzNDguNyw5NzkuNCw0NzYuMSw5OTAsNDc2LjEsOTkwTDQ3Ni4xLDk5MHoiLz48cGF0aCBkPSJNMzQ5LjYsODIyLjVjMzcuOC01Ni44LDUzLjUtMTI5LjgsNTMuNS0xMjkuOGMtMTQuNiwxMC4zLTE0OC45LDU0LjktMTQ4LjksNTQuOUMyOTQuMiw4MDAuMiwzNDkuNiw4MjIuNSwzNDkuNiw4MjIuNUwzNDkuNiw4MjIuNXoiLz48cGF0aCBkPSJNMzc3LjcsODA4LjJjMjguNiwxLjEsMTczLjItNjkuOCwxNzMuMi02OS44Yy0zMS40LTYuOS0xMTYuMS01MS41LTExNi4xLTUxLjVMMzc3LjcsODA4LjJMMzc3LjcsODA4LjJ6Ii8+PHBhdGggZD0iTTM2Ni4zLDgzMi4yYzIwLjYsMjQsMTQ5LDQ2LjksMTQ5LDQ2LjljMjEuNC0yNi45LDM1LjctMTMxLjUsMzUuNy0xMzEuNUM1NDQuNyw3NjAuMiwzNjYuMyw4MzIuMiwzNjYuMyw4MzIuMkwzNjYuMyw4MzIuMnoiLz48L2c+DQo8L3N2Zz4=" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "SQL" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Microsoft SQL Server Sink" + description: |- + Send data to a Microsoft SQL Server Database. + + In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + + spec: + integration: + dependencies: + - "mvn:com.microsoft.sqlserver:mssql-jdbc:" + required: + - serverName + - username + - password + - query + - databaseName + type: object + properties: + serverName: + title: Server Name + description: Server Name for the data source + type: string + example: localhost + port: + title: Port + description: Server Port for the data source + type: string + default: 1433 + username: + title: Username + description: The username to use for accessing a secured MariaDB Database + type: string + password: + title: Password + description: The password to use for accessing a secured MariaDB Database + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + query: + title: Query + description: The Query to execute against the MariaDB Database + type: string + databaseName: + title: Database Name + description: The Database Name we are pointing + type: string + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.apache.commons:commons-dbcp2:2.8.0" + flow: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + property: + - key: username + value: '{{username}}' + - key: password + value: '{{password}}' + - key: url + value: 'jdbc:sqlserver://{{serverName}}:{{port}};databaseName={{databaseName}}' + - key: driverClassName + value: 'com.microsoft.sqlserver.jdbc.SQLServerDriver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" From 8ae3891848c6eeb96bf769acaeeb8356fe991254 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 12:16:07 +0200 Subject: [PATCH 079/105] Added SQL Server Sink Kamelet --- .../kamelets/sqlserver-sink.kamelet.yaml | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml new file mode 100644 index 000000000..d19181d79 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml @@ -0,0 +1,89 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: sqlserver-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "main-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPG1ldGFkYXRhPiBTdmcgVmVjdG9yIEljb25zIDogaHR0cDovL3d3dy5vbmxpbmV3ZWJmb250cy5jb20vaWNvbiA8L21ldGFkYXRhPg0KPGc+PHBhdGggZD0iTTQyNi45LDkwYzEwLjMsMC0yMS43LTgwLTIxLjctODBTMjkxLjksNjAuMywyODUuMSw2NkMyNzguMiw3MS44LDQxNi42LDkwLDQyNi45LDkweiIvPjxwYXRoIGQ9Ik0zNTYuOSwxNDkuNWw3Mi00NC42Yy0xNy40LDIuMy0xNTguNy0yOS43LTE1OC43LTI5LjdjMi4zLDYuOSw2OC42LDc0LjMsNjguNiw3NC4zTDM1Ni45LDE0OS41TDM1Ni45LDE0OS41eiIvPjxwYXRoIGQ9Ik00NjEuMiwxNjYuN2wtMjAuNi00OS4ybC01OS41LDM2LjZMNDYxLjIsMTY2LjdMNDYxLjIsMTY2Ljd6Ii8+PHBhdGggZD0iTTMwNi44LDE0Mi4xbC01MC4zLTU4LjljMCwwLTQwLDI3LjQtMzQuMywzNC4zQzIyNy45LDEyNC40LDMwNi44LDE0Mi4xLDMwNi44LDE0Mi4xTDMwNi44LDE0Mi4xeiIvPjxwYXRoIGQ9Ik0yNDguNSwxNDkuNWMyMC42LDE0LjksNjguNiw3Ny44LDY4LjYsNzcuOGwtMTguMy02MC42TDI0OC41LDE0OS41TDI0OC41LDE0OS41eiIvPjxwYXRoIGQ9Ik0zMzguOCwyNDQuNGw4Mi4zLTYxLjhsLTEwOS44LTE2QzMxMS40LDE2Ni43LDMzOC44LDIzMC43LDMzOC44LDI0NC40TDMzOC44LDI0NC40eiIvPjxwYXRoIGQ9Ik00MzMuNywxODguNGwtNzYuOSw2Ni4zYzIxLjUsNC42LDkxLjcsMzAuOSw5MS43LDMwLjlDNDUzLjIsMjEwLjEsNDMzLjcsMTg4LjQsNDMzLjcsMTg4LjRMNDMzLjcsMTg4LjR6Ii8+PHBhdGggZD0iTTQ2MS4yLDI4Mi4yYzAsMCwxMTIuMS02Mi45LDEyMC4xLTY2LjNsLTEzMi0yNy40QzQ0OS4zLDE4OC40LDQ3OC4zLDIyOS42LDQ2MS4yLDI4Mi4yTDQ2MS4yLDI4Mi4yeiIvPjxwYXRoIGQ9Ik01NjEuOCwzMzdjNDMuNS03NC4zLDQzLjUtMTE2LjYsNDMuNS0xMTYuNmwtMTIwLjQsNzcuOEM1MDUuMiwzMDMuOSw1NjEuOCwzMzcsNTYxLjgsMzM3TDU2MS44LDMzN3oiLz48cGF0aCBkPSJNNTg5LjMsMzM3YzU3LjItMjkuNywxODAuNy02NCwxODAuNy02NGMtMjYuMy0xOC4zLTE0OS44LTUyLjYtMTQ5LjgtNTIuNkM2MjEuMywyMzcuNiw1ODkuMywzMzcsNTg5LjMsMzM3TDU4OS4zLDMzN3oiLz48cGF0aCBkPSJNNTg5LjMsMzUzLjFjMzcuNCwyMS43LDc2LjYsODQuNiw3Ni42LDg0LjZjNzItNzAuOSwxMTUuNS0xNTIuMSwxMTUuNS0xNTIuMUM3NjQuMiwyODYuNyw1ODkuMywzNTMuMSw1ODkuMywzNTMuMUw1ODkuMywzNTMuMXoiLz48cGF0aCBkPSJNODAwLjgsMjg1LjZDNzgzLjcsMzMxLjMsNjk2LjgsNDMyLDY5Ni44LDQzMmM0NC42LTE4LjMsMjM2LjctMzQuMywyMzYuNy0zNC4zQzkxNi4zLDM2Mi4yLDgwMC44LDI4NS42LDgwMC44LDI4NS42TDgwMC44LDI4NS42eiIvPjxwYXRoIGQ9Ik00MjguOSwzMTEuOWMtMjQuMy0xNi03OS40LTI5LjctNzkuNC0yOS43YzYuMiwzLjQsNy4zLDk4LjMsNy4zLDk4LjNDMzg0LjEsMzU1LjMsNDI4LjksMzExLjksNDI4LjksMzExLjlMNDI4LjksMzExLjl6Ii8+PHBhdGggZD0iTTQzOS41LDMzMS4zYy04LDYuOS04Mi42LDY4LjYtODIuNiw2OC42YzEyLjMsOCw0MC4zLDMyLDQwLjMsMzJDNDI2LjksMzk0LjIsNDM5LjUsMzMxLjMsNDM5LjUsMzMxLjNMNDM5LjUsMzMxLjN6Ii8+PHBhdGggZD0iTTQ2MS4yLDMxOS45YzEuMSwxNy4yLTI2LjMsOTIuNi0yNi4zLDkyLjZsOTguMy01My43TDQ2MS4yLDMxOS45TDQ2MS4yLDMxOS45eiIvPjxwYXRoIGQ9Ik00MDguNiw0NDkuMWMxMS40LDkuMSwyMC4zLDY3LjUsMjAuMyw2Ny41YzEwLTE0LjksMTA0LjMtMTM0LjksMTA0LjMtMTM0LjlDNDU4LjksNDI1LjEsNDA4LjYsNDQ5LjEsNDA4LjYsNDQ5LjF6Ii8+PHBhdGggZD0iTTU2MS44LDM4MC41Yy01LjcsMTMuNy0xMDYuMywxMjUuOC0xMDYuMywxMjUuOGMyNi41LTEwLjMsMTkxLTYxLjgsMTkxLTYxLjhDNjI0LjcsNDExLjQsNTYxLjgsMzgwLjUsNTYxLjgsMzgwLjVMNTYxLjgsMzgwLjV6Ii8+PHBhdGggZD0iTTM4OS4yLDQ3NC4zYy03LjksMTMuNy0xNDYuNSwxMjguMS0xNDYuNSwxMjguMWMyMS43LTE0LjksMTY1LjgtODAsMTY1LjgtODBDNDEwLjksNDg4LDM4OS4yLDQ3NC4zLDM4OS4yLDQ3NC4zTDM4OS4yLDQ3NC4zeiIvPjxwYXRoIGQ9Ik0zMTEuNCw0OTUuOGMyNy40LTE3LjMsNjAuNi00Ni43LDYwLjYtNDYuN2MtOS4xLTExLjQtMjguNi0xNy4yLTI4LjYtMTcuMkMzNDIuMyw0NDIuMywzMTEuNCw0OTUuOCwzMTEuNCw0OTUuOHoiLz48cGF0aCBkPSJNMzY2LjMsNDgyLjNjLTQ5LjQsMjEuMS05MS41LDYwLTkxLjUsNjBsLTQ1LjcsNjBMMzY2LjMsNDgyLjNMMzY2LjMsNDgyLjN6Ii8+PHBhdGggZD0iTTU2NC4xLDQ5NS44bC04OC4xLDI5LjljMCwwLDY4LjYsNDEuMiw5My44LDUxLjVDNTY5LjgsNTc3LjIsNTcyLjEsNTI2LjUsNTY0LjEsNDk1LjhMNTY0LjEsNDk1Ljh6Ii8+PHBhdGggZD0iTTU2MS44LDU5MC45TDQ2MCw1MzAuM2MwLDAsMy43LDg2LjktMTAuNywxMjEuMkM0NDkuMyw2NTEuNSw1NDcsNjA1LjgsNTYxLjgsNTkwLjlMNTYxLjgsNTkwLjl6Ii8+PHBhdGggZD0iTTQ0OS4zLDY3MWMwLDAsNTUuMyw0Mi4zLDEwNi44LDU0LjljMCwwLDIxLjItNTcuMiwxNC0xMTguOUM1NzAuMSw2MDYuOSw0NzQsNjY0LjEsNDQ5LjMsNjcxTDQ0OS4zLDY3MXoiLz48cGF0aCBkPSJNNDM0LjksNTM4LjNsLTc4LDMyYzI0LjcsNTguMiw2NC4zLDgxLjIsNjQuMyw4MS4yQzQ0Ni4zLDU5Mi4xLDQzNC45LDUzOC4zLDQzNC45LDUzOC4zTDQzNC45LDUzOC4zeiIvPjxwYXRoIGQ9Ik0zNDEuNyw1NzcuMmMyLjksMTQuOS03NiwxNDguNy03NiwxNDguN2MxMDAuNi0zMC45LDE0My4xLTU5LjUsMTQzLjEtNTkuNUMzNTAuNiw2MTMuOCwzNDEuNyw1NzcuMiwzNDEuNyw1NzcuMkwzNDEuNyw1NzcuMnoiLz48cGF0aCBkPSJNMzA0LjUsNTkwLjljLTEzLjcsNC42LTgzLjUsNDEuMi04My41LDQxLjJjMi4zLDY3LjUsMTcuMiw4NS44LDE3LjIsODUuOEMyNzEuNCw2ODQuNywzMDQuNSw1OTAuOSwzMDQuNSw1OTAuOUwzMDQuNSw1OTAuOXoiLz48cGF0aCBkPSJNMTkyLjUsNjQ0LjdDODAuNCw2OTguNCw2Ni43LDc3OS42LDY2LjcsNzc5LjZjMjAuNiwwLDE0OC43LTQwLDE0OC43LTQwQzE5MC4yLDY4MS4yLDE5Mi41LDY0NC43LDE5Mi41LDY0NC43TDE5Mi41LDY0NC43eiIvPjxwYXRoIGQ9Ik02Ni43LDc4OS45YzAsMC01LjcsNTEuNSw1Ny4yLDk0LjljMCwwLDgwLTEwNC4xLDg1LjgtMTI0LjZDMjA5LjYsNzYwLjIsMTA0LjQsNzg5LjksNjYuNyw3ODkuOUw2Ni43LDc4OS45eiIvPjxwYXRoIGQ9Ik0yMjkuMSw3NjdMMTMzLDg5MC41bDUuMSw2LjlsMTc5LTY1LjJDMjcxLjQsODA3LDIyOS4xLDc2NywyMjkuMSw3NjdMMjI5LjEsNzY3eiIvPjxwYXRoIGQ9Ik0xNDksODk5LjdjNDIuMywzOC45LDExNi42LDQ5LjIsMTE2LjYsNDkuMmw2NS4yLTk4LjNMMTQ5LDg5OS43TDE0OSw4OTkuN3oiLz48cGF0aCBkPSJNMzU2LjksODUwLjVjMC45LDYuOS04Mi4xLDEwNy4zLTgyLjEsMTA3LjNjNTIuNi0yLjUsMjM1LjctNzMsMjM1LjctNzNDNDMyLjgsODgzLjYsMzU2LjksODUwLjUsMzU2LjksODUwLjV6Ii8+PHBhdGggZD0iTTQ3Ni4xLDk5MGMxMS40LTEzLjcsMzkuMi05Mi42LDM5LjItOTIuNmMtOTIuMywzOC45LTIwMy45LDYwLjQtMjAzLjksNjAuNEMzNDguNyw5NzkuNCw0NzYuMSw5OTAsNDc2LjEsOTkwTDQ3Ni4xLDk5MHoiLz48cGF0aCBkPSJNMzQ5LjYsODIyLjVjMzcuOC01Ni44LDUzLjUtMTI5LjgsNTMuNS0xMjkuOGMtMTQuNiwxMC4zLTE0OC45LDU0LjktMTQ4LjksNTQuOUMyOTQuMiw4MDAuMiwzNDkuNiw4MjIuNSwzNDkuNiw4MjIuNUwzNDkuNiw4MjIuNXoiLz48cGF0aCBkPSJNMzc3LjcsODA4LjJjMjguNiwxLjEsMTczLjItNjkuOCwxNzMuMi02OS44Yy0zMS40LTYuOS0xMTYuMS01MS41LTExNi4xLTUxLjVMMzc3LjcsODA4LjJMMzc3LjcsODA4LjJ6Ii8+PHBhdGggZD0iTTM2Ni4zLDgzMi4yYzIwLjYsMjQsMTQ5LDQ2LjksMTQ5LDQ2LjljMjEuNC0yNi45LDM1LjctMTMxLjUsMzUuNy0xMzEuNUM1NDQuNyw3NjAuMiwzNjYuMyw4MzIuMiwzNjYuMyw4MzIuMkwzNjYuMyw4MzIuMnoiLz48L2c+DQo8L3N2Zz4=" + camel.apache.org/provider: "Apache Software Foundation" + camel.apache.org/kamelet.group: "SQL" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Microsoft SQL Server Sink" + description: |- + Send data to a Microsoft SQL Server Database. + + In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + + spec: + integration: + dependencies: + - "mvn:com.microsoft.sqlserver:mssql-jdbc:" + required: + - serverName + - username + - password + - query + - databaseName + type: object + properties: + serverName: + title: Server Name + description: Server Name for the data source + type: string + example: localhost + port: + title: Port + description: Server Port for the data source + type: string + default: 1433 + username: + title: Username + description: The username to use for accessing a secured MariaDB Database + type: string + password: + title: Password + description: The password to use for accessing a secured MariaDB Database + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + query: + title: Query + description: The Query to execute against the MariaDB Database + type: string + databaseName: + title: Database Name + description: The Database Name we are pointing + type: string + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.apache.commons:commons-dbcp2:2.8.0" + flow: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + property: + - key: username + value: '{{username}}' + - key: password + value: '{{password}}' + - key: url + value: 'jdbc:sqlserver://{{serverName}}:{{port}};databaseName={{databaseName}}' + - key: driverClassName + value: 'com.microsoft.sqlserver.jdbc.SQLServerDriver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" From 3bd6bb14d19d05b9d9023831619c4a559d98ec7f Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 12:17:26 +0200 Subject: [PATCH 080/105] Added SQL Server Sink Kamelet --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 57a3b15b6..0a45f3f13 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -91,6 +91,7 @@ * xref:ROOT:sftp-sink.adoc[image:kamelets/sftp-sink.svg[] SFTP Sink] * xref:ROOT:sftp-source.adoc[image:kamelets/sftp-source.svg[] SFTP Source] * xref:ROOT:slack-source.adoc[image:kamelets/slack-source.svg[] Slack Source] +* xref:ROOT:sqlserver-sink.adoc[image:kamelets/sqlserver-sink.svg[] Microsoft SQL Server Sink] * xref:ROOT:ssh-source.adoc[image:kamelets/ssh-source.svg[] SSH Source] * xref:ROOT:telegram-sink.adoc[image:kamelets/telegram-sink.svg[] Telegram Sink] * xref:ROOT:telegram-source.adoc[image:kamelets/telegram-source.svg[] Telegram Source] From 4c45b92f44f265716262934723b95829382be2e1 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 12:17:42 +0200 Subject: [PATCH 081/105] Added SQL Server Sink Kamelet --- .../assets/images/kamelets/sqlserver-sink.svg | 7 ++ docs/modules/ROOT/pages/sqlserver-sink.adoc | 78 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/kamelets/sqlserver-sink.svg create mode 100644 docs/modules/ROOT/pages/sqlserver-sink.adoc diff --git a/docs/modules/ROOT/assets/images/kamelets/sqlserver-sink.svg b/docs/modules/ROOT/assets/images/kamelets/sqlserver-sink.svg new file mode 100644 index 000000000..7e2fac981 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/sqlserver-sink.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + \ No newline at end of file diff --git a/docs/modules/ROOT/pages/sqlserver-sink.adoc b/docs/modules/ROOT/pages/sqlserver-sink.adoc new file mode 100644 index 000000000..42809f099 --- /dev/null +++ b/docs/modules/ROOT/pages/sqlserver-sink.adoc @@ -0,0 +1,78 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/sqlserver-sink.svg[] Microsoft SQL Server Sink + +*Provided by: "Apache Software Foundation"* + +*Support Level for this Kamelet is: "Preview"* + +Send data to a Microsoft SQL Server Database. + +In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + +spec: + integration: + dependencies: + - "mvn:com.microsoft.sqlserver:mssql-jdbc:" + +== Configuration Options + +The following table summarizes the configuration options available for the `sqlserver-sink` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | +| *password {empty}* *| Password| The password to use for accessing a secured MariaDB Database| string| | +| *query {empty}* *| Query| The Query to execute against the MariaDB Database| string| | +| *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` +| *username {empty}* *| Username| The username to use for accessing a secured MariaDB Database| string| | +| port| Port| Server Port for the data source| string| `1433`| +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `sqlserver-sink` can be used in various contexts. + +=== Knative Sink + +The `sqlserver-sink` Kamelet can be used as Knative sink by binding it to a Knative object. + +.sqlserver-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: sqlserver-sink-binding +spec: + source: + ref: + kind: InMemoryChannel + apiVersion: messaging.knative.dev/v1 + name: mychannel + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: sqlserver-sink + properties: + databaseName: "The Database Name" + password: "The Password" + query: "The Query" + serverName: "localhost" + username: "The Username" + +---- + +Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to. + +Save the `sqlserver-sink-binding.yaml` file into your hard drive, then configure it according to your needs. + +You can run the sink using the following command: + +[source,shell] +---- +kubectl apply -f sqlserver-sink-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT From 08fef3fb4f75d67ef3b3c5dd6ff5b59d4f3c758d Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 12:38:00 +0200 Subject: [PATCH 082/105] Added SQL Server Sink Kamelet --- .../main/resources/kamelets/sqlserver-sink.kamelet.yaml | 8 ++++---- sqlserver-sink.kamelet.yaml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml index d19181d79..e8952f60d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml @@ -16,7 +16,7 @@ spec: description: |- Send data to a Microsoft SQL Server Database. - In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency, like in the following YAML snippet spec: integration: @@ -42,18 +42,18 @@ spec: default: 1433 username: title: Username - description: The username to use for accessing a secured MariaDB Database + description: The username to use for accessing a secured SQL Server Database type: string password: title: Password - description: The password to use for accessing a secured MariaDB Database + description: The password to use for accessing a secured SQL Server Database type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password query: title: Query - description: The Query to execute against the MariaDB Database + description: The Query to execute against the SQL Server Database type: string databaseName: title: Database Name diff --git a/sqlserver-sink.kamelet.yaml b/sqlserver-sink.kamelet.yaml index d19181d79..e8952f60d 100644 --- a/sqlserver-sink.kamelet.yaml +++ b/sqlserver-sink.kamelet.yaml @@ -16,7 +16,7 @@ spec: description: |- Send data to a Microsoft SQL Server Database. - In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency, like in the following YAML snippet spec: integration: @@ -42,18 +42,18 @@ spec: default: 1433 username: title: Username - description: The username to use for accessing a secured MariaDB Database + description: The username to use for accessing a secured SQL Server Database type: string password: title: Password - description: The password to use for accessing a secured MariaDB Database + description: The password to use for accessing a secured SQL Server Database type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password query: title: Query - description: The Query to execute against the MariaDB Database + description: The Query to execute against the SQL Server Database type: string databaseName: title: Database Name From f9509556f8185cd7d77fbc470003d5492d58882e Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 12:38:31 +0200 Subject: [PATCH 083/105] Added SQL Server Sink Kamelet --- docs/modules/ROOT/pages/sqlserver-sink.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/modules/ROOT/pages/sqlserver-sink.adoc b/docs/modules/ROOT/pages/sqlserver-sink.adoc index 42809f099..018dd9c2c 100644 --- a/docs/modules/ROOT/pages/sqlserver-sink.adoc +++ b/docs/modules/ROOT/pages/sqlserver-sink.adoc @@ -7,7 +7,7 @@ Send data to a Microsoft SQL Server Database. -In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet +In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency, like in the following YAML snippet spec: integration: @@ -21,10 +21,10 @@ The following table summarizes the configuration options available for the `sqls |=== | Property| Name| Description| Type| Default| Example | *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | -| *password {empty}* *| Password| The password to use for accessing a secured MariaDB Database| string| | -| *query {empty}* *| Query| The Query to execute against the MariaDB Database| string| | +| *password {empty}* *| Password| The password to use for accessing a secured SQL Server Database| string| | +| *query {empty}* *| Query| The Query to execute against the SQL Server Database| string| | | *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` -| *username {empty}* *| Username| The username to use for accessing a secured MariaDB Database| string| | +| *username {empty}* *| Username| The username to use for accessing a secured SQL Server Database| string| | | port| Port| Server Port for the data source| string| `1433`| |=== From 19c38c2453327da20e1a734a9c9d58acdfcb0d0d Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 13:30:49 +0200 Subject: [PATCH 084/105] SQL Server Sink Kamelet Fixed description and more information --- sqlserver-sink.kamelet.yaml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/sqlserver-sink.kamelet.yaml b/sqlserver-sink.kamelet.yaml index e8952f60d..d784b7c64 100644 --- a/sqlserver-sink.kamelet.yaml +++ b/sqlserver-sink.kamelet.yaml @@ -16,12 +16,17 @@ spec: description: |- Send data to a Microsoft SQL Server Database. - In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency, like in the following YAML snippet - - spec: - integration: - dependencies: - - "mvn:com.microsoft.sqlserver:mssql-jdbc:" + In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies + + - "mvn:com.microsoft.sqlserver:mssql-jdbc:" + + This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + The Kamelet need to receive as input something like: + + '{ "username":"oscerd", "city":"Rome"}' required: - serverName - username @@ -55,10 +60,14 @@ spec: title: Query description: The Query to execute against the SQL Server Database type: string + example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name description: The Database Name we are pointing type: string + types: + out: + mediaType: application/json dependencies: - "camel:jackson" - "camel:kamelet" From 546509e3474920049a9c5181e0d8fb586a94c8f2 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 13:33:23 +0200 Subject: [PATCH 085/105] SQL Server Sink Kamelet Fixed description and more information --- .../kamelets/sqlserver-sink.kamelet.yaml | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml index e8952f60d..d784b7c64 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml @@ -16,12 +16,17 @@ spec: description: |- Send data to a Microsoft SQL Server Database. - In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency, like in the following YAML snippet - - spec: - integration: - dependencies: - - "mvn:com.microsoft.sqlserver:mssql-jdbc:" + In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies + + - "mvn:com.microsoft.sqlserver:mssql-jdbc:" + + This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + The Kamelet need to receive as input something like: + + '{ "username":"oscerd", "city":"Rome"}' required: - serverName - username @@ -55,10 +60,14 @@ spec: title: Query description: The Query to execute against the SQL Server Database type: string + example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name description: The Database Name we are pointing type: string + types: + out: + mediaType: application/json dependencies: - "camel:jackson" - "camel:kamelet" From d91e1b43c0844403f12d84ebdfb278be1b33334f Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 13:33:37 +0200 Subject: [PATCH 086/105] SQL Server Sink Kamelet Fixed description and more information --- docs/modules/ROOT/pages/sqlserver-sink.adoc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/modules/ROOT/pages/sqlserver-sink.adoc b/docs/modules/ROOT/pages/sqlserver-sink.adoc index 018dd9c2c..7739e4f08 100644 --- a/docs/modules/ROOT/pages/sqlserver-sink.adoc +++ b/docs/modules/ROOT/pages/sqlserver-sink.adoc @@ -7,12 +7,17 @@ Send data to a Microsoft SQL Server Database. -In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency, like in the following YAML snippet +In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies -spec: - integration: - dependencies: - - "mvn:com.microsoft.sqlserver:mssql-jdbc:" +- "mvn:com.microsoft.sqlserver:mssql-jdbc:" + +This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + +'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + +The Kamelet need to receive as input something like: + +'{ "username":"oscerd", "city":"Rome"}' == Configuration Options @@ -22,7 +27,7 @@ The following table summarizes the configuration options available for the `sqls | Property| Name| Description| Type| Default| Example | *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | | *password {empty}* *| Password| The password to use for accessing a secured SQL Server Database| string| | -| *query {empty}* *| Query| The Query to execute against the SQL Server Database| string| | +| *query {empty}* *| Query| The Query to execute against the SQL Server Database| string| | `"INSERT INTO accounts (username,city) VALUES (:#username,:#city)"` | *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` | *username {empty}* *| Username| The username to use for accessing a secured SQL Server Database| string| | | port| Port| Server Port for the data source| string| `1433`| @@ -59,7 +64,7 @@ spec: properties: databaseName: "The Database Name" password: "The Password" - query: "The Query" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" serverName: "localhost" username: "The Username" From 5a86bff6ab6c73ce8f3ecdde6ecc9fa71bfd70d7 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 13:41:06 +0200 Subject: [PATCH 087/105] SQL Server Sink Kamelet Fixed description and more information --- sqlserver-sink.kamelet.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlserver-sink.kamelet.yaml b/sqlserver-sink.kamelet.yaml index d784b7c64..ba7c0051b 100644 --- a/sqlserver-sink.kamelet.yaml +++ b/sqlserver-sink.kamelet.yaml @@ -24,7 +24,7 @@ spec: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet need to receive as input something like: + The Kamelet needs to receive as input something like: '{ "username":"oscerd", "city":"Rome"}' required: From 4761a6bce2bb919770b89a3e22f2fb0bb372f1a4 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 13:41:29 +0200 Subject: [PATCH 088/105] SQL Server Sink Kamelet Fixed description and more information --- .../src/main/resources/kamelets/sqlserver-sink.kamelet.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml index d784b7c64..ba7c0051b 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml @@ -24,7 +24,7 @@ spec: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet need to receive as input something like: + The Kamelet needs to receive as input something like: '{ "username":"oscerd", "city":"Rome"}' required: From c129518e5aa2ecdda737f47651a0980fea643415 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 13:42:01 +0200 Subject: [PATCH 089/105] SQL Server Sink Kamelet Fixed description and more information --- docs/modules/ROOT/pages/sqlserver-sink.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/sqlserver-sink.adoc b/docs/modules/ROOT/pages/sqlserver-sink.adoc index 7739e4f08..042d1f0f0 100644 --- a/docs/modules/ROOT/pages/sqlserver-sink.adoc +++ b/docs/modules/ROOT/pages/sqlserver-sink.adoc @@ -15,7 +15,7 @@ This Kamelet expects a JSON as body. The mapping between the JSON fields and par 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' -The Kamelet need to receive as input something like: +The Kamelet needs to receive as input something like: '{ "username":"oscerd", "city":"Rome"}' From 4076bbde880e6ef5a6a6c4a55f8ebcf151dfabdc Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 14:32:42 +0200 Subject: [PATCH 090/105] PostgreSQL Sink Kamelet Fixed description and more information --- postgresql-sink.kamelet.yaml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/postgresql-sink.kamelet.yaml b/postgresql-sink.kamelet.yaml index 14f30c133..7904da583 100644 --- a/postgresql-sink.kamelet.yaml +++ b/postgresql-sink.kamelet.yaml @@ -15,11 +15,20 @@ spec: title: "PostgreSQL Sink" description: |- Send data to a PostgreSQL Database. + + This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + The Kamelet needs to receive as input something like: + + '{ "username":"oscerd", "city":"Rome"}' required: - serverName - username - password - query + - databaseName type: object properties: serverName: @@ -47,11 +56,14 @@ spec: title: Query description: The Query to execute against the PostgreSQL Database type: string + example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name description: The Database Name we are pointing type: string - default: postgres + types: + out: + mediaType: application/json dependencies: - "camel:jackson" - "camel:kamelet" From 8261cfd9020c2ce82922dbe720e128b42faa508a Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 14:34:07 +0200 Subject: [PATCH 091/105] PostgreSQL Sink Kamelet Fixed description and more information --- .../kamelets/postgresql-sink.kamelet.yaml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml index 14f30c133..7904da583 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml @@ -15,11 +15,20 @@ spec: title: "PostgreSQL Sink" description: |- Send data to a PostgreSQL Database. + + This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + The Kamelet needs to receive as input something like: + + '{ "username":"oscerd", "city":"Rome"}' required: - serverName - username - password - query + - databaseName type: object properties: serverName: @@ -47,11 +56,14 @@ spec: title: Query description: The Query to execute against the PostgreSQL Database type: string + example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name description: The Database Name we are pointing type: string - default: postgres + types: + out: + mediaType: application/json dependencies: - "camel:jackson" - "camel:kamelet" From 39742ca8c74606d8bef4b3632261e6cff0b96a83 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 14:34:52 +0200 Subject: [PATCH 092/105] PostgreSQL Sink Kamelet Fixed description and more information --- docs/modules/ROOT/pages/postgresql-sink.adoc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/modules/ROOT/pages/postgresql-sink.adoc b/docs/modules/ROOT/pages/postgresql-sink.adoc index 510d46fe0..8633aec36 100644 --- a/docs/modules/ROOT/pages/postgresql-sink.adoc +++ b/docs/modules/ROOT/pages/postgresql-sink.adoc @@ -7,17 +7,25 @@ Send data to a PostgreSQL Database. +This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + +'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + +The Kamelet needs to receive as input something like: + +'{ "username":"oscerd", "city":"Rome"}' + == Configuration Options The following table summarizes the configuration options available for the `postgresql-sink` Kamelet: [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example +| *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | | *password {empty}* *| Password| The password to use for accessing a secured PostgreSQL Database| string| | -| *query {empty}* *| Query| The Query to execute against the PostgreSQL Database| string| | +| *query {empty}* *| Query| The Query to execute against the PostgreSQL Database| string| | `"INSERT INTO accounts (username,city) VALUES (:#username,:#city)"` | *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` | *username {empty}* *| Username| The username to use for accessing a secured PostgreSQL Database| string| | -| databaseName| Database Name| The Database Name we are pointing| string| `"postgres"`| | port| Port| Server Port for the data source| string| `5432`| |=== @@ -50,8 +58,9 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: postgresql-sink properties: + databaseName: "The Database Name" password: "The Password" - query: "The Query" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" serverName: "localhost" username: "The Username" From 34104e4496e0b046f39e20a17f5791aa9c6356f4 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 14:59:56 +0200 Subject: [PATCH 093/105] MySQL Sink Kamelet Fixed description and more information --- mysql-sink.kamelet.yaml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/mysql-sink.kamelet.yaml b/mysql-sink.kamelet.yaml index 0818d05de..30f2962db 100644 --- a/mysql-sink.kamelet.yaml +++ b/mysql-sink.kamelet.yaml @@ -18,15 +18,23 @@ spec: In you KameletBinding file you'll need to explicitly declare the mysql driver dependency, like in the following YAML snippet - spec: - integration: - dependencies: - - "mvn:mysql:mysql-connector-java:" + In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies + + - "mvn:mysql:mysql-connector-java:" + + This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + The Kamelet needs to receive as input something like: + + '{ "username":"oscerd", "city":"Rome"}' required: - serverName - username - password - query + - databaseName type: object properties: serverName: @@ -58,7 +66,6 @@ spec: title: Database Name description: The Database Name we are pointing type: string - default: mysql dependencies: - "camel:jackson" - "camel:kamelet" From c8282349b870da184980975a08edc541594468a2 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:01:39 +0200 Subject: [PATCH 094/105] MySQL Sink Kamelet Fixed description and more information --- mysql-sink.kamelet.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mysql-sink.kamelet.yaml b/mysql-sink.kamelet.yaml index 30f2962db..eece4d022 100644 --- a/mysql-sink.kamelet.yaml +++ b/mysql-sink.kamelet.yaml @@ -66,6 +66,9 @@ spec: title: Database Name description: The Database Name we are pointing type: string + types: + in: + mediaType: application/json dependencies: - "camel:jackson" - "camel:kamelet" From fec6c4c0a6f60874ff0484b83505de7221db931a Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:03:17 +0200 Subject: [PATCH 095/105] MySQL Sink Kamelet Fixed description and more information --- .../kamelets/mysql-sink.kamelet.yaml | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml index 0818d05de..eece4d022 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml @@ -18,15 +18,23 @@ spec: In you KameletBinding file you'll need to explicitly declare the mysql driver dependency, like in the following YAML snippet - spec: - integration: - dependencies: - - "mvn:mysql:mysql-connector-java:" + In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies + + - "mvn:mysql:mysql-connector-java:" + + This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + The Kamelet needs to receive as input something like: + + '{ "username":"oscerd", "city":"Rome"}' required: - serverName - username - password - query + - databaseName type: object properties: serverName: @@ -58,7 +66,9 @@ spec: title: Database Name description: The Database Name we are pointing type: string - default: mysql + types: + in: + mediaType: application/json dependencies: - "camel:jackson" - "camel:kamelet" From 6eec0842a0cc5c2693da1f1ef67fffad5e6bfd79 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:03:29 +0200 Subject: [PATCH 096/105] MySQL Sink Kamelet Fixed description and more information --- docs/modules/ROOT/pages/mysql-sink.adoc | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/modules/ROOT/pages/mysql-sink.adoc b/docs/modules/ROOT/pages/mysql-sink.adoc index f9e555224..c5af862d6 100644 --- a/docs/modules/ROOT/pages/mysql-sink.adoc +++ b/docs/modules/ROOT/pages/mysql-sink.adoc @@ -9,10 +9,17 @@ Send data to a MySQL Database. In you KameletBinding file you'll need to explicitly declare the mysql driver dependency, like in the following YAML snippet -spec: - integration: - dependencies: - - "mvn:mysql:mysql-connector-java:" +In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies + +- "mvn:mysql:mysql-connector-java:" + +This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + +'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + +The Kamelet needs to receive as input something like: + +'{ "username":"oscerd", "city":"Rome"}' == Configuration Options @@ -20,11 +27,11 @@ The following table summarizes the configuration options available for the `mysq [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example +| *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | | *password {empty}* *| Password| The password to use for accessing a secured MySQL Database| string| | | *query {empty}* *| Query| The Query to execute against the MySQL Database| string| | | *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` | *username {empty}* *| Username| The username to use for accessing a secured MySQL Database| string| | -| databaseName| Database Name| The Database Name we are pointing| string| `"mysql"`| | port| Port| Server Port for the data source| string| `3306`| |=== @@ -57,6 +64,7 @@ spec: apiVersion: camel.apache.org/v1alpha1 name: mysql-sink properties: + databaseName: "The Database Name" password: "The Password" query: "The Query" serverName: "localhost" From 53bb2dd3026c0a71bc65abaf712d4e13bc753ecf Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:12:05 +0200 Subject: [PATCH 097/105] MariaDB Sink Kamelet Fixed description and more information --- mariadb-sink.kamelet.yaml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/mariadb-sink.kamelet.yaml b/mariadb-sink.kamelet.yaml index fac5e76f6..c1fc0a6dd 100644 --- a/mariadb-sink.kamelet.yaml +++ b/mariadb-sink.kamelet.yaml @@ -16,12 +16,17 @@ spec: description: |- Send data to a MariaDB Database. - In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies - spec: - integration: - dependencies: - - "mvn:org.mariadb.jdbc:mariadb-java-client:" + - "mvn:org.mariadb.jdbc:mariadb-java-client:" + + This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + The Kamelet needs to receive as input something like: + + '{ "username":"oscerd", "city":"Rome"}' required: - serverName - username @@ -55,10 +60,14 @@ spec: title: Query description: The Query to execute against the MariaDB Database type: string + example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name description: The Database Name we are pointing type: string + types: + in: + mediaType: application/json dependencies: - "camel:jackson" - "camel:kamelet" From db1374cde771ee5c00d584447c838f046f8d0f10 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:12:49 +0200 Subject: [PATCH 098/105] MariaDB Sink Kamelet Fixed description and more information --- .../kamelets/mariadb-sink.kamelet.yaml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml index fac5e76f6..c1fc0a6dd 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml @@ -16,12 +16,17 @@ spec: description: |- Send data to a MariaDB Database. - In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet + In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies - spec: - integration: - dependencies: - - "mvn:org.mariadb.jdbc:mariadb-java-client:" + - "mvn:org.mariadb.jdbc:mariadb-java-client:" + + This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + The Kamelet needs to receive as input something like: + + '{ "username":"oscerd", "city":"Rome"}' required: - serverName - username @@ -55,10 +60,14 @@ spec: title: Query description: The Query to execute against the MariaDB Database type: string + example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name description: The Database Name we are pointing type: string + types: + in: + mediaType: application/json dependencies: - "camel:jackson" - "camel:kamelet" From f0a5b78888046c9e7444384858868536003297b2 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:13:13 +0200 Subject: [PATCH 099/105] MariaDB Sink Kamelet Fixed description and more information --- docs/modules/ROOT/pages/mariadb-sink.adoc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/modules/ROOT/pages/mariadb-sink.adoc b/docs/modules/ROOT/pages/mariadb-sink.adoc index b140a2b82..6731e8b53 100644 --- a/docs/modules/ROOT/pages/mariadb-sink.adoc +++ b/docs/modules/ROOT/pages/mariadb-sink.adoc @@ -7,12 +7,17 @@ Send data to a MariaDB Database. -In you KameletBinding file you'll need to explicitly declare the MariaDB driver dependency, like in the following YAML snippet +In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies -spec: - integration: - dependencies: - - "mvn:org.mariadb.jdbc:mariadb-java-client:" +- "mvn:org.mariadb.jdbc:mariadb-java-client:" + +This Kamelet expects a JSON as body. The mapping between the JSON fields and parameters is done by key, so if you have the following query: + +'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + +The Kamelet needs to receive as input something like: + +'{ "username":"oscerd", "city":"Rome"}' == Configuration Options @@ -22,7 +27,7 @@ The following table summarizes the configuration options available for the `mari | Property| Name| Description| Type| Default| Example | *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | | *password {empty}* *| Password| The password to use for accessing a secured MariaDB Database| string| | -| *query {empty}* *| Query| The Query to execute against the MariaDB Database| string| | +| *query {empty}* *| Query| The Query to execute against the MariaDB Database| string| | `"INSERT INTO accounts (username,city) VALUES (:#username,:#city)"` | *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` | *username {empty}* *| Username| The username to use for accessing a secured MariaDB Database| string| | | port| Port| Server Port for the data source| string| `3306`| @@ -59,7 +64,7 @@ spec: properties: databaseName: "The Database Name" password: "The Password" - query: "The Query" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" serverName: "localhost" username: "The Username" From 5b3acad5f1ea50f169f9c873765eb8894312a555 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:17:50 +0200 Subject: [PATCH 100/105] SQL Kamelets: Fixed last things --- mysql-sink.kamelet.yaml | 2 -- postgresql-sink.kamelet.yaml | 2 +- sqlserver-sink.kamelet.yaml | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/mysql-sink.kamelet.yaml b/mysql-sink.kamelet.yaml index eece4d022..25e14a4ac 100644 --- a/mysql-sink.kamelet.yaml +++ b/mysql-sink.kamelet.yaml @@ -15,8 +15,6 @@ spec: title: "MySQL Sink" description: |- Send data to a MySQL Database. - - In you KameletBinding file you'll need to explicitly declare the mysql driver dependency, like in the following YAML snippet In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies diff --git a/postgresql-sink.kamelet.yaml b/postgresql-sink.kamelet.yaml index 7904da583..d435d0298 100644 --- a/postgresql-sink.kamelet.yaml +++ b/postgresql-sink.kamelet.yaml @@ -62,7 +62,7 @@ spec: description: The Database Name we are pointing type: string types: - out: + in: mediaType: application/json dependencies: - "camel:jackson" diff --git a/sqlserver-sink.kamelet.yaml b/sqlserver-sink.kamelet.yaml index ba7c0051b..c6aec075d 100644 --- a/sqlserver-sink.kamelet.yaml +++ b/sqlserver-sink.kamelet.yaml @@ -66,7 +66,7 @@ spec: description: The Database Name we are pointing type: string types: - out: + in: mediaType: application/json dependencies: - "camel:jackson" From cf4e9067eccd719dac4f9aab71622ca7a3395ad1 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:18:47 +0200 Subject: [PATCH 101/105] SQL Kamelets: Fixed last things --- .../src/main/resources/kamelets/mysql-sink.kamelet.yaml | 2 -- .../src/main/resources/kamelets/postgresql-sink.kamelet.yaml | 2 +- .../src/main/resources/kamelets/sqlserver-sink.kamelet.yaml | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml index eece4d022..25e14a4ac 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml @@ -15,8 +15,6 @@ spec: title: "MySQL Sink" description: |- Send data to a MySQL Database. - - In you KameletBinding file you'll need to explicitly declare the mysql driver dependency, like in the following YAML snippet In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml index 7904da583..d435d0298 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml @@ -62,7 +62,7 @@ spec: description: The Database Name we are pointing type: string types: - out: + in: mediaType: application/json dependencies: - "camel:jackson" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml index ba7c0051b..c6aec075d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml @@ -66,7 +66,7 @@ spec: description: The Database Name we are pointing type: string types: - out: + in: mediaType: application/json dependencies: - "camel:jackson" From 53c14f18672af433c52f85d567d9925f51f2d60a Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:19:16 +0200 Subject: [PATCH 102/105] SQL Kamelets: Fixed last things --- docs/modules/ROOT/pages/mysql-sink.adoc | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/modules/ROOT/pages/mysql-sink.adoc b/docs/modules/ROOT/pages/mysql-sink.adoc index c5af862d6..268307178 100644 --- a/docs/modules/ROOT/pages/mysql-sink.adoc +++ b/docs/modules/ROOT/pages/mysql-sink.adoc @@ -7,8 +7,6 @@ Send data to a MySQL Database. -In you KameletBinding file you'll need to explicitly declare the mysql driver dependency, like in the following YAML snippet - In you KameletBinding file you'll need to explicitly declare the SQL Server driver dependency in spec->integration->dependencies - "mvn:mysql:mysql-connector-java:" From 466a118c4fc36773568de421ac9793b67874fa99 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:19:52 +0200 Subject: [PATCH 103/105] SQL Kamelets: Fixed last things --- mysql-sink.kamelet.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-sink.kamelet.yaml b/mysql-sink.kamelet.yaml index 25e14a4ac..81ee38e76 100644 --- a/mysql-sink.kamelet.yaml +++ b/mysql-sink.kamelet.yaml @@ -60,6 +60,7 @@ spec: title: Query description: The Query to execute against the MySQL Database type: string + example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name description: The Database Name we are pointing From d7cfe01733bb505fd1e9d73ad99d59da18f4e04d Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:20:12 +0200 Subject: [PATCH 104/105] SQL Kamelets: Fixed last things --- .../src/main/resources/kamelets/mysql-sink.kamelet.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml index 25e14a4ac..81ee38e76 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml @@ -60,6 +60,7 @@ spec: title: Query description: The Query to execute against the MySQL Database type: string + example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name description: The Database Name we are pointing From 8b750f95a9e88f70faf54f951e1f11206a535aa0 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 14 Jun 2021 15:20:24 +0200 Subject: [PATCH 105/105] SQL Kamelets: Fixed last things --- docs/modules/ROOT/pages/mysql-sink.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/ROOT/pages/mysql-sink.adoc b/docs/modules/ROOT/pages/mysql-sink.adoc index 268307178..1c4859eb7 100644 --- a/docs/modules/ROOT/pages/mysql-sink.adoc +++ b/docs/modules/ROOT/pages/mysql-sink.adoc @@ -27,7 +27,7 @@ The following table summarizes the configuration options available for the `mysq | Property| Name| Description| Type| Default| Example | *databaseName {empty}* *| Database Name| The Database Name we are pointing| string| | | *password {empty}* *| Password| The password to use for accessing a secured MySQL Database| string| | -| *query {empty}* *| Query| The Query to execute against the MySQL Database| string| | +| *query {empty}* *| Query| The Query to execute against the MySQL Database| string| | `"INSERT INTO accounts (username,city) VALUES (:#username,:#city)"` | *serverName {empty}* *| Server Name| Server Name for the data source| string| | `"localhost"` | *username {empty}* *| Username| The username to use for accessing a secured MySQL Database| string| | | port| Port| Server Port for the data source| string| `3306`| @@ -64,7 +64,7 @@ spec: properties: databaseName: "The Database Name" password: "The Password" - query: "The Query" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" serverName: "localhost" username: "The Username"