From f6c0151369e957a5e05a2e42cbaa9efbc754a830 Mon Sep 17 00:00:00 2001 From: Claudio Miranda Date: Tue, 13 Feb 2024 17:14:38 +0000 Subject: [PATCH] CMLK-1662 Update kamelet-catalog 2.2.x to Camel K 2.2.0 based on upstream: https://github.com/apache/camel-kamelets/pull/1617 --- aws-cloudwatch-sink.kamelet.yaml | 151 -- aws-ddb-streams-source.kamelet.yaml | 101 -- aws-kinesis-firehose-sink.kamelet.yaml | 69 - aws-kinesis-source.kamelet.yaml | 75 - aws-s3-sink.kamelet.yaml | 101 -- aws-s3-source.kamelet.yaml | 84 - aws-sqs-fifo-sink.kamelet.yaml | 123 -- aws-sqs-sink.kamelet.yaml | 78 - aws-sqs-source.kamelet.yaml | 91 -- azure-servicebus-sink.kamelet.yaml | 67 - azure-servicebus-source.kamelet.yaml | 82 - azure-storage-blob-sink.kamelet.yaml | 85 - .../images/kamelets/aws-cloudwatch-sink.svg | 1 - .../kamelets/aws-ddb-streams-source.svg | 1 - .../kamelets/aws-kinesis-firehose-sink.svg | 1 - .../images/kamelets/aws-sqs-fifo-sink.svg | 82 +- .../assets/images/kamelets/aws-sqs-sink.svg | 82 +- .../assets/images/kamelets/aws-sqs-source.svg | 82 +- .../images/kamelets/azure-servicebus-sink.svg | 1 - .../kamelets/azure-servicebus-source.svg | 1 - .../azure-storage-blob-append-sink.svg | 1 - .../kamelets/azure-storage-datalake-sink.svg | 22 + .../azure-storage-datalake-source.svg | 22 + ...commit-action.svg => data-type-action.svg} | 0 .../ROOT/assets/images/kamelets/ftps-sink.svg | 89 -- .../assets/images/kamelets/ftps-source.svg | 89 -- .../images/kamelets/jms-ibm-mq-sink.svg | 29 +- .../images/kamelets/jms-ibm-mq-source.svg | 29 +- .../images/kamelets/kafka-scram-sink.svg | 19 + .../images/kamelets/kafka-scram-source.svg | 19 + .../assets/images/kamelets/log-action.svg | 41 + .../assets/images/kamelets/mysql-sink.svg | 2 +- ...ion.svg => resolve-pojo-schema-action.svg} | 0 .../salesforce-composite-upsert-sink.svg | 1 + .../images/kamelets/splunk-hec-sink.svg | 1 - .../assets/images/kamelets/splunk-sink.svg | 1 - .../assets/images/kamelets/splunk-source.svg | 1 - .../kamelets/twitter-directmessage-source.svg | 6 + .../images/kamelets/twitter-search-source.svg | 6 + .../kamelets/twitter-timeline-source.svg | 6 + .../ROOT/kamelet-binding-sink-source.tmpl | 10 +- docs/modules/ROOT/nav.adoc | 32 +- .../ROOT/pages/avro-deserialize-action.adoc | 28 +- .../ROOT/pages/avro-serialize-action.adoc | 20 +- .../ROOT/pages/aws-cloudwatch-sink.adoc | 163 -- docs/modules/ROOT/pages/aws-ddb-sink.adoc | 53 +- .../ROOT/pages/aws-ddb-streams-source.adoc | 156 -- .../ROOT/pages/aws-kinesis-firehose-sink.adoc | 153 -- docs/modules/ROOT/pages/aws-kinesis-sink.adoc | 42 +- .../ROOT/pages/aws-kinesis-source.adoc | 42 +- docs/modules/ROOT/pages/aws-lambda-sink.adoc | 38 +- .../modules/ROOT/pages/aws-redshift-sink.adoc | 28 +- docs/modules/ROOT/pages/aws-s3-sink.adoc | 43 +- docs/modules/ROOT/pages/aws-s3-source.adoc | 52 +- .../pages/aws-s3-streaming-upload-sink.adoc | 41 +- docs/modules/ROOT/pages/aws-sns-sink.adoc | 43 +- .../modules/ROOT/pages/aws-sqs-fifo-sink.adoc | 39 +- docs/modules/ROOT/pages/aws-sqs-sink.adoc | 41 +- docs/modules/ROOT/pages/aws-sqs-source.adoc | 47 +- .../ROOT/pages/azure-servicebus-sink.adoc | 147 -- .../ROOT/pages/azure-servicebus-source.adoc | 151 -- .../pages/azure-storage-blob-append-sink.adoc | 151 -- .../ROOT/pages/azure-storage-blob-sink.adoc | 25 +- .../ROOT/pages/azure-storage-blob-source.adoc | 27 +- .../pages/azure-storage-datalake-sink.adoc | 158 ++ .../pages/azure-storage-datalake-source.adoc | 159 ++ .../ROOT/pages/azure-storage-queue-sink.adoc | 20 +- .../pages/azure-storage-queue-source.adoc | 20 +- docs/modules/ROOT/pages/cassandra-sink.adoc | 36 +- docs/modules/ROOT/pages/cassandra-source.adoc | 35 +- docs/modules/ROOT/pages/ceph-sink.adoc | 8 +- docs/modules/ROOT/pages/ceph-source.adoc | 8 +- ...ttle-action.adoc => data-type-action.adoc} | 65 +- .../ROOT/pages/elasticsearch-index-sink.adoc | 37 +- .../ROOT/pages/extract-field-action.adoc | 34 +- docs/modules/ROOT/pages/ftp-sink.adoc | 32 +- docs/modules/ROOT/pages/ftp-source.adoc | 27 +- docs/modules/ROOT/pages/ftps-sink.adoc | 162 -- docs/modules/ROOT/pages/ftps-source.adoc | 157 -- .../ROOT/pages/has-header-filter-action.adoc | 20 +- .../ROOT/pages/hoist-field-action.adoc | 14 +- docs/modules/ROOT/pages/http-sink.adoc | 14 +- docs/modules/ROOT/pages/index.adoc | 11 - .../ROOT/pages/insert-field-action.adoc | 24 +- .../ROOT/pages/insert-header-action.adoc | 26 +- .../pages/is-tombstone-filter-action.adoc | 12 +- .../ROOT/pages/jira-add-comment-sink.adoc | 19 +- .../ROOT/pages/jira-add-issue-sink.adoc | 31 +- docs/modules/ROOT/pages/jira-source.adoc | 31 +- .../pages/jira-transition-issue-sink.adoc | 23 +- .../ROOT/pages/jira-update-issue-sink.adoc | 31 +- docs/modules/ROOT/pages/jms-amqp-10-sink.adoc | 22 +- .../ROOT/pages/jms-amqp-10-source.adoc | 22 +- docs/modules/ROOT/pages/jms-ibm-mq-sink.adoc | 16 +- .../modules/ROOT/pages/jms-ibm-mq-source.adoc | 18 +- docs/modules/ROOT/pages/jslt-action.adoc | 12 +- .../ROOT/pages/json-deserialize-action.adoc | 13 +- .../ROOT/pages/json-serialize-action.adoc | 13 +- .../pages/kafka-manual-commit-action.adoc | 146 -- docs/modules/ROOT/pages/kafka-scram-sink.adoc | 163 ++ .../ROOT/pages/kafka-scram-source.adoc | 162 ++ docs/modules/ROOT/pages/kafka-sink.adoc | 20 +- docs/modules/ROOT/pages/kafka-source.adoc | 24 +- docs/modules/ROOT/pages/log-action.adoc | 165 ++ docs/modules/ROOT/pages/log-sink.adoc | 21 +- docs/modules/ROOT/pages/mariadb-sink.adoc | 31 +- .../modules/ROOT/pages/mask-field-action.adoc | 14 +- .../message-timestamp-router-action.adoc | 14 +- docs/modules/ROOT/pages/mongodb-sink.adoc | 35 +- docs/modules/ROOT/pages/mongodb-source.adoc | 43 +- docs/modules/ROOT/pages/mysql-sink.adoc | 31 +- docs/modules/ROOT/pages/postgresql-sink.adoc | 28 +- .../ROOT/pages/predicate-filter-action.adoc | 14 +- .../pages/protobuf-deserialize-action.adoc | 24 +- .../ROOT/pages/protobuf-serialize-action.adoc | 20 +- .../ROOT/pages/regex-router-action.adoc | 14 +- .../ROOT/pages/replace-field-action.adoc | 26 +- .../pages/resolve-pojo-schema-action.adoc | 159 ++ .../salesforce-composite-upsert-sink.adoc | 166 ++ .../ROOT/pages/salesforce-create-sink.adoc | 25 +- .../ROOT/pages/salesforce-delete-sink.adoc | 24 +- .../modules/ROOT/pages/salesforce-source.adoc | 25 +- .../ROOT/pages/salesforce-update-sink.adoc | 43 +- docs/modules/ROOT/pages/sftp-sink.adoc | 43 +- docs/modules/ROOT/pages/sftp-source.adoc | 43 +- .../ROOT/pages/simple-filter-action.adoc | 12 +- docs/modules/ROOT/pages/slack-source.adoc | 17 +- docs/modules/ROOT/pages/splunk-hec-sink.adoc | 156 -- docs/modules/ROOT/pages/splunk-sink.adoc | 160 -- docs/modules/ROOT/pages/splunk-source.adoc | 172 --- docs/modules/ROOT/pages/sqlserver-sink.adoc | 33 +- docs/modules/ROOT/pages/telegram-source.adoc | 16 +- docs/modules/ROOT/pages/timer-source.adoc | 16 +- .../ROOT/pages/timestamp-router-action.adoc | 14 +- .../topic-name-matches-filter-action.adoc | 12 +- .../pages/twitter-directmessage-source.adoc | 159 ++ .../ROOT/pages/twitter-search-source.adoc | 159 ++ .../ROOT/pages/twitter-timeline-source.adoc | 159 ++ .../ROOT/pages/value-to-key-action.adoc | 16 +- ftps-sink.kamelet.yaml | 93 -- ftps-source.kamelet.yaml | 92 -- http-sink.kamelet.yaml | 44 - insert-header-action.kamelet.yaml | 38 - is-tombstone-filter-action.kamelet.yaml | 27 - jms-ibm-mq-sink.kamelet.yaml | 102 -- jms-ibm-mq-source.kamelet.yaml | 102 -- jslt-action.kamelet.yaml | 37 - json-deserialize-action.kamelet.yaml | 30 - json-serialize-action.kamelet.yaml | 31 - kafka-manual-commit-action.kamelet.yaml | 24 - .../avro-deserialize-action.kamelet.yaml | 47 +- .../avro-serialize-action.kamelet.yaml | 47 +- .../aws-ddb-sink.kamelet.yaml | 65 +- .../aws-kinesis-sink.kamelet.yaml | 68 +- kamelets/aws-kinesis-source.kamelet.yaml | 125 ++ .../aws-lambda-sink.kamelet.yaml | 45 +- .../aws-redshift-sink.kamelet.yaml | 46 +- kamelets/aws-s3-sink.kamelet.yaml | 143 ++ kamelets/aws-s3-source.kamelet.yaml | 141 ++ .../aws-s3-streaming-upload-sink.kamelet.yaml | 62 +- .../aws-sns-sink.kamelet.yaml | 73 +- kamelets/aws-sqs-fifo-sink.kamelet.yaml | 175 +++ kamelets/aws-sqs-sink.kamelet.yaml | 124 ++ kamelets/aws-sqs-source.kamelet.yaml | 174 +++ .../azure-storage-blob-sink.kamelet.yaml | 17 +- .../azure-storage-blob-source.kamelet.yaml | 68 +- .../azure-storage-datalake-sink.kamelet.yaml | 113 ++ ...azure-storage-datalake-source.kamelet.yaml | 100 ++ .../azure-storage-queue-sink.kamelet.yaml | 39 +- .../azure-storage-queue-source.kamelet.yaml | 49 +- .../cassandra-sink.kamelet.yaml | 65 +- .../cassandra-source.kamelet.yaml | 56 +- .../ceph-sink.kamelet.yaml | 23 +- .../ceph-source.kamelet.yaml | 23 +- kamelets/data-type-action.kamelet.yaml | 72 + .../elasticsearch-index-sink.kamelet.yaml | 67 +- .../extract-field-action.kamelet.yaml | 79 +- .../ftp-sink.kamelet.yaml | 65 +- .../ftp-source.kamelet.yaml | 64 +- .../has-header-filter-action.kamelet.yaml | 26 +- .../hoist-field-action.kamelet.yaml | 28 +- kamelets/http-sink.kamelet.yaml | 63 + .../insert-field-action.kamelet.yaml | 46 +- .../insert-header-action.kamelet.yaml | 40 +- .../is-tombstone-filter-action.kamelet.yaml | 45 + .../jira-add-comment-sink.kamelet.yaml | 41 +- .../jira-add-issue-sink.kamelet.yaml | 41 +- .../jira-source.kamelet.yaml | 50 +- .../jira-transition-issue-sink.kamelet.yaml | 41 +- .../jira-update-issue-sink.kamelet.yaml | 41 +- .../jms-amqp-10-sink.kamelet.yaml | 39 +- .../jms-amqp-10-source.kamelet.yaml | 39 +- kamelets/jms-ibm-mq-sink.kamelet.yaml | 120 ++ kamelets/jms-ibm-mq-source.kamelet.yaml | 120 ++ kamelets/jslt-action.kamelet.yaml | 55 + kamelets/json-deserialize-action.kamelet.yaml | 49 + kamelets/json-serialize-action.kamelet.yaml | 50 + kamelets/kafka-scram-sink.kamelet.yaml | 120 ++ kamelets/kafka-scram-source.kamelet.yaml | 154 ++ .../kafka-sink.kamelet.yaml | 32 +- .../kafka-source.kamelet.yaml | 69 +- kamelets/log-action.kamelet.yaml | 149 ++ kamelets/log-sink.kamelet.yaml | 149 ++ .../mariadb-sink.kamelet.yaml | 65 +- .../mask-field-action.kamelet.yaml | 28 +- ...ssage-timestamp-router-action.kamelet.yaml | 30 +- .../mongodb-sink.kamelet.yaml | 80 +- kamelets/mongodb-source.kamelet.yaml | 126 ++ kamelets/mysql-sink.kamelet.yaml | 114 ++ .../postgresql-sink.kamelet.yaml | 58 +- kamelets/predicate-filter-action.kamelet.yaml | 54 + .../protobuf-deserialize-action.kamelet.yaml | 62 + .../protobuf-serialize-action.kamelet.yaml | 63 + kamelets/regex-router-action.kamelet.yaml | 61 + .../replace-field-action.kamelet.yaml | 44 +- .../resolve-pojo-schema-action.kamelet.yaml | 76 + ...esforce-composite-upsert-sink.kamelet.yaml | 123 ++ .../salesforce-create-sink.kamelet.yaml | 42 +- .../salesforce-delete-sink.kamelet.yaml | 40 +- .../salesforce-source.kamelet.yaml | 87 +- .../salesforce-update-sink.kamelet.yaml | 75 +- .../sftp-sink.kamelet.yaml | 98 +- .../sftp-source.kamelet.yaml | 115 +- .../simple-filter-action.kamelet.yaml | 8 +- .../slack-source.kamelet.yaml | 40 +- .../sqlserver-sink.kamelet.yaml | 76 +- .../telegram-source.kamelet.yaml | 30 +- .../timer-source.kamelet.yaml | 17 +- .../timestamp-router-action.kamelet.yaml | 24 +- ...ic-name-matches-filter-action.kamelet.yaml | 52 + .../twitter-directmessage-source.kamelet.yaml | 101 ++ kamelets/twitter-search-source.kamelet.yaml | 101 ++ kamelets/twitter-timeline-source.kamelet.yaml | 102 ++ .../value-to-key-action.kamelet.yaml | 30 +- library/camel-kamelets-bom/pom.xml | 4 +- library/camel-kamelets-catalog/pom.xml | 87 +- .../kamelets/catalog/KameletsCatalog.java | 91 +- .../model/KameletAnnotationsNames.java | 1 + .../model/KameletPrefixSchemeEnum.java | 127 ++ .../kamelets/aws-cloudwatch-sink.kamelet.yaml | 151 -- .../aws-ddb-streams-source.kamelet.yaml | 101 -- .../aws-kinesis-firehose-sink.kamelet.yaml | 69 - .../kamelets/aws-kinesis-source.kamelet.yaml | 75 - .../kamelets/aws-s3-sink.kamelet.yaml | 101 -- .../kamelets/aws-s3-source.kamelet.yaml | 84 - .../kamelets/aws-sqs-fifo-sink.kamelet.yaml | 123 -- .../kamelets/aws-sqs-sink.kamelet.yaml | 78 - .../kamelets/aws-sqs-source.kamelet.yaml | 91 -- .../azure-servicebus-sink.kamelet.yaml | 67 - .../azure-servicebus-source.kamelet.yaml | 82 - .../azure-storage-blob-sink.kamelet.yaml | 85 - .../resources/kamelets/ftps-sink.kamelet.yaml | 93 -- .../kamelets/ftps-source.kamelet.yaml | 92 -- .../resources/kamelets/http-sink.kamelet.yaml | 44 - .../insert-header-action.kamelet.yaml | 38 - .../is-tombstone-filter-action.kamelet.yaml | 27 - .../kamelets/jms-ibm-mq-sink.kamelet.yaml | 102 -- .../kamelets/jms-ibm-mq-source.kamelet.yaml | 102 -- .../kamelets/jslt-action.kamelet.yaml | 37 - .../json-deserialize-action.kamelet.yaml | 30 - .../json-serialize-action.kamelet.yaml | 31 - .../kafka-manual-commit-action.kamelet.yaml | 24 - .../resources/kamelets/log-sink.kamelet.yaml | 44 - .../kamelets/mongodb-source.kamelet.yaml | 85 - .../kamelets/mysql-sink.kamelet.yaml | 95 -- .../predicate-filter-action.kamelet.yaml | 36 - .../protobuf-deserialize-action.kamelet.yaml | 45 - .../protobuf-serialize-action.kamelet.yaml | 46 - .../kamelets/regex-router-action.kamelet.yaml | 43 - .../kamelets/splunk-hec-sink.kamelet.yaml | 106 -- .../kamelets/splunk-sink.kamelet.yaml | 105 -- .../kamelets/splunk-source.kamelet.yaml | 143 -- ...ic-name-matches-filter-action.kamelet.yaml | 34 - .../kamelets/catalog/KameletsCatalogTest.java | 192 ++- .../src/test/resources/log4j2-test.xml | 19 + library/camel-kamelets-utils/pom.xml | 41 +- .../camel/kamelets/utils/format/MimeType.java | 53 + .../kamelets/utils/format/SchemaType.java | 49 + .../converter/avro/Avro.java} | 22 +- .../converter/avro/AvroBinaryDataType.java | 83 + .../converter/avro/AvroSchemaResolver.java | 160 ++ .../converter/avro/AvroStructDataType.java | 72 + .../aws2/ddb/Ddb2JsonInputType.java} | 120 +- .../aws2/s3/AWS2S3CloudEventOutputType.java | 46 + .../http/HttpCloudEventOutputType.java | 54 + .../utils/format/converter/json/Json.java | 29 + .../format/converter/json/JsonDataType.java | 51 + .../converter/json/JsonFormatSchema.java | 22 + .../converter/json/JsonSchemaResolver.java | 155 ++ .../converter/json/JsonStructDataType.java | 61 + .../converter/pojo/JavaObjectDataType.java | 108 ++ .../format/converter/protobuf/Protobuf.java | 29 + .../protobuf/ProtobufSchemaResolver.java | 159 ++ .../format/converter/utils/CloudEvents.java | 45 + .../format/converter/utils/PojoHelper.java | 89 ++ .../format/converter/utils/SchemaHelper.java | 34 + .../schema/DelegatingSchemaResolver.java | 119 ++ .../headers/DeDuplicateNamingHeaders.java | 108 ++ .../utils/headers/DuplicateNamingHeaders.java | 108 ++ .../utils/mongodb/SslAwareMongoClient.java | 245 +++ .../InflightProtobufSchemaResolver.java | 41 - .../kafka/KafkaHeaderDeserializer.java | 30 +- .../utils/transform/ExtractField.java | 83 +- .../kamelets/utils/transform/HoistField.java | 1 - .../kamelets/utils/transform/InsertField.java | 40 +- .../kamelets/utils/transform/MaskField.java | 2 +- .../transform/MessageTimestampRouter.java | 1 - .../utils/transform/ReplaceField.java | 2 +- .../utils/transform/kafka/ValueToKey.java | 2 +- .../org/apache/camel/DataTypeConverter | 25 + .../datatype/transformer/application-json | 18 + .../transformer/application-x-java-object | 18 + .../datatype/transformer/application-x-struct | 18 + .../camel/datatype/transformer/avro-binary | 18 + .../camel/datatype/transformer/avro-x-struct | 18 + .../transformer/aws2-ddb-application-json | 18 + .../aws2-s3-application-cloudevents | 18 + .../transformer/http-application-cloudevents | 18 + .../aws2/ddb/Ddb2JsonInputTypeTest.java} | 114 +- .../http/HttpCloudEventOutputTypeTest.java | 70 + .../utils/headers/DeDuplicateHeadersTest.java | 96 ++ .../utils/headers/DuplicateHeadersTest.java | 75 + .../kafka/KafkaHeaderDeserializerTest.java | 38 +- .../utils/transform/ExtractFieldTest.java | 80 +- .../utils/transform/HoistFieldTest.java | 5 - .../utils/transform/InsertFieldTest.java | 7 +- .../utils/transform/MaskFieldTest.java | 16 + .../utils/transform/RegexRouterTest.java | 3 - .../src/test/resources/log4j2-test.xml | 32 + library/camel-kamelets/pom.xml | 66 + .../avro-deserialize-action.kamelet.yaml | 47 +- .../avro-serialize-action.kamelet.yaml | 47 +- .../kamelets/aws-ddb-sink.kamelet.yaml | 65 +- .../kamelets/aws-kinesis-sink.kamelet.yaml | 68 +- .../kamelets/aws-kinesis-source.kamelet.yaml | 125 ++ .../kamelets/aws-lambda-sink.kamelet.yaml | 45 +- .../kamelets/aws-redshift-sink.kamelet.yaml | 46 +- .../kamelets/aws-s3-sink.kamelet.yaml | 143 ++ .../kamelets/aws-s3-source.kamelet.yaml | 141 ++ .../aws-s3-streaming-upload-sink.kamelet.yaml | 62 +- .../kamelets/aws-sns-sink.kamelet.yaml | 73 +- .../kamelets/aws-sqs-fifo-sink.kamelet.yaml | 175 +++ .../kamelets/aws-sqs-sink.kamelet.yaml | 124 ++ .../kamelets/aws-sqs-source.kamelet.yaml | 174 +++ .../azure-storage-blob-sink.kamelet.yaml | 17 +- .../azure-storage-blob-source.kamelet.yaml | 68 +- .../azure-storage-datalake-sink.kamelet.yaml | 113 ++ ...azure-storage-datalake-source.kamelet.yaml | 100 ++ .../azure-storage-queue-sink.kamelet.yaml | 39 +- .../azure-storage-queue-source.kamelet.yaml | 49 +- .../kamelets/cassandra-sink.kamelet.yaml | 65 +- .../kamelets/cassandra-source.kamelet.yaml | 56 +- .../resources/kamelets/ceph-sink.kamelet.yaml | 23 +- .../kamelets/ceph-source.kamelet.yaml | 23 +- .../kamelets/data-type-action.kamelet.yaml | 72 + .../elasticsearch-index-sink.kamelet.yaml | 67 +- .../extract-field-action.kamelet.yaml | 79 +- .../resources/kamelets/ftp-sink.kamelet.yaml | 65 +- .../kamelets/ftp-source.kamelet.yaml | 64 +- .../has-header-filter-action.kamelet.yaml | 26 +- .../kamelets/hoist-field-action.kamelet.yaml | 28 +- .../resources/kamelets/http-sink.kamelet.yaml | 63 + .../kamelets/insert-field-action.kamelet.yaml | 46 +- .../insert-header-action.kamelet.yaml | 40 +- .../is-tombstone-filter-action.kamelet.yaml | 45 + .../jira-add-comment-sink.kamelet.yaml | 41 +- .../kamelets/jira-add-issue-sink.kamelet.yaml | 41 +- .../kamelets/jira-source.kamelet.yaml | 50 +- .../jira-transition-issue-sink.kamelet.yaml | 41 +- .../jira-update-issue-sink.kamelet.yaml | 41 +- .../kamelets/jms-amqp-10-sink.kamelet.yaml | 39 +- .../kamelets/jms-amqp-10-source.kamelet.yaml | 39 +- .../kamelets/jms-ibm-mq-sink.kamelet.yaml | 120 ++ .../kamelets/jms-ibm-mq-source.kamelet.yaml | 120 ++ .../kamelets/jslt-action.kamelet.yaml | 55 + .../json-deserialize-action.kamelet.yaml | 49 + .../json-serialize-action.kamelet.yaml | 50 + .../kamelets/kafka-scram-sink.kamelet.yaml | 120 ++ .../kamelets/kafka-scram-source.kamelet.yaml | 154 ++ .../kamelets/kafka-sink.kamelet.yaml | 32 +- .../kamelets/kafka-source.kamelet.yaml | 69 +- .../kamelets/log-action.kamelet.yaml | 149 ++ .../resources/kamelets/log-sink.kamelet.yaml | 149 ++ .../kamelets/mariadb-sink.kamelet.yaml | 65 +- .../kamelets/mask-field-action.kamelet.yaml | 28 +- ...ssage-timestamp-router-action.kamelet.yaml | 30 +- .../kamelets/mongodb-sink.kamelet.yaml | 80 +- .../kamelets/mongodb-source.kamelet.yaml | 126 ++ .../kamelets/mysql-sink.kamelet.yaml | 114 ++ .../kamelets/postgresql-sink.kamelet.yaml | 58 +- .../predicate-filter-action.kamelet.yaml | 54 + .../protobuf-deserialize-action.kamelet.yaml | 62 + .../protobuf-serialize-action.kamelet.yaml | 63 + .../kamelets/regex-router-action.kamelet.yaml | 61 + .../replace-field-action.kamelet.yaml | 44 +- .../resolve-pojo-schema-action.kamelet.yaml | 76 + ...esforce-composite-upsert-sink.kamelet.yaml | 123 ++ .../salesforce-create-sink.kamelet.yaml | 42 +- .../salesforce-delete-sink.kamelet.yaml | 40 +- .../kamelets/salesforce-source.kamelet.yaml | 87 +- .../salesforce-update-sink.kamelet.yaml | 75 +- .../resources/kamelets/sftp-sink.kamelet.yaml | 98 +- .../kamelets/sftp-source.kamelet.yaml | 115 +- .../simple-filter-action.kamelet.yaml | 8 +- .../kamelets/slack-source.kamelet.yaml | 40 +- .../kamelets/sqlserver-sink.kamelet.yaml | 76 +- .../kamelets/telegram-source.kamelet.yaml | 30 +- .../kamelets/timer-source.kamelet.yaml | 17 +- .../timestamp-router-action.kamelet.yaml | 24 +- ...ic-name-matches-filter-action.kamelet.yaml | 52 + .../twitter-directmessage-source.kamelet.yaml | 101 ++ .../twitter-search-source.kamelet.yaml | 101 ++ .../twitter-timeline-source.kamelet.yaml | 102 ++ .../kamelets/value-to-key-action.kamelet.yaml | 30 +- library/kamelets-maven-plugin/pom.xml | 52 +- .../maven/plugin/ValidateKameletsMojo.java | 28 +- log-sink.kamelet.yaml | 44 - mongodb-source.kamelet.yaml | 85 - mysql-sink.kamelet.yaml | 95 -- pom.xml | 53 +- predicate-filter-action.kamelet.yaml | 36 - protobuf-deserialize-action.kamelet.yaml | 45 - protobuf-serialize-action.kamelet.yaml | 46 - regex-router-action.kamelet.yaml | 43 - script/generator/generator.go | 30 +- script/generator/go.mod | 26 +- script/generator/go.sum | 210 +-- script/validator/README.md | 2 +- script/validator/go.mod | 110 +- script/validator/go.sum | 1376 +++-------------- script/validator/validator.go | 87 +- splunk-hec-sink.kamelet.yaml | 106 -- splunk-sink.kamelet.yaml | 105 -- splunk-source.kamelet.yaml | 143 -- .../avro-deserialize-action-binding.yaml | 12 +- .../avro-serialize-action-binding.yaml | 8 +- .../aws-cloudtrail-source-binding.yaml | 18 + .../camel-k/aws-cloudwatch-sink-binding.yaml | 10 +- .../camel-k/aws-ddb-sink-binding.yaml | 6 +- .../aws-ddb-streams-source-binding.yaml | 6 +- .../camel-k/aws-ec2-sink-binding.yaml | 18 + .../camel-k/aws-eventbridge-sink-binding.yaml | 19 + .../aws-kinesis-firehose-sink-binding.yaml | 10 +- .../camel-k/aws-kinesis-sink-binding.yaml | 8 +- .../camel-k/aws-kinesis-source-binding.yaml | 8 +- .../camel-k/aws-lambda-sink-binding.yaml | 8 +- .../camel-k/aws-redshift-sink-binding.yaml | 4 +- .../camel-k/aws-redshift-source-binding.yaml | 22 + .../camel-k/aws-s3-cdc-source-binding.yaml | 21 + .../bindings/camel-k/aws-s3-sink-binding.yaml | 8 +- .../camel-k/aws-s3-source-binding.yaml | 8 +- .../aws-s3-streaming-upload-sink-binding.yaml | 8 +- .../aws-secrets-manager-sink-binding.yaml | 18 + .../camel-k/aws-ses-sink-binding.yaml | 19 + .../camel-k/aws-sns-fifo-sink-binding.yaml | 19 + .../camel-k/aws-sns-sink-binding.yaml | 8 +- .../camel-k/aws-sqs-batch-sink-binding.yaml | 20 + .../camel-k/aws-sqs-fifo-sink-binding.yaml | 8 +- .../camel-k/aws-sqs-sink-binding.yaml | 8 +- .../camel-k/aws-sqs-source-binding.yaml | 8 +- .../camel-k/aws-translate-action-binding.yaml | 26 + .../camel-k/azure-cosmosdb-sink-binding.yaml | 21 + .../azure-cosmosdb-source-binding.yaml | 21 + .../camel-k/azure-eventhubs-sink-binding.yaml | 21 + .../azure-eventhubs-source-binding.yaml | 24 + .../camel-k/azure-functions-sink-binding.yaml | 18 + .../azure-servicebus-sink-binding.yaml | 4 +- .../azure-servicebus-source-binding.yaml | 4 +- ...zure-storage-blob-append-sink-binding.yaml | 4 +- ...azure-storage-blob-cdc-source-binding.yaml | 22 + ...torage-blob-changefeed-source-binding.yaml | 19 + .../azure-storage-blob-sink-binding.yaml | 5 +- .../azure-storage-blob-source-binding.yaml | 5 +- .../azure-storage-datalake-sink-binding.yaml | 22 + ...azure-storage-datalake-source-binding.yaml | 22 + .../azure-storage-queue-sink-binding.yaml | 4 +- .../azure-storage-queue-source-binding.yaml | 4 +- .../bindings/camel-k/beer-source-binding.yaml | 16 + .../camel-k/bitcoin-source-binding.yaml | 16 + .../camel-k/caffeine-action-binding.yaml | 22 + .../camel-k/cassandra-sink-binding.yaml | 6 +- .../camel-k/cassandra-source-binding.yaml | 6 +- .../bindings/camel-k/ceph-sink-binding.yaml | 4 +- .../bindings/camel-k/ceph-source-binding.yaml | 4 +- .../camel-k/chuck-norris-source-binding.yaml | 16 + .../chunk-template-action-binding.yaml | 24 + .../camel-k/couchbase-sink-binding.yaml | 20 + .../bindings/camel-k/cron-source-binding.yaml | 19 + .../camel-k/data-type-action-binding.yaml | 24 + .../camel-k/delay-action-binding.yaml | 24 + .../camel-k/dns-dig-action-binding.yaml | 22 + .../camel-k/dns-ip-action-binding.yaml | 22 + .../camel-k/dns-lookup-action-binding.yaml | 22 + .../camel-k/drop-header-action-binding.yaml | 24 + .../camel-k/drop-headers-action-binding.yaml | 24 + .../camel-k/dropbox-sink-binding.yaml | 20 + .../camel-k/dropbox-source-binding.yaml | 21 + .../camel-k/earthquake-source-binding.yaml | 16 + .../elasticsearch-index-sink-binding.yaml | 4 +- .../elasticsearch-search-source-binding.yaml | 21 + .../bindings/camel-k/exec-sink-binding.yaml | 18 + .../camel-k/extract-field-action-binding.yaml | 6 +- .../bindings/camel-k/fhir-sink-binding.yaml | 19 + .../bindings/camel-k/fhir-source-binding.yaml | 20 + .../camel-k/file-watch-source-binding.yaml | 18 + .../freemarker-template-action-binding.yaml | 24 + .../bindings/camel-k/ftp-sink-binding.yaml | 4 +- .../bindings/camel-k/ftp-source-binding.yaml | 4 +- .../bindings/camel-k/ftps-sink-binding.yaml | 4 +- .../bindings/camel-k/ftps-source-binding.yaml | 4 +- .../camel-k/github-commit-source-binding.yaml | 21 + .../camel-k/github-event-source-binding.yaml | 20 + ...ub-pullrequest-comment-source-binding.yaml | 20 + .../github-pullrequest-source-binding.yaml | 20 + .../camel-k/github-tag-source-binding.yaml | 20 + .../camel-k/google-bigquery-sink-binding.yaml | 21 + .../google-calendar-source-binding.yaml | 24 + .../google-functions-sink-binding.yaml | 21 + .../camel-k/google-mail-source-binding.yaml | 23 + .../camel-k/google-pubsub-sink-binding.yaml | 19 + .../camel-k/google-pubsub-source-binding.yaml | 19 + .../camel-k/google-sheets-source-binding.yaml | 22 + .../google-storage-cdc-source-binding.yaml | 21 + .../camel-k/google-storage-sink-binding.yaml | 18 + .../google-storage-source-binding.yaml | 18 + .../camel-k/graphql-sink-binding.yaml | 18 + .../has-header-filter-action-binding.yaml | 8 +- .../header-matches-filter-action-binding.yaml | 24 + .../camel-k/hoist-field-action-binding.yaml | 6 +- .../camel-k/http-secured-sink-binding.yaml | 18 + .../camel-k/http-secured-source-binding.yaml | 18 + .../bindings/camel-k/http-sink-binding.yaml | 4 +- .../bindings/camel-k/http-source-binding.yaml | 18 + .../camel-k/infinispan-sink-binding.yaml | 21 + .../camel-k/infinispan-source-binding.yaml | 21 + .../camel-k/insert-field-action-binding.yaml | 8 +- .../camel-k/insert-header-action-binding.yaml | 8 +- .../is-tombstone-filter-action-binding.yaml | 6 +- .../jira-add-comment-sink-binding.yaml | 6 +- .../camel-k/jira-add-issue-sink-binding.yaml | 12 +- .../camel-k/jira-oauth-source-binding.yaml | 23 + .../bindings/camel-k/jira-source-binding.yaml | 6 +- .../jira-transition-issue-sink-binding.yaml | 8 +- .../jira-update-issue-sink-binding.yaml | 12 +- .../camel-k/jms-amqp-10-sink-binding.yaml | 4 +- .../camel-k/jms-amqp-10-source-binding.yaml | 4 +- .../jms-apache-artemis-sink-binding.yaml | 19 + .../jms-apache-artemis-source-binding.yaml | 19 + .../camel-k/jms-ibm-mq-sink-binding.yaml | 4 +- .../camel-k/jms-ibm-mq-source-binding.yaml | 4 +- .../jolt-transformation-action-binding.yaml | 24 + .../bindings/camel-k/jslt-action-binding.yaml | 6 +- .../json-deserialize-action-binding.yaml | 6 +- .../camel-k/json-patch-action-binding.yaml | 24 + .../json-schema-validator-action-binding.yaml | 24 + .../json-serialize-action-binding.yaml | 6 +- .../camel-k/jsonata-action-binding.yaml | 24 + .../kafka-manual-commit-action-binding.yaml | 6 +- .../kafka-not-secured-sink-binding.yaml | 19 + .../kafka-not-secured-source-binding.yaml | 19 + .../camel-k/kafka-scram-sink-binding.yaml | 21 + .../camel-k/kafka-scram-source-binding.yaml | 21 + .../bindings/camel-k/kafka-sink-binding.yaml | 6 +- .../camel-k/kafka-source-binding.yaml | 6 +- .../camel-k/kafka-ssl-sink-binding.yaml | 23 + .../camel-k/kafka-ssl-source-binding.yaml | 21 + .../kubernetes-namespaces-source-binding.yaml | 19 + .../kubernetes-nodes-source-binding.yaml | 19 + .../kubernetes-pods-source-binding.yaml | 19 + .../bindings/camel-k/log-action-binding.yaml | 22 + .../bindings/camel-k/log-sink-binding.yaml | 4 +- .../camel-k/mail-imap-source-binding.yaml | 20 + .../bindings/camel-k/mail-sink-binding.yaml | 20 + .../camel-k/mariadb-sink-binding.yaml | 4 +- .../camel-k/mariadb-source-binding.yaml | 22 + .../camel-k/mask-field-action-binding.yaml | 6 +- ...ssage-timestamp-router-action-binding.yaml | 6 +- .../bindings/camel-k/minio-sink-binding.yaml | 21 + .../camel-k/minio-source-binding.yaml | 21 + ...mongodb-changes-stream-source-binding.yaml | 20 + .../camel-k/mongodb-sink-binding.yaml | 4 +- .../camel-k/mongodb-source-binding.yaml | 6 +- .../bindings/camel-k/mqtt-sink-binding.yaml | 19 + .../bindings/camel-k/mqtt-source-binding.yaml | 19 + .../bindings/camel-k/mqtt5-sink-binding.yaml | 19 + .../camel-k/mqtt5-source-binding.yaml | 19 + ...ange-online-imap-oauth-source-binding.yaml | 21 + .../mustache-template-action-binding.yaml | 24 + .../camel-k/mvel-template-action-binding.yaml | 24 + .../bindings/camel-k/mysql-sink-binding.yaml | 4 +- .../camel-k/mysql-source-binding.yaml | 22 + .../bindings/camel-k/nats-sink-binding.yaml | 19 + .../bindings/camel-k/nats-source-binding.yaml | 19 + .../nominatim-geocode-action-binding.yaml | 24 + .../ogcapi-features-action-binding.yaml | 25 + .../openai-classification-action-binding.yaml | 24 + .../openai-completion-action-binding.yaml | 24 + .../opensearch-index-sink-binding.yaml | 19 + .../opensearch-search-source-binding.yaml | 21 + .../camel-k/oracle-database-sink-binding.yaml | 22 + .../oracle-database-source-binding.yaml | 22 + .../bindings/camel-k/pdf-action-binding.yaml | 22 + .../camel-k/postgresql-sink-binding.yaml | 4 +- .../camel-k/postgresql-source-binding.yaml | 22 + .../predicate-filter-action-binding.yaml | 6 +- .../protobuf-deserialize-action-binding.yaml | 10 +- .../protobuf-serialize-action-binding.yaml | 8 +- .../bindings/camel-k/pulsar-sink-binding.yaml | 22 + .../camel-k/pulsar-source-binding.yaml | 22 + .../bindings/camel-k/redis-sink-binding.yaml | 19 + .../camel-k/redis-source-binding.yaml | 19 + .../camel-k/regex-router-action-binding.yaml | 6 +- .../camel-k/replace-field-action-binding.yaml | 6 +- .../resolve-pojo-schema-action-binding.yaml | 22 + .../camel-k/rest-openapi-sink-binding.yaml | 19 + ...esforce-composite-upsert-sink-binding.yaml | 23 + .../salesforce-create-sink-binding.yaml | 4 +- .../salesforce-delete-sink-binding.yaml | 4 +- .../camel-k/salesforce-source-binding.yaml | 4 +- .../salesforce-update-sink-binding.yaml | 6 +- .../bindings/camel-k/scp-sink-binding.yaml | 19 + .../camel-k/set-kafka-key-action-binding.yaml | 24 + .../bindings/camel-k/sftp-sink-binding.yaml | 6 +- .../bindings/camel-k/sftp-source-binding.yaml | 6 +- .../camel-k/simple-filter-action-binding.yaml | 6 +- .../bindings/camel-k/slack-sink-binding.yaml | 19 + .../camel-k/slack-source-binding.yaml | 4 +- .../camel-k/splunk-hec-sink-binding.yaml | 4 +- .../bindings/camel-k/splunk-sink-binding.yaml | 4 +- .../camel-k/splunk-source-binding.yaml | 4 +- .../camel-k/sqlserver-sink-binding.yaml | 4 +- .../camel-k/sqlserver-source-binding.yaml | 22 + .../bindings/camel-k/ssh-sink-binding.yaml | 20 + .../bindings/camel-k/ssh-source-binding.yaml | 21 + .../string-template-action-binding.yaml | 24 + .../camel-k/telegram-sink-binding.yaml | 18 + .../camel-k/telegram-source-binding.yaml | 4 +- .../camel-k/throttle-action-binding.yaml | 6 +- .../camel-k/timer-source-binding.yaml | 4 +- .../timestamp-router-action-binding.yaml | 6 +- ...ic-name-matches-filter-action-binding.yaml | 6 +- .../twitter-directmessage-source-binding.yaml | 22 + .../twitter-search-source-binding.yaml | 22 + .../twitter-timeline-source-binding.yaml | 22 + .../camel-k/value-to-key-action-binding.yaml | 6 +- .../velocity-template-action-binding.yaml | 24 + .../camel-k/webhook-source-binding.yaml | 16 + .../camel-k/wttrin-source-binding.yaml | 16 + .../camel-k/xj-identity-action-binding.yaml | 24 + .../camel-k/xj-template-action-binding.yaml | 25 + .../core/aws-cloudtrail-source-binding.yaml | 9 + .../core/aws-cloudwatch-sink-binding.yaml | 6 +- .../bindings/core/aws-ddb-sink-binding.yaml | 2 +- .../core/aws-ddb-streams-source-binding.yaml | 2 +- .../bindings/core/aws-ec2-sink-binding.yaml | 12 + .../core/aws-eventbridge-sink-binding.yaml | 13 + .../aws-kinesis-firehose-sink-binding.yaml | 6 +- .../core/aws-kinesis-sink-binding.yaml | 4 +- .../core/aws-kinesis-source-binding.yaml | 4 +- .../core/aws-lambda-sink-binding.yaml | 4 +- .../core/aws-redshift-source-binding.yaml | 13 + .../core/aws-s3-cdc-source-binding.yaml | 12 + .../bindings/core/aws-s3-sink-binding.yaml | 4 +- .../bindings/core/aws-s3-source-binding.yaml | 4 +- .../aws-s3-streaming-upload-sink-binding.yaml | 4 +- .../aws-secrets-manager-sink-binding.yaml | 12 + .../bindings/core/aws-ses-sink-binding.yaml | 13 + .../core/aws-sns-fifo-sink-binding.yaml | 13 + .../bindings/core/aws-sns-sink-binding.yaml | 4 +- .../core/aws-sqs-batch-sink-binding.yaml | 14 + .../core/aws-sqs-fifo-sink-binding.yaml | 4 +- .../bindings/core/aws-sqs-sink-binding.yaml | 4 +- .../bindings/core/aws-sqs-source-binding.yaml | 4 +- .../core/aws-translate-action-binding.yaml | 15 + .../core/azure-cosmosdb-sink-binding.yaml | 15 + .../core/azure-cosmosdb-source-binding.yaml | 12 + .../core/azure-eventhubs-sink-binding.yaml | 15 + .../core/azure-eventhubs-source-binding.yaml | 15 + .../core/azure-functions-sink-binding.yaml | 12 + ...azure-storage-blob-cdc-source-binding.yaml | 13 + ...torage-blob-changefeed-source-binding.yaml | 10 + .../core/azure-storage-blob-sink-binding.yaml | 1 - .../azure-storage-blob-source-binding.yaml | 1 - .../azure-storage-datalake-sink-binding.yaml | 16 + ...azure-storage-datalake-source-binding.yaml | 13 + .../bindings/core/beer-source-binding.yaml | 7 + .../bindings/core/bitcoin-source-binding.yaml | 7 + .../core/caffeine-action-binding.yaml | 11 + .../bindings/core/cassandra-sink-binding.yaml | 2 - .../core/cassandra-source-binding.yaml | 2 - .../core/chuck-norris-source-binding.yaml | 7 + .../core/chunk-template-action-binding.yaml | 13 + .../bindings/core/couchbase-sink-binding.yaml | 14 + .../bindings/core/cron-source-binding.yaml | 10 + .../core/data-type-action-binding.yaml | 13 + .../bindings/core/delay-action-binding.yaml | 13 + .../bindings/core/dns-dig-action-binding.yaml | 11 + .../bindings/core/dns-ip-action-binding.yaml | 11 + .../core/dns-lookup-action-binding.yaml | 11 + .../core/drop-header-action-binding.yaml | 13 + .../core/drop-headers-action-binding.yaml | 13 + .../bindings/core/dropbox-sink-binding.yaml | 14 + .../bindings/core/dropbox-source-binding.yaml | 12 + .../core/earthquake-source-binding.yaml | 7 + .../elasticsearch-search-source-binding.yaml | 12 + .../bindings/core/exec-sink-binding.yaml | 12 + .../bindings/core/fhir-sink-binding.yaml | 13 + .../bindings/core/fhir-source-binding.yaml | 11 + .../core/file-watch-source-binding.yaml | 9 + .../freemarker-template-action-binding.yaml | 13 + .../core/github-commit-source-binding.yaml | 12 + .../core/github-event-source-binding.yaml | 11 + ...ub-pullrequest-comment-source-binding.yaml | 11 + .../github-pullrequest-source-binding.yaml | 11 + .../core/github-tag-source-binding.yaml | 11 + .../core/google-bigquery-sink-binding.yaml | 15 + .../core/google-calendar-source-binding.yaml | 15 + .../core/google-functions-sink-binding.yaml | 15 + .../core/google-mail-source-binding.yaml | 14 + .../core/google-pubsub-sink-binding.yaml | 13 + .../core/google-pubsub-source-binding.yaml | 10 + .../core/google-sheets-source-binding.yaml | 13 + .../google-storage-cdc-source-binding.yaml | 12 + .../core/google-storage-sink-binding.yaml | 12 + .../core/google-storage-source-binding.yaml | 9 + .../bindings/core/graphql-sink-binding.yaml | 12 + .../header-matches-filter-action-binding.yaml | 13 + .../core/http-secured-sink-binding.yaml | 12 + .../core/http-secured-source-binding.yaml | 9 + .../bindings/core/http-source-binding.yaml | 9 + .../core/infinispan-sink-binding.yaml | 15 + .../core/infinispan-source-binding.yaml | 12 + .../core/insert-header-action-binding.yaml | 2 +- .../core/jira-oauth-source-binding.yaml | 14 + .../bindings/core/jira-source-binding.yaml | 2 - .../core/jms-apache-artemis-sink-binding.yaml | 13 + .../jms-apache-artemis-source-binding.yaml | 10 + .../jolt-transformation-action-binding.yaml | 13 + .../core/json-patch-action-binding.yaml | 13 + .../json-schema-validator-action-binding.yaml | 13 + .../bindings/core/jsonata-action-binding.yaml | 13 + .../core/kafka-not-secured-sink-binding.yaml | 13 + .../kafka-not-secured-source-binding.yaml | 10 + .../core/kafka-scram-sink-binding.yaml | 15 + .../core/kafka-scram-source-binding.yaml | 12 + .../bindings/core/kafka-sink-binding.yaml | 2 +- .../bindings/core/kafka-source-binding.yaml | 2 +- .../bindings/core/kafka-ssl-sink-binding.yaml | 17 + .../core/kafka-ssl-source-binding.yaml | 12 + .../kubernetes-namespaces-source-binding.yaml | 10 + .../core/kubernetes-nodes-source-binding.yaml | 10 + .../core/kubernetes-pods-source-binding.yaml | 10 + .../bindings/core/log-action-binding.yaml | 11 + .../core/mail-imap-source-binding.yaml | 11 + .../bindings/core/mail-sink-binding.yaml | 14 + .../bindings/core/mariadb-source-binding.yaml | 13 + .../bindings/core/minio-sink-binding.yaml | 15 + .../bindings/core/minio-source-binding.yaml | 12 + ...mongodb-changes-stream-source-binding.yaml | 11 + .../bindings/core/mongodb-source-binding.yaml | 2 - .../bindings/core/mqtt-sink-binding.yaml | 13 + .../bindings/core/mqtt-source-binding.yaml | 10 + .../bindings/core/mqtt5-sink-binding.yaml | 13 + .../bindings/core/mqtt5-source-binding.yaml | 10 + ...ange-online-imap-oauth-source-binding.yaml | 12 + .../mustache-template-action-binding.yaml | 13 + .../core/mvel-template-action-binding.yaml | 13 + .../bindings/core/mysql-source-binding.yaml | 13 + .../bindings/core/nats-sink-binding.yaml | 13 + .../bindings/core/nats-source-binding.yaml | 10 + .../nominatim-geocode-action-binding.yaml | 13 + .../core/ogcapi-features-action-binding.yaml | 14 + .../openai-classification-action-binding.yaml | 13 + .../openai-completion-action-binding.yaml | 13 + .../core/opensearch-index-sink-binding.yaml | 13 + .../opensearch-search-source-binding.yaml | 12 + .../core/oracle-database-sink-binding.yaml | 16 + .../core/oracle-database-source-binding.yaml | 13 + .../bindings/core/pdf-action-binding.yaml | 11 + .../core/postgresql-source-binding.yaml | 13 + .../bindings/core/pulsar-sink-binding.yaml | 16 + .../bindings/core/pulsar-source-binding.yaml | 13 + .../bindings/core/redis-sink-binding.yaml | 13 + .../bindings/core/redis-source-binding.yaml | 10 + .../resolve-pojo-schema-action-binding.yaml | 11 + .../core/rest-openapi-sink-binding.yaml | 13 + ...esforce-composite-upsert-sink-binding.yaml | 17 + .../core/salesforce-update-sink-binding.yaml | 2 - templates/bindings/core/scp-sink-binding.yaml | 13 + .../core/set-kafka-key-action-binding.yaml | 13 + .../bindings/core/sftp-sink-binding.yaml | 2 - .../bindings/core/sftp-source-binding.yaml | 2 - .../bindings/core/slack-sink-binding.yaml | 13 + .../core/sqlserver-source-binding.yaml | 13 + templates/bindings/core/ssh-sink-binding.yaml | 14 + .../bindings/core/ssh-source-binding.yaml | 12 + .../core/string-template-action-binding.yaml | 13 + .../bindings/core/telegram-sink-binding.yaml | 12 + .../twitter-directmessage-source-binding.yaml | 13 + .../core/twitter-search-source-binding.yaml | 13 + .../core/twitter-timeline-source-binding.yaml | 13 + .../velocity-template-action-binding.yaml | 13 + .../bindings/core/webhook-source-binding.yaml | 7 + .../bindings/core/wttrin-source-binding.yaml | 7 + .../core/xj-identity-action-binding.yaml | 13 + .../core/xj-template-action-binding.yaml | 14 + test/aws-kinesis/aws-kinesis-to-inmem.yaml | 4 +- test/aws-kinesis/aws-kinesis-uri-binding.yaml | 4 +- test/aws-sqs/aws-sqs-to-inmem.yaml | 4 +- test/aws-sqs/aws-sqs-uri-binding.yaml | 4 +- test/extract-field/extract-field-test.yaml | 6 +- test/ftp/sink/ftp-sink-test.yaml | 8 +- test/ftp/source/ftp-source-test.yaml | 4 +- test/http-sink/http-sink-test.yaml | 6 +- test/insert-field/insert-field-test.yaml | 6 +- test/jira/inmem-to-log.yaml | 4 +- test/jira/jira-to-inmem.yaml | 4 +- test/jira/jira-uri-binding.yaml | 4 +- test/jira/logger-sink.kamelet.yaml | 2 +- test/kafka/kafka-sink-test.yaml | 6 +- test/kafka/kafka-source-test.yaml | 4 +- test/postgresql/postgresql-sink-test.yaml | 6 +- test/salesforce/salesforce-to-inmem.yaml | 4 +- test/salesforce/salesforce-to-uri.yaml | 4 +- test/slack/slack-to-broker.yaml | 4 +- test/slack/slack-to-inmem.yaml | 4 +- test/slack/slack-uri-binding.yaml | 4 +- test/telegram/telegram-to-inmem.yaml | 4 +- test/telegram/telegram-uri-binding.yaml | 4 +- test/utils/broker-to-log.yaml | 2 +- test/utils/inmem-to-log.yaml | 2 +- topic-name-matches-filter-action.kamelet.yaml | 34 - 832 files changed, 21983 insertions(+), 11450 deletions(-) delete mode 100644 aws-cloudwatch-sink.kamelet.yaml delete mode 100644 aws-ddb-streams-source.kamelet.yaml delete mode 100644 aws-kinesis-firehose-sink.kamelet.yaml delete mode 100644 aws-kinesis-source.kamelet.yaml delete mode 100644 aws-s3-sink.kamelet.yaml delete mode 100644 aws-s3-source.kamelet.yaml delete mode 100644 aws-sqs-fifo-sink.kamelet.yaml delete mode 100644 aws-sqs-sink.kamelet.yaml delete mode 100644 aws-sqs-source.kamelet.yaml delete mode 100644 azure-servicebus-sink.kamelet.yaml delete mode 100644 azure-servicebus-source.kamelet.yaml delete mode 100644 azure-storage-blob-sink.kamelet.yaml delete mode 100644 docs/modules/ROOT/assets/images/kamelets/aws-cloudwatch-sink.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/aws-ddb-streams-source.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/aws-kinesis-firehose-sink.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/azure-servicebus-sink.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/azure-servicebus-source.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/azure-storage-blob-append-sink.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/azure-storage-datalake-sink.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/azure-storage-datalake-source.svg rename docs/modules/ROOT/assets/images/kamelets/{kafka-manual-commit-action.svg => data-type-action.svg} (100%) delete mode 100644 docs/modules/ROOT/assets/images/kamelets/ftps-sink.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/ftps-source.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/kafka-scram-sink.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/kafka-scram-source.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/log-action.svg rename docs/modules/ROOT/assets/images/kamelets/{throttle-action.svg => resolve-pojo-schema-action.svg} (100%) create mode 100644 docs/modules/ROOT/assets/images/kamelets/salesforce-composite-upsert-sink.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/splunk-hec-sink.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/splunk-sink.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/splunk-source.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/twitter-directmessage-source.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/twitter-search-source.svg create mode 100644 docs/modules/ROOT/assets/images/kamelets/twitter-timeline-source.svg delete mode 100644 docs/modules/ROOT/pages/aws-cloudwatch-sink.adoc delete mode 100644 docs/modules/ROOT/pages/aws-ddb-streams-source.adoc delete mode 100644 docs/modules/ROOT/pages/aws-kinesis-firehose-sink.adoc delete mode 100644 docs/modules/ROOT/pages/azure-servicebus-sink.adoc delete mode 100644 docs/modules/ROOT/pages/azure-servicebus-source.adoc delete mode 100644 docs/modules/ROOT/pages/azure-storage-blob-append-sink.adoc create mode 100644 docs/modules/ROOT/pages/azure-storage-datalake-sink.adoc create mode 100644 docs/modules/ROOT/pages/azure-storage-datalake-source.adoc rename docs/modules/ROOT/pages/{throttle-action.adoc => data-type-action.adoc} (52%) delete mode 100644 docs/modules/ROOT/pages/ftps-sink.adoc delete mode 100644 docs/modules/ROOT/pages/ftps-source.adoc delete mode 100644 docs/modules/ROOT/pages/index.adoc delete mode 100644 docs/modules/ROOT/pages/kafka-manual-commit-action.adoc create mode 100644 docs/modules/ROOT/pages/kafka-scram-sink.adoc create mode 100644 docs/modules/ROOT/pages/kafka-scram-source.adoc create mode 100644 docs/modules/ROOT/pages/log-action.adoc create mode 100644 docs/modules/ROOT/pages/resolve-pojo-schema-action.adoc create mode 100644 docs/modules/ROOT/pages/salesforce-composite-upsert-sink.adoc delete mode 100644 docs/modules/ROOT/pages/splunk-hec-sink.adoc delete mode 100644 docs/modules/ROOT/pages/splunk-sink.adoc delete mode 100644 docs/modules/ROOT/pages/splunk-source.adoc create mode 100644 docs/modules/ROOT/pages/twitter-directmessage-source.adoc create mode 100644 docs/modules/ROOT/pages/twitter-search-source.adoc create mode 100644 docs/modules/ROOT/pages/twitter-timeline-source.adoc delete mode 100644 ftps-sink.kamelet.yaml delete mode 100644 ftps-source.kamelet.yaml delete mode 100644 http-sink.kamelet.yaml delete mode 100644 insert-header-action.kamelet.yaml delete mode 100644 is-tombstone-filter-action.kamelet.yaml delete mode 100644 jms-ibm-mq-sink.kamelet.yaml delete mode 100644 jms-ibm-mq-source.kamelet.yaml delete mode 100644 jslt-action.kamelet.yaml delete mode 100644 json-deserialize-action.kamelet.yaml delete mode 100644 json-serialize-action.kamelet.yaml delete mode 100644 kafka-manual-commit-action.kamelet.yaml rename avro-deserialize-action.kamelet.yaml => kamelets/avro-deserialize-action.kamelet.yaml (76%) rename avro-serialize-action.kamelet.yaml => kamelets/avro-serialize-action.kamelet.yaml (76%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/aws-ddb-sink.kamelet.yaml (59%) rename aws-kinesis-sink.kamelet.yaml => kamelets/aws-kinesis-sink.kamelet.yaml (59%) create mode 100644 kamelets/aws-kinesis-source.kamelet.yaml rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/aws-lambda-sink.kamelet.yaml (57%) rename aws-redshift-sink.kamelet.yaml => kamelets/aws-redshift-sink.kamelet.yaml (73%) create mode 100644 kamelets/aws-s3-sink.kamelet.yaml create mode 100644 kamelets/aws-s3-source.kamelet.yaml rename aws-s3-streaming-upload-sink.kamelet.yaml => kamelets/aws-s3-streaming-upload-sink.kamelet.yaml (58%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/aws-sns-sink.kamelet.yaml (52%) create mode 100644 kamelets/aws-sqs-fifo-sink.kamelet.yaml create mode 100644 kamelets/aws-sqs-sink.kamelet.yaml create mode 100644 kamelets/aws-sqs-source.kamelet.yaml rename library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml => kamelets/azure-storage-blob-sink.kamelet.yaml (94%) rename azure-storage-blob-source.kamelet.yaml => kamelets/azure-storage-blob-source.kamelet.yaml (71%) create mode 100644 kamelets/azure-storage-datalake-sink.kamelet.yaml create mode 100644 kamelets/azure-storage-datalake-source.kamelet.yaml rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/azure-storage-queue-sink.kamelet.yaml (67%) rename azure-storage-queue-source.kamelet.yaml => kamelets/azure-storage-queue-source.kamelet.yaml (57%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/cassandra-sink.kamelet.yaml (73%) rename cassandra-source.kamelet.yaml => kamelets/cassandra-source.kamelet.yaml (77%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/ceph-sink.kamelet.yaml (87%) rename ceph-source.kamelet.yaml => kamelets/ceph-source.kamelet.yaml (88%) create mode 100644 kamelets/data-type-action.kamelet.yaml rename elasticsearch-index-sink.kamelet.yaml => kamelets/elasticsearch-index-sink.kamelet.yaml (78%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/extract-field-action.kamelet.yaml (57%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/ftp-sink.kamelet.yaml (79%) rename ftp-source.kamelet.yaml => kamelets/ftp-source.kamelet.yaml (78%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/has-header-filter-action.kamelet.yaml (79%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/hoist-field-action.kamelet.yaml (80%) create mode 100644 kamelets/http-sink.kamelet.yaml rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/insert-field-action.kamelet.yaml (73%) rename library/camel-kamelets-catalog/src/main/resources/kamelets/throttle-action.kamelet.yaml => kamelets/insert-header-action.kamelet.yaml (85%) create mode 100644 kamelets/is-tombstone-filter-action.kamelet.yaml rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/jira-add-comment-sink.kamelet.yaml (72%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/jira-add-issue-sink.kamelet.yaml (79%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/jira-source.kamelet.yaml (69%) rename jira-transition-issue-sink.kamelet.yaml => kamelets/jira-transition-issue-sink.kamelet.yaml (74%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/jira-update-issue-sink.kamelet.yaml (79%) rename jms-amqp-10-sink.kamelet.yaml => kamelets/jms-amqp-10-sink.kamelet.yaml (96%) rename jms-amqp-10-source.kamelet.yaml => kamelets/jms-amqp-10-source.kamelet.yaml (96%) create mode 100644 kamelets/jms-ibm-mq-sink.kamelet.yaml create mode 100644 kamelets/jms-ibm-mq-source.kamelet.yaml create mode 100644 kamelets/jslt-action.kamelet.yaml create mode 100644 kamelets/json-deserialize-action.kamelet.yaml create mode 100644 kamelets/json-serialize-action.kamelet.yaml create mode 100644 kamelets/kafka-scram-sink.kamelet.yaml create mode 100644 kamelets/kafka-scram-source.kamelet.yaml rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/kafka-sink.kamelet.yaml (78%) rename kafka-source.kamelet.yaml => kamelets/kafka-source.kamelet.yaml (70%) create mode 100644 kamelets/log-action.kamelet.yaml create mode 100644 kamelets/log-sink.kamelet.yaml rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/mariadb-sink.kamelet.yaml (80%) rename mask-field-action.kamelet.yaml => kamelets/mask-field-action.kamelet.yaml (81%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/message-timestamp-router-action.kamelet.yaml (83%) rename mongodb-sink.kamelet.yaml => kamelets/mongodb-sink.kamelet.yaml (55%) create mode 100644 kamelets/mongodb-source.kamelet.yaml create mode 100644 kamelets/mysql-sink.kamelet.yaml rename postgresql-sink.kamelet.yaml => kamelets/postgresql-sink.kamelet.yaml (82%) create mode 100644 kamelets/predicate-filter-action.kamelet.yaml create mode 100644 kamelets/protobuf-deserialize-action.kamelet.yaml create mode 100644 kamelets/protobuf-serialize-action.kamelet.yaml create mode 100644 kamelets/regex-router-action.kamelet.yaml rename replace-field-action.kamelet.yaml => kamelets/replace-field-action.kamelet.yaml (72%) create mode 100644 kamelets/resolve-pojo-schema-action.kamelet.yaml create mode 100644 kamelets/salesforce-composite-upsert-sink.kamelet.yaml rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/salesforce-create-sink.kamelet.yaml (88%) rename salesforce-delete-sink.kamelet.yaml => kamelets/salesforce-delete-sink.kamelet.yaml (88%) rename salesforce-source.kamelet.yaml => kamelets/salesforce-source.kamelet.yaml (84%) rename salesforce-update-sink.kamelet.yaml => kamelets/salesforce-update-sink.kamelet.yaml (83%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/sftp-sink.kamelet.yaml (69%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/sftp-source.kamelet.yaml (65%) rename simple-filter-action.kamelet.yaml => kamelets/simple-filter-action.kamelet.yaml (95%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/slack-source.kamelet.yaml (68%) rename sqlserver-sink.kamelet.yaml => kamelets/sqlserver-sink.kamelet.yaml (73%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/telegram-source.kamelet.yaml (62%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/timer-source.kamelet.yaml (89%) rename {library/camel-kamelets-catalog/src/main/resources/kamelets => kamelets}/timestamp-router-action.kamelet.yaml (81%) create mode 100644 kamelets/topic-name-matches-filter-action.kamelet.yaml create mode 100644 kamelets/twitter-directmessage-source.kamelet.yaml create mode 100644 kamelets/twitter-search-source.kamelet.yaml create mode 100644 kamelets/twitter-timeline-source.kamelet.yaml rename value-to-key-action.kamelet.yaml => kamelets/value-to-key-action.kamelet.yaml (80%) create mode 100644 library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletPrefixSchemeEnum.java delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-cloudwatch-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/azure-servicebus-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/azure-servicebus-source.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/insert-header-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/jms-ibm-mq-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/jms-ibm-mq-source.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/jslt-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/json-deserialize-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/json-serialize-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-manual-commit-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/log-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-source.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/regex-router-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-hec-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-sink.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-source.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml create mode 100644 library/camel-kamelets-catalog/src/test/resources/log4j2-test.xml create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/MimeType.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/SchemaType.java rename library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/{serialization/InflightAvroSchemaResolver.java => format/converter/avro/Avro.java} (52%) create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroBinaryDataType.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroSchemaResolver.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroStructDataType.java rename library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/{transform/aws/ddb/JsonToDdbModelConverter.java => format/converter/aws2/ddb/Ddb2JsonInputType.java} (58%) create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/aws2/s3/AWS2S3CloudEventOutputType.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/http/HttpCloudEventOutputType.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/Json.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonDataType.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonFormatSchema.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonSchemaResolver.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonStructDataType.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/pojo/JavaObjectDataType.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/protobuf/Protobuf.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/protobuf/ProtobufSchemaResolver.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/CloudEvents.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/PojoHelper.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/SchemaHelper.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/schema/DelegatingSchemaResolver.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/headers/DeDuplicateNamingHeaders.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/headers/DuplicateNamingHeaders.java create mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/mongodb/SslAwareMongoClient.java delete mode 100644 library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java create mode 100644 library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/DataTypeConverter create mode 100644 library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-json create mode 100644 library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-x-java-object create mode 100644 library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-x-struct create mode 100644 library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/avro-binary create mode 100644 library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/avro-x-struct create mode 100644 library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-ddb-application-json create mode 100644 library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents create mode 100644 library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents rename library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/{transform/aws/ddb/JsonToDdbModelConverterTest.java => format/converter/aws2/ddb/Ddb2JsonInputTypeTest.java} (59%) create mode 100644 library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/format/converter/http/HttpCloudEventOutputTypeTest.java create mode 100644 library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/headers/DeDuplicateHeadersTest.java create mode 100644 library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/headers/DuplicateHeadersTest.java create mode 100644 library/camel-kamelets-utils/src/test/resources/log4j2-test.xml create mode 100644 library/camel-kamelets/pom.xml rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml (76%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml (76%) rename aws-ddb-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml (59%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml (59%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml rename aws-lambda-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml (57%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml (73%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml (58%) rename aws-sns-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml (52%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml rename azure-storage-blob-append-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml (94%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml (71%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/azure-storage-datalake-sink.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/azure-storage-datalake-source.kamelet.yaml rename azure-storage-queue-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml (67%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml (57%) rename cassandra-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/cassandra-sink.kamelet.yaml (73%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/cassandra-source.kamelet.yaml (77%) rename ceph-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/ceph-sink.kamelet.yaml (87%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/ceph-source.kamelet.yaml (88%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/data-type-action.kamelet.yaml rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml (78%) rename extract-field-action.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/extract-field-action.kamelet.yaml (57%) rename ftp-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/ftp-sink.kamelet.yaml (79%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/ftp-source.kamelet.yaml (78%) rename has-header-filter-action.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml (79%) rename hoist-field-action.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/hoist-field-action.kamelet.yaml (80%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/http-sink.kamelet.yaml rename insert-field-action.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/insert-field-action.kamelet.yaml (73%) rename throttle-action.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/insert-header-action.kamelet.yaml (85%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml rename jira-add-comment-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml (72%) rename jira-add-issue-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml (79%) rename jira-source.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/jira-source.kamelet.yaml (69%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml (74%) rename jira-update-issue-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml (79%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml (96%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml (96%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/jms-ibm-mq-sink.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/jms-ibm-mq-source.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/jslt-action.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/json-deserialize-action.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/json-serialize-action.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/kafka-scram-sink.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/kafka-scram-source.kamelet.yaml rename kafka-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/kafka-sink.kamelet.yaml (78%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/kafka-source.kamelet.yaml (70%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/log-action.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/log-sink.kamelet.yaml rename mariadb-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/mariadb-sink.kamelet.yaml (80%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/mask-field-action.kamelet.yaml (81%) rename message-timestamp-router-action.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml (83%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/mongodb-sink.kamelet.yaml (55%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/mongodb-source.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/mysql-sink.kamelet.yaml rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/postgresql-sink.kamelet.yaml (82%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/regex-router-action.kamelet.yaml rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/replace-field-action.kamelet.yaml (72%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/resolve-pojo-schema-action.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/salesforce-composite-upsert-sink.kamelet.yaml rename salesforce-create-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml (88%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml (88%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/salesforce-source.kamelet.yaml (84%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml (83%) rename sftp-sink.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/sftp-sink.kamelet.yaml (69%) rename sftp-source.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/sftp-source.kamelet.yaml (65%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/simple-filter-action.kamelet.yaml (95%) rename slack-source.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/slack-source.kamelet.yaml (68%) rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml (73%) rename telegram-source.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/telegram-source.kamelet.yaml (62%) rename timer-source.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/timer-source.kamelet.yaml (89%) rename timestamp-router-action.kamelet.yaml => library/camel-kamelets/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml (81%) create mode 100644 library/camel-kamelets/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/twitter-directmessage-source.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/twitter-search-source.kamelet.yaml create mode 100644 library/camel-kamelets/src/main/resources/kamelets/twitter-timeline-source.kamelet.yaml rename library/{camel-kamelets-catalog => camel-kamelets}/src/main/resources/kamelets/value-to-key-action.kamelet.yaml (80%) delete mode 100644 log-sink.kamelet.yaml delete mode 100644 mongodb-source.kamelet.yaml delete mode 100644 mysql-sink.kamelet.yaml delete mode 100644 predicate-filter-action.kamelet.yaml delete mode 100644 protobuf-deserialize-action.kamelet.yaml delete mode 100644 protobuf-serialize-action.kamelet.yaml delete mode 100644 regex-router-action.kamelet.yaml delete mode 100644 splunk-hec-sink.kamelet.yaml delete mode 100644 splunk-sink.kamelet.yaml delete mode 100644 splunk-source.kamelet.yaml create mode 100644 templates/bindings/camel-k/aws-cloudtrail-source-binding.yaml create mode 100644 templates/bindings/camel-k/aws-ec2-sink-binding.yaml create mode 100644 templates/bindings/camel-k/aws-eventbridge-sink-binding.yaml create mode 100644 templates/bindings/camel-k/aws-redshift-source-binding.yaml create mode 100644 templates/bindings/camel-k/aws-s3-cdc-source-binding.yaml create mode 100644 templates/bindings/camel-k/aws-secrets-manager-sink-binding.yaml create mode 100644 templates/bindings/camel-k/aws-ses-sink-binding.yaml create mode 100644 templates/bindings/camel-k/aws-sns-fifo-sink-binding.yaml create mode 100644 templates/bindings/camel-k/aws-sqs-batch-sink-binding.yaml create mode 100644 templates/bindings/camel-k/aws-translate-action-binding.yaml create mode 100644 templates/bindings/camel-k/azure-cosmosdb-sink-binding.yaml create mode 100644 templates/bindings/camel-k/azure-cosmosdb-source-binding.yaml create mode 100644 templates/bindings/camel-k/azure-eventhubs-sink-binding.yaml create mode 100644 templates/bindings/camel-k/azure-eventhubs-source-binding.yaml create mode 100644 templates/bindings/camel-k/azure-functions-sink-binding.yaml create mode 100644 templates/bindings/camel-k/azure-storage-blob-cdc-source-binding.yaml create mode 100644 templates/bindings/camel-k/azure-storage-blob-changefeed-source-binding.yaml create mode 100644 templates/bindings/camel-k/azure-storage-datalake-sink-binding.yaml create mode 100644 templates/bindings/camel-k/azure-storage-datalake-source-binding.yaml create mode 100644 templates/bindings/camel-k/beer-source-binding.yaml create mode 100644 templates/bindings/camel-k/bitcoin-source-binding.yaml create mode 100644 templates/bindings/camel-k/caffeine-action-binding.yaml create mode 100644 templates/bindings/camel-k/chuck-norris-source-binding.yaml create mode 100644 templates/bindings/camel-k/chunk-template-action-binding.yaml create mode 100644 templates/bindings/camel-k/couchbase-sink-binding.yaml create mode 100644 templates/bindings/camel-k/cron-source-binding.yaml create mode 100644 templates/bindings/camel-k/data-type-action-binding.yaml create mode 100644 templates/bindings/camel-k/delay-action-binding.yaml create mode 100644 templates/bindings/camel-k/dns-dig-action-binding.yaml create mode 100644 templates/bindings/camel-k/dns-ip-action-binding.yaml create mode 100644 templates/bindings/camel-k/dns-lookup-action-binding.yaml create mode 100644 templates/bindings/camel-k/drop-header-action-binding.yaml create mode 100644 templates/bindings/camel-k/drop-headers-action-binding.yaml create mode 100644 templates/bindings/camel-k/dropbox-sink-binding.yaml create mode 100644 templates/bindings/camel-k/dropbox-source-binding.yaml create mode 100644 templates/bindings/camel-k/earthquake-source-binding.yaml create mode 100644 templates/bindings/camel-k/elasticsearch-search-source-binding.yaml create mode 100644 templates/bindings/camel-k/exec-sink-binding.yaml create mode 100644 templates/bindings/camel-k/fhir-sink-binding.yaml create mode 100644 templates/bindings/camel-k/fhir-source-binding.yaml create mode 100644 templates/bindings/camel-k/file-watch-source-binding.yaml create mode 100644 templates/bindings/camel-k/freemarker-template-action-binding.yaml create mode 100644 templates/bindings/camel-k/github-commit-source-binding.yaml create mode 100644 templates/bindings/camel-k/github-event-source-binding.yaml create mode 100644 templates/bindings/camel-k/github-pullrequest-comment-source-binding.yaml create mode 100644 templates/bindings/camel-k/github-pullrequest-source-binding.yaml create mode 100644 templates/bindings/camel-k/github-tag-source-binding.yaml create mode 100644 templates/bindings/camel-k/google-bigquery-sink-binding.yaml create mode 100644 templates/bindings/camel-k/google-calendar-source-binding.yaml create mode 100644 templates/bindings/camel-k/google-functions-sink-binding.yaml create mode 100644 templates/bindings/camel-k/google-mail-source-binding.yaml create mode 100644 templates/bindings/camel-k/google-pubsub-sink-binding.yaml create mode 100644 templates/bindings/camel-k/google-pubsub-source-binding.yaml create mode 100644 templates/bindings/camel-k/google-sheets-source-binding.yaml create mode 100644 templates/bindings/camel-k/google-storage-cdc-source-binding.yaml create mode 100644 templates/bindings/camel-k/google-storage-sink-binding.yaml create mode 100644 templates/bindings/camel-k/google-storage-source-binding.yaml create mode 100644 templates/bindings/camel-k/graphql-sink-binding.yaml create mode 100644 templates/bindings/camel-k/header-matches-filter-action-binding.yaml create mode 100644 templates/bindings/camel-k/http-secured-sink-binding.yaml create mode 100644 templates/bindings/camel-k/http-secured-source-binding.yaml create mode 100644 templates/bindings/camel-k/http-source-binding.yaml create mode 100644 templates/bindings/camel-k/infinispan-sink-binding.yaml create mode 100644 templates/bindings/camel-k/infinispan-source-binding.yaml create mode 100644 templates/bindings/camel-k/jira-oauth-source-binding.yaml create mode 100644 templates/bindings/camel-k/jms-apache-artemis-sink-binding.yaml create mode 100644 templates/bindings/camel-k/jms-apache-artemis-source-binding.yaml create mode 100644 templates/bindings/camel-k/jolt-transformation-action-binding.yaml create mode 100644 templates/bindings/camel-k/json-patch-action-binding.yaml create mode 100644 templates/bindings/camel-k/json-schema-validator-action-binding.yaml create mode 100644 templates/bindings/camel-k/jsonata-action-binding.yaml create mode 100644 templates/bindings/camel-k/kafka-not-secured-sink-binding.yaml create mode 100644 templates/bindings/camel-k/kafka-not-secured-source-binding.yaml create mode 100644 templates/bindings/camel-k/kafka-scram-sink-binding.yaml create mode 100644 templates/bindings/camel-k/kafka-scram-source-binding.yaml create mode 100644 templates/bindings/camel-k/kafka-ssl-sink-binding.yaml create mode 100644 templates/bindings/camel-k/kafka-ssl-source-binding.yaml create mode 100644 templates/bindings/camel-k/kubernetes-namespaces-source-binding.yaml create mode 100644 templates/bindings/camel-k/kubernetes-nodes-source-binding.yaml create mode 100644 templates/bindings/camel-k/kubernetes-pods-source-binding.yaml create mode 100644 templates/bindings/camel-k/log-action-binding.yaml create mode 100644 templates/bindings/camel-k/mail-imap-source-binding.yaml create mode 100644 templates/bindings/camel-k/mail-sink-binding.yaml create mode 100644 templates/bindings/camel-k/mariadb-source-binding.yaml create mode 100644 templates/bindings/camel-k/minio-sink-binding.yaml create mode 100644 templates/bindings/camel-k/minio-source-binding.yaml create mode 100644 templates/bindings/camel-k/mongodb-changes-stream-source-binding.yaml create mode 100644 templates/bindings/camel-k/mqtt-sink-binding.yaml create mode 100644 templates/bindings/camel-k/mqtt-source-binding.yaml create mode 100644 templates/bindings/camel-k/mqtt5-sink-binding.yaml create mode 100644 templates/bindings/camel-k/mqtt5-source-binding.yaml create mode 100644 templates/bindings/camel-k/ms-exchange-online-imap-oauth-source-binding.yaml create mode 100644 templates/bindings/camel-k/mustache-template-action-binding.yaml create mode 100644 templates/bindings/camel-k/mvel-template-action-binding.yaml create mode 100644 templates/bindings/camel-k/mysql-source-binding.yaml create mode 100644 templates/bindings/camel-k/nats-sink-binding.yaml create mode 100644 templates/bindings/camel-k/nats-source-binding.yaml create mode 100644 templates/bindings/camel-k/nominatim-geocode-action-binding.yaml create mode 100644 templates/bindings/camel-k/ogcapi-features-action-binding.yaml create mode 100644 templates/bindings/camel-k/openai-classification-action-binding.yaml create mode 100644 templates/bindings/camel-k/openai-completion-action-binding.yaml create mode 100644 templates/bindings/camel-k/opensearch-index-sink-binding.yaml create mode 100644 templates/bindings/camel-k/opensearch-search-source-binding.yaml create mode 100644 templates/bindings/camel-k/oracle-database-sink-binding.yaml create mode 100644 templates/bindings/camel-k/oracle-database-source-binding.yaml create mode 100644 templates/bindings/camel-k/pdf-action-binding.yaml create mode 100644 templates/bindings/camel-k/postgresql-source-binding.yaml create mode 100644 templates/bindings/camel-k/pulsar-sink-binding.yaml create mode 100644 templates/bindings/camel-k/pulsar-source-binding.yaml create mode 100644 templates/bindings/camel-k/redis-sink-binding.yaml create mode 100644 templates/bindings/camel-k/redis-source-binding.yaml create mode 100644 templates/bindings/camel-k/resolve-pojo-schema-action-binding.yaml create mode 100644 templates/bindings/camel-k/rest-openapi-sink-binding.yaml create mode 100644 templates/bindings/camel-k/salesforce-composite-upsert-sink-binding.yaml create mode 100644 templates/bindings/camel-k/scp-sink-binding.yaml create mode 100644 templates/bindings/camel-k/set-kafka-key-action-binding.yaml create mode 100644 templates/bindings/camel-k/slack-sink-binding.yaml create mode 100644 templates/bindings/camel-k/sqlserver-source-binding.yaml create mode 100644 templates/bindings/camel-k/ssh-sink-binding.yaml create mode 100644 templates/bindings/camel-k/ssh-source-binding.yaml create mode 100644 templates/bindings/camel-k/string-template-action-binding.yaml create mode 100644 templates/bindings/camel-k/telegram-sink-binding.yaml create mode 100644 templates/bindings/camel-k/twitter-directmessage-source-binding.yaml create mode 100644 templates/bindings/camel-k/twitter-search-source-binding.yaml create mode 100644 templates/bindings/camel-k/twitter-timeline-source-binding.yaml create mode 100644 templates/bindings/camel-k/velocity-template-action-binding.yaml create mode 100644 templates/bindings/camel-k/webhook-source-binding.yaml create mode 100644 templates/bindings/camel-k/wttrin-source-binding.yaml create mode 100644 templates/bindings/camel-k/xj-identity-action-binding.yaml create mode 100644 templates/bindings/camel-k/xj-template-action-binding.yaml create mode 100644 templates/bindings/core/aws-cloudtrail-source-binding.yaml create mode 100644 templates/bindings/core/aws-ec2-sink-binding.yaml create mode 100644 templates/bindings/core/aws-eventbridge-sink-binding.yaml create mode 100644 templates/bindings/core/aws-redshift-source-binding.yaml create mode 100644 templates/bindings/core/aws-s3-cdc-source-binding.yaml create mode 100644 templates/bindings/core/aws-secrets-manager-sink-binding.yaml create mode 100644 templates/bindings/core/aws-ses-sink-binding.yaml create mode 100644 templates/bindings/core/aws-sns-fifo-sink-binding.yaml create mode 100644 templates/bindings/core/aws-sqs-batch-sink-binding.yaml create mode 100644 templates/bindings/core/aws-translate-action-binding.yaml create mode 100644 templates/bindings/core/azure-cosmosdb-sink-binding.yaml create mode 100644 templates/bindings/core/azure-cosmosdb-source-binding.yaml create mode 100644 templates/bindings/core/azure-eventhubs-sink-binding.yaml create mode 100644 templates/bindings/core/azure-eventhubs-source-binding.yaml create mode 100644 templates/bindings/core/azure-functions-sink-binding.yaml create mode 100644 templates/bindings/core/azure-storage-blob-cdc-source-binding.yaml create mode 100644 templates/bindings/core/azure-storage-blob-changefeed-source-binding.yaml create mode 100644 templates/bindings/core/azure-storage-datalake-sink-binding.yaml create mode 100644 templates/bindings/core/azure-storage-datalake-source-binding.yaml create mode 100644 templates/bindings/core/beer-source-binding.yaml create mode 100644 templates/bindings/core/bitcoin-source-binding.yaml create mode 100644 templates/bindings/core/caffeine-action-binding.yaml create mode 100644 templates/bindings/core/chuck-norris-source-binding.yaml create mode 100644 templates/bindings/core/chunk-template-action-binding.yaml create mode 100644 templates/bindings/core/couchbase-sink-binding.yaml create mode 100644 templates/bindings/core/cron-source-binding.yaml create mode 100644 templates/bindings/core/data-type-action-binding.yaml create mode 100644 templates/bindings/core/delay-action-binding.yaml create mode 100644 templates/bindings/core/dns-dig-action-binding.yaml create mode 100644 templates/bindings/core/dns-ip-action-binding.yaml create mode 100644 templates/bindings/core/dns-lookup-action-binding.yaml create mode 100644 templates/bindings/core/drop-header-action-binding.yaml create mode 100644 templates/bindings/core/drop-headers-action-binding.yaml create mode 100644 templates/bindings/core/dropbox-sink-binding.yaml create mode 100644 templates/bindings/core/dropbox-source-binding.yaml create mode 100644 templates/bindings/core/earthquake-source-binding.yaml create mode 100644 templates/bindings/core/elasticsearch-search-source-binding.yaml create mode 100644 templates/bindings/core/exec-sink-binding.yaml create mode 100644 templates/bindings/core/fhir-sink-binding.yaml create mode 100644 templates/bindings/core/fhir-source-binding.yaml create mode 100644 templates/bindings/core/file-watch-source-binding.yaml create mode 100644 templates/bindings/core/freemarker-template-action-binding.yaml create mode 100644 templates/bindings/core/github-commit-source-binding.yaml create mode 100644 templates/bindings/core/github-event-source-binding.yaml create mode 100644 templates/bindings/core/github-pullrequest-comment-source-binding.yaml create mode 100644 templates/bindings/core/github-pullrequest-source-binding.yaml create mode 100644 templates/bindings/core/github-tag-source-binding.yaml create mode 100644 templates/bindings/core/google-bigquery-sink-binding.yaml create mode 100644 templates/bindings/core/google-calendar-source-binding.yaml create mode 100644 templates/bindings/core/google-functions-sink-binding.yaml create mode 100644 templates/bindings/core/google-mail-source-binding.yaml create mode 100644 templates/bindings/core/google-pubsub-sink-binding.yaml create mode 100644 templates/bindings/core/google-pubsub-source-binding.yaml create mode 100644 templates/bindings/core/google-sheets-source-binding.yaml create mode 100644 templates/bindings/core/google-storage-cdc-source-binding.yaml create mode 100644 templates/bindings/core/google-storage-sink-binding.yaml create mode 100644 templates/bindings/core/google-storage-source-binding.yaml create mode 100644 templates/bindings/core/graphql-sink-binding.yaml create mode 100644 templates/bindings/core/header-matches-filter-action-binding.yaml create mode 100644 templates/bindings/core/http-secured-sink-binding.yaml create mode 100644 templates/bindings/core/http-secured-source-binding.yaml create mode 100644 templates/bindings/core/http-source-binding.yaml create mode 100644 templates/bindings/core/infinispan-sink-binding.yaml create mode 100644 templates/bindings/core/infinispan-source-binding.yaml create mode 100644 templates/bindings/core/jira-oauth-source-binding.yaml create mode 100644 templates/bindings/core/jms-apache-artemis-sink-binding.yaml create mode 100644 templates/bindings/core/jms-apache-artemis-source-binding.yaml create mode 100644 templates/bindings/core/jolt-transformation-action-binding.yaml create mode 100644 templates/bindings/core/json-patch-action-binding.yaml create mode 100644 templates/bindings/core/json-schema-validator-action-binding.yaml create mode 100644 templates/bindings/core/jsonata-action-binding.yaml create mode 100644 templates/bindings/core/kafka-not-secured-sink-binding.yaml create mode 100644 templates/bindings/core/kafka-not-secured-source-binding.yaml create mode 100644 templates/bindings/core/kafka-scram-sink-binding.yaml create mode 100644 templates/bindings/core/kafka-scram-source-binding.yaml create mode 100644 templates/bindings/core/kafka-ssl-sink-binding.yaml create mode 100644 templates/bindings/core/kafka-ssl-source-binding.yaml create mode 100644 templates/bindings/core/kubernetes-namespaces-source-binding.yaml create mode 100644 templates/bindings/core/kubernetes-nodes-source-binding.yaml create mode 100644 templates/bindings/core/kubernetes-pods-source-binding.yaml create mode 100644 templates/bindings/core/log-action-binding.yaml create mode 100644 templates/bindings/core/mail-imap-source-binding.yaml create mode 100644 templates/bindings/core/mail-sink-binding.yaml create mode 100644 templates/bindings/core/mariadb-source-binding.yaml create mode 100644 templates/bindings/core/minio-sink-binding.yaml create mode 100644 templates/bindings/core/minio-source-binding.yaml create mode 100644 templates/bindings/core/mongodb-changes-stream-source-binding.yaml create mode 100644 templates/bindings/core/mqtt-sink-binding.yaml create mode 100644 templates/bindings/core/mqtt-source-binding.yaml create mode 100644 templates/bindings/core/mqtt5-sink-binding.yaml create mode 100644 templates/bindings/core/mqtt5-source-binding.yaml create mode 100644 templates/bindings/core/ms-exchange-online-imap-oauth-source-binding.yaml create mode 100644 templates/bindings/core/mustache-template-action-binding.yaml create mode 100644 templates/bindings/core/mvel-template-action-binding.yaml create mode 100644 templates/bindings/core/mysql-source-binding.yaml create mode 100644 templates/bindings/core/nats-sink-binding.yaml create mode 100644 templates/bindings/core/nats-source-binding.yaml create mode 100644 templates/bindings/core/nominatim-geocode-action-binding.yaml create mode 100644 templates/bindings/core/ogcapi-features-action-binding.yaml create mode 100644 templates/bindings/core/openai-classification-action-binding.yaml create mode 100644 templates/bindings/core/openai-completion-action-binding.yaml create mode 100644 templates/bindings/core/opensearch-index-sink-binding.yaml create mode 100644 templates/bindings/core/opensearch-search-source-binding.yaml create mode 100644 templates/bindings/core/oracle-database-sink-binding.yaml create mode 100644 templates/bindings/core/oracle-database-source-binding.yaml create mode 100644 templates/bindings/core/pdf-action-binding.yaml create mode 100644 templates/bindings/core/postgresql-source-binding.yaml create mode 100644 templates/bindings/core/pulsar-sink-binding.yaml create mode 100644 templates/bindings/core/pulsar-source-binding.yaml create mode 100644 templates/bindings/core/redis-sink-binding.yaml create mode 100644 templates/bindings/core/redis-source-binding.yaml create mode 100644 templates/bindings/core/resolve-pojo-schema-action-binding.yaml create mode 100644 templates/bindings/core/rest-openapi-sink-binding.yaml create mode 100644 templates/bindings/core/salesforce-composite-upsert-sink-binding.yaml create mode 100644 templates/bindings/core/scp-sink-binding.yaml create mode 100644 templates/bindings/core/set-kafka-key-action-binding.yaml create mode 100644 templates/bindings/core/slack-sink-binding.yaml create mode 100644 templates/bindings/core/sqlserver-source-binding.yaml create mode 100644 templates/bindings/core/ssh-sink-binding.yaml create mode 100644 templates/bindings/core/ssh-source-binding.yaml create mode 100644 templates/bindings/core/string-template-action-binding.yaml create mode 100644 templates/bindings/core/telegram-sink-binding.yaml create mode 100644 templates/bindings/core/twitter-directmessage-source-binding.yaml create mode 100644 templates/bindings/core/twitter-search-source-binding.yaml create mode 100644 templates/bindings/core/twitter-timeline-source-binding.yaml create mode 100644 templates/bindings/core/velocity-template-action-binding.yaml create mode 100644 templates/bindings/core/webhook-source-binding.yaml create mode 100644 templates/bindings/core/wttrin-source-binding.yaml create mode 100644 templates/bindings/core/xj-identity-action-binding.yaml create mode 100644 templates/bindings/core/xj-template-action-binding.yaml delete mode 100644 topic-name-matches-filter-action.kamelet.yaml diff --git a/aws-cloudwatch-sink.kamelet.yaml b/aws-cloudwatch-sink.kamelet.yaml deleted file mode 100644 index 66189e076..000000000 --- a/aws-cloudwatch-sink.kamelet.yaml +++ /dev/null @@ -1,151 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-cloudwatch-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIwNyIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDI5MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTI1NiAxOTkuMzA1bC0xMjcuOTU3LTE4Ljc5N0wwIDE5OS4zMjlsMTI4LjAxIDQ3LjQzOUwyNTYgMTk5LjMwNSIgZmlsbD0iI0I3Q0E5RCIvPjxwYXRoIGQ9Ik0yNS42MjEgMTk3LjExM2wyMS42MyA2Ljc2MSAxLjk3MS0yLjIzOFY1MC4yODRsLTEuOTcxLTIuNTg1LTIxLjYzIDguMjc0djE0MS4xNCIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIGQ9Ik0xMjMuODMyIDE5MC40MjNsLTc2LjU4MSAxMy40NTFWNDcuNzAzbDc2LjU4MSAxNy4yMjJ2MTI1LjQ5OCIgZmlsbD0iIzc1OUMzRSIvPjxwYXRoIGQ9Ik04OS42ODYgMjE2Ljg4OWwtMjkuODQ4LTkuMjAxVjE0LjkyOEw4OS42ODYuMDA0bDIuNjEyIDIuODQ1djIxMC44NThsLTIuNjEyIDMuMTgyIiBmaWxsPSIjNEI2MTJDIi8+PHBhdGggZD0iTTE5MS45NjcgMTkyLjg5NEw4OS42ODYgMjE2Ljg4OVYwbDEwMi4yODEgMzkuODY2djE1My4wMjgiIGZpbGw9IiM3NTlDM0UiLz48cGF0aCBkPSJNMTI3Ljk2NSAyNDQuNzE0TDAgMTk5LjMyOXYyNi4zMjRsMTI3Ljk2NSA2My45ODN2LTQ0LjkyMiIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIGQ9Ik0yNTYgMjI1LjYyMmwtMTI4LjAzNSA2NC4wMTR2LTQ0LjkyMkwyNTYgMTk5LjMwNXYyNi4zMTciIGZpbGw9IiM3NTlDM0UiLz48cGF0aCBkPSJNMjIwLjAzOSAxNTUuNjkyaC0zMS4wMjZsLTg4LjQ0NSA2LjAyNkwxMjggMTY2Ljc3NWw5Mi4wMzktMTEuMDgzIiBmaWxsPSIjQjdDQTlEIi8+PHBhdGggZD0iTTEwMC41NjggMjE5LjkwNmwyNy40MiA4LjIyNi43ODktLjg0OS0uMDIzLTYxLjg0OS0uNzg5LS43NTgtMjcuMzk3LTIuOTU4djU4LjE4OCIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIGQ9Ik0yMjAuMDM5IDE1NS42OTJsLTkyLjA3NCA4Ljk4LjAyMyA2My40NiA5Mi4wNTEtMjcuNzExdi00NC43MjkiIGZpbGw9IiM3NTlDM0UiLz48L3N2Zz4K" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS Cloudwatch" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "AWS CloudWatch Metrics Sink" - description: |- - Send messages to AWS CloudWatch metrics. - - There are several properties you can set in the headers, such as: - - `metric-name` / `ce-metricname` for the metric name. - `metric-value` / `ce-metricvalue` for the metric value. - `metric-unit` / `ce-metricunit` for the metric unit. - `metric-timestamp` / `ce-metrictimestamp` for the metric timestamp. - `metric-dimension-name` / `ce-metricdimensionname` for the dimension name. - `metric-dimension-value` / `ce-metricdimensionvalue` for the dimension value. - required: - - cw_namespace - - accessKey - - secretKey - - region - type: object - properties: - cw_namespace: - title: Cloud Watch Namespace - description: The cloud watch metric namespace. - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to. - type: string - example: eu-west-1 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - camel:core - - "camel:aws2-cw" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - choice: - when: - - simple: "${header[metric-name]}" - steps: - - set-header: - name: CamelAwsCwMetricName - simple: "${header[metric-name]}" - - simple: "${header[ce-metricname]}" - steps: - - set-header: - name: CamelAwsCwMetricName - simple: "${header[ce-metricname]}" - - choice: - when: - - simple: "${header[metric-value]}" - steps: - - set-header: - name: CamelAwsCwMetricValue - simple: "${header[metric-value]}" - - simple: "${header[ce-metricvalue]}" - steps: - - set-header: - name: CamelAwsCwMetricValue - simple: "${header[ce-metricvalue]}" - - choice: - when: - - simple: "${header[metric-unit]}" - steps: - - set-header: - name: CamelAwsCwMetricUnit - simple: "${header[metric-unit]}" - - simple: "${header[ce-metricunit]}" - steps: - - set-header: - name: CamelAwsCwMetricUnit - simple: "${header[ce-metricunit]}" - - choice: - when: - - simple: "${header[metric-timestamp]}" - steps: - - set-header: - name: CamelAwsCwMetricTimestamp - simple: "${header[metric-timestamp]}" - - simple: "${header[ce-metrictimestamp]}" - steps: - - set-header: - name: CamelAwsCwMetricTimestamp - simple: "${header[ce-metrictimestamp]}" - - choice: - when: - - simple: "${header[metric-dimension-name]}" - steps: - - set-header: - name: CamelAwsCwMetricDimensionName - simple: "${header[metric-dimension-name]}" - - simple: "${header[ce-metricdimensionname]}" - steps: - - set-header: - name: CamelAwsCwMetricDimensionName - simple: "${header[ce-metricdimensionname]}" - - choice: - when: - - simple: "${header[metric-dimension-value]}" - steps: - - set-header: - name: CamelAwsCwMetricDimensionValue - simple: "${header[metric-dimension-value]}" - - simple: "${header[ce-metricdimensionvalue]}" - steps: - - set-header: - name: CamelAwsCwMetricDimensionValue - simple: "${header[ce-metricdimensionvalue]}" - - to: - uri: "aws2-cw:{{cw_namespace}}" - parameters: - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" diff --git a/aws-ddb-streams-source.kamelet.yaml b/aws-ddb-streams-source.kamelet.yaml deleted file mode 100644 index 031e3ec06..000000000 --- a/aws-ddb-streams-source.kamelet.yaml +++ /dev/null @@ -1,101 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-ddb-streams-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNMzkuNTA2IDEzLjY2N2gyMC4zMjF2NzEuOTk5SDM5LjUwNnpNNzQuMTMxIDY3LjU2NFY3OC41Mmw3LjQ4LTguNzY0di03LjYwMmwtNy40MzcgNS4zOTd6TTc0LjEzMSA2Mi45MzZsLjA0My0uMDEgNy40MzctNHYtNy42NDlsLTcuNDguNjg4ek03NC4xNzQgMzYuNDI5bC0uMDQzLS4wMVY0Ny4zNWw3LjQ4LjY5OXYtNy42NDV6Ii8+PHBhdGggZmlsbD0iIzFBNDc2RiIgZD0iTTgxLjYxMSA0OC4wNDlsLTcuNDgtLjY5OS0xNC4zMDMtLjU3MkgzOS41MDZsLTE0LjMwMy41NzJWMzYuNDQzbC0uMDE1LjAwOC4wMTUtLjAzMiAxNC4zMDMtMy4zMTRINTkuODI4bDE0LjMwMyAzLjMxNCA1LjI1OCAyLjc5NXYtMS43OTdsMi4yMjItLjI0My03LjQ4LTUuNDEtMTQuMzAzLTQuNDMySDM5LjUwNmwtMTQuMzAzIDQuNDMyVjIwLjgwN2wtNy40OCA4Ljc2M3Y3LjY1M2wuMDU4LS4wNDIgMi4xNjQuMjM2djEuODM0bC0yLjIyMiAxLjE4OXY3LjYxNWwuMDU4LS4wMDYgMi4xNjQuMDMydjMuMTk2bC0xLjg2Ny4wMjgtLjM1NS0uMDM0djcuNjE4bDIuMjIyIDEuMTk1djEuODU1bC0yLjEyOS4yMzUtLjA5My0uMDd2Ny42NTJsNy40OCA4Ljc2NFY2Ny41NjRsMTQuMzAzIDQuNDMySDU5LjgyOGwxNC4zNDUtNC40NDUgNy40MzgtNS4zNjctMi4yMjItLjI0NXYtMS44MThsLTUuMjE2IDIuODA1LTE0LjM0NSAzLjI5NXYuMDA0SDM5LjUwNnYtLjAwNGwtMTQuMzQ4LTMuMjk1LS4wMjUtLjA1MS4wNy4wMzdWNTEuOTY1bDE0LjMwMy41N3YuMDE0SDU5LjgyOHYtLjAxNGwxNC4zMDMtLjU3IDcuNDgtLjY1Ni0yLjIyMi0uMDMydi0zLjE5NnoiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS DynamoDB Streams" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "AWS DynamoDB Streams Source" - description: |- - Receive events from Amazon DynamoDB Streams. - The basic authentication method for the AWS DynamoDB Streams service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. - If you use the default credentials provider, the DynamoDB Streams client loads the credentials through this provider and doesn't use the basic authentication method. - required: - - table - - region - type: object - properties: - table: - title: Table - description: The name of the DynamoDB table. - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to access. - type: string - example: eu-west-1 - enum: ["af-south-1", "ap-east-1", "ap-northeast-1", "ap-northeast-2", "ap-northeast-3", "ap-south-1", "ap-southeast-1", "ap-southeast-2", "ap-southeast-3", "ca-central-1", "eu-central-1", "eu-north-1", "eu-south-1", "eu-west-1", "eu-west-2", "eu-west-3", "fips-us-east-1", "fips-us-east-2", "fips-us-west-1", "fips-us-west-2", "me-south-1", "sa-east-1", "us-east-1", "us-east-2", "us-west-1", "us-west-2", "cn-north-1", "cn-northwest-1", "us-gov-east-1", "us-gov-west-1", "us-iso-east-1", "us-iso-west-1", "us-isob-east-1"] - streamIteratorType: - title: Stream Iterator Type - description: Defines where in the DynamoDB stream to start getting records. There are two enums and the value can be one of FROM_LATEST and FROM_START. Note that using FROM_START can cause a significant delay before the stream has caught up to real-time. - type: string - default: FROM_LATEST - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - uriEndpointOverride: - title: Overwrite Endpoint URI - description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. - type: string - overrideEndpoint: - title: Endpoint Overwrite - description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - delay: - title: Delay - description: The number of milliseconds before the next poll from the database. - type: integer - default: 500 - types: - out: - mediaType: application/json - dependencies: - - "camel:gson" - - "camel:aws2-ddb" - - "camel:kamelet" - template: - from: - uri: "aws2-ddbstream:{{table}}" - parameters: - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - streamIteratorType: "{{streamIteratorType}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - uriEndpointOverride: "{{?uriEndpointOverride}}" - overrideEndpoint: "{{overrideEndpoint}}" - delay: "{{delay}}" - steps: - - marshal: - json: - library: Gson - - to: "kamelet:sink" diff --git a/aws-kinesis-firehose-sink.kamelet.yaml b/aws-kinesis-firehose-sink.kamelet.yaml deleted file mode 100644 index 35cd3cfbd..000000000 --- a/aws-kinesis-firehose-sink.kamelet.yaml +++ /dev/null @@ -1,69 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-kinesis-firehose-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODUgODUiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjIuNSIgeT0iMi41Ii8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTEzLjc2NiAzLjEyaDUyLjQ2OGMzLjY1MSAwIDcuMTUyIDEuMzYzIDkuNzM0IDMuNzg4UzgwIDEyLjYyNCA4MCAxNi4wNTR2MjEuNjk4Yy0yLjcxNy0xLjMxOS04LjY2NC0yLjcyMy0xNy40NjQtMi43MjMtMy4zNy0uMDEzLTYuNzM3LjIyNC0xMC4wNjguNzA5LTUuOTMyLjkyMi05LjA1NyAyLjUxLTkuMDU3IDMuNDg5djM2Ljg3M2MwIC42MS44OTEgMS40MTggMi41ODEgMi4yMTJIMTMuNzY2QzYuMTYzIDc4LjMxMyAwIDcyLjUyMiAwIDY1LjM3OVYxNi4wNTRDMCA4LjkxMSA2LjE2MyAzLjEyIDEzLjc2NiAzLjEyeiIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMy43NjYgMGg1Mi40NjhjMy42NTEgMCA3LjE1MiAxLjM2MyA5LjczNCAzLjc4OFM4MCA5LjUwNCA4MCAxMi45MzR2MjEuNjdjLTIuNzE3LTEuMzE5LTguNjY0LTIuNzIzLTE3LjQ2NC0yLjcyM2E2Ny45NCA2Ny45NCAwIDAgMC0xMC4wNjguNzA5Yy01LjkzMi45MjItOS4wNTcgMi41MS05LjA1NyAzLjQ4OXYzNi44MTZjMCAuNjEuODkxIDEuNDE4IDIuNTgxIDIuMjEySDEzLjc2NmMtMy42NTEgMC03LjE1Mi0xLjM2My05LjczNC0zLjc4OFMwIDY1LjYwNCAwIDYyLjE3NHYtNDkuMjRDMCA1Ljc5MSA2LjE2MyAwIDEzLjc2NiAweiIgZmlsbD0iI2Y1ODUzNCIvPjxwYXRoIGQ9Ik02My45MjQgNDEuODA4YTU3LjAzIDU3LjAzIDAgMCAwLTguNDUzLjU5NiAyNi40NCAyNi40NCAwIDAgMS03LjU0Ny0uNjI0djMuNTQ2YzAgLjgyMyAyLjY0MSAyLjE1NiA3LjU0NyAyLjkwN2E1NC40NyA1NC40NyAwIDAgMCA4LjQ1My41OTZDNzQuMzM5IDQ4LjgyOCA4MCA0Ni41MTcgODAgNDUuMzI2VjQxLjc4em0tMTYuMzc3IDEwLjQxdjI0LjI1MWMwIDEuMjIgNC41MjggMy41MTcgMTUuMzIxIDMuNTE3YTUxLjY4IDUxLjY4IDAgMCAwIDEzLjI2OC0xLjQxOGMyLjE0My0uNjUyIDMuNjY4LTEuNDE4IDMuODM0LTEuOTQzVjUyLjUxNmMtMy4xNCAxLjgyOS05LjYxNSAyLjgzNi0xNi4wNDUgMi44MzZoLTIuNjcxbC0xLjYzLS4yN2gtLjgxNWwtMS4yNjgtLjA5OS0uNjc5LS4wOTktMS4zNTgtLjE3YTIyLjQ5IDIyLjQ5IDAgMCAxLTcuOTU1LTIuNDk2eiIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik02My45MjQgMzguMjc3YTU3LjAxIDU3LjAxIDAgMCAwLTguNDUzLjU5NmMtNC45ODEuNzgtNy41NDcgMi4xMTMtNy41NDcgMi45MjJzMi42NDEgMi4xNTYgNy41NDcgMi45MDdhNTQuNDYgNTQuNDYgMCAwIDAgOC40NTMuNTk2Qzc0LjMzOSA0NS4yOTggODAgNDIuOTg2IDgwIDQxLjc5NXMtNS42Ni0zLjUxNy0xNi4wNzYtMy41MTd6TTQ3LjU0NyA0OC42NzN2MjQuMjIzYzAgMS4yMzQgNC41MjggMy41MDMgMTUuMjc1IDMuNTAzYTUxLjY4IDUxLjY4IDAgMCAwIDEzLjI2OC0xLjQxOGMyLjE0My0uNjUyIDMuNjY4LTEuNDE4IDMuODM0LTEuOTQzdi0yNC4xMWMtMy4xNCAxLjgzLTkuNjE1IDIuODM2LTE2LjA0NSAyLjgzNmgtMi42NzJsLTEuNTg1LS4yMjdoLS44MTVsLTEuMjY4LS4wOTktLjY3OS0uMDk5LTEuMzU4LS4xN2EyMi40OSAyMi40OSAwIDAgMS03Ljk1NS0yLjQ5NnoiIGZpbGw9IiNmNTg1MzQiLz48cGF0aCBkPSJNMTMuNzY2IDc1LjE2NWgzMi4xOTZ2My4xMkgxMy43NjZDNi4xNjMgNzguMjg1IDAgNzIuNDk0IDAgNjUuMzUxdi0zLjEyYzAgNy4xNDMgNi4xNjMgMTIuOTM0IDEzLjc2NiAxMi45MzR6IiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTY1LjE3NyAxNi4xNjhMNTMuMTAyIDQuODIydjUuNjczSDM0LjI0OVYzMC4zNWgxOC44MjN2Mi4xODRsNC4yNTYtLjQ0TDY5LjcyIDIwLjQyMnptLTU3LjU2OS0uMDAxdjE0LjE4MmgyMC44M1YxMC40NTJINy42MDh2NS43MTV6bTUuODExIDMzLjUxMnYxNC4xODJoMjAuODNWNDMuOTY0aC0yMC44M3Y1LjcxNXoiLz48L2c+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS Kinesis Firehose" - labels: - camel.apache.org/kamelet.type: sink -spec: - definition: - title: AWS Kinesis Firehose Sink - description: |- - Send message to an AWS Kinesis Firehose Stream - required: - - streamName - - accessKey - - secretKey - - region - type: object - properties: - streamName: - title: Stream name - description: The name of the stream we want to send to data to - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the KinesisFirehose client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - "camel:kamelet" - - "camel:aws2-kinesis" - template: - from: - uri: kamelet:source - steps: - - to: - uri: "aws2-kinesis-firehose:{{streamName}}" - parameters: - accessKey: "{{?accessKey}}" - secretKey: "{{?secretKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" diff --git a/aws-kinesis-source.kamelet.yaml b/aws-kinesis-source.kamelet.yaml deleted file mode 100644 index ca3e7a7eb..000000000 --- a/aws-kinesis-source.kamelet.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-kinesis-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTS4wNTksMjE3LjU1OWwxMjguMTYyLDkwLjY3NUwyNTYsMjE3LjU1OSwxMjcuOTQ1LDE5OC45MjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDYsMTU0LjAxN2g2Ny41NzdWNTcuODM2TDE3NS45OSw0OS45NDMsMTI4LjE0Niw2My44OThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTE3NS45OSwxNTQuMDE3aDUyLjIzM1Y5MS42MzJsLTE0Ljk0LTQuNDgxLTM3LjI5Myw2LjMzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0yMTMuMjgyLDgyLjI2djcxLjc1N2g0Mi4yMjRMMjU2LDgxLjk0MWwtMTIuODI2LTUuMTI0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMjguMTQ3LDBWMTU0LjAxN2gyNS41VjEyLjc1MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTk1LjcyNCw1Ny44MzZsLTE5LjczMy03Ljg5NFYxNTQuMDE3aDE5LjczMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjI4LjIyNCw5MS42MzJsLTE0Ljk0MS00LjQ4djY2Ljg2NWgxNC45NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjQzLjE3NCwxNTQuMDE3SDI1NlY4MS45NDFsLTEyLjgyNi01LjEyNFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTI3Ljc1NCwxODQuODYzdjQ2LjAzM2wxMjcuNzUyLTMxLjg0NFYxNzIuMDg3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iI2Y2ODUzNCIvPjxwYXRoIGQ9Ik0xMjcuNzU0LDI2Mi43ODF2NDUuNDUzTDI1NiwyNDQuMTE0VjIxNy41NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNLjA1OSwyNDQuMzlsMTI3LjY5NSw2My44NDRWMjYyLjQ0OEwuMDU4LDIxNy41NThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTAsMTk5LjA1MWwxMjcuNzU0LDMxLjg0NVYxODQuODYyTDAsMTcyLjA4NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiM5ZDUwMjUiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS Kinesis" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "AWS Kinesis Source" - description: |- - Receive data from AWS Kinesis. - required: - - stream - - accessKey - - secretKey - - region - type: object - properties: - stream: - title: Stream Name - description: The Kinesis stream that you want to access (needs to be created in advance) - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - types: - out: - mediaType: application/json - dependencies: - - "camel:gson" - - "camel:kamelet" - - "camel:aws2-kinesis" - template: - from: - uri: aws2-kinesis:{{stream}} - parameters: - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - steps: - - marshal: - json: - library: Gson - - to: "kamelet:sink" diff --git a/aws-s3-sink.kamelet.yaml b/aws-s3-sink.kamelet.yaml deleted file mode 100644 index ccd583ee6..000000000 --- a/aws-s3-sink.kamelet.yaml +++ /dev/null @@ -1,101 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-s3-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS S3" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "AWS S3 Sink" - description: |- - Upload data to AWS S3. - - The Kamelet expects the following headers to be set: - - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. - required: - - bucketNameOrArn - - accessKey - - secretKey - - region - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - 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 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - camel:core - - "camel:aws2-s3" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - choice: - when: - - simple: "${header[file]}" - steps: - - set-header: - name: CamelAwsS3Key - simple: "${header[file]}" - - simple: "${header[ce-file]}" - steps: - - set-header: - name: CamelAwsS3Key - simple: "${header[ce-file]}" - otherwise: - steps: - - set-header: - name: CamelAwsS3Key - simple: "${exchangeId}" - - to: - uri: "aws2-s3:{{bucketNameOrArn}}" - parameters: - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - autoCreateBucket: "{{autoCreateBucket}}" diff --git a/aws-s3-source.kamelet.yaml b/aws-s3-source.kamelet.yaml deleted file mode 100644 index 0538d0e2d..000000000 --- a/aws-s3-source.kamelet.yaml +++ /dev/null @@ -1,84 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-s3-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS S3" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "AWS S3 Source" - description: |- - Receive data from AWS S3. - required: - - bucketNameOrArn - - accessKey - - secretKey - - region - type: object - properties: - bucketNameOrArn: - title: Bucket Name - description: The S3 Bucket name or ARN - type: string - deleteAfterRead: - title: Auto-delete Objects - description: Delete objects after consuming them - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: true - accessKey: - title: Access Key - description: The access key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - 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 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - "camel:kamelet" - - "camel:aws2-s3" - template: - from: - uri: "aws2-s3:{{bucketNameOrArn}}" - parameters: - autoCreateBucket: "{{autoCreateBucket}}" - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - deleteAfterRead: "{{deleteAfterRead}}" - steps: - - to: "kamelet:sink" diff --git a/aws-sqs-fifo-sink.kamelet.yaml b/aws-sqs-fifo-sink.kamelet.yaml deleted file mode 100644 index 4df0cce14..000000000 --- a/aws-sqs-fifo-sink.kamelet.yaml +++ /dev/null @@ -1,123 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-sqs-fifo-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIGhlaWdodD0iMTAwcHgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDBweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGcgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCI+PGc+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAyMy45ODcsMzYuMjAxIDU0LjQ2Miw0MC40OTQgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIwLjE3OSwzNy4zNDQgNTAuMDAzLDI4LjM5OSA1MC4wMDMsMTQgMjAuMTc5LDI4LjkwOCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMjAuMTksNjIuNjU0IDQ5Ljk5OSw3MS42IDQ5Ljk5Nyw4NiAyMC4xOSw3MS4wOTQgICAiLz48cG9seWdvbiBmaWxsPSIjRDlBNzQxIiBwb2ludHM9Ijc5LjgyMywzNy4zNSA1MC4wMDMsMjguMzk5IDUwLjAwMywxNCA3OS44MjUsMjguOTE0ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDYsNjIuNjYgNDkuOTk5LDcxLjYgNDkuOTk3LDg2IDc5LjgwNiw3MS4wOTkgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2IDIwLjE3OSwyOC45MDggMjMuOTg5LDI3LjAwNCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgNTAuMDAxLDQwLjgzMiAzOS4wMTksNDIuMjI5ICAgIi8+PHBvbHlnb24gZmlsbD0iIzg3NjkyOSIgcG9pbnRzPSIyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAzNS4wODMsNDIuNzI5IDI3Ljk1NCw0My42MzcgICAiLz48cG9seWdvbiBmaWxsPSIjNjI0QTFFIiBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTAuMDAzLDI4LjM5OSA3OS44MjMsMzcuMzUgNTQuNDgxLDQwLjQ5NiAgICIvPjxwb2x5Z29uIGZpbGw9IiNGQUQ3OTEiIHBvaW50cz0iMjMuOTg1LDYzLjc5MyA0OS45OTksNzEuNiA3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiA1MC4wMDEsNDAuODMyIDc5LjgwOCw0NC42MjkgICAiLz48L2c+PC9nPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS SQS" - labels: - camel.apache.org/kamelet.type: sink - camel.apache.org/requires.runtime: "camel-quarkus" -spec: - definition: - title: AWS SQS FIFO Sink - description: Send message to an AWS SQS FIFO Queue - required: - - queueNameOrArn - - accessKey - - secretKey - - region - type: object - properties: - queueNameOrArn: - title: Queue Name - description: The SQS Queue 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - contentBasedDeduplication: - title: Content-Based Deduplication - description: Use content-based deduplication (should be enabled in the SQS FIFO queue first) - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - autoCreateQueue: - title: Autocreate Queue - description: Setting the autocreation of the SQS queue. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - "camel:aws2-sqs" - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - set-property: - name: contentBasedDeduplication - constant: "{{contentBasedDeduplication}}" - - choice: - when: - - simple: "${header[group]}" - steps: - - set-property: - name: CamelAwsMessageGroupId - simple: "${header[group]}" - - simple: "${header[ce-group]}" - steps: - - set-property: - name: CamelAwsMessageGroupId - simple: "${header[ce-group]}" - otherwise: - steps: - - set-property: - name: CamelAwsMessageGroupId - simple: "${exchangeId}" - - choice: - when: - - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'" - steps: - - to: - uri: "aws2-sqs:{{queueNameOrArn}}" - parameters: - autoCreateQueue: "{{autoCreateQueue}}" - accessKey: "{{?accessKey}}" - secretKey: "{{?secretKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - messageGroupIdStrategy: "usePropertyValue" - messageDeduplicationIdStrategy: "useContentBasedDeduplication" - otherwise: - steps: - - to: - uri: "aws2-sqs:{{queueNameOrArn}}" - parameters: - autoCreateQueue: "{{autoCreateQueue}}" - accessKey: "{{?accessKey}}" - secretKey: "{{?secretKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - messageGroupIdStrategy: "usePropertyValue" - messageDeduplicationIdStrategy: "useExchangeId" diff --git a/aws-sqs-sink.kamelet.yaml b/aws-sqs-sink.kamelet.yaml deleted file mode 100644 index c160ca025..000000000 --- a/aws-sqs-sink.kamelet.yaml +++ /dev/null @@ -1,78 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-sqs-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIGhlaWdodD0iMTAwcHgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDBweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGcgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCI+PGc+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAyMy45ODcsMzYuMjAxIDU0LjQ2Miw0MC40OTQgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIwLjE3OSwzNy4zNDQgNTAuMDAzLDI4LjM5OSA1MC4wMDMsMTQgMjAuMTc5LDI4LjkwOCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMjAuMTksNjIuNjU0IDQ5Ljk5OSw3MS42IDQ5Ljk5Nyw4NiAyMC4xOSw3MS4wOTQgICAiLz48cG9seWdvbiBmaWxsPSIjRDlBNzQxIiBwb2ludHM9Ijc5LjgyMywzNy4zNSA1MC4wMDMsMjguMzk5IDUwLjAwMywxNCA3OS44MjUsMjguOTE0ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDYsNjIuNjYgNDkuOTk5LDcxLjYgNDkuOTk3LDg2IDc5LjgwNiw3MS4wOTkgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2IDIwLjE3OSwyOC45MDggMjMuOTg5LDI3LjAwNCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgNTAuMDAxLDQwLjgzMiAzOS4wMTksNDIuMjI5ICAgIi8+PHBvbHlnb24gZmlsbD0iIzg3NjkyOSIgcG9pbnRzPSIyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAzNS4wODMsNDIuNzI5IDI3Ljk1NCw0My42MzcgICAiLz48cG9seWdvbiBmaWxsPSIjNjI0QTFFIiBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTAuMDAzLDI4LjM5OSA3OS44MjMsMzcuMzUgNTQuNDgxLDQwLjQ5NiAgICIvPjxwb2x5Z29uIGZpbGw9IiNGQUQ3OTEiIHBvaW50cz0iMjMuOTg1LDYzLjc5MyA0OS45OTksNzEuNiA3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiA1MC4wMDEsNDAuODMyIDc5LjgwOCw0NC42MjkgICAiLz48L2c+PC9nPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS SQS" - labels: - camel.apache.org/kamelet.type: sink -spec: - definition: - title: AWS SQS Sink - description: |- - Send message to an AWS SQS Queue - required: - - queueNameOrArn - - accessKey - - secretKey - - region - type: object - properties: - queueNameOrArn: - title: Queue Name - description: The SQS Queue 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - autoCreateQueue: - title: Autocreate Queue - description: Setting the autocreation of the SQS queue. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - "camel:aws2-sqs" - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - to: - uri: "aws2-sqs:{{queueNameOrArn}}" - parameters: - autoCreateQueue: "{{autoCreateQueue}}" - accessKey: "{{?accessKey}}" - secretKey: "{{?secretKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" diff --git a/aws-sqs-source.kamelet.yaml b/aws-sqs-source.kamelet.yaml deleted file mode 100644 index 151e7a283..000000000 --- a/aws-sqs-source.kamelet.yaml +++ /dev/null @@ -1,91 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-sqs-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIGhlaWdodD0iMTAwcHgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDBweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGcgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCI+PGc+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAyMy45ODcsMzYuMjAxIDU0LjQ2Miw0MC40OTQgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIwLjE3OSwzNy4zNDQgNTAuMDAzLDI4LjM5OSA1MC4wMDMsMTQgMjAuMTc5LDI4LjkwOCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMjAuMTksNjIuNjU0IDQ5Ljk5OSw3MS42IDQ5Ljk5Nyw4NiAyMC4xOSw3MS4wOTQgICAiLz48cG9seWdvbiBmaWxsPSIjRDlBNzQxIiBwb2ludHM9Ijc5LjgyMywzNy4zNSA1MC4wMDMsMjguMzk5IDUwLjAwMywxNCA3OS44MjUsMjguOTE0ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDYsNjIuNjYgNDkuOTk5LDcxLjYgNDkuOTk3LDg2IDc5LjgwNiw3MS4wOTkgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2IDIwLjE3OSwyOC45MDggMjMuOTg5LDI3LjAwNCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgNTAuMDAxLDQwLjgzMiAzOS4wMTksNDIuMjI5ICAgIi8+PHBvbHlnb24gZmlsbD0iIzg3NjkyOSIgcG9pbnRzPSIyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAzNS4wODMsNDIuNzI5IDI3Ljk1NCw0My42MzcgICAiLz48cG9seWdvbiBmaWxsPSIjNjI0QTFFIiBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTAuMDAzLDI4LjM5OSA3OS44MjMsMzcuMzUgNTQuNDgxLDQwLjQ5NiAgICIvPjxwb2x5Z29uIGZpbGw9IiNGQUQ3OTEiIHBvaW50cz0iMjMuOTg1LDYzLjc5MyA0OS45OTksNzEuNiA3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiA1MC4wMDEsNDAuODMyIDc5LjgwOCw0NC42MjkgICAiLz48L2c+PC9nPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS SQS" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "AWS SQS Source" - description: |- - Receive data from AWS SQS. - required: - - queueNameOrArn - - accessKey - - secretKey - - region - type: object - properties: - queueNameOrArn: - title: Queue Name - description: The SQS Queue name or ARN - type: string - deleteAfterRead: - title: Auto-delete Messages - description: Delete messages after consuming them - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: true - accessKey: - title: Access Key - description: The access key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - autoCreateQueue: - title: Autocreate Queue - description: Setting the autocreation of the SQS queue. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - types: - out: - mediaType: application/json - dependencies: - - "camel:aws2-sqs" - - "camel:core" - - "camel:kamelet" - - "camel:jackson" - template: - from: - uri: "aws2-sqs:{{queueNameOrArn}}" - parameters: - autoCreateQueue: "{{autoCreateQueue}}" - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - deleteAfterRead: "{{deleteAfterRead}}" - steps: - - marshal: - json: {} - - to: "kamelet:sink" diff --git a/azure-servicebus-sink.kamelet.yaml b/azure-servicebus-sink.kamelet.yaml deleted file mode 100644 index a0ce3a0e5..000000000 --- a/azure-servicebus-sink.kamelet.yaml +++ /dev/null @@ -1,67 +0,0 @@ -# --------------------------------------------------------------------------- -# 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. -# --------------------------------------------------------------------------- - -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: azure-servicebus-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMzMgMS4zMzMgMS4zMzNoOGMuOCAwIDEuMzMzLS41MzMgMS4zMzMtMS4zMzN2LTYuNjY2aDU4LjY2N3Y2LjY2N2MwIC44LjUzMyAxLjMzMyAxLjYgMS4zMzNoNy43MzNjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzdi04LThDODAgLjUzMyA3OS40NjcgMCA3OC42NjcgMGgwSDEuMzMzem03Ny4zMzQgODBjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzVjYyLjkzNGMwLS44LS41MzMtMS4zMzMtMS4zMzMtMS4zMzNoLTcuNzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjMzM3Y2LjRIMTAuNjY3di02LjY2N2MwLS44LS41MzMtMS4zMzMtMS42LTEuMzMzSDEuMzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjZ2MTUuNzMzQzAgNzkuNDY3LjUzMyA4MCAxLjMzMyA4MGg3Ny4zMzR6IiBmaWxsPSIjMDA3MmM2IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMjkuNTE5IDM2LjQ0N2wzLjQ1Mi0zLjQ1MiAyLjU1NiAyLjU1Ni0zLjQ1MiAzLjQ1MXptNS4wMDctNS4wMDhsMy40NTYtMy40NTYgMi41NiAyLjU2TDM3LjA4NiAzNHptNy41Ny0yLjQ2M2wtMi41Ni0yLjU0NCAzLjQyNC0zLjQyNCAyLjU2IDIuNTQ0ek0zOS41MzUgNTIuNWwyLjU2MS0yLjU2IDMuNDI0IDMuNDI2LTIuNTYxIDIuNTZ6bS0xLjU1MS0xLjU3MmwtMy40NTYtMy40NTYgMi41Ni0yLjU0NCAzLjQ1NiAzLjQ1NnptLTUuMDA4LTUuMDA4bC0zLjQ1Ni0zLjQ1NiAyLjU2LTIuNTQ0IDMuNDQgMy40NHoiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI2I4ZDQzMiIvPjxwYXRoIGQ9Ik01Ny44MSAyNC4zOTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFYxOC4zNDJsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDA5YTMuNTQgMy41NCAwIDAgMCAyLjUyMy0xLjA0NWw2LjY5LTYuNjl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY5YTMuNTQgMy41NCAwIDAgMCAyLjUyMiAxLjA0NXptMy4xNjEgMzEuMTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFY0OS45MDFsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDFhMy41NCAzLjU0IDAgMCAwIDIuNTIzLTEuMDQ1bDYuNjktNi42ODl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY4OWEzLjU0IDMuNTQgMCAwIDAgMi41MjIgMS4wNDV6TTE5LjcxOCA0MC41OTljLTEuMzQ0IDEuMzQ0LTMuMTMzIDIuMDg1LTUuMDM1IDIuMDg1cy0zLjY5LS43NDEtNS4wMzUtMi4wODVMMCAzMC45NDl2MTkuNjEzaDI5LjM2NlYzMC45NDlsLTkuNjQ4IDkuNjV6bS01LjAzNS42NTJhNS42NSA1LjY1IDAgMCAwIDQuMDIyLTEuNjY2bDEwLjY2MS0xMC42NjF2LS41NjVIMHYuNTY2bDEwLjY2MSAxMC42NjFhNS42NiA1LjY2IDAgMCAwIDQuMDIyIDEuNjY0eiIgc3Ryb2tlPSJub25lIiBmaWxsPSIjNTliNGQ5Ii8+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Azure Servicebus" - camel.apache.org/kamelet.namespace: "Azure" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Azure Servicebus Sink" - description: |- - Send Messages to Azure Servicebus. - required: - - topicOrQueueName - - connectionString - type: object - properties: - topicOrQueueName: - title: Topic Or Queue Name - description: Topic Or Queue Name for the Azure Servicebus instance - type: string - connectionString: - title: Connection String - description: Connection String for Azure Servicebus instance - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - types: - in: - mediaType: application/octet-stream - dependencies: - - "camel:azure-servicebus" - - "camel:kamelet" - - "camel:core" - template: - from: - uri: kamelet:source - steps: - - to: - uri: "azure-servicebus:{{topicOrQueueName}}" - parameters: - connectionString: "{{connectionString}}" - producerOperation: "sendMessages" diff --git a/azure-servicebus-source.kamelet.yaml b/azure-servicebus-source.kamelet.yaml deleted file mode 100644 index 82a5d9596..000000000 --- a/azure-servicebus-source.kamelet.yaml +++ /dev/null @@ -1,82 +0,0 @@ -# --------------------------------------------------------------------------- -# 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. -# --------------------------------------------------------------------------- - -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: azure-servicebus-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMzMgMS4zMzMgMS4zMzNoOGMuOCAwIDEuMzMzLS41MzMgMS4zMzMtMS4zMzN2LTYuNjY2aDU4LjY2N3Y2LjY2N2MwIC44LjUzMyAxLjMzMyAxLjYgMS4zMzNoNy43MzNjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzdi04LThDODAgLjUzMyA3OS40NjcgMCA3OC42NjcgMGgwSDEuMzMzem03Ny4zMzQgODBjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzVjYyLjkzNGMwLS44LS41MzMtMS4zMzMtMS4zMzMtMS4zMzNoLTcuNzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjMzM3Y2LjRIMTAuNjY3di02LjY2N2MwLS44LS41MzMtMS4zMzMtMS42LTEuMzMzSDEuMzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjZ2MTUuNzMzQzAgNzkuNDY3LjUzMyA4MCAxLjMzMyA4MGg3Ny4zMzR6IiBmaWxsPSIjMDA3MmM2IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMjkuNTE5IDM2LjQ0N2wzLjQ1Mi0zLjQ1MiAyLjU1NiAyLjU1Ni0zLjQ1MiAzLjQ1MXptNS4wMDctNS4wMDhsMy40NTYtMy40NTYgMi41NiAyLjU2TDM3LjA4NiAzNHptNy41Ny0yLjQ2M2wtMi41Ni0yLjU0NCAzLjQyNC0zLjQyNCAyLjU2IDIuNTQ0ek0zOS41MzUgNTIuNWwyLjU2MS0yLjU2IDMuNDI0IDMuNDI2LTIuNTYxIDIuNTZ6bS0xLjU1MS0xLjU3MmwtMy40NTYtMy40NTYgMi41Ni0yLjU0NCAzLjQ1NiAzLjQ1NnptLTUuMDA4LTUuMDA4bC0zLjQ1Ni0zLjQ1NiAyLjU2LTIuNTQ0IDMuNDQgMy40NHoiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI2I4ZDQzMiIvPjxwYXRoIGQ9Ik01Ny44MSAyNC4zOTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFYxOC4zNDJsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDA5YTMuNTQgMy41NCAwIDAgMCAyLjUyMy0xLjA0NWw2LjY5LTYuNjl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY5YTMuNTQgMy41NCAwIDAgMCAyLjUyMiAxLjA0NXptMy4xNjEgMzEuMTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFY0OS45MDFsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDFhMy41NCAzLjU0IDAgMCAwIDIuNTIzLTEuMDQ1bDYuNjktNi42ODl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY4OWEzLjU0IDMuNTQgMCAwIDAgMi41MjIgMS4wNDV6TTE5LjcxOCA0MC41OTljLTEuMzQ0IDEuMzQ0LTMuMTMzIDIuMDg1LTUuMDM1IDIuMDg1cy0zLjY5LS43NDEtNS4wMzUtMi4wODVMMCAzMC45NDl2MTkuNjEzaDI5LjM2NlYzMC45NDlsLTkuNjQ4IDkuNjV6bS01LjAzNS42NTJhNS42NSA1LjY1IDAgMCAwIDQuMDIyLTEuNjY2bDEwLjY2MS0xMC42NjF2LS41NjVIMHYuNTY2bDEwLjY2MSAxMC42NjFhNS42NiA1LjY2IDAgMCAwIDQuMDIyIDEuNjY0eiIgc3Ryb2tlPSJub25lIiBmaWxsPSIjNTliNGQ5Ii8+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Azure Servicebus" - camel.apache.org/kamelet.namespace: "Azure" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "Azure Servicebus Source" - description: |- - Consume Messages from Azure Servicebus. - - The subscribtion name parameter needs to be populated in case of consuming from a Topic. - required: - - topicOrQueueName - - connectionString - type: object - properties: - topicOrQueueName: - title: Topic Or Queue Name - description: Topic Or Queue Name for the Azure Servicebus instance - type: string - connectionString: - title: Connection String - description: Connection String for Azure Servicebus instance - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - serviceBusReceiveMode: - title: Servicebus Receive Mode - description: Sets the receive mode for the receiver - type: string - default: PEEK_LOCK - enum: ["PEEK_LOCK", "RECEIVE_AND_DELETE"] - subscriptionName: - title: Subscription Name - description: Sets the name of the subscription in the topic to listen to. This parameter is mandatory in case of topic. - type: string - types: - out: - mediaType: application/octet-stream - dependencies: - - "camel:azure-servicebus" - - "camel:kamelet" - - "camel:core" - template: - from: - uri: "azure-servicebus:{{topicOrQueueName}}" - parameters: - connectionString: "{{connectionString}}" - serviceBusReceiveMode: "{{serviceBusReceiveMode}}" - subscriptionName: "{{?subscriptionName}}" - steps: - - set-body: - simple: "${body.toBytes()}" - - to: "kamelet:sink" - diff --git a/azure-storage-blob-sink.kamelet.yaml b/azure-storage-blob-sink.kamelet.yaml deleted file mode 100644 index 587dd9065..000000000 --- a/azure-storage-blob-sink.kamelet.yaml +++ /dev/null @@ -1,85 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: azure-storage-blob-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Azure Storage Blob" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Azure Storage Blob Sink" - description: |- - Upload data to Azure Storage Blob. - - The Kamelet expects the following headers to be set: - - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. - required: - - accountName - - containerName - - accessKey - type: object - properties: - accountName: - title: Account Name - description: The Azure Storage Blob account name. - type: string - containerName: - title: Container Name - description: The Azure Storage Blob container name. - type: string - accessKey: - title: Access Key - description: The Azure Storage Blob access Key. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - operation: - title: Operation Name - description: The operation to perform. - type: string - default: uploadBlockBlob - credentialType: - title: Credential Type - description: Determines the credential strategy to adopt. Possible values are SHARED_ACCOUNT_KEY, SHARED_KEY_CREDENTIAL and AZURE_IDENTITY - type: string - default: SHARED_ACCOUNT_KEY - dependencies: - - camel:core - - "camel:azure-storage-blob" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - choice: - when: - - simple: "${header[file]}" - steps: - - set-header: - name: CamelAzureStorageBlobBlobName - simple: "${header[file]}" - - simple: "${header[ce-file]}" - steps: - - set-header: - name: CamelAzureStorageBlobBlobName - simple: "${header[ce-file]}" - otherwise: - steps: - - set-header: - name: CamelAzureStorageBlobBlobName - simple: "${exchangeId}" - - to: - uri: "azure-storage-blob://{{accountName}}/{{containerName}}" - parameters: - accessKey: "{{accessKey}}" - operation: "{{operation}}" - credentialType: "{{credentialType}}" diff --git a/docs/modules/ROOT/assets/images/kamelets/aws-cloudwatch-sink.svg b/docs/modules/ROOT/assets/images/kamelets/aws-cloudwatch-sink.svg deleted file mode 100644 index 9e245bfd9..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/aws-cloudwatch-sink.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/modules/ROOT/assets/images/kamelets/aws-ddb-streams-source.svg b/docs/modules/ROOT/assets/images/kamelets/aws-ddb-streams-source.svg deleted file mode 100644 index c0f23d9da..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/aws-ddb-streams-source.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/aws-kinesis-firehose-sink.svg b/docs/modules/ROOT/assets/images/kamelets/aws-kinesis-firehose-sink.svg deleted file mode 100644 index be6db90a5..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/aws-kinesis-firehose-sink.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/aws-sqs-fifo-sink.svg b/docs/modules/ROOT/assets/images/kamelets/aws-sqs-fifo-sink.svg index 04656a393..9676edfc5 100644 --- a/docs/modules/ROOT/assets/images/kamelets/aws-sqs-fifo-sink.svg +++ b/docs/modules/ROOT/assets/images/kamelets/aws-sqs-fifo-sink.svg @@ -1 +1,81 @@ - \ No newline at end of file + +image/svg+xml diff --git a/docs/modules/ROOT/assets/images/kamelets/aws-sqs-sink.svg b/docs/modules/ROOT/assets/images/kamelets/aws-sqs-sink.svg index 04656a393..9676edfc5 100644 --- a/docs/modules/ROOT/assets/images/kamelets/aws-sqs-sink.svg +++ b/docs/modules/ROOT/assets/images/kamelets/aws-sqs-sink.svg @@ -1 +1,81 @@ - \ No newline at end of file + +image/svg+xml diff --git a/docs/modules/ROOT/assets/images/kamelets/aws-sqs-source.svg b/docs/modules/ROOT/assets/images/kamelets/aws-sqs-source.svg index 04656a393..9676edfc5 100644 --- a/docs/modules/ROOT/assets/images/kamelets/aws-sqs-source.svg +++ b/docs/modules/ROOT/assets/images/kamelets/aws-sqs-source.svg @@ -1 +1,81 @@ - \ No newline at end of file + +image/svg+xml diff --git a/docs/modules/ROOT/assets/images/kamelets/azure-servicebus-sink.svg b/docs/modules/ROOT/assets/images/kamelets/azure-servicebus-sink.svg deleted file mode 100644 index f7153ccde..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/azure-servicebus-sink.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/azure-servicebus-source.svg b/docs/modules/ROOT/assets/images/kamelets/azure-servicebus-source.svg deleted file mode 100644 index f7153ccde..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/azure-servicebus-source.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/azure-storage-blob-append-sink.svg b/docs/modules/ROOT/assets/images/kamelets/azure-storage-blob-append-sink.svg deleted file mode 100644 index 5065cb059..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/azure-storage-blob-append-sink.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/azure-storage-datalake-sink.svg b/docs/modules/ROOT/assets/images/kamelets/azure-storage-datalake-sink.svg new file mode 100644 index 000000000..bca1de73d --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/azure-storage-datalake-sink.svg @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/docs/modules/ROOT/assets/images/kamelets/azure-storage-datalake-source.svg b/docs/modules/ROOT/assets/images/kamelets/azure-storage-datalake-source.svg new file mode 100644 index 000000000..bca1de73d --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/azure-storage-datalake-source.svg @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/docs/modules/ROOT/assets/images/kamelets/kafka-manual-commit-action.svg b/docs/modules/ROOT/assets/images/kamelets/data-type-action.svg similarity index 100% rename from docs/modules/ROOT/assets/images/kamelets/kafka-manual-commit-action.svg rename to docs/modules/ROOT/assets/images/kamelets/data-type-action.svg diff --git a/docs/modules/ROOT/assets/images/kamelets/ftps-sink.svg b/docs/modules/ROOT/assets/images/kamelets/ftps-sink.svg deleted file mode 100644 index 2faddf298..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/ftps-sink.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - ftp - - diff --git a/docs/modules/ROOT/assets/images/kamelets/ftps-source.svg b/docs/modules/ROOT/assets/images/kamelets/ftps-source.svg deleted file mode 100644 index 2faddf298..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/ftps-source.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - ftp - - diff --git a/docs/modules/ROOT/assets/images/kamelets/jms-ibm-mq-sink.svg b/docs/modules/ROOT/assets/images/kamelets/jms-ibm-mq-sink.svg index 312ce54db..5c45015cc 100644 --- a/docs/modules/ROOT/assets/images/kamelets/jms-ibm-mq-sink.svg +++ b/docs/modules/ROOT/assets/images/kamelets/jms-ibm-mq-sink.svg @@ -1 +1,28 @@ -IBM IQ \ No newline at end of file + + + + + + + + + + + IBM IQ + + + + + + + \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/jms-ibm-mq-source.svg b/docs/modules/ROOT/assets/images/kamelets/jms-ibm-mq-source.svg index 312ce54db..5c45015cc 100644 --- a/docs/modules/ROOT/assets/images/kamelets/jms-ibm-mq-source.svg +++ b/docs/modules/ROOT/assets/images/kamelets/jms-ibm-mq-source.svg @@ -1 +1,28 @@ -IBM IQ \ No newline at end of file + + + + + + + + + + + IBM IQ + + + + + + + \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/kafka-scram-sink.svg b/docs/modules/ROOT/assets/images/kamelets/kafka-scram-sink.svg new file mode 100644 index 000000000..9d0e12755 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/kafka-scram-sink.svg @@ -0,0 +1,19 @@ + + + + + + + diff --git a/docs/modules/ROOT/assets/images/kamelets/kafka-scram-source.svg b/docs/modules/ROOT/assets/images/kamelets/kafka-scram-source.svg new file mode 100644 index 000000000..9d0e12755 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/kafka-scram-source.svg @@ -0,0 +1,19 @@ + + + + + + + diff --git a/docs/modules/ROOT/assets/images/kamelets/log-action.svg b/docs/modules/ROOT/assets/images/kamelets/log-action.svg new file mode 100644 index 000000000..eb7ab894c --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/log-action.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/ROOT/assets/images/kamelets/mysql-sink.svg b/docs/modules/ROOT/assets/images/kamelets/mysql-sink.svg index e7224e288..fc4ab87f8 100644 --- a/docs/modules/ROOT/assets/images/kamelets/mysql-sink.svg +++ b/docs/modules/ROOT/assets/images/kamelets/mysql-sink.svg @@ -1,4 +1,4 @@ - + diff --git a/docs/modules/ROOT/assets/images/kamelets/throttle-action.svg b/docs/modules/ROOT/assets/images/kamelets/resolve-pojo-schema-action.svg similarity index 100% rename from docs/modules/ROOT/assets/images/kamelets/throttle-action.svg rename to docs/modules/ROOT/assets/images/kamelets/resolve-pojo-schema-action.svg diff --git a/docs/modules/ROOT/assets/images/kamelets/salesforce-composite-upsert-sink.svg b/docs/modules/ROOT/assets/images/kamelets/salesforce-composite-upsert-sink.svg new file mode 100644 index 000000000..4c72b8006 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/salesforce-composite-upsert-sink.svg @@ -0,0 +1 @@ +Icons8 \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/splunk-hec-sink.svg b/docs/modules/ROOT/assets/images/kamelets/splunk-hec-sink.svg deleted file mode 100644 index b8428904a..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/splunk-hec-sink.svg +++ /dev/null @@ -1 +0,0 @@ -Splunk icon \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/splunk-sink.svg b/docs/modules/ROOT/assets/images/kamelets/splunk-sink.svg deleted file mode 100644 index b8428904a..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/splunk-sink.svg +++ /dev/null @@ -1 +0,0 @@ -Splunk icon \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/splunk-source.svg b/docs/modules/ROOT/assets/images/kamelets/splunk-source.svg deleted file mode 100644 index b8428904a..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/splunk-source.svg +++ /dev/null @@ -1 +0,0 @@ -Splunk icon \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/twitter-directmessage-source.svg b/docs/modules/ROOT/assets/images/kamelets/twitter-directmessage-source.svg new file mode 100644 index 000000000..c0364cc15 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/twitter-directmessage-source.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/twitter-search-source.svg b/docs/modules/ROOT/assets/images/kamelets/twitter-search-source.svg new file mode 100644 index 000000000..c0364cc15 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/twitter-search-source.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/kamelets/twitter-timeline-source.svg b/docs/modules/ROOT/assets/images/kamelets/twitter-timeline-source.svg new file mode 100644 index 000000000..c0364cc15 --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/twitter-timeline-source.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/docs/modules/ROOT/kamelet-binding-sink-source.tmpl b/docs/modules/ROOT/kamelet-binding-sink-source.tmpl index 72a052a12..0f519f6e7 100644 --- a/docs/modules/ROOT/kamelet-binding-sink-source.tmpl +++ b/docs/modules/ROOT/kamelet-binding-sink-source.tmpl @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: {{ .Kamelet.ObjectMeta.Name }}-binding @@ -11,12 +11,12 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: {{ .Kamelet.ObjectMeta.Name }}{{ template "properties-list.tmpl" . }} {{ else if eq (index .Kamelet.ObjectMeta.Labels "camel.apache.org/kamelet.type") "source" }}source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: {{ .Kamelet.ObjectMeta.Name }}{{ template "properties-list.tmpl" . }} sink: ref: @@ -26,14 +26,14 @@ spec: {{ else if eq (index .Kamelet.ObjectMeta.Labels "camel.apache.org/kamelet.type") "action" }}source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: {{ .Kamelet.ObjectMeta.Name }}{{ template "properties-list.tmpl" . }} sink: ref: diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 3a47f0f0e..87dc7b758 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -1,10 +1,7 @@ // 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-cloudwatch-sink.adoc[image:kamelets/aws-cloudwatch-sink.svg[] AWS CloudWatch Metrics Sink] * xref:ROOT:aws-ddb-sink.adoc[image:kamelets/aws-ddb-sink.svg[] AWS DynamoDB Sink] -* 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] * xref:ROOT:aws-kinesis-source.adoc[image:kamelets/aws-kinesis-source.svg[] AWS Kinesis Source] * xref:ROOT:aws-lambda-sink.adoc[image:kamelets/aws-lambda-sink.svg[] AWS Lambda Sink] @@ -16,23 +13,21 @@ * xref:ROOT:aws-sqs-fifo-sink.adoc[image:kamelets/aws-sqs-fifo-sink.svg[] AWS SQS FIFO Sink] * xref:ROOT:aws-sqs-sink.adoc[image:kamelets/aws-sqs-sink.svg[] AWS SQS Sink] * xref:ROOT:aws-sqs-source.adoc[image:kamelets/aws-sqs-source.svg[] AWS SQS Source] -* xref:ROOT:azure-servicebus-sink.adoc[image:kamelets/azure-servicebus-sink.svg[] Azure Servicebus Sink] -* xref:ROOT:azure-servicebus-source.adoc[image:kamelets/azure-servicebus-source.svg[] Azure Servicebus Source] -* xref:ROOT:azure-storage-blob-append-sink.adoc[image:kamelets/azure-storage-blob-append-sink.svg[] Azure Storage Blob Append Sink] * 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-datalake-sink.adoc[image:kamelets/azure-storage-datalake-sink.svg[] Azure Storage Blob Data Lake Sink] +* xref:ROOT:azure-storage-datalake-source.adoc[image:kamelets/azure-storage-datalake-source.svg[] Azure Storage Blob Data Lake 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:cassandra-sink.adoc[image:kamelets/cassandra-sink.svg[] Cassandra Sink] * xref:ROOT:cassandra-source.adoc[image:kamelets/cassandra-source.svg[] Cassandra Source] * xref:ROOT:ceph-sink.adoc[image:kamelets/ceph-sink.svg[] Ceph Sink] * xref:ROOT:ceph-source.adoc[image:kamelets/ceph-source.svg[] Ceph Source] +* xref:ROOT:data-type-action.adoc[image:kamelets/data-type-action.svg[] Data Type Action] * xref:ROOT:elasticsearch-index-sink.adoc[image:kamelets/elasticsearch-index-sink.svg[] ElasticSearch Index Sink] * xref:ROOT:extract-field-action.adoc[image:kamelets/extract-field-action.svg[] Extract Field Action] * xref:ROOT:ftp-sink.adoc[image:kamelets/ftp-sink.svg[] FTP Sink] * xref:ROOT:ftp-source.adoc[image:kamelets/ftp-source.svg[] FTP Source] -* xref:ROOT:ftps-sink.adoc[image:kamelets/ftps-sink.svg[] FTPS Sink] -* xref:ROOT:ftps-source.adoc[image:kamelets/ftps-source.svg[] FTPS Source] * 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-sink.adoc[image:kamelets/http-sink.svg[] HTTP Sink] @@ -44,16 +39,18 @@ * xref:ROOT:jira-source.adoc[image:kamelets/jira-source.svg[] Jira Source] * xref:ROOT:jira-transition-issue-sink.adoc[image:kamelets/jira-transition-issue-sink.svg[] Jira Transition Issue Sink] * xref:ROOT:jira-update-issue-sink.adoc[image:kamelets/jira-update-issue-sink.svg[] Jira Update Issue Sink] -* xref:ROOT:jms-amqp-10-sink.adoc[image:kamelets/jms-amqp-10-sink.svg[] JMS - AMQP 1.0 Kamelet Sink] -* xref:ROOT:jms-amqp-10-source.adoc[image:kamelets/jms-amqp-10-source.svg[] JMS - AMQP 1.0 Kamelet Source] -* xref:ROOT:jms-ibm-mq-sink.adoc[image:kamelets/jms-ibm-mq-sink.svg[] JMS - IBM MQ Kamelet Sink] -* xref:ROOT:jms-ibm-mq-source.adoc[image:kamelets/jms-ibm-mq-source.svg[] JMS - IBM MQ Kamelet Source] +* xref:ROOT:jms-amqp-10-sink.adoc[image:kamelets/jms-amqp-10-sink.svg[] JMS - AMQP 1.0 Sink] +* xref:ROOT:jms-amqp-10-source.adoc[image:kamelets/jms-amqp-10-source.svg[] JMS - AMQP 1.0 Source] +* xref:ROOT:jms-ibm-mq-sink.adoc[image:kamelets/jms-ibm-mq-sink.svg[] JMS - IBM MQ Sink] +* xref:ROOT:jms-ibm-mq-source.adoc[image:kamelets/jms-ibm-mq-source.svg[] JMS - IBM MQ Source] * xref:ROOT:jslt-action.adoc[image:kamelets/jslt-action.svg[] JSLT Action] * 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] -* xref:ROOT:kafka-manual-commit-action.adoc[image:kamelets/kafka-manual-commit-action.svg[] Kafka Manual Commit Action] +* xref:ROOT:kafka-scram-sink.adoc[image:kamelets/kafka-scram-sink.svg[] Kafka Scram Sink] +* xref:ROOT:kafka-scram-source.adoc[image:kamelets/kafka-scram-source.svg[] Kafka Scram Source] * 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:log-action.adoc[image:kamelets/log-action.svg[] Log Action] * xref:ROOT:log-sink.adoc[image:kamelets/log-sink.svg[] Log Sink] * 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] @@ -67,6 +64,8 @@ * xref:ROOT:protobuf-serialize-action.adoc[image:kamelets/protobuf-serialize-action.svg[] Protobuf Serialize Action] * 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] +* xref:ROOT:resolve-pojo-schema-action.adoc[image:kamelets/resolve-pojo-schema-action.svg[] Resolve Schema Action] +* xref:ROOT:salesforce-composite-upsert-sink.adoc[image:kamelets/salesforce-composite-upsert-sink.svg[] Salesforce composite upsert Sink] * xref:ROOT:salesforce-create-sink.adoc[image:kamelets/salesforce-create-sink.svg[] Salesforce Create Sink] * xref:ROOT:salesforce-delete-sink.adoc[image:kamelets/salesforce-delete-sink.svg[] Salesforce Delete Sink] * xref:ROOT:salesforce-source.adoc[image:kamelets/salesforce-source.svg[] Salesforce Source] @@ -75,14 +74,13 @@ * xref:ROOT:sftp-source.adoc[image:kamelets/sftp-source.svg[] SFTP Source] * xref:ROOT:simple-filter-action.adoc[image:kamelets/simple-filter-action.svg[] Simple Filter Action] * xref:ROOT:slack-source.adoc[image:kamelets/slack-source.svg[] Slack Source] -* xref:ROOT:splunk-hec-sink.adoc[image:kamelets/splunk-hec-sink.svg[] Splunk HEC Sink] -* xref:ROOT:splunk-sink.adoc[image:kamelets/splunk-sink.svg[] Splunk Sink] -* xref:ROOT:splunk-source.adoc[image:kamelets/splunk-source.svg[] Splunk Source] * xref:ROOT:sqlserver-sink.adoc[image:kamelets/sqlserver-sink.svg[] Microsoft SQL Server Sink] * xref:ROOT:telegram-source.adoc[image:kamelets/telegram-source.svg[] Telegram Source] -* xref:ROOT:throttle-action.adoc[image:kamelets/throttle-action.svg[] Throttle Action] * 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] * xref:ROOT:value-to-key-action.adoc[image:kamelets/value-to-key-action.svg[] Value to Key Action] // THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/avro-deserialize-action.adoc b/docs/modules/ROOT/pages/avro-deserialize-action.adoc index beab9255a..5dead8f83 100644 --- a/docs/modules/ROOT/pages/avro-deserialize-action.adoc +++ b/docs/modules/ROOT/pages/avro-deserialize-action.adoc @@ -12,7 +12,7 @@ The following table summarizes the configuration options available for the `avro [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\"}]}"` +| schema| 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`| |=== @@ -23,7 +23,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `avro-deserialize-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:kamelet - camel:core - camel:jackson-avro @@ -39,7 +39,7 @@ You can use the `avro-deserialize-action` Kamelet as an intermediate step in a K .avro-deserialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: avro-deserialize-action-binding @@ -47,30 +47,30 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first":"Ada","last":"Lovelace"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: avro-serialize-action properties: schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: avro-deserialize-action properties: schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-serialize-action sink: ref: @@ -114,7 +114,7 @@ You can use the `avro-deserialize-action` Kamelet as an intermediate step in a K .avro-deserialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: avro-deserialize-action-binding @@ -122,30 +122,30 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first":"Ada","last":"Lovelace"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: avro-serialize-action properties: schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: avro-deserialize-action properties: schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-serialize-action sink: ref: diff --git a/docs/modules/ROOT/pages/avro-serialize-action.adoc b/docs/modules/ROOT/pages/avro-serialize-action.adoc index 065b55049..738985a83 100644 --- a/docs/modules/ROOT/pages/avro-serialize-action.adoc +++ b/docs/modules/ROOT/pages/avro-serialize-action.adoc @@ -12,7 +12,7 @@ The following table summarizes the configuration options available for the `avro [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\"}]}"` +| schema| 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`| |=== @@ -23,7 +23,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `avro-serialize-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:kamelet - camel:core - camel:jackson-avro @@ -39,7 +39,7 @@ You can use the `avro-serialize-action` Kamelet as an intermediate step in a Kna .avro-serialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: avro-serialize-action-binding @@ -47,18 +47,18 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first":"Ada","last":"Lovelace"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: avro-serialize-action properties: schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" @@ -104,7 +104,7 @@ You can use the `avro-serialize-action` Kamelet as an intermediate step in a Kaf .avro-serialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: avro-serialize-action-binding @@ -112,18 +112,18 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first":"Ada","last":"Lovelace"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: avro-serialize-action properties: schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" diff --git a/docs/modules/ROOT/pages/aws-cloudwatch-sink.adoc b/docs/modules/ROOT/pages/aws-cloudwatch-sink.adoc deleted file mode 100644 index 93e9fcf71..000000000 --- a/docs/modules/ROOT/pages/aws-cloudwatch-sink.adoc +++ /dev/null @@ -1,163 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/aws-cloudwatch-sink.svg[] AWS CloudWatch Metrics Sink - -*Provided by: "Red Hat"* - -Send messages to AWS CloudWatch metrics. - -There are several properties you can set in the headers, such as: - -`metric-name` / `ce-metricname` for the metric name. -`metric-value` / `ce-metricvalue` for the metric value. -`metric-unit` / `ce-metricunit` for the metric unit. -`metric-timestamp` / `ce-metrictimestamp` for the metric timestamp. -`metric-dimension-name` / `ce-metricdimensionname` for the dimension name. -`metric-dimension-value` / `ce-metricdimensionvalue` for the dimension value. - -== Configuration Options - -The following table summarizes the configuration options available for the `aws-cloudwatch-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| | -| *cw_namespace {empty}* *| Cloud Watch Namespace| The cloud watch metric namespace.| 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| | -| useDefaultCredentialsProvider| Default Credentials Provider| If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `aws-cloudwatch-sink` Kamelet relies upon the presence of the following dependencies: - -- camel:core -- camel:aws2-cw -- camel:kamelet - -== Usage - -This section describes how you can use the `aws-cloudwatch-sink`. - -=== Knative Sink - -You can use the `aws-cloudwatch-sink` Kamelet as a Knative sink by binding it to a Knative object. - -.aws-cloudwatch-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: aws-cloudwatch-sink-binding -spec: - source: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: aws-cloudwatch-sink - properties: - accessKey: "The Access Key" - cw_namespace: "The Cloud Watch Namespace" - region: "eu-west-1" - secretKey: "The Secret Key" - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `aws-cloudwatch-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f aws-cloudwatch-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind channel:mychannel aws-cloudwatch-sink -p "sink.accessKey=The Access Key" -p "sink.cw_namespace=The Cloud Watch Namespace" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Sink - -You can use the `aws-cloudwatch-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. - -.aws-cloudwatch-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: aws-cloudwatch-sink-binding -spec: - source: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: aws-cloudwatch-sink - properties: - accessKey: "The Access Key" - cw_namespace: "The Cloud Watch Namespace" - region: "eu-west-1" - secretKey: "The Secret Key" - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `aws-cloudwatch-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f aws-cloudwatch-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-cloudwatch-sink -p "sink.accessKey=The Access Key" -p "sink.cw_namespace=The Cloud Watch Namespace" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/aws-cloudwatch-sink.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/aws-ddb-sink.adoc b/docs/modules/ROOT/pages/aws-ddb-sink.adoc index 1bbfe2b14..0d89838e8 100644 --- a/docs/modules/ROOT/pages/aws-ddb-sink.adoc +++ b/docs/modules/ROOT/pages/aws-ddb-sink.adoc @@ -4,17 +4,23 @@ *Provided by: "Red Hat"* -Send data to AWS DynamoDB service. The sent data will insert/update/delete an item on the given AWS DynamoDB table. +Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes an item on the specified AWS DynamoDB table. -Access Key/Secret Key are the basic method for authenticating to the AWS DynamoDB service. These parameters are optional, because the Kamelet provide also the 'useDefaultCredentialsProvider'. +The basic authentication method for the AWS DynamoDB service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. -When using a default Credentials Provider the AWS DynamoDB client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. +If you use the default credentials provider, the DynamoDB client loads the credentials through this provider and doesn't use the basic authentication method. -This Kamelet expects a JSON as body. The mapping between the JSON fields and table attribute values is done by key, so if you have the input: +This Kamelet expects a JSON-formatted body and it must include the primary key values that define the DynamoDB item. The mapping between the JSON fields and table attribute values is done by key. For example, for '{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an item in the specified AWS DynamoDB table and sets the values for the 'username' and 'city' attributes. -'{"username":"oscerd", "city":"Rome"}' +For PutItem operation the Json body defines all item attributes. +For DeleteItem operation the Json body defines only the primary key attributes that identify the item to delete. +For UpdateItem operation the Json body defines both key attributes to identify the item to be updated and all item attributes tht get updated on the item. -The Kamelet will insert/update an item in the given AWS DynamoDB table and set the attributes 'username' and 'city' respectively. Please note that the JSON object must include the primary key values that define the item. +The given Json body can use "key" and "item" as top level properties. Both define a Json object that will be mapped to respective attribute value maps +{ + "key": {}, + "item": {} +} == Configuration Options @@ -22,15 +28,14 @@ The following table summarizes the configuration options available for the `aws- [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *region {empty}* *| AWS Region| The AWS region to connect to| string| | `"eu-west-1"` -| *table {empty}* *| Table| Name of the DynamoDB table to look at| string| | -| accessKey| Access Key| The access key obtained from AWS| string| | -| operation| Operation| The operation to perform (one of PutItem, UpdateItem, DeleteItem)| string| `"PutItem"`| `"PutItem"` -| overrideEndpoint| Endpoint Overwrite| Set the need for overiding the endpoint URI. This option needs to be used in combination with uriEndpointOverride setting.| boolean| `false`| -| secretKey| Secret Key| The secret key obtained from AWS| string| | -| uriEndpointOverride| Overwrite Endpoint URI| Set the overriding endpoint URI. This option needs to be used in combination with overrideEndpoint option.| string| | -| useDefaultCredentialsProvider| Default Credentials Provider| Set whether the DynamoDB client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.| boolean| `false`| -| writeCapacity| Write Capacity| The provisioned throughput to reserved for writing resources to your table| integer| `1`| +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| *table {empty}* *| Table| The name of the DynamoDB table.| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | +| operation| Operation| The operation to perform.| string| `"PutItem"`| `"PutItem"` +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | +| useDefaultCredentialsProvider| Default Credentials Provider| If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -40,7 +45,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `aws-ddb-sink` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:core - camel:jackson - camel:aws2-ddb @@ -57,7 +62,7 @@ You can use the `aws-ddb-sink` Kamelet as a Knative sink by binding it to a Knat .aws-ddb-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-ddb-sink-binding @@ -70,10 +75,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-ddb-sink properties: - region: "eu-west-1" + region: "The AWS Region" table: "The Table" ---- @@ -99,7 +104,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel aws-ddb-sink -p "sink.region=eu-west-1" -p "sink.table=The Table" +kamel bind channel:mychannel aws-ddb-sink -p "sink.region=The AWS Region" -p "sink.table=The Table" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -111,7 +116,7 @@ You can use the `aws-ddb-sink` Kamelet as a Kafka sink by binding it to a Kafka .aws-ddb-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-ddb-sink-binding @@ -124,10 +129,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-ddb-sink properties: - region: "eu-west-1" + region: "The AWS Region" table: "The Table" ---- @@ -154,7 +159,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-ddb-sink -p "sink.region=eu-west-1" -p "sink.table=The Table" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-ddb-sink -p "sink.region=The AWS Region" -p "sink.table=The Table" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-ddb-streams-source.adoc b/docs/modules/ROOT/pages/aws-ddb-streams-source.adoc deleted file mode 100644 index e0883b958..000000000 --- a/docs/modules/ROOT/pages/aws-ddb-streams-source.adoc +++ /dev/null @@ -1,156 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/aws-ddb-streams-source.svg[] AWS DynamoDB Streams Source - -*Provided by: "Red Hat"* - -Receive events from Amazon DynamoDB Streams. -The basic authentication method for the AWS DynamoDB Streams service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. -If you use the default credentials provider, the DynamoDB Streams client loads the credentials through this provider and doesn't use the basic authentication method. - -== Configuration Options - -The following table summarizes the configuration options available for the `aws-ddb-streams-source` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *region {empty}* *| AWS Region| The AWS region to access.| string| | `"eu-west-1"` -| *table {empty}* *| Table| The name of the DynamoDB table.| string| | -| accessKey| Access Key| The access key obtained from AWS.| string| | -| delay| Delay| The number of milliseconds before the next poll from the database.| integer| `500`| -| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| -| secretKey| Secret Key| The secret key obtained from AWS.| string| | -| streamIteratorType| Stream Iterator Type| Defines where in the DynamoDB stream to start getting records. There are two enums and the value can be one of FROM_LATEST and FROM_START. Note that using FROM_START can cause a significant delay before the stream has caught up to real-time.| string| `"FROM_LATEST"`| -| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | -| useDefaultCredentialsProvider| Default Credentials Provider| If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `aws-ddb-streams-source` Kamelet relies upon the presence of the following dependencies: - -- camel:gson -- camel:aws2-ddb -- camel:kamelet - -== Usage - -This section describes how you can use the `aws-ddb-streams-source`. - -=== Knative Source - -You can use the `aws-ddb-streams-source` Kamelet as a Knative source by binding it to a Knative object. - -.aws-ddb-streams-source-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: aws-ddb-streams-source-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: aws-ddb-streams-source - properties: - region: "eu-west-1" - table: "The Table" - sink: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `aws-ddb-streams-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the source by using the following command: -+ -[source,shell] ----- -oc apply -f aws-ddb-streams-source-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the source by using the following command: - -[source,shell] ----- -kamel bind aws-ddb-streams-source -p "source.region=eu-west-1" -p "source.table=The Table" channel:mychannel ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Source - -You can use the `aws-ddb-streams-source` Kamelet as a Kafka source by binding it to a Kafka topic. - -.aws-ddb-streams-source-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: aws-ddb-streams-source-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: aws-ddb-streams-source - properties: - region: "eu-west-1" - table: "The Table" - sink: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `aws-ddb-streams-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the source by using the following command: -+ -[source,shell] ----- -oc apply -f aws-ddb-streams-source-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the source by using the following command: - -[source,shell] ----- -kamel bind aws-ddb-streams-source -p "source.region=eu-west-1" -p "source.table=The Table" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/aws-ddb-streams-source.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/aws-kinesis-firehose-sink.adoc b/docs/modules/ROOT/pages/aws-kinesis-firehose-sink.adoc deleted file mode 100644 index e59ee7540..000000000 --- a/docs/modules/ROOT/pages/aws-kinesis-firehose-sink.adoc +++ /dev/null @@ -1,153 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/aws-kinesis-firehose-sink.svg[] AWS Kinesis Firehose Sink - -*Provided by: "Red Hat"* - -Send message to an AWS Kinesis Firehose Stream - -== Configuration Options - -The following table summarizes the configuration options available for the `aws-kinesis-firehose-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| | -| *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| | -| *streamName {empty}* *| Stream name| The name of the stream we want to send to data to| string| | -| useDefaultCredentialsProvider| Default Credentials Provider| If true, the KinesisFirehose client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `aws-kinesis-firehose-sink` Kamelet relies upon the presence of the following dependencies: - -- camel:kamelet -- camel:aws2-kinesis - -== Usage - -This section describes how you can use the `aws-kinesis-firehose-sink`. - -=== Knative Sink - -You can use the `aws-kinesis-firehose-sink` Kamelet as a Knative sink by binding it to a Knative object. - -.aws-kinesis-firehose-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: aws-kinesis-firehose-sink-binding -spec: - source: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: aws-kinesis-firehose-sink - properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" - streamName: "The Stream name" - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `aws-kinesis-firehose-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f aws-kinesis-firehose-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind channel:mychannel aws-kinesis-firehose-sink -p "sink.accessKey=The Access Key" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" -p "sink.streamName=The Stream name" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Sink - -You can use the `aws-kinesis-firehose-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. - -.aws-kinesis-firehose-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: aws-kinesis-firehose-sink-binding -spec: - source: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: aws-kinesis-firehose-sink - properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" - streamName: "The Stream name" - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `aws-kinesis-firehose-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f aws-kinesis-firehose-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-kinesis-firehose-sink -p "sink.accessKey=The Access Key" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" -p "sink.streamName=The Stream name" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/aws-kinesis-firehose-sink.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/aws-kinesis-sink.adoc b/docs/modules/ROOT/pages/aws-kinesis-sink.adoc index 2dbaa7833..30d460f0a 100644 --- a/docs/modules/ROOT/pages/aws-kinesis-sink.adoc +++ b/docs/modules/ROOT/pages/aws-kinesis-sink.adoc @@ -6,17 +6,15 @@ Send data to AWS Kinesis. -The Kamelet expects the following header: +The basic authentication method for the Kinesis service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. -- `partition` / `ce-partition`: to set the Kinesis partition key +If you use the default credentials provider, the Kinesis client loads the credentials through this provider and doesn't use the basic authentication method. -If the header won't be set the exchange ID will be used. +In the header, you can optionally set the `file` / `ce-partition` property to set the Kinesis partition key. -The Kamelet is also able to recognize the following header: +If you do not set the property in the header, the Kamelet uses the exchange ID for the partition key. -- `sequence-number` / `ce-sequencenumber`: to set the Sequence number - -This header is optional. +You can also set the `sequence-number` / `ce-sequencenumber` property in the header to specify the Sequence number. == Configuration Options @@ -24,10 +22,12 @@ The following table summarizes the configuration options available for the `aws- [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| | -| *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| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| *stream {empty}* *| Stream Name| The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist.| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | | useDefaultCredentialsProvider| Default Credentials Provider| If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| |=== @@ -53,7 +53,7 @@ You can use the `aws-kinesis-sink` Kamelet as a Knative sink by binding it to a .aws-kinesis-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-kinesis-sink-binding @@ -66,12 +66,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-kinesis-sink properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" stream: "The Stream Name" ---- @@ -97,7 +95,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel aws-kinesis-sink -p "sink.accessKey=The Access Key" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" -p "sink.stream=The Stream Name" +kamel bind channel:mychannel aws-kinesis-sink -p "sink.region=The AWS Region" -p "sink.stream=The Stream Name" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -109,7 +107,7 @@ You can use the `aws-kinesis-sink` Kamelet as a Kafka sink by binding it to a Ka .aws-kinesis-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-kinesis-sink-binding @@ -122,12 +120,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-kinesis-sink properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" stream: "The Stream Name" ---- @@ -154,7 +150,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-kinesis-sink -p "sink.accessKey=The Access Key" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" -p "sink.stream=The Stream Name" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-kinesis-sink -p "sink.region=The AWS Region" -p "sink.stream=The Stream Name" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-kinesis-source.adoc b/docs/modules/ROOT/pages/aws-kinesis-source.adoc index 6bc8f4772..4a633d4b7 100644 --- a/docs/modules/ROOT/pages/aws-kinesis-source.adoc +++ b/docs/modules/ROOT/pages/aws-kinesis-source.adoc @@ -6,16 +6,25 @@ Receive data from AWS Kinesis. +The basic authentication method for the Kinesis service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + +If you use the default credentials provider, the Kinesis client loads the credentials through this provider and doesn't use the basic authentication method. + +Two headers will be duplicated with different names for clarity at sink level, CamelAwsKinesisPartitionKey will be duplicated into aws.kinesis.partition.key and CamelAwsKinesisSequenceNumber will be duplicated in aws.kinesis.sequence.number + == Configuration Options The following table summarizes the configuration options available for the `aws-kinesis-source` 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| | -| *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| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| *stream {empty}* *| Stream Name| The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist.| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | +| delay| Delay| The number of milliseconds before the next poll of the selected stream.| integer| `500`| +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | | useDefaultCredentialsProvider| Default Credentials Provider| If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| |=== @@ -26,9 +35,10 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `aws-kinesis-source` Kamelet relies upon the presence of the following dependencies: -- camel:gson +- camel:aws2-kinesis - camel:kamelet -- camel:aws2-kinesis +- camel:core +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 == Usage @@ -41,7 +51,7 @@ You can use the `aws-kinesis-source` Kamelet as a Knative source by binding it t .aws-kinesis-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-kinesis-source-binding @@ -49,12 +59,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-kinesis-source properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" stream: "The Stream Name" sink: ref: @@ -85,7 +93,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind aws-kinesis-source -p "source.accessKey=The Access Key" -p "source.region=eu-west-1" -p "source.secretKey=The Secret Key" -p "source.stream=The Stream Name" channel:mychannel +kamel bind aws-kinesis-source -p "source.region=The AWS Region" -p "source.stream=The Stream Name" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -97,7 +105,7 @@ You can use the `aws-kinesis-source` Kamelet as a Kafka source by binding it to .aws-kinesis-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-kinesis-source-binding @@ -105,12 +113,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-kinesis-source properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" stream: "The Stream Name" sink: ref: @@ -142,7 +148,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind aws-kinesis-source -p "source.accessKey=The Access Key" -p "source.region=eu-west-1" -p "source.secretKey=The Secret Key" -p "source.stream=The Stream Name" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind aws-kinesis-source -p "source.region=The AWS Region" -p "source.stream=The Stream Name" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-lambda-sink.adoc b/docs/modules/ROOT/pages/aws-lambda-sink.adoc index 7ae5bda2b..01cb1de46 100644 --- a/docs/modules/ROOT/pages/aws-lambda-sink.adoc +++ b/docs/modules/ROOT/pages/aws-lambda-sink.adoc @@ -4,7 +4,11 @@ *Provided by: "Red Hat"* -Send a payload to an AWS Lambda function +Send a payload to an AWS Lambda function. + +The basic authentication method for the Lambda service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + +If you use the default credentials provider, the Lambda client loads the credentials through this provider and doesn't use the basic authentication method. == Configuration Options @@ -12,10 +16,10 @@ The following table summarizes the configuration options available for the `aws- [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| | -| *function {empty}* *| Function Name| The Lambda Function name| 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| | +| *function {empty}* *| Function Name| The Lambda Function name.| string| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | +| secretKey| Secret Key| The secret key obtained from AWS.| string| | | useDefaultCredentialsProvider| Default Credentials Provider| If true, the Lambda client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| |=== @@ -26,8 +30,8 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `aws-lambda-sink` Kamelet relies upon the presence of the following dependencies: -- camel:kamelet -- camel:aws2-lambda +- camel:aws2-lambda +- camel:kamelet == Usage @@ -40,7 +44,7 @@ You can use the `aws-lambda-sink` Kamelet as a Knative sink by binding it to a K .aws-lambda-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-lambda-sink-binding @@ -53,13 +57,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-lambda-sink properties: - accessKey: "The Access Key" function: "The Function Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" ---- @@ -84,7 +86,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel aws-lambda-sink -p "sink.accessKey=The Access Key" -p "sink.function=The Function Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind channel:mychannel aws-lambda-sink -p "sink.function=The Function Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -96,7 +98,7 @@ You can use the `aws-lambda-sink` Kamelet as a Kafka sink by binding it to a Kaf .aws-lambda-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-lambda-sink-binding @@ -109,13 +111,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-lambda-sink properties: - accessKey: "The Access Key" function: "The Function Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" ---- @@ -141,7 +141,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-lambda-sink -p "sink.accessKey=The Access Key" -p "sink.function=The Function Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-lambda-sink -p "sink.function=The Function Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-redshift-sink.adoc b/docs/modules/ROOT/pages/aws-redshift-sink.adoc index 7db580614..beb586c36 100644 --- a/docs/modules/ROOT/pages/aws-redshift-sink.adoc +++ b/docs/modules/ROOT/pages/aws-redshift-sink.adoc @@ -6,11 +6,11 @@ Send data to an AWS Redshift 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: +This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' -The Kamelet needs to receive as input something like: +Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' @@ -20,12 +20,12 @@ The following table summarizes the configuration options available for the `aws- [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 AWS Redshift Database| string| | -| *query {empty}* *| Query| The Query to execute against the AWS Redshift 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 AWS Redshift Database| string| | -| serverPort| Server Port| Server Port for the data source| string| `5439`| +| *databaseName {empty}* *| Database Name| The name of the AWS RedShift Database.| string| | +| *password {empty}* *| Password| The password to access a secured AWS Redshift Database.| string| | +| *query {empty}* *| Query| The query to execute against the AWS Redshift Database.| string| | `"INSERT INTO accounts (username,city) VALUES (:#username,:#city)"` +| *serverName {empty}* *| Server Name| The server name for the data source.| string| | `"localhost"` +| *username {empty}* *| Username| The username to access a secured AWS Redshift Database.| string| | +| serverPort| Server Port| The server port for the AWS RedShi data source.| string| `5439`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -38,8 +38,8 @@ At runtime, the `aws-redshift-sink` Kamelet relies upon the presence of the foll - camel:jackson - camel:kamelet - camel:sql -- mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.5 -- mvn:org.apache.commons:commons-dbcp2:2.7.0 +- mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.18 +- mvn:org.apache.commons:commons-dbcp2:2.10.0 == Usage @@ -52,7 +52,7 @@ You can use the `aws-redshift-sink` Kamelet as a Knative sink by binding it to a .aws-redshift-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-redshift-sink-binding @@ -65,7 +65,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-redshift-sink properties: databaseName: "The Database Name" @@ -109,7 +109,7 @@ You can use the `aws-redshift-sink` Kamelet as a Kafka sink by binding it to a K .aws-redshift-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-redshift-sink-binding @@ -122,7 +122,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-redshift-sink properties: databaseName: "The Database Name" diff --git a/docs/modules/ROOT/pages/aws-s3-sink.adoc b/docs/modules/ROOT/pages/aws-s3-sink.adoc index 5b4d4ee68..f46830fd3 100644 --- a/docs/modules/ROOT/pages/aws-s3-sink.adoc +++ b/docs/modules/ROOT/pages/aws-s3-sink.adoc @@ -4,13 +4,15 @@ *Provided by: "Red Hat"* -Upload data to AWS S3. +Upload data to an Amazon S3 Bucket. -The Kamelet expects the following headers to be set: +The basic authentication method for the S3 service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. -- `file` / `ce-file`: as the file name to upload +If you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method. -If the header won't be set the exchange ID will be used as file name. +In the header, you can optionally set the `file` / `ce-partition` property to specify the name of the file to upload. + +If you do not set the property in the header, the Kamelet uses the exchange ID for the file name. == Configuration Options @@ -18,11 +20,14 @@ The following table summarizes the configuration options available for the `aws- [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| | -| *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`| +| *bucketNameOrArn {empty}* *| Bucket Name| The S3 Bucket name or Amazon Resource Name (ARN).| string| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | +| autoCreateBucket| Autocreate Bucket| Specifies to automatically create the S3 bucket.| boolean| `false`| +| keyName| Key Name| The key name for saving an element in the bucket.| string| | +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | | useDefaultCredentialsProvider| Default Credentials Provider| If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| |=== @@ -48,7 +53,7 @@ You can use the `aws-s3-sink` Kamelet as a Knative sink by binding it to a Knati .aws-s3-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-s3-sink-binding @@ -61,13 +66,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-s3-sink properties: - accessKey: "The Access Key" bucketNameOrArn: "The Bucket Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" ---- @@ -92,7 +95,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel aws-s3-sink -p "sink.accessKey=The Access Key" -p "sink.bucketNameOrArn=The Bucket Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind channel:mychannel aws-s3-sink -p "sink.bucketNameOrArn=The Bucket Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -104,7 +107,7 @@ You can use the `aws-s3-sink` Kamelet as a Kafka sink by binding it to a Kafka t .aws-s3-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-s3-sink-binding @@ -117,13 +120,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-s3-sink properties: - accessKey: "The Access Key" bucketNameOrArn: "The Bucket Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" ---- @@ -149,7 +150,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-s3-sink -p "sink.accessKey=The Access Key" -p "sink.bucketNameOrArn=The Bucket Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-s3-sink -p "sink.bucketNameOrArn=The Bucket Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-s3-source.adoc b/docs/modules/ROOT/pages/aws-s3-source.adoc index 7a11fedb1..a6af62c0e 100644 --- a/docs/modules/ROOT/pages/aws-s3-source.adoc +++ b/docs/modules/ROOT/pages/aws-s3-source.adoc @@ -4,7 +4,13 @@ *Provided by: "Red Hat"* -Receive data from AWS S3. +Receive data from an Amazon S3 Bucket. + +The basic authentication method for the S3 service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + +If you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method. + +Two headers will be duplicated with different names for clarity at sink level, CamelAwsS3Key will be duplicated into aws.s3.key and CamelAwsS3BucketName will be duplicated in aws.s3.bucket.name == Configuration Options @@ -12,12 +18,18 @@ The following table summarizes the configuration options available for the `aws- [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| | -| *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`| -| deleteAfterRead| Auto-delete Objects| Delete objects after consuming them| boolean| `true`| +| *bucketNameOrArn {empty}* *| Bucket Name| The S3 Bucket name or Amazon Resource Name (ARN).| string| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | +| autoCreateBucket| Autocreate Bucket| Specifies to automatically create the S3 bucket.| boolean| `false`| +| delay| Delay| The number of milliseconds before the next poll of the selected bucket.| integer| `500`| +| deleteAfterRead| Auto-delete Objects| Specifies to delete objects after consuming them.| boolean| `true`| +| ignoreBody| Ignore Body| If true, the S3 Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the S3 object is put in the body.| boolean| `false`| +| maxMessagesPerPoll| Max Messages Per Poll| Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited.| integer| `10`| +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| +| prefix| Prefix| The AWS S3 bucket prefix to consider while searching.| string| | `"folder/"` +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | | useDefaultCredentialsProvider| Default Credentials Provider| If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| |=== @@ -28,8 +40,10 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `aws-s3-source` Kamelet relies upon the presence of the following dependencies: -- camel:kamelet -- camel:aws2-s3 +- camel:core +- camel:aws2-s3 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 +- camel:kamelet == Usage @@ -42,7 +56,7 @@ You can use the `aws-s3-source` Kamelet as a Knative source by binding it to a K .aws-s3-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-s3-source-binding @@ -50,13 +64,11 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-s3-source properties: - accessKey: "The Access Key" bucketNameOrArn: "The Bucket Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" sink: ref: kind: Channel @@ -86,7 +98,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind aws-s3-source -p "source.accessKey=The Access Key" -p "source.bucketNameOrArn=The Bucket Name" -p "source.region=eu-west-1" -p "source.secretKey=The Secret Key" channel:mychannel +kamel bind aws-s3-source -p "source.bucketNameOrArn=The Bucket Name" -p "source.region=The AWS Region" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -98,7 +110,7 @@ You can use the `aws-s3-source` Kamelet as a Kafka source by binding it to a Kaf .aws-s3-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-s3-source-binding @@ -106,13 +118,11 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-s3-source properties: - accessKey: "The Access Key" bucketNameOrArn: "The Bucket Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" sink: ref: kind: KafkaTopic @@ -143,7 +153,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind aws-s3-source -p "source.accessKey=The Access Key" -p "source.bucketNameOrArn=The Bucket Name" -p "source.region=eu-west-1" -p "source.secretKey=The Secret Key" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind aws-s3-source -p "source.bucketNameOrArn=The Bucket Name" -p "source.region=The AWS Region" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-s3-streaming-upload-sink.adoc b/docs/modules/ROOT/pages/aws-s3-streaming-upload-sink.adoc index fb4c432cb..28421e4e5 100644 --- a/docs/modules/ROOT/pages/aws-s3-streaming-upload-sink.adoc +++ b/docs/modules/ROOT/pages/aws-s3-streaming-upload-sink.adoc @@ -6,23 +6,30 @@ Upload data to AWS S3 in streaming upload mode. +Access Key/Secret Key are the basic method for authenticating to the AWS S3 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'. + +When using a default Credentials Provider the S3 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. + == 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| | +| *bucketNameOrArn {empty}* *| Bucket Name| The S3 Bucket name or Amazon Resource Name (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| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| accessKey| Access Key| The access 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`| -| batchSize| Batch Size| The batch size (in bytes) in streaming upload mode| int| `1000000`| +| batchMessageNumber| Batch Message Number| The number of messages composing a batch in streaming upload mode| integer| `10`| +| batchSize| Batch Size| The batch size (in bytes) in streaming upload mode| integer| `1000000`| | 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"`| +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| | 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"`| -| useDefaultCredentialsProvider| Default Credentials Provider| If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| streamingUploadTimeout| Streaming Upload Timeout| While streaming upload mode is true, this option set the timeout to complete upload| integer| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | +| useDefaultCredentialsProvider| Default Credentials Provider| Set whether the S3 client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.| boolean| `false`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -46,7 +53,7 @@ You can use the `aws-s3-streaming-upload-sink` Kamelet as a Knative sink by bind .aws-s3-streaming-upload-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-s3-streaming-upload-sink-binding @@ -59,14 +66,12 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 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" + region: "The AWS Region" ---- @@ -91,7 +96,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel aws-s3-streaming-upload-sink -p "sink.accessKey=The Access Key" -p "sink.bucketNameOrArn=The Bucket Name" -p "sink.keyName=The Key Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind channel:mychannel aws-s3-streaming-upload-sink -p "sink.bucketNameOrArn=The Bucket Name" -p "sink.keyName=The Key Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -103,7 +108,7 @@ You can use the `aws-s3-streaming-upload-sink` Kamelet as a Kafka sink by bindin .aws-s3-streaming-upload-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-s3-streaming-upload-sink-binding @@ -116,14 +121,12 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 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" + region: "The AWS Region" ---- @@ -149,7 +152,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-s3-streaming-upload-sink -p "sink.accessKey=The Access Key" -p "sink.bucketNameOrArn=The Bucket Name" -p "sink.keyName=The Key Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-s3-streaming-upload-sink -p "sink.bucketNameOrArn=The Bucket Name" -p "sink.keyName=The Key Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-sns-sink.adoc b/docs/modules/ROOT/pages/aws-sns-sink.adoc index 596d6a168..30292467e 100644 --- a/docs/modules/ROOT/pages/aws-sns-sink.adoc +++ b/docs/modules/ROOT/pages/aws-sns-sink.adoc @@ -4,7 +4,13 @@ *Provided by: "Red Hat"* -Send message to an AWS SNS Topic +Send message to an Amazon Simple Notification Service (SNS) topic. + +The basic authentication method for the SNS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + +If you use the default credentials provider, the SNS client loads the credentials through this provider and doesn't use the basic authentication method. + +In the header, you can optionally set the `subject` / `ce-subject` property to specify the subject of the message. == Configuration Options @@ -12,11 +18,13 @@ The following table summarizes the configuration options available for the `aws- [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| | -| *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| | -| *topicNameOrArn {empty}* *| Topic Name| The SQS Topic name or ARN| string| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| *topicNameOrArn {empty}* *| Topic Name| The SNS topic name name or Amazon Resource Name (ARN).| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | | autoCreateTopic| Autocreate Topic| Setting the autocreation of the SNS topic.| boolean| `false`| +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | | useDefaultCredentialsProvider| Default Credentials Provider| If true, the SNS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| |=== @@ -27,8 +35,9 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `aws-sns-sink` Kamelet relies upon the presence of the following dependencies: -- camel:kamelet -- camel:aws2-sns +- camel:core +- camel:aws2-sns +- camel:kamelet == Usage @@ -41,7 +50,7 @@ You can use the `aws-sns-sink` Kamelet as a Knative sink by binding it to a Knat .aws-sns-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sns-sink-binding @@ -54,12 +63,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sns-sink properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" topicNameOrArn: "The Topic Name" ---- @@ -85,7 +92,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel aws-sns-sink -p "sink.accessKey=The Access Key" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" -p "sink.topicNameOrArn=The Topic Name" +kamel bind channel:mychannel aws-sns-sink -p "sink.region=The AWS Region" -p "sink.topicNameOrArn=The Topic Name" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -97,7 +104,7 @@ You can use the `aws-sns-sink` Kamelet as a Kafka sink by binding it to a Kafka .aws-sns-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sns-sink-binding @@ -110,12 +117,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sns-sink properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" topicNameOrArn: "The Topic Name" ---- @@ -142,7 +147,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-sns-sink -p "sink.accessKey=The Access Key" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" -p "sink.topicNameOrArn=The Topic Name" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-sns-sink -p "sink.region=The AWS Region" -p "sink.topicNameOrArn=The Topic Name" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-sqs-fifo-sink.adoc b/docs/modules/ROOT/pages/aws-sqs-fifo-sink.adoc index f7aac51f3..c6f791cce 100644 --- a/docs/modules/ROOT/pages/aws-sqs-fifo-sink.adoc +++ b/docs/modules/ROOT/pages/aws-sqs-fifo-sink.adoc @@ -4,7 +4,12 @@ *Provided by: "Red Hat"* -Send message to an AWS SQS FIFO Queue + +Send message to an AWS SQS FIFO Queue. + +Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'. + +When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. == Configuration Options @@ -12,13 +17,17 @@ The following table summarizes the configuration options available for the `aws- [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| | | *queueNameOrArn {empty}* *| Queue Name| The SQS Queue name or ARN| 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| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | +| amazonAWSHost| AWS Host| The hostname of the Amazon AWS cloud.| string| `"amazonaws.com"`| | autoCreateQueue| Autocreate Queue| Setting the autocreation of the SQS queue.| boolean| `false`| | contentBasedDeduplication| Content-Based Deduplication| Use content-based deduplication (should be enabled in the SQS FIFO queue first)| boolean| `false`| -| useDefaultCredentialsProvider| Default Credentials Provider| If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| +| protocol| Protocol| The underlying protocol used to communicate with SQS| string| `"https"`| `"http or https"` +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | +| useDefaultCredentialsProvider| Default Credentials Provider| Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.| boolean| `false`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -43,7 +52,7 @@ You can use the `aws-sqs-fifo-sink` Kamelet as a Knative sink by binding it to a .aws-sqs-fifo-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-fifo-sink-binding @@ -56,13 +65,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-fifo-sink properties: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" ---- @@ -87,7 +94,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel aws-sqs-fifo-sink -p "sink.accessKey=The Access Key" -p "sink.queueNameOrArn=The Queue Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind channel:mychannel aws-sqs-fifo-sink -p "sink.queueNameOrArn=The Queue Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -99,7 +106,7 @@ You can use the `aws-sqs-fifo-sink` Kamelet as a Kafka sink by binding it to a K .aws-sqs-fifo-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-fifo-sink-binding @@ -112,13 +119,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-fifo-sink properties: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" ---- @@ -144,7 +149,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-sqs-fifo-sink -p "sink.accessKey=The Access Key" -p "sink.queueNameOrArn=The Queue Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-sqs-fifo-sink -p "sink.queueNameOrArn=The Queue Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-sqs-sink.adoc b/docs/modules/ROOT/pages/aws-sqs-sink.adoc index 01abef8f1..e0bf1df9f 100644 --- a/docs/modules/ROOT/pages/aws-sqs-sink.adoc +++ b/docs/modules/ROOT/pages/aws-sqs-sink.adoc @@ -4,7 +4,11 @@ *Provided by: "Red Hat"* -Send message to an AWS SQS Queue +Send messages to an Amazon Simple Queue Service (SQS) queue. + +The basic authentication method for the SQS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + +If you use the default credentials provider, the SQS client loads the credentials through this provider and doesn't use the basic authentication method. == Configuration Options @@ -12,11 +16,15 @@ The following table summarizes the configuration options available for the `aws- [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| | -| *queueNameOrArn {empty}* *| Queue Name| The SQS Queue name or ARN| 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| | -| autoCreateQueue| Autocreate Queue| Setting the autocreation of the SQS queue.| boolean| `false`| +| *queueNameOrArn {empty}* *| Queue Name| The SQS Queue name or or Amazon Resource Name (ARN).| string| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | +| amazonAWSHost| AWS Host| The hostname of the Amazon AWS cloud.| string| `"amazonaws.com"`| +| autoCreateQueue| Autocreate Queue| Automatically create the SQS queue.| boolean| `false`| +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| +| protocol| Protocol| The underlying protocol used to communicate with SQS.| string| `"https"`| `"http or https"` +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | | useDefaultCredentialsProvider| Default Credentials Provider| If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| |=== @@ -28,7 +36,6 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `aws-sqs-sink` Kamelet relies upon the presence of the following dependencies: - camel:aws2-sqs -- camel:core - camel:kamelet == Usage @@ -42,7 +49,7 @@ You can use the `aws-sqs-sink` Kamelet as a Knative sink by binding it to a Knat .aws-sqs-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-sink-binding @@ -55,13 +62,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-sink properties: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" ---- @@ -86,7 +91,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel aws-sqs-sink -p "sink.accessKey=The Access Key" -p "sink.queueNameOrArn=The Queue Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind channel:mychannel aws-sqs-sink -p "sink.queueNameOrArn=The Queue Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -98,7 +103,7 @@ You can use the `aws-sqs-sink` Kamelet as a Kafka sink by binding it to a Kafka .aws-sqs-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-sink-binding @@ -111,13 +116,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-sink properties: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" ---- @@ -143,7 +146,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-sqs-sink -p "sink.accessKey=The Access Key" -p "sink.queueNameOrArn=The Queue Name" -p "sink.region=eu-west-1" -p "sink.secretKey=The Secret Key" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic aws-sqs-sink -p "sink.queueNameOrArn=The Queue Name" -p "sink.region=The AWS Region" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/aws-sqs-source.adoc b/docs/modules/ROOT/pages/aws-sqs-source.adoc index bc51b03fc..4a6473b43 100644 --- a/docs/modules/ROOT/pages/aws-sqs-source.adoc +++ b/docs/modules/ROOT/pages/aws-sqs-source.adoc @@ -6,18 +6,31 @@ Receive data from AWS SQS. +Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'. + +When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. + +Two headers will be duplicated with different names for clarity at sink level, CamelAwsSqsMessageId will be duplicated into aws.sqs.message.id and CamelAwsSqsReceiptHandle will be duplicated in aws.sqs.receipt.handle + == Configuration Options The following table summarizes the configuration options available for the `aws-sqs-source` 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| | -| *queueNameOrArn {empty}* *| Queue Name| The SQS Queue name or ARN| 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| | +| *queueNameOrArn {empty}* *| Queue Name| The SQS Queue Name or ARN| string| | +| *region {empty}* *| AWS Region| The AWS region to access.| string| | +| accessKey| Access Key| The access key obtained from AWS.| string| | +| amazonAWSHost| AWS Host| The hostname of the Amazon AWS cloud.| string| `"amazonaws.com"`| | autoCreateQueue| Autocreate Queue| Setting the autocreation of the SQS queue.| boolean| `false`| +| delay| Delay| The number of milliseconds before the next poll of the selected stream| integer| `500`| | deleteAfterRead| Auto-delete Messages| Delete messages after consuming them| boolean| `true`| +| greedy| Greedy Scheduler| If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages.| boolean| `false`| +| overrideEndpoint| Endpoint Overwrite| Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.| boolean| `false`| +| protocol| Protocol| The underlying protocol used to communicate with SQS| string| `"https"`| `"http or https"` +| queueURL| Queue URL| The full SQS Queue URL (required if using KEDA)| string| | +| secretKey| Secret Key| The secret key obtained from AWS.| string| | +| uriEndpointOverride| Overwrite Endpoint URI| The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.| string| | | useDefaultCredentialsProvider| Default Credentials Provider| If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).| boolean| `false`| |=== @@ -28,10 +41,10 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `aws-sqs-source` Kamelet relies upon the presence of the following dependencies: -- camel:aws2-sqs - camel:core -- camel:kamelet -- camel:jackson +- camel:aws2-sqs +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 +- camel:kamelet == Usage @@ -44,7 +57,7 @@ You can use the `aws-sqs-source` Kamelet as a Knative source by binding it to a .aws-sqs-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-source-binding @@ -52,13 +65,11 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-source properties: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" sink: ref: kind: Channel @@ -88,7 +99,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind aws-sqs-source -p "source.accessKey=The Access Key" -p "source.queueNameOrArn=The Queue Name" -p "source.region=eu-west-1" -p "source.secretKey=The Secret Key" channel:mychannel +kamel bind aws-sqs-source -p "source.queueNameOrArn=The Queue Name" -p "source.region=The AWS Region" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -100,7 +111,7 @@ You can use the `aws-sqs-source` Kamelet as a Kafka source by binding it to a Ka .aws-sqs-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-source-binding @@ -108,13 +119,11 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-source properties: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" sink: ref: kind: KafkaTopic @@ -145,7 +154,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind aws-sqs-source -p "source.accessKey=The Access Key" -p "source.queueNameOrArn=The Queue Name" -p "source.region=eu-west-1" -p "source.secretKey=The Secret Key" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind aws-sqs-source -p "source.queueNameOrArn=The Queue Name" -p "source.region=The AWS Region" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/azure-servicebus-sink.adoc b/docs/modules/ROOT/pages/azure-servicebus-sink.adoc deleted file mode 100644 index 9d6308ad9..000000000 --- a/docs/modules/ROOT/pages/azure-servicebus-sink.adoc +++ /dev/null @@ -1,147 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/azure-servicebus-sink.svg[] Azure Servicebus Sink - -*Provided by: "Red Hat"* - -Send Messages to Azure Servicebus. - -== Configuration Options - -The following table summarizes the configuration options available for the `azure-servicebus-sink` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *connectionString {empty}* *| Connection String| Connection String for Azure Servicebus instance| string| | -| *topicOrQueueName {empty}* *| Topic Or Queue Name| Topic Or Queue Name for the Azure Servicebus instance| string| | -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `azure-servicebus-sink` Kamelet relies upon the presence of the following dependencies: - -- camel:azure-servicebus -- camel:kamelet -- camel:core - -== Usage - -This section describes how you can use the `azure-servicebus-sink`. - -=== Knative Sink - -You can use the `azure-servicebus-sink` Kamelet as a Knative sink by binding it to a Knative object. - -.azure-servicebus-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: azure-servicebus-sink-binding -spec: - source: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: azure-servicebus-sink - properties: - connectionString: "The Connection String" - topicOrQueueName: "The Topic Or Queue Name" - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `azure-servicebus-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f azure-servicebus-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind channel:mychannel azure-servicebus-sink -p "sink.connectionString=The Connection String" -p "sink.topicOrQueueName=The Topic Or Queue Name" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Sink - -You can use the `azure-servicebus-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. - -.azure-servicebus-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: azure-servicebus-sink-binding -spec: - source: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: azure-servicebus-sink - properties: - connectionString: "The Connection String" - topicOrQueueName: "The Topic Or Queue Name" - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `azure-servicebus-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f azure-servicebus-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic azure-servicebus-sink -p "sink.connectionString=The Connection String" -p "sink.topicOrQueueName=The Topic Or Queue Name" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/azure-servicebus-sink.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/azure-servicebus-source.adoc b/docs/modules/ROOT/pages/azure-servicebus-source.adoc deleted file mode 100644 index b514818e7..000000000 --- a/docs/modules/ROOT/pages/azure-servicebus-source.adoc +++ /dev/null @@ -1,151 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/azure-servicebus-source.svg[] Azure Servicebus Source - -*Provided by: "Red Hat"* - -Consume Messages from Azure Servicebus. - -The subscribtion name parameter needs to be populated in case of consuming from a Topic. - -== Configuration Options - -The following table summarizes the configuration options available for the `azure-servicebus-source` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *connectionString {empty}* *| Connection String| Connection String for Azure Servicebus instance| string| | -| *topicOrQueueName {empty}* *| Topic Or Queue Name| Topic Or Queue Name for the Azure Servicebus instance| string| | -| serviceBusReceiveMode| Servicebus Receive Mode| Sets the receive mode for the receiver| string| `"PEEK_LOCK"`| -| subscriptionName| Subscription Name| Sets the name of the subscription in the topic to listen to. This parameter is mandatory in case of topic.| string| | -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `azure-servicebus-source` Kamelet relies upon the presence of the following dependencies: - -- camel:azure-servicebus -- camel:kamelet -- camel:core - -== Usage - -This section describes how you can use the `azure-servicebus-source`. - -=== Knative Source - -You can use the `azure-servicebus-source` Kamelet as a Knative source by binding it to a Knative object. - -.azure-servicebus-source-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: azure-servicebus-source-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: azure-servicebus-source - properties: - connectionString: "The Connection String" - topicOrQueueName: "The Topic Or Queue Name" - sink: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `azure-servicebus-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the source by using the following command: -+ -[source,shell] ----- -oc apply -f azure-servicebus-source-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the source by using the following command: - -[source,shell] ----- -kamel bind azure-servicebus-source -p "source.connectionString=The Connection String" -p "source.topicOrQueueName=The Topic Or Queue Name" channel:mychannel ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Source - -You can use the `azure-servicebus-source` Kamelet as a Kafka source by binding it to a Kafka topic. - -.azure-servicebus-source-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: azure-servicebus-source-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: azure-servicebus-source - properties: - connectionString: "The Connection String" - topicOrQueueName: "The Topic Or Queue Name" - sink: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `azure-servicebus-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the source by using the following command: -+ -[source,shell] ----- -oc apply -f azure-servicebus-source-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the source by using the following command: - -[source,shell] ----- -kamel bind azure-servicebus-source -p "source.connectionString=The Connection String" -p "source.topicOrQueueName=The Topic Or Queue Name" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/azure-servicebus-source.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/azure-storage-blob-append-sink.adoc b/docs/modules/ROOT/pages/azure-storage-blob-append-sink.adoc deleted file mode 100644 index dedac5763..000000000 --- a/docs/modules/ROOT/pages/azure-storage-blob-append-sink.adoc +++ /dev/null @@ -1,151 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/azure-storage-blob-append-sink.svg[] Azure Storage Blob Append Sink - -*Provided by: "Red Hat"* - -Upload data in append mode to Azure Storage Blob. - -In the header, you can set the `file` / `ce-file` property to specify the filename to upload. If you do set property in the header, the Kamelet uses the exchange ID as filename. - -== Configuration Options - -The following table summarizes the configuration options available for the `azure-storage-blob-append-sink` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *accountName {empty}* *| Account Name| The Azure Storage Blob account name.| string| | -| *containerName {empty}* *| Container Name| The Azure Storage Blob container name.| string| | -| accessKey| Access Key| The Azure Storage Blob access key.| string| | -| credentialType| Credential Type| Determines the credential strategy to adopt.| string| `"SHARED_ACCOUNT_KEY"`| -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `azure-storage-blob-append-sink` Kamelet relies upon the presence of the following dependencies: - -- camel:core -- camel:azure-storage-blob -- camel:kamelet - -== Usage - -This section describes how you can use the `azure-storage-blob-append-sink`. - -=== Knative Sink - -You can use the `azure-storage-blob-append-sink` Kamelet as a Knative sink by binding it to a Knative object. - -.azure-storage-blob-append-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: azure-storage-blob-append-sink-binding -spec: - source: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: azure-storage-blob-append-sink - properties: - accountName: "The Account Name" - containerName: "The Container Name" - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `azure-storage-blob-append-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f azure-storage-blob-append-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind channel:mychannel azure-storage-blob-append-sink -p "sink.accountName=The Account Name" -p "sink.containerName=The Container Name" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Sink - -You can use the `azure-storage-blob-append-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. - -.azure-storage-blob-append-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: azure-storage-blob-append-sink-binding -spec: - source: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: azure-storage-blob-append-sink - properties: - accountName: "The Account Name" - containerName: "The Container Name" - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `azure-storage-blob-append-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f azure-storage-blob-append-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic azure-storage-blob-append-sink -p "sink.accountName=The Account Name" -p "sink.containerName=The Container Name" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/azure-storage-blob-append-sink.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/azure-storage-blob-sink.adoc b/docs/modules/ROOT/pages/azure-storage-blob-sink.adoc index 00198fa8e..d9d1d24d1 100644 --- a/docs/modules/ROOT/pages/azure-storage-blob-sink.adoc +++ b/docs/modules/ROOT/pages/azure-storage-blob-sink.adoc @@ -6,11 +6,7 @@ Upload data to Azure Storage Blob. -The Kamelet expects the following headers to be set: - -- `file` / `ce-file`: as the file name to upload - -If the header won't be set the exchange ID will be used as file name. +In the header, you can set the `file` / `ce-file` property to specify the filename to upload. If you do set property in the header, the Kamelet uses the exchange ID as filename. == Configuration Options @@ -18,11 +14,10 @@ The following table summarizes the configuration options available for the `azur [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *accessKey {empty}* *| Access Key| The Azure Storage Blob access Key.| string| | | *accountName {empty}* *| Account Name| The Azure Storage Blob account name.| string| | | *containerName {empty}* *| Container Name| The Azure Storage Blob container name.| string| | -| credentialType| Credential Type| Determines the credential strategy to adopt. Possible values are SHARED_ACCOUNT_KEY, SHARED_KEY_CREDENTIAL and AZURE_IDENTITY| string| `"SHARED_ACCOUNT_KEY"`| -| operation| Operation Name| The operation to perform.| string| `"uploadBlockBlob"`| +| accessKey| Access Key| The Azure Storage Blob access key.| string| | +| credentialType| Credential Type| Determines the credential strategy to adopt.| string| `"SHARED_ACCOUNT_KEY"`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -47,7 +42,7 @@ You can use the `azure-storage-blob-sink` Kamelet as a Knative sink by binding i .azure-storage-blob-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-blob-sink-binding @@ -60,10 +55,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-blob-sink properties: - accessKey: "The Access Key" accountName: "The Account Name" containerName: "The Container Name" @@ -90,7 +84,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel azure-storage-blob-sink -p "sink.accessKey=The Access Key" -p "sink.accountName=The Account Name" -p "sink.containerName=The Container Name" +kamel bind channel:mychannel azure-storage-blob-sink -p "sink.accountName=The Account Name" -p "sink.containerName=The Container Name" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -102,7 +96,7 @@ You can use the `azure-storage-blob-sink` Kamelet as a Kafka sink by binding it .azure-storage-blob-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-blob-sink-binding @@ -115,10 +109,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-blob-sink properties: - accessKey: "The Access Key" accountName: "The Account Name" containerName: "The Container Name" @@ -146,7 +139,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic azure-storage-blob-sink -p "sink.accessKey=The Access Key" -p "sink.accountName=The Account Name" -p "sink.containerName=The Container Name" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic azure-storage-blob-sink -p "sink.accountName=The Account Name" -p "sink.containerName=The Container Name" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/azure-storage-blob-source.adoc b/docs/modules/ROOT/pages/azure-storage-blob-source.adoc index 10319fd1d..7c9c05607 100644 --- a/docs/modules/ROOT/pages/azure-storage-blob-source.adoc +++ b/docs/modules/ROOT/pages/azure-storage-blob-source.adoc @@ -4,7 +4,9 @@ *Provided by: "Red Hat"* -Consume Files from Azure Storage Blob. +Consume files from Azure Storage Blob. + +Two headers will be duplicated with different names for clarity at sink level, CamelAzureStorageBlobETag will be duplicated into azure.storage.blob.e.tag and CamelAzureStorageBlobBlobSize will be duplicated in azure.storage.blob.blob.size == Configuration Options @@ -12,10 +14,10 @@ The following table summarizes the configuration options available for the `azur [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *accessKey {empty}* *| Access Key| The Azure Storage Blob access Key.| string| | | *accountName {empty}* *| Account Name| The Azure Storage Blob account name.| string| | | *containerName {empty}* *| Container Name| The Azure Storage Blob container name.| string| | -| credentialType| Credential Type| Determines the credential strategy to adopt. Possible values are SHARED_ACCOUNT_KEY, SHARED_KEY_CREDENTIAL and AZURE_IDENTITY| string| `"SHARED_ACCOUNT_KEY"`| +| accessKey| Access Key| The Azure Storage Blob access key.| string| | +| credentialType| Credential Type| Determines the credential strategy to adopt.| string| `"SHARED_ACCOUNT_KEY"`| | delay| Delay| The number of milliseconds before the next poll of the selected blob.| integer| `500`| | deleteAfterRead| Auto-delete Blob| Specifies to delete blobs after consuming them| boolean| `false`| |=== @@ -28,10 +30,11 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `azure-storage-blob-source` Kamelet relies upon the presence of the following dependencies: - camel:azure-storage-blob -- camel:jsonpath +- camel:kamelet - camel:core +- camel:jsonpath - camel:timer -- camel:kamelet +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 == Usage @@ -44,7 +47,7 @@ You can use the `azure-storage-blob-source` Kamelet as a Knative source by bindi .azure-storage-blob-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-blob-source-binding @@ -52,10 +55,9 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-blob-source properties: - accessKey: "The Access Key" accountName: "The Account Name" containerName: "The Container Name" sink: @@ -87,7 +89,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind azure-storage-blob-source -p "source.accessKey=The Access Key" -p "source.accountName=The Account Name" -p "source.containerName=The Container Name" channel:mychannel +kamel bind azure-storage-blob-source -p "source.accountName=The Account Name" -p "source.containerName=The Container Name" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -99,7 +101,7 @@ You can use the `azure-storage-blob-source` Kamelet as a Kafka source by binding .azure-storage-blob-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-blob-source-binding @@ -107,10 +109,9 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-blob-source properties: - accessKey: "The Access Key" accountName: "The Account Name" containerName: "The Container Name" sink: @@ -143,7 +144,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind azure-storage-blob-source -p "source.accessKey=The Access Key" -p "source.accountName=The Account Name" -p "source.containerName=The Container Name" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind azure-storage-blob-source -p "source.accountName=The Account Name" -p "source.containerName=The Container Name" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/azure-storage-datalake-sink.adoc b/docs/modules/ROOT/pages/azure-storage-datalake-sink.adoc new file mode 100644 index 000000000..b36169a7a --- /dev/null +++ b/docs/modules/ROOT/pages/azure-storage-datalake-sink.adoc @@ -0,0 +1,158 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/azure-storage-datalake-sink.svg[] Azure Storage Blob Data Lake Sink + +*Provided by: "Red Hat"* + +Send data to Azure Storage Blob Data Lake. + +== Configuration Options + +The following table summarizes the configuration options available for the `azure-storage-datalake-sink` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *accountName {empty}* *| Account Name| The Azure Storage Blob Data lake account name.| string| | +| *clientId {empty}* *| Client Id| The Azure Storage Blob Data lake client Id.| string| | +| *clientSecret {empty}* *| Client Secret| The Azure Storage Blob Data lake client secret.| string| | +| *fileSystemName {empty}* *| File System Name| The Azure Storage Blob Data lake File system name.| string| | +| *tenantId {empty}* *| Tenant Id| The Azure Storage Blob Data lake tenant id.| string| | +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `azure-storage-datalake-sink` Kamelet relies upon the presence of the following dependencies: + +- camel:azure-storage-datalake +- camel:kamelet +- camel:core +- camel:timer +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 + +== Usage + +This section describes how you can use the `azure-storage-datalake-sink`. + +=== Knative Sink + +You can use the `azure-storage-datalake-sink` Kamelet as a Knative sink by binding it to a Knative object. + +.azure-storage-datalake-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-storage-datalake-sink-binding +spec: + source: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-storage-datalake-sink + properties: + accountName: "The Account Name" + clientId: "The Client Id" + clientSecret: "The Client Secret" + fileSystemName: "The File System Name" + tenantId: "The Tenant Id" + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `azure-storage-datalake-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the sink by using the following command: ++ +[source,shell] +---- +oc apply -f azure-storage-datalake-sink-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the sink by using the following command: + +[source,shell] +---- +kamel bind channel:mychannel azure-storage-datalake-sink -p "sink.accountName=The Account Name" -p "sink.clientId=The Client Id" -p "sink.clientSecret=The Client Secret" -p "sink.fileSystemName=The File System Name" -p "sink.tenantId=The Tenant Id" +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Sink + +You can use the `azure-storage-datalake-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. + +.azure-storage-datalake-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-storage-datalake-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-storage-datalake-sink + properties: + accountName: "The Account Name" + clientId: "The Client Id" + clientSecret: "The Client Secret" + fileSystemName: "The File System Name" + tenantId: "The Tenant Id" + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `azure-storage-datalake-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the sink by using the following command: ++ +[source,shell] +---- +oc apply -f azure-storage-datalake-sink-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the sink by using the following command: + +[source,shell] +---- +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic azure-storage-datalake-sink -p "sink.accountName=The Account Name" -p "sink.clientId=The Client Id" -p "sink.clientSecret=The Client Secret" -p "sink.fileSystemName=The File System Name" -p "sink.tenantId=The Tenant Id" +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/azure-storage-datalake-sink.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/azure-storage-datalake-source.adoc b/docs/modules/ROOT/pages/azure-storage-datalake-source.adoc new file mode 100644 index 000000000..af3f04d7e --- /dev/null +++ b/docs/modules/ROOT/pages/azure-storage-datalake-source.adoc @@ -0,0 +1,159 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/azure-storage-datalake-source.svg[] Azure Storage Blob Data Lake Source + +*Provided by: "Red Hat"* + +Consume files from Azure Storage Blob Data Lake. + +== Configuration Options + +The following table summarizes the configuration options available for the `azure-storage-datalake-source` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *accountName {empty}* *| Account Name| The Azure Storage Blob Data lake account name.| string| | +| *clientId {empty}* *| Client Id| The Azure Storage Blob Data lake client Id.| string| | +| *clientSecret {empty}* *| Client Secret| The Azure Storage Blob Data lake client secret.| string| | +| *fileSystemName {empty}* *| File System Name| The Azure Storage Blob Data lake File system name.| string| | +| *tenantId {empty}* *| Tenant Id| The Azure Storage Blob Data lake tenant id.| string| | +| delay| Delay| The number of milliseconds before the next poll of the selected blob.| integer| `500`| +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `azure-storage-datalake-source` Kamelet relies upon the presence of the following dependencies: + +- camel:azure-storage-datalake +- camel:kamelet +- camel:core +- camel:timer +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 + +== Usage + +This section describes how you can use the `azure-storage-datalake-source`. + +=== Knative Source + +You can use the `azure-storage-datalake-source` Kamelet as a Knative source by binding it to a Knative object. + +.azure-storage-datalake-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-storage-datalake-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-storage-datalake-source + properties: + accountName: "The Account Name" + clientId: "The Client Id" + clientSecret: "The Client Secret" + fileSystemName: "The File System Name" + tenantId: "The Tenant Id" + sink: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `azure-storage-datalake-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f azure-storage-datalake-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind azure-storage-datalake-source -p "source.accountName=The Account Name" -p "source.clientId=The Client Id" -p "source.clientSecret=The Client Secret" -p "source.fileSystemName=The File System Name" -p "source.tenantId=The Tenant Id" channel:mychannel +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Source + +You can use the `azure-storage-datalake-source` Kamelet as a Kafka source by binding it to a Kafka topic. + +.azure-storage-datalake-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-storage-datalake-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-storage-datalake-source + properties: + accountName: "The Account Name" + clientId: "The Client Id" + clientSecret: "The Client Secret" + fileSystemName: "The File System Name" + tenantId: "The Tenant Id" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `azure-storage-datalake-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f azure-storage-datalake-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind azure-storage-datalake-source -p "source.accountName=The Account Name" -p "source.clientId=The Client Id" -p "source.clientSecret=The Client Secret" -p "source.fileSystemName=The File System Name" -p "source.tenantId=The Tenant Id" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/azure-storage-datalake-source.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/azure-storage-queue-sink.adoc b/docs/modules/ROOT/pages/azure-storage-queue-sink.adoc index ee9699c10..f3b59d865 100644 --- a/docs/modules/ROOT/pages/azure-storage-queue-sink.adoc +++ b/docs/modules/ROOT/pages/azure-storage-queue-sink.adoc @@ -4,15 +4,9 @@ *Provided by: "Red Hat"* -Send Messages to Azure Storage queues. +Send events to Azure Storage queues. -The Kamelet is able to understand the following headers to be set: - -- `expiration` / `ce-expiration`: as the time to live of the message in the queue. - -If the header won't be set the default of 7 days will be used. - -The format should be in this form: PnDTnHnMn.nS., e.g: PT20.345S — parses as 20.345 seconds, P2D — parses as 2 days. +In the header, you can set the `partition` / `ce-partition` property to determine how long an event remains in the Azure Storage queue. Use `PnDTnHnMn.nS.` format. For example, `PT20.345S` parses as 20.345 seconds and `P2D` parses as 2 days. If you not set the property in the header, the Kamelet uses the default of `P27D` (7 days). == Configuration Options @@ -20,7 +14,7 @@ The following table summarizes the configuration options available for the `azur [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| | +| *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| | |=== @@ -47,7 +41,7 @@ You can use the `azure-storage-queue-sink` Kamelet as a Knative sink by binding .azure-storage-queue-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-queue-sink-binding @@ -60,7 +54,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-queue-sink properties: accessKey: "The Access Key" @@ -102,7 +96,7 @@ You can use the `azure-storage-queue-sink` Kamelet as a Kafka sink by binding it .azure-storage-queue-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-queue-sink-binding @@ -115,7 +109,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-queue-sink properties: accessKey: "The Access Key" diff --git a/docs/modules/ROOT/pages/azure-storage-queue-source.adoc b/docs/modules/ROOT/pages/azure-storage-queue-source.adoc index 1861bae03..473cc6eb9 100644 --- a/docs/modules/ROOT/pages/azure-storage-queue-source.adoc +++ b/docs/modules/ROOT/pages/azure-storage-queue-source.adoc @@ -4,7 +4,9 @@ *Provided by: "Red Hat"* -Receive Messages from Azure Storage queues. +Receive events from Azure Storage queues. + +One header will be duplicated with different names for clarity at sink level, CamelAzureStorageQueueMessageId will be duplicated into azure.storage.queue.message.id == Configuration Options @@ -12,10 +14,10 @@ The following table summarizes the configuration options available for the `azur [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| | +| *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`| +| maxMessages| Maximum Messages| The maximum number of messages to get. You can specify a value between 1 and 32. The default is 1 (one message). If there are fewer than the maximum number of messages in the queue, then all the messages are returned.| integer| `1`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -26,7 +28,9 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `azure-storage-queue-source` Kamelet relies upon the presence of the following dependencies: - camel:azure-storage-queue -- camel:kamelet +- camel:kamelet +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 +- camel:core == Usage @@ -39,7 +43,7 @@ You can use the `azure-storage-queue-source` Kamelet as a Knative source by bind .azure-storage-queue-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-queue-source-binding @@ -47,7 +51,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-queue-source properties: accessKey: "The Access Key" @@ -94,7 +98,7 @@ You can use the `azure-storage-queue-source` Kamelet as a Kafka source by bindin .azure-storage-queue-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-queue-source-binding @@ -102,7 +106,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-queue-source properties: accessKey: "The Access Key" diff --git a/docs/modules/ROOT/pages/cassandra-sink.adoc b/docs/modules/ROOT/pages/cassandra-sink.adoc index 07542c525..f2645ab5a 100644 --- a/docs/modules/ROOT/pages/cassandra-sink.adoc +++ b/docs/modules/ROOT/pages/cassandra-sink.adoc @@ -4,9 +4,9 @@ *Provided by: "Red Hat"* -Send data to a Cassandra Cluster. +Send data to an Apache Cassandra cluster. -This Kamelet expects the body as JSON Array. The content of the JSON Array will be used as input for the CQL Prepared Statement set in the query parameter. +This Kamelet expects JSON Array formatted data. The content of the JSON Array is used as input for the CQL Prepared Statement set in the query parameter. == Configuration Options @@ -14,13 +14,15 @@ The following table summarizes the configuration options available for the `cass [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *connectionHost {empty}* *| Connection Host| Hostname(s) cassandra server(s). Multiple hosts can be separated by comma.| string| | `"localhost"` -| *connectionPort {empty}* *| Connection Port| Port number of cassandra server(s)| string| | `9042` -| *keyspace {empty}* *| Keyspace| Keyspace to use| string| | `"customers"` -| *password {empty}* *| Password| The password to use for accessing a secured Cassandra Cluster| string| | -| *query {empty}* *| Query| The Prepared statement to execute against the Cassandra cluster table| string| | -| *username {empty}* *| Username| The username to use for accessing a secured Cassandra Cluster| string| | -| consistencyLevel| Consistency Level| Consistency level to use. The value can be one of ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, SERIAL, LOCAL_SERIAL, LOCAL_ONE| string| `"ANY"`| +| *connectionHost {empty}* *| Connection Host| The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames.| string| | `"localhost"` +| *connectionPort {empty}* *| Connection Port| The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers.| string| | `9042` +| *keyspace {empty}* *| Keyspace| The keyspace to use.| string| | `"customers"` +| *query {empty}* *| Query| The query to execute against the Cassandra cluster table.| string| | +| consistencyLevel| Consistency Level| The consistency level to use.| string| `"ANY"`| +| extraTypeCodecs| Extra Type Codecs| To use a specific comma separated list of Extra Type codecs.| string| | +| password| Password| The password for accessing a secured Cassandra cluster.| string| | +| prepareStatements| Prepare Statements| If true, specifies to use PreparedStatements as the query. If false, specifies to use regular Statements as the query.| boolean| `true`| +| username| Username| The username for accessing a secured Cassandra cluster.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -45,7 +47,7 @@ You can use the `cassandra-sink` Kamelet as a Knative sink by binding it to a Kn .cassandra-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: cassandra-sink-binding @@ -58,15 +60,13 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: cassandra-sink properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" - password: "The Password" query: "The Query" - username: "The Username" ---- @@ -91,7 +91,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel cassandra-sink -p "sink.connectionHost=localhost" -p sink.connectionPort=9042 -p "sink.keyspace=customers" -p "sink.password=The Password" -p "sink.query=The Query" -p "sink.username=The Username" +kamel bind channel:mychannel cassandra-sink -p "sink.connectionHost=localhost" -p sink.connectionPort=9042 -p "sink.keyspace=customers" -p "sink.query=The Query" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -103,7 +103,7 @@ You can use the `cassandra-sink` Kamelet as a Kafka sink by binding it to a Kafk .cassandra-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: cassandra-sink-binding @@ -116,15 +116,13 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: cassandra-sink properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" - password: "The Password" query: "The Query" - username: "The Username" ---- @@ -150,7 +148,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic cassandra-sink -p "sink.connectionHost=localhost" -p sink.connectionPort=9042 -p "sink.keyspace=customers" -p "sink.password=The Password" -p "sink.query=The Query" -p "sink.username=The Username" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic cassandra-sink -p "sink.connectionHost=localhost" -p sink.connectionPort=9042 -p "sink.keyspace=customers" -p "sink.query=The Query" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/cassandra-source.adoc b/docs/modules/ROOT/pages/cassandra-source.adoc index 9246c44b5..d0f2db3e8 100644 --- a/docs/modules/ROOT/pages/cassandra-source.adoc +++ b/docs/modules/ROOT/pages/cassandra-source.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Query a Cassandra cluster table. +Send a query to an Apache Cassandra cluster table. == Configuration Options @@ -12,14 +12,15 @@ The following table summarizes the configuration options available for the `cass [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *connectionHost {empty}* *| Connection Host| Hostname(s) cassandra server(s). Multiple hosts can be separated by comma.| string| | `"localhost"` -| *connectionPort {empty}* *| Connection Port| Port number of cassandra server(s)| string| | `9042` -| *keyspace {empty}* *| Keyspace| Keyspace to use| string| | `"customers"` -| *password {empty}* *| Password| The password to use for accessing a secured Cassandra Cluster| string| | -| *query {empty}* *| Query| The query to execute against the Cassandra cluster table| string| | -| *username {empty}* *| Username| The username to use for accessing a secured Cassandra Cluster| string| | -| consistencyLevel| Consistency Level| Consistency level to use. The value can be one of ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, SERIAL, LOCAL_SERIAL, LOCAL_ONE| string| `"QUORUM"`| -| resultStrategy| Result Strategy| The strategy to convert the result set of the query. Possible values are ALL, ONE, LIMIT_10, LIMIT_100...| string| `"ALL"`| +| *connectionHost {empty}* *| Connection Host| The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames.| string| | `"localhost"` +| *connectionPort {empty}* *| Connection Port| The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers.| string| | `9042` +| *keyspace {empty}* *| Keyspace| The keyspace to use.| string| | `"customers"` +| *query {empty}* *| Query| The query to execute against the Cassandra cluster table.| string| | +| consistencyLevel| Consistency Level| The consistency level to use.| string| `"QUORUM"`| +| extraTypeCodecs| Extra Type Codecs| To use a specific comma separated list of Extra Type codecs.| string| | +| password| Password| The password for accessing a secured Cassandra cluster.| string| | +| resultStrategy| Result Strategy| The strategy to convert the result set of the query.| string| `"ALL"`| +| username| Username| The username for accessing a secured Cassandra cluster.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -44,7 +45,7 @@ You can use the `cassandra-source` Kamelet as a Knative source by binding it to .cassandra-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: cassandra-source-binding @@ -52,15 +53,13 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: cassandra-source properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" - password: "The Password" query: "The Query" - username: "The Username" sink: ref: kind: Channel @@ -90,7 +89,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind cassandra-source -p "source.connectionHost=localhost" -p source.connectionPort=9042 -p "source.keyspace=customers" -p "source.password=The Password" -p "source.query=The Query" -p "source.username=The Username" channel:mychannel +kamel bind cassandra-source -p "source.connectionHost=localhost" -p source.connectionPort=9042 -p "source.keyspace=customers" -p "source.query=The Query" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -102,7 +101,7 @@ You can use the `cassandra-source` Kamelet as a Kafka source by binding it to a .cassandra-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: cassandra-source-binding @@ -110,15 +109,13 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: cassandra-source properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" - password: "The Password" query: "The Query" - username: "The Username" sink: ref: kind: KafkaTopic @@ -149,7 +146,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind cassandra-source -p "source.connectionHost=localhost" -p source.connectionPort=9042 -p "source.keyspace=customers" -p "source.password=The Password" -p "source.query=The Query" -p "source.username=The Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind cassandra-source -p "source.connectionHost=localhost" -p source.connectionPort=9042 -p "source.keyspace=customers" -p "source.query=The Query" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/ceph-sink.adoc b/docs/modules/ROOT/pages/ceph-sink.adoc index 70dc84295..ddf9bbc7d 100644 --- a/docs/modules/ROOT/pages/ceph-sink.adoc +++ b/docs/modules/ROOT/pages/ceph-sink.adoc @@ -47,7 +47,7 @@ You can use the `ceph-sink` Kamelet as a Knative sink by binding it to a Knative .ceph-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ceph-sink-binding @@ -60,7 +60,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ceph-sink properties: accessKey: "The Access Key" @@ -104,7 +104,7 @@ You can use the `ceph-sink` Kamelet as a Kafka sink by binding it to a Kafka top .ceph-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ceph-sink-binding @@ -117,7 +117,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ceph-sink properties: accessKey: "The Access Key" diff --git a/docs/modules/ROOT/pages/ceph-source.adoc b/docs/modules/ROOT/pages/ceph-source.adoc index 3b90e2493..ebc5494f6 100644 --- a/docs/modules/ROOT/pages/ceph-source.adoc +++ b/docs/modules/ROOT/pages/ceph-source.adoc @@ -46,7 +46,7 @@ You can use the `ceph-source` Kamelet as a Knative source by binding it to a Kna .ceph-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ceph-source-binding @@ -54,7 +54,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ceph-source properties: accessKey: "The Access Key" @@ -103,7 +103,7 @@ You can use the `ceph-source` Kamelet as a Kafka source by binding it to a Kafka .ceph-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ceph-source-binding @@ -111,7 +111,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ceph-source properties: accessKey: "The Access Key" diff --git a/docs/modules/ROOT/pages/throttle-action.adoc b/docs/modules/ROOT/pages/data-type-action.adoc similarity index 52% rename from docs/modules/ROOT/pages/throttle-action.adoc rename to docs/modules/ROOT/pages/data-type-action.adoc index 3be740086..bb6841d20 100644 --- a/docs/modules/ROOT/pages/throttle-action.adoc +++ b/docs/modules/ROOT/pages/data-type-action.adoc @@ -1,19 +1,19 @@ // THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT -= image:kamelets/throttle-action.svg[] Throttle Action += image:kamelets/data-type-action.svg[] Data Type Action *Provided by: "Red Hat"* -The Throttle action allows you to ensure that a specific sink does not get overloaded. +Applies a given data type with respective data transformation. == Configuration Options -The following table summarizes the configuration options available for the `throttle-action` Kamelet: +The following table summarizes the configuration options available for the `data-type-action` Kamelet: [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *messages {empty}* *| Messages Number| The number of messages to send in the time period set| integer| | `10` -| timePeriod| Time Period| Sets the time period during which the maximum request count is valid for, in milliseconds| string| `"1000"`| +| *format {empty}* *| Data Type Format| Defines the data type that will be applied by this action. Apache Camel and the Kamelet catalog support different data types and performs automatic message conversion according to the given type.| string| | +| scheme| Component Scheme| The data type component scheme enables users to apply Camel component specific data type conversions.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -21,41 +21,42 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. == Dependencies -At runtime, the `throttle-action` Kamelet relies upon the presence of the following dependencies: +At runtime, the `data-type-action` Kamelet relies upon the presence of the following dependencies: -- camel:core -- camel:kamelet +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 +- camel:kamelet +- camel:core == Usage -This section describes how you can use the `throttle-action`. +This section describes how you can use the `data-type-action`. === Knative Action -You can use the `throttle-action` Kamelet as an intermediate step in a Knative binding. +You can use the `data-type-action` Kamelet as an intermediate step in a Knative binding. -.throttle-action-binding.yaml +.data-type-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: - name: throttle-action-binding + name: data-type-action-binding spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: throttle-action + apiVersion: camel.apache.org/v1 + name: data-type-action properties: - messages: 10 + format: "The Data Type Format" sink: ref: kind: Channel @@ -70,13 +71,13 @@ Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShif ==== *Procedure for using the cluster CLI* -. Save the `throttle-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. +. Save the `data-type-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. . Run the action by using the following command: + [source,shell] ---- -oc apply -f throttle-action-binding.yaml +oc apply -f data-type-action-binding.yaml ---- ==== *Procedure for using the Kamel CLI* @@ -85,37 +86,37 @@ Configure and run the action by using the following command: [source,shell] ---- -kamel bind timer-source?message=Hello --step throttle-action -p step-0.messages=10 channel:mychannel +kamel bind timer-source?message=Hello --step data-type-action -p "step-0.format=The Data Type Format" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. === Kafka Action -You can use the `throttle-action` Kamelet as an intermediate step in a Kafka binding. +You can use the `data-type-action` Kamelet as an intermediate step in a Kafka binding. -.throttle-action-binding.yaml +.data-type-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: - name: throttle-action-binding + name: data-type-action-binding spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: throttle-action + apiVersion: camel.apache.org/v1 + name: data-type-action properties: - messages: 10 + format: "The Data Type Format" sink: ref: kind: KafkaTopic @@ -131,13 +132,13 @@ Make also sure you have *"Red Hat Integration - Camel K"* installed into the Ope ==== *Procedure for using the cluster CLI* -. Save the `throttle-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. +. Save the `data-type-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. . Run the action by using the following command: + [source,shell] ---- -oc apply -f throttle-action-binding.yaml +oc apply -f data-type-action-binding.yaml ---- ==== *Procedure for using the Kamel CLI* @@ -146,13 +147,13 @@ Configure and run the action by using the following command: [source,shell] ---- -kamel bind timer-source?message=Hello --step throttle-action -p step-0.messages=10 kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind timer-source?message=Hello --step data-type-action -p "step-0.format=The Data Type Format" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. == Kamelet source file -https://github.com/openshift-integration/kamelet-catalog/blob/main/throttle-action.kamelet.yaml +https://github.com/openshift-integration/kamelet-catalog/blob/main/data-type-action.kamelet.yaml // THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/elasticsearch-index-sink.adoc b/docs/modules/ROOT/pages/elasticsearch-index-sink.adoc index 661a1fcb4..a79a077fa 100644 --- a/docs/modules/ROOT/pages/elasticsearch-index-sink.adoc +++ b/docs/modules/ROOT/pages/elasticsearch-index-sink.adoc @@ -4,17 +4,19 @@ *Provided by: "Red Hat"* -This sink stores documents into ElasticSearch. +Stores JSON-formatted data into ElasticSearch. -Input data must have JSON format according to the index used. +The input data must be formatted in JSON according to the requirements of the index. -- `indexId` / `ce-indexid`: as the index ID for Elasticsearch +If you specify the `certificate` property, you must base64 encode it before you pass it as a parameter. -If the header won't be set the exchange ID will be used as index. +In the header, you can set the following properties: -- `indexName` / `ce-indexname`: as the index Name for Elasticsearch +- `indexId` / `ce-indexid`: The index ID for ElasticSearch. -If the header won't be set the exchange ID will be used as index name. +- `indexName` / `ce-indexname`: The index name for ElasticSearch. + +If you do not set a property in the header, the Kamelet uses the exchange ID for the index setting. == Configuration Options @@ -22,12 +24,13 @@ The following table summarizes the configuration options available for the `elas [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *clusterName {empty}* *| ElasticSearch Cluster Name| Name of the cluster.| string| | `"quickstart"` -| *hostAddresses {empty}* *| Host Addresses| Comma separated list with ip:port formatted remote transport addresses to use.| string| | `"quickstart-es-http:9200"` -| enableSSL| Enable SSL| Do we want to connect using SSL?| boolean| `true`| -| indexName| Index in ElasticSearch| The name of the index to act against.| string| | `"data"` -| password| Password| Password to connect to ElasticSearch.| string| | -| user| Username| Username to connect to ElasticSearch.| string| | +| *clusterName {empty}* *| ElasticSearch Cluster Name| The name of the ElasticSearch cluster.| string| | `"quickstart"` +| *hostAddresses {empty}* *| Host Addresses| A comma-separated list of remote transport addresses in `ip:port format`.| string| | `"quickstart-es-http:9200"` +| certificate| Certificate| The Certificate for accessing the Elasticsearch cluster. You must encode this value in base64.| string| | +| enableSSL| Enable SSL| Specifies to connect by using SSL.| boolean| `true`| +| indexName| Index in ElasticSearch| The name of the ElasticSearch index.| string| | `"data"` +| password| Password| The password to connect to ElasticSearch.| string| | +| user| Username| The username to connect to ElasticSearch.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -40,7 +43,7 @@ At runtime, the `elasticsearch-index-sink` Kamelet relies upon the presence of t - camel:core - camel:jackson - camel:kamelet -- camel:elasticsearch-rest +- camel:elasticsearch - camel:gson - camel:bean @@ -55,7 +58,7 @@ You can use the `elasticsearch-index-sink` Kamelet as a Knative sink by binding .elasticsearch-index-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: elasticsearch-index-sink-binding @@ -68,7 +71,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: elasticsearch-index-sink properties: clusterName: "quickstart" @@ -109,7 +112,7 @@ You can use the `elasticsearch-index-sink` Kamelet as a Kafka sink by binding it .elasticsearch-index-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: elasticsearch-index-sink-binding @@ -122,7 +125,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: elasticsearch-index-sink properties: clusterName: "quickstart" diff --git a/docs/modules/ROOT/pages/extract-field-action.adoc b/docs/modules/ROOT/pages/extract-field-action.adoc index 5a2404f1d..dd32d0c76 100644 --- a/docs/modules/ROOT/pages/extract-field-action.adoc +++ b/docs/modules/ROOT/pages/extract-field-action.adoc @@ -4,7 +4,20 @@ *Provided by: "Red Hat"* -Extract a field from the body +Extract a field from the message body. + +The extract field action expects an application/json content type. + +The field parameter allows you to specify which field of the json the user wants to extract. By default the message body will be overriden with the extracted field. + +The optional parameter headerOutput allows the user to specify wheter the extracted field should be stored in a message header named 'CamelKameletsExtractFieldName', leaving the message body untouched. + +The optional parameter headerOutputName allows the user to specify a custom header name instead of the default 'CamelKameletsExtractFieldName'. This parameter must be used in conjunction with headerOutput. +If no headerOutputName parameter will be provided, the default 'CamelKameletsExtractFieldName' will be used. + +The optional parameter strictHeaderCheck allows to user to enable a strict header name check. If enabled the action will check if the header output name (custom or default) has been used already in the exchange. If so, the extracted field will be stored in the message body, if not, the extracted field will be stored in the selected header (custom or default). + +The headerOutput/headerOutputName/strictHeaderCheck parameters are particulary useful in case you would like to reuse an extracted field as parameter for another header, for example. == Configuration Options @@ -12,7 +25,10 @@ The following table summarizes the configuration options available for the `extr [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *field {empty}* *| Field| The name of the field to be added| string| | +| *field {empty}* *| Field| The name of the field to extract| string| | +| headerOutput| Header Output| If enable the action will store the extracted field in an header named CamelKameletsExtractFieldName| boolean| `false`| +| headerOutputName| Header Output Name| A custom name for the header containing the extracted field| string| `"none"`| +| strictHeaderCheck| Strict Header Check| If enabled the action will check if the header output name (custom or default) has been used already in the exchange. If so, the extracted field will be stored in the message body, if not, the extracted field will be stored in the selected header (custom or default).| boolean| `false`| | trimField| Trim Field| If enabled we return the Raw extracted field| boolean| `false`| |=== @@ -23,7 +39,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `extract-field-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:kamelet - camel:core - camel:jackson @@ -39,7 +55,7 @@ You can use the `extract-field-action` Kamelet as an intermediate step in a Knat .extract-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: extract-field-action-binding @@ -47,14 +63,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: extract-field-action properties: field: "The Field" @@ -99,7 +115,7 @@ You can use the `extract-field-action` Kamelet as an intermediate step in a Kafk .extract-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: extract-field-action-binding @@ -107,14 +123,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: extract-field-action properties: field: "The Field" diff --git a/docs/modules/ROOT/pages/ftp-sink.adoc b/docs/modules/ROOT/pages/ftp-sink.adoc index 96e68b05e..134856775 100644 --- a/docs/modules/ROOT/pages/ftp-sink.adoc +++ b/docs/modules/ROOT/pages/ftp-sink.adoc @@ -4,13 +4,11 @@ *Provided by: "Red Hat"* -Send data to an FTP Server. +Send data to an FTP server. -The Kamelet expects the following headers to be set: +In the header, you can set the `file` / `ce-file` property to specify the filename to upload. -- `file` / `ce-file`: as the file name to upload - -If the header won't be set the exchange ID will be used as file name. +If you do not set the property in the header, the Kamelet uses the exchange ID for the filename. == Configuration Options @@ -18,13 +16,15 @@ The following table summarizes the configuration options available for the `ftp- [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *connectionHost {empty}* *| Connection Host| Hostname of the FTP server| string| | -| *connectionPort {empty}* *| Connection Port| Port of the FTP server| string| `21`| -| *directoryName {empty}* *| Directory Name| The starting directory| string| | -| *password {empty}* *| Password| The password to access the FTP server| string| | -| *username {empty}* *| Username| The username to access the FTP server| string| | -| fileExist| File Existence| How to behave in case of file already existent. There are 4 enums and the value can be one of Override, Append, Fail or Ignore| string| `"Override"`| -| passiveMode| Passive Mode| Sets passive mode connection| boolean| `false`| +| *connectionHost {empty}* *| Connection Host| The hostname of the FTP server.| string| | +| *connectionPort {empty}* *| Connection Port| The port of the FTP server.| string| `21`| +| *directoryName {empty}* *| Directory Name| The starting directory.| string| | +| *password {empty}* *| Password| The password to access the FTP server.| string| | +| *username {empty}* *| Username| The username to access the FTP server.| string| | +| autoCreate| Autocreate Missing Directories| Automatically create the directory the files should be written to.| boolean| `true`| +| binary| Binary| Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).| boolean| `false`| +| fileExist| File Existence| How to behave in case of file already existent.| string| `"Override"`| +| passiveMode| Passive Mode| Specifies to use passive mode connection.| boolean| `false`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -49,7 +49,7 @@ You can use the `ftp-sink` Kamelet as a Knative sink by binding it to a Knative .ftp-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftp-sink-binding @@ -62,7 +62,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftp-sink properties: connectionHost: "The Connection Host" @@ -105,7 +105,7 @@ You can use the `ftp-sink` Kamelet as a Kafka sink by binding it to a Kafka topi .ftp-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftp-sink-binding @@ -118,7 +118,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftp-sink properties: connectionHost: "The Connection Host" diff --git a/docs/modules/ROOT/pages/ftp-source.adoc b/docs/modules/ROOT/pages/ftp-source.adoc index 1ae46441f..86f3e2a2b 100644 --- a/docs/modules/ROOT/pages/ftp-source.adoc +++ b/docs/modules/ROOT/pages/ftp-source.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Receive data from an FTP Server. +Receive data from an FTP server. == Configuration Options @@ -12,14 +12,17 @@ The following table summarizes the configuration options available for the `ftp- [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *connectionHost {empty}* *| Connection Host| Hostname of the FTP server| string| | -| *connectionPort {empty}* *| Connection Port| Port of the FTP server| string| `21`| +| *connectionHost {empty}* *| Connection Host| The hostname of the FTP server.| string| | +| *connectionPort {empty}* *| Connection Port| The port of the FTP server.| string| `21`| | *directoryName {empty}* *| Directory Name| The starting directory| string| | -| *password {empty}* *| Password| The password to access the FTP server| string| | -| *username {empty}* *| Username| The username to access the FTP server| string| | -| idempotent| Idempotency| Skip already processed files.| boolean| `true`| -| passiveMode| Passive Mode| Sets passive mode connection| boolean| `false`| -| recursive| Recursive| If a directory, will look for files in all the sub-directories as well.| boolean| `false`| +| *password {empty}* *| Password| The password to access the FTP server.| string| | +| *username {empty}* *| Username| The username to access the FTP server.| string| | +| autoCreate| Autocreate Missing Directories| Automatically create starting directory.| boolean| `true`| +| binary| Binary| Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).| boolean| `false`| +| delete| Delete| If true, the file will be deleted after it is processed successfully.| boolean| `false`| +| idempotent| Idempotency| Skip already-processed files.| boolean| `true`| +| passiveMode| Passive Mode| Specifes to use passive mode connection.| boolean| `false`| +| recursive| Recursive| If a directory, look for files in all the sub-directories as well.| boolean| `false`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -44,7 +47,7 @@ You can use the `ftp-source` Kamelet as a Knative source by binding it to a Knat .ftp-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftp-source-binding @@ -52,7 +55,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftp-source properties: connectionHost: "The Connection Host" @@ -100,7 +103,7 @@ You can use the `ftp-source` Kamelet as a Kafka source by binding it to a Kafka .ftp-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftp-source-binding @@ -108,7 +111,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftp-source properties: connectionHost: "The Connection Host" diff --git a/docs/modules/ROOT/pages/ftps-sink.adoc b/docs/modules/ROOT/pages/ftps-sink.adoc deleted file mode 100644 index 9b3384397..000000000 --- a/docs/modules/ROOT/pages/ftps-sink.adoc +++ /dev/null @@ -1,162 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/ftps-sink.svg[] FTPS Sink - -*Provided by: "Red Hat"* - -Send data to an FTPS Server. - -The Kamelet expects the following headers to be set: - -- `file` / `ce-file`: as the file name to upload - -If the header won't be set the exchange ID will be used as file name. - -== Configuration Options - -The following table summarizes the configuration options available for the `ftps-sink` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *connectionHost {empty}* *| Connection Host| Hostname of the FTP server| string| | -| *connectionPort {empty}* *| Connection Port| Port of the FTP server| string| `21`| -| *directoryName {empty}* *| Directory Name| The starting directory| string| | -| *password {empty}* *| Password| The password to access the FTP server| string| | -| *username {empty}* *| Username| The username to access the FTP server| string| | -| fileExist| File Existence| How to behave in case of file already existent. There are 4 enums and the value can be one of Override, Append, Fail or Ignore| string| `"Override"`| -| passiveMode| Passive Mode| Sets passive mode connection| boolean| `false`| -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `ftps-sink` Kamelet relies upon the presence of the following dependencies: - -- camel:ftp -- camel:core -- camel:kamelet - -== Usage - -This section describes how you can use the `ftps-sink`. - -=== Knative Sink - -You can use the `ftps-sink` Kamelet as a Knative sink by binding it to a Knative object. - -.ftps-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: ftps-sink-binding -spec: - source: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: ftps-sink - properties: - connectionHost: "The Connection Host" - directoryName: "The Directory Name" - password: "The Password" - username: "The Username" - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `ftps-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f ftps-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind channel:mychannel ftps-sink -p "sink.connectionHost=The Connection Host" -p "sink.directoryName=The Directory Name" -p "sink.password=The Password" -p "sink.username=The Username" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Sink - -You can use the `ftps-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. - -.ftps-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: ftps-sink-binding -spec: - source: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: ftps-sink - properties: - connectionHost: "The Connection Host" - directoryName: "The Directory Name" - password: "The Password" - username: "The Username" - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `ftps-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f ftps-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ftps-sink -p "sink.connectionHost=The Connection Host" -p "sink.directoryName=The Directory Name" -p "sink.password=The Password" -p "sink.username=The Username" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/ftps-sink.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/ftps-source.adoc b/docs/modules/ROOT/pages/ftps-source.adoc deleted file mode 100644 index 676a72ebb..000000000 --- a/docs/modules/ROOT/pages/ftps-source.adoc +++ /dev/null @@ -1,157 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/ftps-source.svg[] FTPS Source - -*Provided by: "Red Hat"* - -Receive data from an FTPS Server. - -== Configuration Options - -The following table summarizes the configuration options available for the `ftps-source` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *connectionHost {empty}* *| Connection Host| Hostname of the FTPS server| string| | -| *connectionPort {empty}* *| Connection Port| Port of the FTPS server| string| `21`| -| *directoryName {empty}* *| Directory Name| The starting directory| string| | -| *password {empty}* *| Password| The password to access the FTPS server| string| | -| *username {empty}* *| Username| The username to access the FTPS server| string| | -| idempotent| Idempotency| Skip already processed files.| boolean| `true`| -| passiveMode| Passive Mode| Sets passive mode connection| boolean| `false`| -| recursive| Recursive| If a directory, will look for files in all the sub-directories as well.| boolean| `false`| -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `ftps-source` Kamelet relies upon the presence of the following dependencies: - -- camel:ftp -- camel:core -- camel:kamelet - -== Usage - -This section describes how you can use the `ftps-source`. - -=== Knative Source - -You can use the `ftps-source` Kamelet as a Knative source by binding it to a Knative object. - -.ftps-source-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: ftps-source-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: ftps-source - properties: - connectionHost: "The Connection Host" - directoryName: "The Directory Name" - password: "The Password" - username: "The Username" - sink: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `ftps-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the source by using the following command: -+ -[source,shell] ----- -oc apply -f ftps-source-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the source by using the following command: - -[source,shell] ----- -kamel bind ftps-source -p "source.connectionHost=The Connection Host" -p "source.directoryName=The Directory Name" -p "source.password=The Password" -p "source.username=The Username" channel:mychannel ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Source - -You can use the `ftps-source` Kamelet as a Kafka source by binding it to a Kafka topic. - -.ftps-source-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: ftps-source-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: ftps-source - properties: - connectionHost: "The Connection Host" - directoryName: "The Directory Name" - password: "The Password" - username: "The Username" - sink: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `ftps-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the source by using the following command: -+ -[source,shell] ----- -oc apply -f ftps-source-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the source by using the following command: - -[source,shell] ----- -kamel bind ftps-source -p "source.connectionHost=The Connection Host" -p "source.directoryName=The Directory Name" -p "source.password=The Password" -p "source.username=The Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/ftps-source.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/has-header-filter-action.adoc b/docs/modules/ROOT/pages/has-header-filter-action.adoc index 21f5f2730..662a3bb70 100644 --- a/docs/modules/ROOT/pages/has-header-filter-action.adoc +++ b/docs/modules/ROOT/pages/has-header-filter-action.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Filter based on the presence of one header +Filter message based on the presence of one header == Configuration Options @@ -12,7 +12,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. The header name must be passed by the source Kamelet. For Knative only, if you are using Cloud Events, you must include the CloudEvent (ce-) prefix in the header name.| string| | `"headerName"` +| *name {empty}* *| Header Name| The header name to evaluate. The header name must be passed by the source Kamelet. For Knative only, the name of the header requires a CloudEvent (ce-) prefix.| string| | `"headerName"` | value| Header Value| An optional header value to compare the header to| string| | `"headerValue"` |=== @@ -37,7 +37,7 @@ You can use the `has-header-filter-action` Kamelet as an intermediate step in a .has-header-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: has-header-filter-action-binding @@ -45,21 +45,21 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "my-header" value: "my-value" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: has-header-filter-action properties: name: "my-header" @@ -105,7 +105,7 @@ You can use the `has-header-filter-action` Kamelet as an intermediate step in a .has-header-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: has-header-filter-action-binding @@ -113,21 +113,21 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "my-header" value: "my-value" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: has-header-filter-action properties: name: "my-header" diff --git a/docs/modules/ROOT/pages/hoist-field-action.adoc b/docs/modules/ROOT/pages/hoist-field-action.adoc index 750417b8d..9f820c543 100644 --- a/docs/modules/ROOT/pages/hoist-field-action.adoc +++ b/docs/modules/ROOT/pages/hoist-field-action.adoc @@ -22,7 +22,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `hoist-field-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:core - camel:jackson - camel:kamelet @@ -38,7 +38,7 @@ You can use the `hoist-field-action` Kamelet as an intermediate step in a Knativ .hoist-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: hoist-field-action-binding @@ -46,14 +46,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: hoist-field-action properties: field: "The Field" @@ -98,7 +98,7 @@ You can use the `hoist-field-action` Kamelet as an intermediate step in a Kafka .hoist-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: hoist-field-action-binding @@ -106,14 +106,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: hoist-field-action properties: field: "The Field" diff --git a/docs/modules/ROOT/pages/http-sink.adoc b/docs/modules/ROOT/pages/http-sink.adoc index 3f13ddf60..c9896adcf 100644 --- a/docs/modules/ROOT/pages/http-sink.adoc +++ b/docs/modules/ROOT/pages/http-sink.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Forwards an event to a HTTP endpoint +Forward data to a HTTP or HTTPS endpoint. == Configuration Options @@ -12,8 +12,8 @@ The following table summarizes the configuration options available for the `http [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *url {empty}* *| URL| The URL to send data to| string| | `"https://my-service/path"` -| method| Method| The HTTP method to use| string| `"POST"`| +| *url {empty}* *| URL| The URL to which you want to send data.| string| | `"https://my-service/path"` +| method| Method| The HTTP method to use.| string| `"POST"`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -38,7 +38,7 @@ You can use the `http-sink` Kamelet as a Knative sink by binding it to a Knative .http-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: http-sink-binding @@ -51,7 +51,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: http-sink properties: url: "https://my-service/path" @@ -91,7 +91,7 @@ You can use the `http-sink` Kamelet as a Kafka sink by binding it to a Kafka top .http-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: http-sink-binding @@ -104,7 +104,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: http-sink properties: url: "https://my-service/path" diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc deleted file mode 100644 index 741970df2..000000000 --- a/docs/modules/ROOT/pages/index.adoc +++ /dev/null @@ -1,11 +0,0 @@ -= Kamelet Catalog - -This page contains the catalog of Kamelets provided by Red Hat. - - - -[indexBlock,'xref',relative=!nav.adoc] ----- -[.catalog] -[.item]#{xref}# ----- diff --git a/docs/modules/ROOT/pages/insert-field-action.adoc b/docs/modules/ROOT/pages/insert-field-action.adoc index 000e378af..cd03a24e5 100644 --- a/docs/modules/ROOT/pages/insert-field-action.adoc +++ b/docs/modules/ROOT/pages/insert-field-action.adoc @@ -4,7 +4,11 @@ *Provided by: "Red Hat"* -Adds a custom field with a constant value to the message in transit +Adds a custom field with a simple language parsed value to the message in transit. + +The extract field action expected an application/json content type. + +If for example you have an array like '{ "foo":"John", "bar":30 }' and your action has been configured with field as 'element' and value as 'hello', you'll get '{ "foo":"John", "bar":30, "element":"hello" }' == Configuration Options @@ -23,7 +27,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `insert-field-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:core - camel:jackson - camel:kamelet @@ -39,7 +43,7 @@ You can use the `insert-field-action` Kamelet as an intermediate step in a Knati .insert-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: insert-field-action-binding @@ -47,18 +51,18 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"foo":"John"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-field-action properties: field: "The Field" @@ -105,7 +109,7 @@ You can use the `insert-field-action` Kamelet as an intermediate step in a Kafka .insert-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: insert-field-action-binding @@ -113,18 +117,18 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"foo":"John"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-field-action properties: field: "The Field" diff --git a/docs/modules/ROOT/pages/insert-header-action.adoc b/docs/modules/ROOT/pages/insert-header-action.adoc index eb4f86b24..687842170 100644 --- a/docs/modules/ROOT/pages/insert-header-action.adoc +++ b/docs/modules/ROOT/pages/insert-header-action.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Adds an header with a constant value to the message in transit +Adds an header with a simple language parsed expression to the message in transit == Configuration Options @@ -12,8 +12,8 @@ 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. For Knative only, the name of the header requires a CloudEvent (ce-) prefix.| string| | -| *value {empty}* *| Value| The value of the header| string| | +| *name {empty}* *| Name| The name of the header to be added. For Knative only, the name of the header requires a CloudEvent (ce-) prefix.| string| | `"headername"` +| *value {empty}* *| Value| The value of the header to be added| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -37,7 +37,7 @@ You can use the `insert-header-action` Kamelet as an intermediate step in a Knat .insert-header-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: insert-header-action-binding @@ -45,17 +45,17 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: - name: "The Name" + name: "headername" value: "The Value" sink: ref: @@ -86,7 +86,7 @@ Configure and run the action by using the following command: [source,shell] ---- -kamel bind timer-source?message=Hello --step insert-header-action -p "step-0.name=The Name" -p "step-0.value=The Value" channel:mychannel +kamel bind timer-source?message=Hello --step insert-header-action -p "step-0.name=headername" -p "step-0.value=The Value" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -98,7 +98,7 @@ You can use the `insert-header-action` Kamelet as an intermediate step in a Kafk .insert-header-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: insert-header-action-binding @@ -106,17 +106,17 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: - name: "The Name" + name: "headername" value: "The Value" sink: ref: @@ -148,7 +148,7 @@ Configure and run the action by using the following command: [source,shell] ---- -kamel bind timer-source?message=Hello --step insert-header-action -p "step-0.name=The Name" -p "step-0.value=The Value" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind timer-source?message=Hello --step insert-header-action -p "step-0.name=headername" -p "step-0.value=The Value" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/is-tombstone-filter-action.adoc b/docs/modules/ROOT/pages/is-tombstone-filter-action.adoc index dbee84279..bb82a446a 100644 --- a/docs/modules/ROOT/pages/is-tombstone-filter-action.adoc +++ b/docs/modules/ROOT/pages/is-tombstone-filter-action.adoc @@ -29,7 +29,7 @@ You can use the `is-tombstone-filter-action` Kamelet as an intermediate step in .is-tombstone-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: is-tombstone-filter-action-binding @@ -37,14 +37,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: is-tombstone-filter-action sink: ref: @@ -87,7 +87,7 @@ You can use the `is-tombstone-filter-action` Kamelet as an intermediate step in .is-tombstone-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: is-tombstone-filter-action-binding @@ -95,14 +95,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: is-tombstone-filter-action sink: ref: diff --git a/docs/modules/ROOT/pages/jira-add-comment-sink.adoc b/docs/modules/ROOT/pages/jira-add-comment-sink.adoc index 1b26fd92c..14b5cde32 100644 --- a/docs/modules/ROOT/pages/jira-add-comment-sink.adoc +++ b/docs/modules/ROOT/pages/jira-add-comment-sink.adoc @@ -12,6 +12,8 @@ The Kamelet expects the following headers to be set: The comment is set in the body of the message. +To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + == Configuration Options The following table summarizes the configuration options available for the `jira-add-comment-sink` Kamelet: @@ -19,8 +21,9 @@ The following table summarizes the configuration options available for the `jira |=== | Property| Name| Description| Type| Default| Example | *jiraUrl {empty}* *| Jira URL| The URL of your instance of Jira| string| | `"http://my_jira.com:8081"` -| *password {empty}* *| Password| The password or the API Token to access Jira| string| | -| *username {empty}* *| Username| The username to access Jira| string| | +| password| Password| The password to access Jira| string| | +| personal-token| Personal Token| Personal Token| string| | +| username| Username| The username to access Jira| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -34,7 +37,7 @@ At runtime, the `jira-add-comment-sink` Kamelet relies upon the presence of the - camel:jackson - camel:jira - camel:kamelet -- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001 +- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5 == Usage @@ -47,7 +50,7 @@ You can use the `jira-add-comment-sink` Kamelet as a Knative sink by binding it .jira-add-comment-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-add-comment-sink-binding @@ -60,7 +63,7 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueKey" @@ -112,7 +115,7 @@ You can use the `jira-add-comment-sink` Kamelet as a Kafka sink by binding it to .jira-add-comment-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-add-comment-sink-binding @@ -125,7 +128,7 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueKey" @@ -133,7 +136,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-add-comment-sink properties: jiraUrl: "jira server url" diff --git a/docs/modules/ROOT/pages/jira-add-issue-sink.adoc b/docs/modules/ROOT/pages/jira-add-issue-sink.adoc index a6b0470b7..a9dfcefc1 100644 --- a/docs/modules/ROOT/pages/jira-add-issue-sink.adoc +++ b/docs/modules/ROOT/pages/jira-add-issue-sink.adoc @@ -24,6 +24,8 @@ The Kamelet expects the following headers to be set: The issue description can be set from the body of the message or the `issueDescription`/`ce-issueDescription` in the header, however the body takes precedence. +To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + == Configuration Options The following table summarizes the configuration options available for the `jira-add-issue-sink` Kamelet: @@ -31,8 +33,9 @@ The following table summarizes the configuration options available for the `jira |=== | Property| Name| Description| Type| Default| Example | *jiraUrl {empty}* *| Jira URL| The URL of your instance of Jira| string| | `"http://my_jira.com:8081"` -| *password {empty}* *| Password| The password or the API Token to access Jira| string| | -| *username {empty}* *| Username| The username to access Jira| string| | +| password| Password| The password to access Jira| string| | +| personal-token| Personal Token| Personal Token| string| | +| username| Username| The username to access Jira| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -46,7 +49,7 @@ At runtime, the `jira-add-issue-sink` Kamelet relies upon the presence of the fo - camel:jackson - camel:jira - camel:kamelet -- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001 +- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5 == Usage @@ -59,7 +62,7 @@ You can use the `jira-add-issue-sink` Kamelet as a Knative sink by binding it to .jira-add-issue-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-add-issue-sink-binding @@ -72,28 +75,28 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "projectKey" value: "MYP" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueTypeName" value: "Bug" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueSummary" value: "The issue summary" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issuePriorityName" @@ -145,7 +148,7 @@ You can use the `jira-add-issue-sink` Kamelet as a Kafka sink by binding it to a .jira-add-issue-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-add-issue-sink-binding @@ -158,28 +161,28 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "projectKey" value: "MYP" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueTypeName" value: "Bug" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueSummary" value: "The issue summary" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issuePriorityName" @@ -187,7 +190,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-add-issue-sink properties: jiraUrl: "jira server url" diff --git a/docs/modules/ROOT/pages/jira-source.adoc b/docs/modules/ROOT/pages/jira-source.adoc index 4f7a76fad..9325fb36e 100644 --- a/docs/modules/ROOT/pages/jira-source.adoc +++ b/docs/modules/ROOT/pages/jira-source.adoc @@ -6,16 +6,19 @@ Receive notifications about new issues from Jira. +To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + == Configuration Options The following table summarizes the configuration options available for the `jira-source` Kamelet: [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *jiraUrl {empty}* *| Jira URL| The URL of your instance of Jira| string| | `"http://my_jira.com:8081"` -| *password {empty}* *| Password| The password or the API Token to access Jira| string| | -| *username {empty}* *| Username| The username to access Jira| string| | -| jql| JQL| A query to filter issues| string| | `"project=MyProject"` +| *jiraUrl {empty}* *| Jira URL| The URL of your instance of Jira.| string| | `"http://my_jira.com:8081"` +| jql| JQL| A query to filter issues.| string| | `"project=MyProject"` +| password| Password| The password to access Jira.| string| | +| personal-token| Personal Token| Personal Token| string| | +| username| Username| The username to access Jira.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -26,9 +29,9 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `jira-source` Kamelet relies upon the presence of the following dependencies: - camel:jackson -- camel:kamelet - camel:jira -- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001 +- camel:kamelet +- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5 == Usage @@ -41,7 +44,7 @@ You can use the `jira-source` Kamelet as a Knative source by binding it to a Kna .jira-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-source-binding @@ -49,12 +52,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-source properties: jiraUrl: "http://my_jira.com:8081" - password: "The Password" - username: "The Username" sink: ref: kind: Channel @@ -84,7 +85,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind jira-source -p "source.jiraUrl=http://my_jira.com:8081" -p "source.password=The Password" -p "source.username=The Username" channel:mychannel +kamel bind jira-source -p "source.jiraUrl=http://my_jira.com:8081" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -96,7 +97,7 @@ You can use the `jira-source` Kamelet as a Kafka source by binding it to a Kafka .jira-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-source-binding @@ -104,12 +105,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-source properties: jiraUrl: "http://my_jira.com:8081" - password: "The Password" - username: "The Username" sink: ref: kind: KafkaTopic @@ -140,7 +139,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind jira-source -p "source.jiraUrl=http://my_jira.com:8081" -p "source.password=The Password" -p "source.username=The Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind jira-source -p "source.jiraUrl=http://my_jira.com:8081" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/jira-transition-issue-sink.adoc b/docs/modules/ROOT/pages/jira-transition-issue-sink.adoc index 8c5516e49..28e23b591 100644 --- a/docs/modules/ROOT/pages/jira-transition-issue-sink.adoc +++ b/docs/modules/ROOT/pages/jira-transition-issue-sink.adoc @@ -14,6 +14,8 @@ The Kamelet expects the following headers to be set: The comment of the transition is set in the body of the message. +To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + == Configuration Options The following table summarizes the configuration options available for the `jira-transition-issue-sink` Kamelet: @@ -21,8 +23,9 @@ The following table summarizes the configuration options available for the `jira |=== | Property| Name| Description| Type| Default| Example | *jiraUrl {empty}* *| Jira URL| The URL of your instance of Jira| string| | `"http://my_jira.com:8081"` -| *password {empty}* *| Password| The password or the API Token to access Jira| string| | -| *username {empty}* *| Username| The username to access Jira| string| | +| password| Password| The password to access Jira| string| | +| personal-token| Personal Token| Personal Token| string| | +| username| Username| The username to access Jira| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -36,7 +39,7 @@ At runtime, the `jira-transition-issue-sink` Kamelet relies upon the presence of - camel:jackson - camel:jira - camel:kamelet -- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001 +- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5 == Usage @@ -49,7 +52,7 @@ You can use the `jira-transition-issue-sink` Kamelet as a Knative sink by bindin .jira-transition-issue-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-transition-issue-sink-binding @@ -62,14 +65,14 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueTransitionId" value: 701 - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueKey" @@ -120,7 +123,7 @@ You can use the `jira-transition-issue-sink` Kamelet as a Kafka sink by binding .jira-transition-issue-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-transition-issue-sink-binding @@ -133,14 +136,14 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueTransitionId" value: 701 - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueKey" @@ -148,7 +151,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-transition-issue-sink properties: jiraUrl: "jira server url" diff --git a/docs/modules/ROOT/pages/jira-update-issue-sink.adoc b/docs/modules/ROOT/pages/jira-update-issue-sink.adoc index 0534ac2f8..0593a7f4c 100644 --- a/docs/modules/ROOT/pages/jira-update-issue-sink.adoc +++ b/docs/modules/ROOT/pages/jira-update-issue-sink.adoc @@ -24,6 +24,8 @@ The Kamelet expects the following headers to be set: The issue description can be set from the body of the message or the `issueDescription`/`ce-issueDescription` in the header, however the body takes precedence. +To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + == Configuration Options The following table summarizes the configuration options available for the `jira-update-issue-sink` Kamelet: @@ -31,8 +33,9 @@ The following table summarizes the configuration options available for the `jira |=== | Property| Name| Description| Type| Default| Example | *jiraUrl {empty}* *| Jira URL| The URL of your instance of Jira| string| | `"http://my_jira.com:8081"` -| *password {empty}* *| Password| The password or the API Token to access Jira| string| | -| *username {empty}* *| Username| The username to access Jira| string| | +| password| Password| The password to access Jira| string| | +| personal-token| Personal Token| Personal Token| string| | +| username| Username| The username to access Jira| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -46,7 +49,7 @@ At runtime, the `jira-update-issue-sink` Kamelet relies upon the presence of the - camel:jackson - camel:jira - camel:kamelet -- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001 +- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5 == Usage @@ -59,7 +62,7 @@ You can use the `jira-update-issue-sink` Kamelet as a Knative sink by binding it .jira-update-issue-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-update-issue-sink-binding @@ -72,28 +75,28 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueKey" value: "MYP-163" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueTypeName" value: "Bug" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueSummary" value: "The issue summary" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issuePriorityName" @@ -144,7 +147,7 @@ You can use the `jira-update-issue-sink` Kamelet as a Kafka sink by binding it t .jira-update-issue-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-update-issue-sink-binding @@ -157,28 +160,28 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueKey" value: "MYP-163" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueTypeName" value: "Bug" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueSummary" value: "The issue summary" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issuePriorityName" @@ -186,7 +189,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-update-issue-sink properties: jiraUrl: "jira server url" diff --git a/docs/modules/ROOT/pages/jms-amqp-10-sink.adoc b/docs/modules/ROOT/pages/jms-amqp-10-sink.adoc index 9694e09b5..a6273d045 100644 --- a/docs/modules/ROOT/pages/jms-amqp-10-sink.adoc +++ b/docs/modules/ROOT/pages/jms-amqp-10-sink.adoc @@ -1,10 +1,10 @@ // THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT -= image:kamelets/jms-amqp-10-sink.svg[] JMS - AMQP 1.0 Kamelet Sink += image:kamelets/jms-amqp-10-sink.svg[] JMS - AMQP 1.0 Sink *Provided by: "Red Hat"* -A Kamelet that can produce events to any AMQP 1.0 compliant message broker using the Apache Qpid JMS client +Send data to any AMQP 1.0 compliant message broker by using the Apache Qpid JMS client. == Configuration Options @@ -12,9 +12,9 @@ The following table summarizes the configuration options available for the `jms- [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *destinationName {empty}* *| Destination Name| The JMS destination name| string| | -| *remoteURI {empty}* *| Broker URL| The JMS URL| string| | `"amqp://my-host:31616"` -| destinationType| Destination Type| The JMS destination type (i.e.: queue or topic)| string| `"queue"`| +| *destinationName {empty}* *| Destination Name| The JMS destination name.| string| | +| *remoteURI {empty}* *| Broker URL| The JMS URL.| string| | `"amqp://my-host:31616"` +| destinationType| Destination Type| The JMS destination type (queue or topic).| string| `"queue"`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -25,8 +25,8 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `jms-amqp-10-sink` Kamelet relies upon the presence of the following dependencies: - camel:jms -- camel:kamelet -- mvn:org.apache.qpid:qpid-jms-client:0.55.0 +- camel:amqp +- camel:kamelet == Usage @@ -39,7 +39,7 @@ You can use the `jms-amqp-10-sink` Kamelet as a Knative sink by binding it to a .jms-amqp-10-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-amqp-10-sink-binding @@ -52,7 +52,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-amqp-10-sink properties: destinationName: "The Destination Name" @@ -93,7 +93,7 @@ You can use the `jms-amqp-10-sink` Kamelet as a Kafka sink by binding it to a Ka .jms-amqp-10-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-amqp-10-sink-binding @@ -106,7 +106,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-amqp-10-sink properties: destinationName: "The Destination Name" diff --git a/docs/modules/ROOT/pages/jms-amqp-10-source.adoc b/docs/modules/ROOT/pages/jms-amqp-10-source.adoc index 7ae0556e0..966315625 100644 --- a/docs/modules/ROOT/pages/jms-amqp-10-source.adoc +++ b/docs/modules/ROOT/pages/jms-amqp-10-source.adoc @@ -1,10 +1,10 @@ // THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT -= image:kamelets/jms-amqp-10-source.svg[] JMS - AMQP 1.0 Kamelet Source += image:kamelets/jms-amqp-10-source.svg[] JMS - AMQP 1.0 Source *Provided by: "Red Hat"* -A Kamelet that can consume events from any AMQP 1.0 compliant message broker using the Apache Qpid JMS client +Consume data from any AMQP 1.0 compliant message broker by using the Apache Qpid JMS client. == Configuration Options @@ -12,9 +12,9 @@ The following table summarizes the configuration options available for the `jms- [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *destinationName {empty}* *| Destination Name| The JMS destination name| string| | -| *remoteURI {empty}* *| Broker URL| The JMS URL| string| | `"amqp://my-host:31616"` -| destinationType| Destination Type| The JMS destination type (i.e.: queue or topic)| string| `"queue"`| +| *destinationName {empty}* *| Destination Name| The JMS destination name.| string| | +| *remoteURI {empty}* *| Broker URL| The JMS URL.| string| | `"amqp://my-host:31616"` +| destinationType| Destination Type| The JMS destination type (queue or topic).| string| `"queue"`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -25,8 +25,8 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `jms-amqp-10-source` Kamelet relies upon the presence of the following dependencies: - camel:jms -- camel:kamelet -- mvn:org.apache.qpid:qpid-jms-client:0.55.0 +- camel:amqp +- camel:kamelet == Usage @@ -39,7 +39,7 @@ You can use the `jms-amqp-10-source` Kamelet as a Knative source by binding it t .jms-amqp-10-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-amqp-10-source-binding @@ -47,7 +47,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-amqp-10-source properties: destinationName: "The Destination Name" @@ -93,7 +93,7 @@ You can use the `jms-amqp-10-source` Kamelet as a Kafka source by binding it to .jms-amqp-10-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-amqp-10-source-binding @@ -101,7 +101,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-amqp-10-source properties: destinationName: "The Destination Name" diff --git a/docs/modules/ROOT/pages/jms-ibm-mq-sink.adoc b/docs/modules/ROOT/pages/jms-ibm-mq-sink.adoc index c4f090a08..5e541ad75 100644 --- a/docs/modules/ROOT/pages/jms-ibm-mq-sink.adoc +++ b/docs/modules/ROOT/pages/jms-ibm-mq-sink.adoc @@ -1,11 +1,15 @@ // THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT -= image:kamelets/jms-ibm-mq-sink.svg[] JMS - IBM MQ Kamelet Sink += image:kamelets/jms-ibm-mq-sink.svg[] JMS - IBM MQ Sink *Provided by: "Red Hat"* A Kamelet that can produce events to an IBM MQ message queue using JMS. +In your KameletBinding file, you must explicitly declare the IBM MQ Server driver dependency in spec->integration->dependencies + +- "mvn:com.ibm.mq:com.ibm.mq.allclient:" + == Configuration Options The following table summarizes the configuration options available for the `jms-ibm-mq-sink` Kamelet: @@ -21,6 +25,7 @@ The following table summarizes the configuration options available for the `jms- | *username {empty}* *| Username| Username to authenticate to IBM MQ server| string| | | clientId| IBM MQ Client ID| Name of the IBM MQ Client ID| string| | | destinationType| Destination Type| The JMS destination type (queue or topic)| string| `"queue"`| +| sslCipherSuite| CipherSuite| CipherSuite to use for enabling TLS| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -31,8 +36,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `jms-ibm-mq-sink` Kamelet relies upon the presence of the following dependencies: - camel:jms -- camel:kamelet -- mvn:com.ibm.mq:com.ibm.mq.allclient:9.2.5.0 +- camel:kamelet == Usage @@ -45,7 +49,7 @@ You can use the `jms-ibm-mq-sink` Kamelet as a Knative sink by binding it to a K .jms-ibm-mq-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-ibm-mq-sink-binding @@ -106,7 +110,7 @@ You can use the `jms-ibm-mq-sink` Kamelet as a Kafka sink by binding it to a Kaf .jms-ibm-mq-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-ibm-mq-sink-binding @@ -119,7 +123,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-ibm-mq-sink properties: serverName: "10.103.41.245" diff --git a/docs/modules/ROOT/pages/jms-ibm-mq-source.adoc b/docs/modules/ROOT/pages/jms-ibm-mq-source.adoc index 8d02c8d41..4adfa32bd 100644 --- a/docs/modules/ROOT/pages/jms-ibm-mq-source.adoc +++ b/docs/modules/ROOT/pages/jms-ibm-mq-source.adoc @@ -1,11 +1,15 @@ // THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT -= image:kamelets/jms-ibm-mq-source.svg[] JMS - IBM MQ Kamelet Source += image:kamelets/jms-ibm-mq-source.svg[] JMS - IBM MQ Source *Provided by: "Red Hat"* A Kamelet that can read events from an IBM MQ message queue using JMS. +In your KameletBinding file, you must explicitly declare the IBM MQ Server driver dependency in spec->integration->dependencies + +- "mvn:com.ibm.mq:com.ibm.mq.allclient:" + == Configuration Options The following table summarizes the configuration options available for the `jms-ibm-mq-source` Kamelet: @@ -21,6 +25,7 @@ The following table summarizes the configuration options available for the `jms- | *username {empty}* *| Username| Username to authenticate to IBM MQ server| string| | | clientId| IBM MQ Client ID| Name of the IBM MQ Client ID| string| | | destinationType| Destination Type| The JMS destination type (queue or topic)| string| `"queue"`| +| sslCipherSuite| CipherSuite| CipherSuite to use for enabling TLS| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -31,8 +36,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `jms-ibm-mq-source` Kamelet relies upon the presence of the following dependencies: - camel:jms -- camel:kamelet -- mvn:com.ibm.mq:com.ibm.mq.allclient:9.2.5.0 +- camel:kamelet == Usage @@ -45,7 +49,7 @@ You can use the `jms-ibm-mq-source` Kamelet as a Knative source by binding it to .jms-ibm-mq-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-ibm-mq-source-binding @@ -53,7 +57,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-ibm-mq-source properties: serverName: "10.103.41.245" @@ -106,7 +110,7 @@ You can use the `jms-ibm-mq-source` Kamelet as a Kafka source by binding it to a .jms-ibm-mq-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-ibm-mq-source-binding @@ -114,7 +118,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-ibm-mq-source properties: serverName: "10.103.41.245" diff --git a/docs/modules/ROOT/pages/jslt-action.adoc b/docs/modules/ROOT/pages/jslt-action.adoc index e56abda16..20c0dd6c3 100644 --- a/docs/modules/ROOT/pages/jslt-action.adoc +++ b/docs/modules/ROOT/pages/jslt-action.adoc @@ -36,7 +36,7 @@ You can use the `jslt-action` Kamelet as an intermediate step in a Knative bindi .jslt-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jslt-action-binding @@ -44,14 +44,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jslt-action properties: template: "file://template.json" @@ -96,7 +96,7 @@ You can use the `jslt-action` Kamelet as an intermediate step in a Kafka binding .jslt-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jslt-action-binding @@ -104,14 +104,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jslt-action properties: template: "file://template.json" diff --git a/docs/modules/ROOT/pages/json-deserialize-action.adoc b/docs/modules/ROOT/pages/json-deserialize-action.adoc index 44e85c7ab..83cc2c139 100644 --- a/docs/modules/ROOT/pages/json-deserialize-action.adoc +++ b/docs/modules/ROOT/pages/json-deserialize-action.adoc @@ -15,6 +15,7 @@ The `json-deserialize-action` Kamelet does not specify any configuration option. At runtime, the `json-deserialize-action` Kamelet relies upon the presence of the following dependencies: +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:kamelet - camel:core - camel:jackson @@ -30,7 +31,7 @@ You can use the `json-deserialize-action` Kamelet as an intermediate step in a K .json-deserialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: json-deserialize-action-binding @@ -38,14 +39,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action sink: ref: @@ -88,7 +89,7 @@ You can use the `json-deserialize-action` Kamelet as an intermediate step in a K .json-deserialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: json-deserialize-action-binding @@ -96,14 +97,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action sink: ref: diff --git a/docs/modules/ROOT/pages/json-serialize-action.adoc b/docs/modules/ROOT/pages/json-serialize-action.adoc index ad2e051db..fa2a0fcfb 100644 --- a/docs/modules/ROOT/pages/json-serialize-action.adoc +++ b/docs/modules/ROOT/pages/json-serialize-action.adoc @@ -15,6 +15,7 @@ The `json-serialize-action` Kamelet does not specify any configuration option. At runtime, the `json-serialize-action` Kamelet relies upon the presence of the following dependencies: +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:kamelet - camel:core - camel:jackson @@ -30,7 +31,7 @@ You can use the `json-serialize-action` Kamelet as an intermediate step in a Kna .json-serialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: json-serialize-action-binding @@ -38,14 +39,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-serialize-action sink: ref: @@ -88,7 +89,7 @@ You can use the `json-serialize-action` Kamelet as an intermediate step in a Kaf .json-serialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: json-serialize-action-binding @@ -96,14 +97,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-serialize-action sink: ref: diff --git a/docs/modules/ROOT/pages/kafka-manual-commit-action.adoc b/docs/modules/ROOT/pages/kafka-manual-commit-action.adoc deleted file mode 100644 index 8507523b2..000000000 --- a/docs/modules/ROOT/pages/kafka-manual-commit-action.adoc +++ /dev/null @@ -1,146 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/kafka-manual-commit-action.svg[] Kafka Manual Commit Action - -*Provided by: "Red Hat"* - -Manually commit Kafka Offset - -== Configuration Options - -The `kafka-manual-commit-action` Kamelet does not specify any configuration option. - - -== Dependencies - -At runtime, the `kafka-manual-commit-action` Kamelet relies upon the presence of the following dependencies: - -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 -- camel:kamelet - -== Usage - -This section describes how you can use the `kafka-manual-commit-action`. - -=== Knative Action - -You can use the `kafka-manual-commit-action` Kamelet as an intermediate step in a Knative binding. - -.kafka-manual-commit-action-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: kafka-manual-commit-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: kafka-manual-commit-action - sink: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `kafka-manual-commit-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the action by using the following command: -+ -[source,shell] ----- -oc apply -f kafka-manual-commit-action-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the action by using the following command: - -[source,shell] ----- -kamel bind timer-source?message=Hello --step kafka-manual-commit-action channel:mychannel ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Action - -You can use the `kafka-manual-commit-action` Kamelet as an intermediate step in a Kafka binding. - -.kafka-manual-commit-action-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: kafka-manual-commit-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: kafka-manual-commit-action - sink: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `kafka-manual-commit-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the action by using the following command: -+ -[source,shell] ----- -oc apply -f kafka-manual-commit-action-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the action by using the following command: - -[source,shell] ----- -kamel bind timer-source?message=Hello --step kafka-manual-commit-action kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/kafka-manual-commit-action.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/kafka-scram-sink.adoc b/docs/modules/ROOT/pages/kafka-scram-sink.adoc new file mode 100644 index 000000000..9275c28e6 --- /dev/null +++ b/docs/modules/ROOT/pages/kafka-scram-sink.adoc @@ -0,0 +1,163 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/kafka-scram-sink.svg[] Kafka Scram Sink + +*Provided by: "Red Hat"* + +Send data to Kafka topics through SCRAM login module. + +The Kamelet is able to understand the following headers to be set: + +- `key` / `ce-key`: as message key + +- `partition-key` / `ce-partitionkey`: as message partition key + +Both the headers are optional. + +== Configuration Options + +The following table summarizes the configuration options available for the `kafka-scram-sink` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *bootstrapServers {empty}* *| Bootstrap Servers| Comma separated list of Kafka Broker URLs| string| | +| *password {empty}* *| Password| Password to authenticate to kafka| string| | +| *topic {empty}* *| Topic Names| Comma separated list of Kafka topic names| string| | +| *user {empty}* *| Username| Username to authenticate to Kafka| string| | +| saslMechanism| SASL Mechanism| The Simple Authentication and Security Layer (SASL) Mechanism used.| string| `"SCRAM-SHA-512"`| +| securityProtocol| Security Protocol| Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported| string| `"SASL_SSL"`| +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `kafka-scram-sink` Kamelet relies upon the presence of the following dependencies: + +- camel:core +- camel:kafka +- camel:kamelet + +== Usage + +This section describes how you can use the `kafka-scram-sink`. + +=== Knative Sink + +You can use the `kafka-scram-sink` Kamelet as a Knative sink by binding it to a Knative object. + +.kafka-scram-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-scram-sink-binding +spec: + source: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-scram-sink + properties: + bootstrapServers: "The Bootstrap Servers" + password: "The Password" + topic: "The Topic Names" + user: "The Username" + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `kafka-scram-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the sink by using the following command: ++ +[source,shell] +---- +oc apply -f kafka-scram-sink-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the sink by using the following command: + +[source,shell] +---- +kamel bind channel:mychannel kafka-scram-sink -p "sink.bootstrapServers=The Bootstrap Servers" -p "sink.password=The Password" -p "sink.topic=The Topic Names" -p "sink.user=The Username" +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Sink + +You can use the `kafka-scram-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. + +.kafka-scram-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-scram-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-scram-sink + properties: + bootstrapServers: "The Bootstrap Servers" + password: "The Password" + topic: "The Topic Names" + user: "The Username" + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `kafka-scram-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the sink by using the following command: ++ +[source,shell] +---- +oc apply -f kafka-scram-sink-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the sink by using the following command: + +[source,shell] +---- +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic kafka-scram-sink -p "sink.bootstrapServers=The Bootstrap Servers" -p "sink.password=The Password" -p "sink.topic=The Topic Names" -p "sink.user=The Username" +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/kafka-scram-sink.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/kafka-scram-source.adoc b/docs/modules/ROOT/pages/kafka-scram-source.adoc new file mode 100644 index 000000000..d3413b94f --- /dev/null +++ b/docs/modules/ROOT/pages/kafka-scram-source.adoc @@ -0,0 +1,162 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/kafka-scram-source.svg[] Kafka Scram Source + +*Provided by: "Red Hat"* + +Receive data from Kafka topics through SCRAM login module. + +== Configuration Options + +The following table summarizes the configuration options available for the `kafka-scram-source` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *bootstrapServers {empty}* *| Bootstrap Servers| Comma separated list of Kafka Broker URLs| string| | +| *password {empty}* *| Password| Password to authenticate to kafka| string| | +| *topic {empty}* *| Topic Names| Comma separated list of Kafka topic names| string| | +| *user {empty}* *| Username| Username to authenticate to Kafka| string| | +| allowManualCommit| Allow Manual Commit| Whether to allow doing manual commits| boolean| `false`| +| autoCommitEnable| Auto Commit Enable| If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer| boolean| `true`| +| autoOffsetReset| Auto Offset Reset| What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none| string| `"latest"`| +| consumerGroup| Consumer Group| A string that uniquely identifies the group of consumers to which this source belongs| string| | `"my-group-id"` +| deserializeHeaders| Automatically Deserialize Headers| When enabled the Kamelet source will deserialize all message headers to String representation.| boolean| `true`| +| pollOnError| Poll On Error Behavior| What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of DISCARD, ERROR_HANDLER, RECONNECT, RETRY, STOP| string| `"ERROR_HANDLER"`| +| saslMechanism| SASL Mechanism| The Simple Authentication and Security Layer (SASL) Mechanism used.| string| `"SCRAM-SHA-512"`| +| securityProtocol| Security Protocol| Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported| string| `"SASL_SSL"`| +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `kafka-scram-source` Kamelet relies upon the presence of the following dependencies: + +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 +- camel:core +- camel:kafka +- camel:kamelet + +== Usage + +This section describes how you can use the `kafka-scram-source`. + +=== Knative Source + +You can use the `kafka-scram-source` Kamelet as a Knative source by binding it to a Knative object. + +.kafka-scram-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-scram-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-scram-source + properties: + bootstrapServers: "The Bootstrap Servers" + password: "The Password" + topic: "The Topic Names" + user: "The Username" + sink: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `kafka-scram-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f kafka-scram-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind kafka-scram-source -p "source.bootstrapServers=The Bootstrap Servers" -p "source.password=The Password" -p "source.topic=The Topic Names" -p "source.user=The Username" channel:mychannel +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Source + +You can use the `kafka-scram-source` Kamelet as a Kafka source by binding it to a Kafka topic. + +.kafka-scram-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-scram-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-scram-source + properties: + bootstrapServers: "The Bootstrap Servers" + password: "The Password" + topic: "The Topic Names" + user: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `kafka-scram-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f kafka-scram-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind kafka-scram-source -p "source.bootstrapServers=The Bootstrap Servers" -p "source.password=The Password" -p "source.topic=The Topic Names" -p "source.user=The Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/kafka-scram-source.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/kafka-sink.adoc b/docs/modules/ROOT/pages/kafka-sink.adoc index 44ff24765..bd29e4aec 100644 --- a/docs/modules/ROOT/pages/kafka-sink.adoc +++ b/docs/modules/ROOT/pages/kafka-sink.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Send data to Kafka topics. +Send data to Kafka topics through Plain Login Module. The Kamelet is able to understand the following headers to be set: @@ -20,7 +20,7 @@ The following table summarizes the configuration options available for the `kafk [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *bootstrapServers {empty}* *| Brokers| Comma separated list of Kafka Broker URLs| string| | +| *bootstrapServers {empty}* *| Bootstrap Servers| Comma separated list of Kafka Broker URLs| string| | | *password {empty}* *| Password| Password to authenticate to kafka| string| | | *topic {empty}* *| Topic Names| Comma separated list of Kafka topic names| string| | | *user {empty}* *| Username| Username to authenticate to Kafka| string| | @@ -50,7 +50,7 @@ You can use the `kafka-sink` Kamelet as a Knative sink by binding it to a Knativ .kafka-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: kafka-sink-binding @@ -63,10 +63,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: kafka-sink properties: - bootstrapServers: "The Brokers" + bootstrapServers: "The Bootstrap Servers" password: "The Password" topic: "The Topic Names" user: "The Username" @@ -94,7 +94,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel kafka-sink -p "sink.bootstrapServers=The Brokers" -p "sink.password=The Password" -p "sink.topic=The Topic Names" -p "sink.user=The Username" +kamel bind channel:mychannel kafka-sink -p "sink.bootstrapServers=The Bootstrap Servers" -p "sink.password=The Password" -p "sink.topic=The Topic Names" -p "sink.user=The Username" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -106,7 +106,7 @@ You can use the `kafka-sink` Kamelet as a Kafka sink by binding it to a Kafka to .kafka-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: kafka-sink-binding @@ -119,10 +119,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: kafka-sink properties: - bootstrapServers: "The Brokers" + bootstrapServers: "The Bootstrap Servers" password: "The Password" topic: "The Topic Names" user: "The Username" @@ -151,7 +151,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic kafka-sink -p "sink.bootstrapServers=The Brokers" -p "sink.password=The Password" -p "sink.topic=The Topic Names" -p "sink.user=The Username" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic kafka-sink -p "sink.bootstrapServers=The Bootstrap Servers" -p "sink.password=The Password" -p "sink.topic=The Topic Names" -p "sink.user=The Username" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/kafka-source.adoc b/docs/modules/ROOT/pages/kafka-source.adoc index a47f5f9c7..71a7e8888 100644 --- a/docs/modules/ROOT/pages/kafka-source.adoc +++ b/docs/modules/ROOT/pages/kafka-source.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Receive data from Kafka topics. +Receive data from Kafka topics through Plain Login Module. == Configuration Options @@ -12,7 +12,7 @@ The following table summarizes the configuration options available for the `kafk [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *bootstrapServers {empty}* *| Brokers| Comma separated list of Kafka Broker URLs| string| | +| *bootstrapServers {empty}* *| Bootstrap Servers| Comma separated list of Kafka Broker URLs| string| | | *password {empty}* *| Password| Password to authenticate to kafka| string| | | *topic {empty}* *| Topic Names| Comma separated list of Kafka topic names| string| | | *user {empty}* *| Username| Username to authenticate to Kafka| string| | @@ -20,7 +20,7 @@ The following table summarizes the configuration options available for the `kafk | autoCommitEnable| Auto Commit Enable| If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer| boolean| `true`| | autoOffsetReset| Auto Offset Reset| What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none| string| `"latest"`| | consumerGroup| Consumer Group| A string that uniquely identifies the group of consumers to which this source belongs| string| | `"my-group-id"` -| deserializeHeaders| Automatically Deserialize Headers| When enabled the Kamelet source will deserialize all message headers to String representation.| boolean| `false`| +| deserializeHeaders| Automatically Deserialize Headers| When enabled the Kamelet source will deserialize all message headers to String representation.| boolean| `true`| | pollOnError| Poll On Error Behavior| What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of DISCARD, ERROR_HANDLER, RECONNECT, RETRY, STOP| string| `"ERROR_HANDLER"`| | saslMechanism| SASL Mechanism| The Simple Authentication and Security Layer (SASL) Mechanism used.| string| `"PLAIN"`| | securityProtocol| Security Protocol| Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported| string| `"SASL_SSL"`| @@ -33,7 +33,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `kafka-source` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:core - camel:kafka - camel:kamelet @@ -49,7 +49,7 @@ You can use the `kafka-source` Kamelet as a Knative source by binding it to a Kn .kafka-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: kafka-source-binding @@ -57,10 +57,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: kafka-source properties: - bootstrapServers: "The Brokers" + bootstrapServers: "The Bootstrap Servers" password: "The Password" topic: "The Topic Names" user: "The Username" @@ -93,7 +93,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind kafka-source -p "source.bootstrapServers=The Brokers" -p "source.password=The Password" -p "source.topic=The Topic Names" -p "source.user=The Username" channel:mychannel +kamel bind kafka-source -p "source.bootstrapServers=The Bootstrap Servers" -p "source.password=The Password" -p "source.topic=The Topic Names" -p "source.user=The Username" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -105,7 +105,7 @@ You can use the `kafka-source` Kamelet as a Kafka source by binding it to a Kafk .kafka-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: kafka-source-binding @@ -113,10 +113,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: kafka-source properties: - bootstrapServers: "The Brokers" + bootstrapServers: "The Bootstrap Servers" password: "The Password" topic: "The Topic Names" user: "The Username" @@ -150,7 +150,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind kafka-source -p "source.bootstrapServers=The Brokers" -p "source.password=The Password" -p "source.topic=The Topic Names" -p "source.user=The Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind kafka-source -p "source.bootstrapServers=The Bootstrap Servers" -p "source.password=The Password" -p "source.topic=The Topic Names" -p "source.user=The Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/log-action.adoc b/docs/modules/ROOT/pages/log-action.adoc new file mode 100644 index 000000000..b5bb831d5 --- /dev/null +++ b/docs/modules/ROOT/pages/log-action.adoc @@ -0,0 +1,165 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/log-action.svg[] Log Action + +*Provided by: "Red Hat"* + +Logs all data that flows between source and sink, useful for debugging purposes. + +== Configuration Options + +The following table summarizes the configuration options available for the `log-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| level| Log Level| Logging level to use| string| `"INFO"`| +| logMask| Log Mask| Mask sensitive information like password or passphrase in the log| boolean| `false`| +| loggerName| Logger Name| Name of the logging category to use| string| `"log-action"`| +| marker| Marker| An optional Marker name to use| string| | +| multiline| Multiline| If enabled then each information is outputted on a newline| boolean| `false`| +| showAllProperties| Show All Properties| Show all of the exchange properties (both internal and custom)| boolean| `false`| +| showBody| Show Body| Show the message body| boolean| `true`| +| showBodyType| Show Body Type| Show the body Java type| boolean| `true`| +| showCachedStreams| Show Cached Streams| Whether Camel should show cached stream bodies or not.| boolean| `true`| +| showExchangePattern| Show Exchange Pattern| Shows the Message Exchange Pattern (or MEP for short)| boolean| `true`| +| showHeaders| Show Headers| Show the headers received| boolean| `false`| +| showProperties| Show Properties| Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties.| boolean| `false`| +| showStreams| Show Streams| Show the stream bodies (they may not be available in following steps)| boolean| `false`| +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `log-action` Kamelet relies upon the presence of the following dependencies: + +- camel:kamelet +- camel:log + +== Usage + +This section describes how you can use the `log-action`. + +=== Knative Action + +You can use the `log-action` Kamelet as an intermediate step in a Knative binding. + +.log-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: log-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: log-action + sink: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `log-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the action by using the following command: ++ +[source,shell] +---- +oc apply -f log-action-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the action by using the following command: + +[source,shell] +---- +kamel bind timer-source?message=Hello --step log-action channel:mychannel +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Action + +You can use the `log-action` Kamelet as an intermediate step in a Kafka binding. + +.log-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: log-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: log-action + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `log-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the action by using the following command: ++ +[source,shell] +---- +oc apply -f log-action-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the action by using the following command: + +[source,shell] +---- +kamel bind timer-source?message=Hello --step log-action kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/log-action.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/log-sink.adoc b/docs/modules/ROOT/pages/log-sink.adoc index 18d4b5786..07cd92a44 100644 --- a/docs/modules/ROOT/pages/log-sink.adoc +++ b/docs/modules/ROOT/pages/log-sink.adoc @@ -12,8 +12,19 @@ The following table summarizes the configuration options available for the `log- [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example +| level| Log Level| Logging level to use| string| `"INFO"`| +| logMask| Log Mask| Mask sensitive information like password or passphrase in the log| boolean| `false`| +| loggerName| Logger Name| Name of the logging category to use| string| `"log-sink"`| +| marker| Marker| An optional Marker name to use| string| | +| multiline| Multiline| If enabled then each information is outputted on a newline| boolean| `false`| +| showAllProperties| Show All Properties| Show all of the exchange properties (both internal and custom)| boolean| `false`| +| showBody| Show Body| Show the message body| boolean| `true`| +| showBodyType| Show Body Type| Show the body Java type| boolean| `true`| +| showCachedStreams| Show Cached Streams| Whether Camel should show cached stream bodies or not.| boolean| `true`| +| showExchangePattern| Show Exchange Pattern| Shows the Message Exchange Pattern (or MEP for short)| boolean| `true`| | showHeaders| Show Headers| Show the headers received| boolean| `false`| -| showStreams| Show Streams| Show the stream bodies (they may not be available in following steps)| boolean| `true`| +| showProperties| Show Properties| Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties.| boolean| `false`| +| showStreams| Show Streams| Show the stream bodies (they may not be available in following steps)| boolean| `false`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -37,7 +48,7 @@ You can use the `log-sink` Kamelet as a Knative sink by binding it to a Knative .log-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: log-sink-binding @@ -50,7 +61,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: log-sink ---- @@ -88,7 +99,7 @@ You can use the `log-sink` Kamelet as a Kafka sink by binding it to a Kafka topi .log-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: log-sink-binding @@ -101,7 +112,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: log-sink ---- diff --git a/docs/modules/ROOT/pages/mariadb-sink.adoc b/docs/modules/ROOT/pages/mariadb-sink.adoc index 890b4dfb1..3601b42ae 100644 --- a/docs/modules/ROOT/pages/mariadb-sink.adoc +++ b/docs/modules/ROOT/pages/mariadb-sink.adoc @@ -6,11 +6,15 @@ Send data to a MariaDB 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: +In your KameletBinding file, you must explicitly declare the MariaDB Server driver dependency in spec->integration->dependencies. + +- "mvn:org.mariadb.jdbc:mariadb-java-client:" + +This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' -The Kamelet needs to receive as input something like: +Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' @@ -20,12 +24,12 @@ The following table summarizes the configuration options available for the `mari [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| | `"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| | -| serverPort| Server Port| Server Port for the data source| string| `3306`| +| *databaseName {empty}* *| Database Name| The name of the MariaDB Database.| string| | +| *password {empty}* *| Password| The password to access a secured 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| The server name for the data source.| string| | `"localhost"` +| *username {empty}* *| Username| The username to access a secured MariaDB Database.| string| | +| serverPort| Server Port| The server port for the data source.| string| `3306`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -38,8 +42,7 @@ At runtime, the `mariadb-sink` Kamelet relies upon the presence of the following - camel:jackson - camel:kamelet - camel:sql -- mvn:org.apache.commons:commons-dbcp2:2.7.0 -- mvn:org.mariadb.jdbc:mariadb-java-client +- mvn:org.apache.commons:commons-dbcp2:2.10.0 == Usage @@ -52,7 +55,7 @@ You can use the `mariadb-sink` Kamelet as a Knative sink by binding it to a Knat .mariadb-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mariadb-sink-binding @@ -65,7 +68,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mariadb-sink properties: databaseName: "The Database Name" @@ -109,7 +112,7 @@ You can use the `mariadb-sink` Kamelet as a Kafka sink by binding it to a Kafka .mariadb-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mariadb-sink-binding @@ -122,7 +125,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mariadb-sink properties: databaseName: "The Database Name" diff --git a/docs/modules/ROOT/pages/mask-field-action.adoc b/docs/modules/ROOT/pages/mask-field-action.adoc index 9466ee859..26f804f65 100644 --- a/docs/modules/ROOT/pages/mask-field-action.adoc +++ b/docs/modules/ROOT/pages/mask-field-action.adoc @@ -23,7 +23,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `mask-field-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:jackson - camel:kamelet - camel:core @@ -39,7 +39,7 @@ You can use the `mask-field-action` Kamelet as an intermediate step in a Knative .mask-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mask-field-action-binding @@ -47,14 +47,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mask-field-action properties: fields: "The Fields" @@ -100,7 +100,7 @@ You can use the `mask-field-action` Kamelet as an intermediate step in a Kafka b .mask-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mask-field-action-binding @@ -108,14 +108,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mask-field-action properties: fields: "The Fields" diff --git a/docs/modules/ROOT/pages/message-timestamp-router-action.adoc b/docs/modules/ROOT/pages/message-timestamp-router-action.adoc index e28a14b33..056d364b1 100644 --- a/docs/modules/ROOT/pages/message-timestamp-router-action.adoc +++ b/docs/modules/ROOT/pages/message-timestamp-router-action.adoc @@ -25,7 +25,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `message-timestamp-router-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:jackson - camel:kamelet - camel:core @@ -41,7 +41,7 @@ You can use the `message-timestamp-router-action` Kamelet as an intermediate ste .message-timestamp-router-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: message-timestamp-router-action-binding @@ -49,14 +49,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: message-timestamp-router-action properties: timestampKeys: "The Timestamp Keys" @@ -101,7 +101,7 @@ You can use the `message-timestamp-router-action` Kamelet as an intermediate ste .message-timestamp-router-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: message-timestamp-router-action-binding @@ -109,14 +109,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: message-timestamp-router-action properties: timestampKeys: "The Timestamp Keys" diff --git a/docs/modules/ROOT/pages/mongodb-sink.adoc b/docs/modules/ROOT/pages/mongodb-sink.adoc index 026e253e3..6156b1335 100644 --- a/docs/modules/ROOT/pages/mongodb-sink.adoc +++ b/docs/modules/ROOT/pages/mongodb-sink.adoc @@ -4,13 +4,11 @@ *Provided by: "Red Hat"* -Send documents to MongoDB. +Send data to MongoDB. -This Kamelet expects a JSON as body. +This Kamelet expects a JSON-formatted body. -Properties you can set as headers: - -- `db-upsert` / `ce-dbupsert`: if the database should create the element if it does not exist. Boolean value. +In the header, you can set the `db-upsert` / `ce-dbupsert` property, a boolean value that specifies whether the database should create an element if it does not exist. == Configuration Options @@ -18,13 +16,15 @@ The following table summarizes the configuration options available for the `mong [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *collection {empty}* *| MongoDB Collection| Sets the name of the MongoDB collection to bind to this endpoint.| string| | -| *database {empty}* *| MongoDB Database| Sets the name of the MongoDB database to target.| string| | -| *hosts {empty}* *| MongoDB Hosts| Comma separated list of MongoDB Host Addresses in host:port format.| string| | -| createCollection| Collection| Create collection during initialisation if it doesn't exist.| boolean| `false`| -| password| MongoDB Password| User password for accessing MongoDB.| string| | -| username| MongoDB Username| Username for accessing MongoDB.| string| | -| writeConcern| Write Concern| Configure the level of acknowledgment requested from MongoDB for write operations, possible values are ACKNOWLEDGED, W1, W2, W3, UNACKNOWLEDGED, JOURNALED, MAJORITY.| string| | +| *collection {empty}* *| MongoDB Collection| The name of the MongoDB collection to bind to this endpoint.| string| | +| *database {empty}* *| MongoDB Database| The name of the MongoDB database.| string| | +| *hosts {empty}* *| MongoDB Hosts| A comma-separated list of MongoDB host addresses in `host:port` format.| string| | +| createCollection| Collection| Create a collection during initialization if it doesn't exist.| boolean| `false`| +| password| MongoDB Password| A user password for accessing MongoDB.| string| | +| ssl| Enable Ssl for Mongodb Connection| whether to enable ssl connection to mongodb| boolean| `true`| +| sslValidationEnabled| Enables Ssl Certificates Validation and Host name checks.| IMPORTANT this should be disabled only in test environment since can pose security issues.| boolean| `true`| +| username| MongoDB Username| A username for accessing MongoDB.| string| | +| writeConcern| Write Concern| The level of acknowledgment requested from MongoDB for write operations.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -37,7 +37,8 @@ At runtime, the `mongodb-sink` Kamelet relies upon the presence of the following - camel:core - camel:kamelet - camel:mongodb -- camel:jackson +- camel:jackson +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 == Usage @@ -50,7 +51,7 @@ You can use the `mongodb-sink` Kamelet as a Knative sink by binding it to a Knat .mongodb-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mongodb-sink-binding @@ -63,7 +64,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mongodb-sink properties: collection: "The MongoDB Collection" @@ -105,7 +106,7 @@ You can use the `mongodb-sink` Kamelet as a Kafka sink by binding it to a Kafka .mongodb-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mongodb-sink-binding @@ -118,7 +119,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mongodb-sink properties: collection: "The MongoDB Collection" diff --git a/docs/modules/ROOT/pages/mongodb-source.adoc b/docs/modules/ROOT/pages/mongodb-source.adoc index 8d57a4243..daa385d70 100644 --- a/docs/modules/ROOT/pages/mongodb-source.adoc +++ b/docs/modules/ROOT/pages/mongodb-source.adoc @@ -4,11 +4,13 @@ *Provided by: "Red Hat"* -Consume documents from MongoDB. +Consume data from MongoDB. -If the persistentTailTracking option will be enabled, the consumer will keep track of the last consumed message and on the next restart, the consumption will restart from that message. In case of persistentTailTracking enabled, the tailTrackIncreasingField must be provided (by default it is optional). +If you enable the `persistentTailTracking` property, the consumer keeps track of the last consumed message and, on the next restart, the consumption restarts from that message. If you enable `persistentTailTracking`, you must provide a value for the `tailTrackIncreasingField` property (by default it is optional). -If the persistentTailTracking option won't be enabled, the consumer will consume the whole collection and wait in idle for new documents to consume. +If you disable the `persistentTailTracking` property, the consumer consumes the whole collection and waits in idle for new data to consume. + +The collection that provides the data must be a capped collection. == Configuration Options @@ -16,13 +18,15 @@ The following table summarizes the configuration options available for the `mong [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *collection {empty}* *| MongoDB Collection| Sets the name of the MongoDB collection to bind to this endpoint.| string| | -| *database {empty}* *| MongoDB Database| Sets the name of the MongoDB database to target.| string| | -| *hosts {empty}* *| MongoDB Hosts| Comma separated list of MongoDB Host Addresses in host:port format.| string| | -| *password {empty}* *| MongoDB Password| User password for accessing MongoDB.| string| | -| *username {empty}* *| MongoDB Username| Username for accessing MongoDB. The username must be present in the MongoDB's authentication database (authenticationDatabase). By default, the MongoDB authenticationDatabase is 'admin'.| string| | -| persistentTailTracking| MongoDB Persistent Tail Tracking| Enable persistent tail tracking, which is a mechanism to keep track of the last consumed message across system restarts. The next time the system is up, the endpoint will recover the cursor from the point where it last stopped slurping records.| boolean| `false`| -| tailTrackIncreasingField| MongoDB Tail Track Increasing Field| Correlation field in the incoming record which is of increasing nature and will be used to position the tailing cursor every time it is generated.| string| | +| *collection {empty}* *| MongoDB Collection| The name of the MongoDB collection to bind to this endpoint.| string| | +| *database {empty}* *| MongoDB Database| The name of the MongoDB database.| string| | +| *hosts {empty}* *| MongoDB Hosts| A comma-separated list of MongoDB host addresses in `host:port` format.| string| | +| password| MongoDB Password| The user password for accessing MongoDB.| string| | +| persistentTailTracking| MongoDB Persistent Tail Tracking| Specifies to enable persistent tail tracking, which is a mechanism to keep track of the last consumed data across system restarts. The next time the system is up, the endpoint recovers the cursor from the point where it last stopped consuimg data. This option will only work on capped collections.| boolean| `false`| +| ssl| Enable Ssl for Mongodb Connection| whether to enable ssl connection to mongodb| boolean| `true`| +| sslValidationEnabled| Enables Ssl Certificates Validation and Host name checks.| IMPORTANT this should be disabled only in test environment since can pose security issues.| boolean| `true`| +| tailTrackIncreasingField| MongoDB Tail Track Increasing Field| The correlation field in the incoming data which is of increasing nature and is used to position the tailing cursor every time it is generated.| string| | +| username| MongoDB Username| The username for accessing MongoDB. The username must be present in the MongoDB's authentication database (`authenticationDatabase`). By default, the MongoDB `authenticationDatabase` is 'admin'.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -34,7 +38,8 @@ At runtime, the `mongodb-source` Kamelet relies upon the presence of the followi - camel:kamelet - camel:mongodb -- camel:jackson +- camel:jackson +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 == Usage @@ -47,7 +52,7 @@ You can use the `mongodb-source` Kamelet as a Knative source by binding it to a .mongodb-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mongodb-source-binding @@ -55,14 +60,12 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mongodb-source properties: collection: "The MongoDB Collection" database: "The MongoDB Database" hosts: "The MongoDB Hosts" - password: "The MongoDB Password" - username: "The MongoDB Username" sink: ref: kind: Channel @@ -92,7 +95,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind mongodb-source -p "source.collection=The MongoDB Collection" -p "source.database=The MongoDB Database" -p "source.hosts=The MongoDB Hosts" -p "source.password=The MongoDB Password" -p "source.username=The MongoDB Username" channel:mychannel +kamel bind mongodb-source -p "source.collection=The MongoDB Collection" -p "source.database=The MongoDB Database" -p "source.hosts=The MongoDB Hosts" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -104,7 +107,7 @@ You can use the `mongodb-source` Kamelet as a Kafka source by binding it to a Ka .mongodb-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mongodb-source-binding @@ -112,14 +115,12 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mongodb-source properties: collection: "The MongoDB Collection" database: "The MongoDB Database" hosts: "The MongoDB Hosts" - password: "The MongoDB Password" - username: "The MongoDB Username" sink: ref: kind: KafkaTopic @@ -150,7 +151,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind mongodb-source -p "source.collection=The MongoDB Collection" -p "source.database=The MongoDB Database" -p "source.hosts=The MongoDB Hosts" -p "source.password=The MongoDB Password" -p "source.username=The MongoDB Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind mongodb-source -p "source.collection=The MongoDB Collection" -p "source.database=The MongoDB Database" -p "source.hosts=The MongoDB Hosts" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/mysql-sink.adoc b/docs/modules/ROOT/pages/mysql-sink.adoc index 95fee58cd..a2bd1f8a7 100644 --- a/docs/modules/ROOT/pages/mysql-sink.adoc +++ b/docs/modules/ROOT/pages/mysql-sink.adoc @@ -6,11 +6,15 @@ Send data to a MySQL 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: +In your KameletBinding file, you must explicitly declare the SQL Server driver dependency in spec->integration->dependencies. + +- "mvn:mysql:mysql-connector-java:" + +This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' -The Kamelet needs to receive as input something like: +Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' @@ -20,12 +24,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| | -| *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| | -| serverPort| Server Port| Server Port for the data source| string| `3306`| +| *databaseName {empty}* *| Database Name| The name of the MySQL Database.| string| | +| *password {empty}* *| Password| The password to access a secured 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| The server name for the data source.| string| | `"localhost"` +| *username {empty}* *| Username| The username to access a secured MySQL Database.| string| | +| serverPort| Server Port| The server port for the data source.| string| `3306`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -38,8 +42,7 @@ At runtime, the `mysql-sink` Kamelet relies upon the presence of the following d - camel:jackson - camel:kamelet - camel:sql -- mvn:org.apache.commons:commons-dbcp2:2.7.0 -- mvn:mysql:mysql-connector-java +- mvn:org.apache.commons:commons-dbcp2:2.10.0 == Usage @@ -52,7 +55,7 @@ You can use the `mysql-sink` Kamelet as a Knative sink by binding it to a Knativ .mysql-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mysql-sink-binding @@ -65,7 +68,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mysql-sink properties: databaseName: "The Database Name" @@ -109,7 +112,7 @@ You can use the `mysql-sink` Kamelet as a Kafka sink by binding it to a Kafka to .mysql-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mysql-sink-binding @@ -122,7 +125,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mysql-sink properties: databaseName: "The Database Name" diff --git a/docs/modules/ROOT/pages/postgresql-sink.adoc b/docs/modules/ROOT/pages/postgresql-sink.adoc index 98a1c9c8e..5b6768c7a 100644 --- a/docs/modules/ROOT/pages/postgresql-sink.adoc +++ b/docs/modules/ROOT/pages/postgresql-sink.adoc @@ -6,11 +6,11 @@ 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: +This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' -The Kamelet needs to receive as input something like: +Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' @@ -20,12 +20,12 @@ The following table summarizes the configuration options available for the `post [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| | `"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| | -| serverPort| Server Port| Server Port for the data source| string| `5432`| +| *databaseName {empty}* *| Database Name| The name of the PostgreSQL Database.| string| | +| *password {empty}* *| Password| The password to access a secured 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| The server name for the data source.| string| | `"localhost"` +| *username {empty}* *| Username| The username to access a secured PostgreSQL Database.| string| | +| serverPort| Server Port| The server port for the data source.| string| `5432`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -38,8 +38,8 @@ At runtime, the `postgresql-sink` Kamelet relies upon the presence of the follow - camel:jackson - camel:kamelet - camel:sql -- mvn:org.postgresql:postgresql:42.5.1 -- mvn:org.apache.commons:commons-dbcp2:2.7.0 +- mvn:org.postgresql:postgresql:42.6.0 +- mvn:org.apache.commons:commons-dbcp2:2.10.0 == Usage @@ -52,7 +52,7 @@ You can use the `postgresql-sink` Kamelet as a Knative sink by binding it to a K .postgresql-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: postgresql-sink-binding @@ -65,7 +65,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: postgresql-sink properties: databaseName: "The Database Name" @@ -109,7 +109,7 @@ You can use the `postgresql-sink` Kamelet as a Kafka sink by binding it to a Kaf .postgresql-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: postgresql-sink-binding @@ -122,7 +122,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: postgresql-sink properties: databaseName: "The Database Name" diff --git a/docs/modules/ROOT/pages/predicate-filter-action.adoc b/docs/modules/ROOT/pages/predicate-filter-action.adoc index 44008d808..f5704878f 100644 --- a/docs/modules/ROOT/pages/predicate-filter-action.adoc +++ b/docs/modules/ROOT/pages/predicate-filter-action.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Filter based on a JsonPath Expression +Filter based on a JsonPath Expression. 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. == Configuration Options @@ -37,7 +37,7 @@ You can use the `predicate-filter-action` Kamelet as an intermediate step in a K .predicate-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: predicate-filter-action-binding @@ -45,14 +45,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: predicate-filter-action properties: expression: "@.foo =~ /.*John/" @@ -97,7 +97,7 @@ You can use the `predicate-filter-action` Kamelet as an intermediate step in a K .predicate-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: predicate-filter-action-binding @@ -105,14 +105,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: predicate-filter-action properties: expression: "@.foo =~ /.*John/" diff --git a/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc b/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc index 0c73fb2e8..359f51341 100644 --- a/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc +++ b/docs/modules/ROOT/pages/protobuf-deserialize-action.adoc @@ -12,7 +12,7 @@ The following table summarizes the configuration options available for the `prot [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; }"` +| schema| 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 an asterisk ({empty}*) are mandatory. @@ -22,7 +22,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `protobuf-deserialize-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:kamelet - camel:core - camel:jackson-protobuf @@ -38,7 +38,7 @@ You can use the `protobuf-deserialize-action` Kamelet as an intermediate step in .protobuf-deserialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: protobuf-deserialize-action-binding @@ -46,24 +46,24 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first": "John", "last":"Doe"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: protobuf-serialize-action properties: schema: "message Person { required string first = 1; required string last = 2; }" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: protobuf-deserialize-action properties: schema: "message Person { required string first = 1; required string last = 2; }" @@ -109,7 +109,7 @@ You can use the `protobuf-deserialize-action` Kamelet as an intermediate step in .protobuf-deserialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: protobuf-deserialize-action-binding @@ -117,24 +117,24 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first": "John", "last":"Doe"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: protobuf-serialize-action properties: schema: "message Person { required string first = 1; required string last = 2; }" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: protobuf-deserialize-action properties: schema: "message Person { required string first = 1; required string last = 2; }" diff --git a/docs/modules/ROOT/pages/protobuf-serialize-action.adoc b/docs/modules/ROOT/pages/protobuf-serialize-action.adoc index cc3af5e29..a55d9f9eb 100644 --- a/docs/modules/ROOT/pages/protobuf-serialize-action.adoc +++ b/docs/modules/ROOT/pages/protobuf-serialize-action.adoc @@ -12,7 +12,7 @@ The following table summarizes the configuration options available for the `prot [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; }"` +| schema| 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 an asterisk ({empty}*) are mandatory. @@ -22,7 +22,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `protobuf-serialize-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:kamelet - camel:core - camel:jackson-protobuf @@ -38,7 +38,7 @@ You can use the `protobuf-serialize-action` Kamelet as an intermediate step in a .protobuf-serialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: protobuf-serialize-action-binding @@ -46,18 +46,18 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first": "John", "last":"Doe"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: protobuf-serialize-action properties: schema: "message Person { required string first = 1; required string last = 2; }" @@ -103,7 +103,7 @@ You can use the `protobuf-serialize-action` Kamelet as an intermediate step in a .protobuf-serialize-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: protobuf-serialize-action-binding @@ -111,18 +111,18 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first": "John", "last":"Doe"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: protobuf-serialize-action properties: schema: "message Person { required string first = 1; required string last = 2; }" diff --git a/docs/modules/ROOT/pages/regex-router-action.adoc b/docs/modules/ROOT/pages/regex-router-action.adoc index 31e60a5e3..2afa1e5b2 100644 --- a/docs/modules/ROOT/pages/regex-router-action.adoc +++ b/docs/modules/ROOT/pages/regex-router-action.adoc @@ -23,7 +23,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `regex-router-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:kamelet - camel:core @@ -38,7 +38,7 @@ You can use the `regex-router-action` Kamelet as an intermediate step in a Knati .regex-router-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: regex-router-action-binding @@ -46,14 +46,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: regex-router-action properties: regex: "The Regex" @@ -99,7 +99,7 @@ You can use the `regex-router-action` Kamelet as an intermediate step in a Kafka .regex-router-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: regex-router-action-binding @@ -107,14 +107,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: regex-router-action properties: regex: "The Regex" diff --git a/docs/modules/ROOT/pages/replace-field-action.adoc b/docs/modules/ROOT/pages/replace-field-action.adoc index fc1c8f609..ff838d03b 100644 --- a/docs/modules/ROOT/pages/replace-field-action.adoc +++ b/docs/modules/ROOT/pages/replace-field-action.adoc @@ -4,7 +4,17 @@ *Provided by: "Red Hat"* -Replace field with a different key in the message in transit +Replace field with a different key in the message in transit. + +The required parameter 'renames' is a comma-separated list of colon-delimited renaming pairs like for example 'foo:bar,abc:xyz' and it represents the field rename mappings. + +The optional parameter 'enabled' represents the fields to include. If specified, only the named fields will be included in the resulting message. + +The optional parameter 'disabled' represents the fields to exclude. If specified, the listed fields will be excluded from the resulting message. This takes precedence over the 'enabled' parameter. + +The default value of 'enabled' parameter is 'all', so all the fields of the payload will be included. + +The default value of 'disabled' parameter is 'none', so no fields of the payload will be excluded. == Configuration Options @@ -24,7 +34,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `replace-field-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:core - camel:jackson - camel:kamelet @@ -40,7 +50,7 @@ You can use the `replace-field-action` Kamelet as an intermediate step in a Knat .replace-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: replace-field-action-binding @@ -48,14 +58,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: replace-field-action properties: renames: "foo:bar,c1:c2" @@ -100,7 +110,7 @@ You can use the `replace-field-action` Kamelet as an intermediate step in a Kafk .replace-field-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: replace-field-action-binding @@ -108,14 +118,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: replace-field-action properties: renames: "foo:bar,c1:c2" diff --git a/docs/modules/ROOT/pages/resolve-pojo-schema-action.adoc b/docs/modules/ROOT/pages/resolve-pojo-schema-action.adoc new file mode 100644 index 000000000..82bedefa6 --- /dev/null +++ b/docs/modules/ROOT/pages/resolve-pojo-schema-action.adoc @@ -0,0 +1,159 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/resolve-pojo-schema-action.svg[] Resolve Schema Action + +*Provided by: "Red Hat"* + +Resolves schema from given mime type and payload. Sets the resolved schema, the schema type and its content class as properties for later reference. + +== Configuration Options + +The following table summarizes the configuration options available for the `resolve-pojo-schema-action` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| contentClass| Content Class| Type information of the content object. Fully qualified class name.| string| | `"org.apache.camel.content.Foo"` +| mimeType| Mime Type| The mime type to determine the schema resolver implementation that should perform the operation.| string| `"application/json"`| `"application/json"` +| schema| Schema| Optional schema content (as single-line, using JSON format).| string| | +| targetMimeType| Target Mime Type| Additional mime type information used to determine the schema resolver. Usually only used in combination with mime type "application/x-java-object"| string| | `"application/json"` +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `resolve-pojo-schema-action` Kamelet relies upon the presence of the following dependencies: + +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 +- camel:kamelet +- camel:core +- camel:jackson-avro +- camel:jackson-protobuf + +== Usage + +This section describes how you can use the `resolve-pojo-schema-action`. + +=== Knative Action + +You can use the `resolve-pojo-schema-action` Kamelet as an intermediate step in a Knative binding. + +.resolve-pojo-schema-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: resolve-pojo-schema-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: resolve-pojo-schema-action + sink: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `resolve-pojo-schema-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the action by using the following command: ++ +[source,shell] +---- +oc apply -f resolve-pojo-schema-action-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the action by using the following command: + +[source,shell] +---- +kamel bind timer-source?message=Hello --step resolve-pojo-schema-action channel:mychannel +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Action + +You can use the `resolve-pojo-schema-action` Kamelet as an intermediate step in a Kafka binding. + +.resolve-pojo-schema-action-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: resolve-pojo-schema-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: resolve-pojo-schema-action + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `resolve-pojo-schema-action-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the action by using the following command: ++ +[source,shell] +---- +oc apply -f resolve-pojo-schema-action-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the action by using the following command: + +[source,shell] +---- +kamel bind timer-source?message=Hello --step resolve-pojo-schema-action kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/resolve-pojo-schema-action.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/salesforce-composite-upsert-sink.adoc b/docs/modules/ROOT/pages/salesforce-composite-upsert-sink.adoc new file mode 100644 index 000000000..f7652502f --- /dev/null +++ b/docs/modules/ROOT/pages/salesforce-composite-upsert-sink.adoc @@ -0,0 +1,166 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/salesforce-composite-upsert-sink.svg[] Salesforce composite upsert Sink + +*Provided by: "Red Hat"* + +Upsert Composite List of sObjects in Salesforce. + +The body received must contain List of JSON SObjects to insert/update inside the records attribute, for example: + +`{"records" : ["attributes" : {"type" : "KameletSinkSObject__c"},"ExtId__c" : "1","Name__c": "Ziauddin", "City__c": "Bhopal"], ["attributes" : {"type" : "KameletSinkSObject__c"},"ExtId__c" : "2","Name__c": "Shaikh", "City__c": "Bhopal"] }` + +== Configuration Options + +The following table summarizes the configuration options available for the `salesforce-composite-upsert-sink` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *clientId {empty}* *| Consumer Key| The Salesforce application consumer key.| string| | +| *clientSecret {empty}* *| Consumer Secret| The Salesforce application consumer secret.| string| | +| *password {empty}* *| Password| The Salesforce user password.| string| | +| *sObjectIdName {empty}* *| Object Id Name| The Field Name of the External ID of the Salesforce object. Required if using a key-value pair.| string| | +| *sObjectName {empty}* *| Object Name| The type of the Salesforce object. Required if using a key-value pair.| string| | `"Contact"` +| *userName {empty}* *| Username| The Salesforce username.| string| | +| loginUrl| Login URL| The Salesforce instance login URL.| string| `"https://login.salesforce.com"`| +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `salesforce-composite-upsert-sink` Kamelet relies upon the presence of the following dependencies: + +- camel:core +- camel:jsonpath +- camel:jackson +- camel:salesforce +- camel:kamelet + +== Usage + +This section describes how you can use the `salesforce-composite-upsert-sink`. + +=== Knative Sink + +You can use the `salesforce-composite-upsert-sink` Kamelet as a Knative sink by binding it to a Knative object. + +.salesforce-composite-upsert-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: salesforce-composite-upsert-sink-binding +spec: + source: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: salesforce-composite-upsert-sink + properties: + clientId: "The Consumer Key" + clientSecret: "The Consumer Secret" + password: "The Password" + sObjectIdName: "The Object Id Name" + sObjectName: "Contact" + userName: "The Username" + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `salesforce-composite-upsert-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the sink by using the following command: ++ +[source,shell] +---- +oc apply -f salesforce-composite-upsert-sink-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the sink by using the following command: + +[source,shell] +---- +kamel bind channel:mychannel salesforce-composite-upsert-sink -p "sink.clientId=The Consumer Key" -p "sink.clientSecret=The Consumer Secret" -p "sink.password=The Password" -p "sink.sObjectIdName=The Object Id Name" -p "sink.sObjectName=Contact" -p "sink.userName=The Username" +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Sink + +You can use the `salesforce-composite-upsert-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. + +.salesforce-composite-upsert-sink-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: salesforce-composite-upsert-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: salesforce-composite-upsert-sink + properties: + clientId: "The Consumer Key" + clientSecret: "The Consumer Secret" + password: "The Password" + sObjectIdName: "The Object Id Name" + sObjectName: "Contact" + userName: "The Username" + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `salesforce-composite-upsert-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the sink by using the following command: ++ +[source,shell] +---- +oc apply -f salesforce-composite-upsert-sink-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the sink by using the following command: + +[source,shell] +---- +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic salesforce-composite-upsert-sink -p "sink.clientId=The Consumer Key" -p "sink.clientSecret=The Consumer Secret" -p "sink.password=The Password" -p "sink.sObjectIdName=The Object Id Name" -p "sink.sObjectName=Contact" -p "sink.userName=The Username" +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/salesforce-composite-upsert-sink.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/salesforce-create-sink.adoc b/docs/modules/ROOT/pages/salesforce-create-sink.adoc index 755c2a9f7..ad83ed074 100644 --- a/docs/modules/ROOT/pages/salesforce-create-sink.adoc +++ b/docs/modules/ROOT/pages/salesforce-create-sink.adoc @@ -4,10 +4,9 @@ *Provided by: "Red Hat"* -Creates an object in Salesforce. The body of the message must contain -the JSON of the salesforce object. +Create an object in Salesforce. -Example body: { "Phone": "555", "Name": "Antonia", "LastName": "Garcia" } +The body of the message must contain the JSON of the Salesforce object, for example: `{ "Phone": "555", "Name": "Antonia", "LastName": "Garcia" }`. == Configuration Options @@ -15,12 +14,12 @@ The following table summarizes the configuration options available for the `sale [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *clientId {empty}* *| Consumer Key| The Salesforce application consumer key| string| | -| *clientSecret {empty}* *| Consumer Secret| The Salesforce application consumer secret| string| | -| *password {empty}* *| Password| The Salesforce user password| string| | -| *userName {empty}* *| Username| The Salesforce username| string| | -| loginUrl| Login URL| The Salesforce instance login URL| string| `"https://login.salesforce.com"`| -| sObjectName| Object Name| Type of the object| string| | `"Contact"` +| *clientId {empty}* *| Consumer Key| The Salesforce application consumer key.| string| | +| *clientSecret {empty}* *| Consumer Secret| The Salesforce application consumer secret.| string| | +| *password {empty}* *| Password| The Salesforce user password.| string| | +| *userName {empty}* *| Username| The Salesforce username.| string| | +| loginUrl| Login URL| The Salesforce instance login URL.| string| `"https://login.salesforce.com"`| +| sObjectName| Object Name| The type of the object.| string| | `"Contact"` |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -44,7 +43,7 @@ You can use the `salesforce-create-sink` Kamelet as a Knative sink by binding it .salesforce-create-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-create-sink-binding @@ -57,7 +56,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-create-sink properties: clientId: "The Consumer Key" @@ -100,7 +99,7 @@ You can use the `salesforce-create-sink` Kamelet as a Kafka sink by binding it t .salesforce-create-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-create-sink-binding @@ -113,7 +112,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-create-sink properties: clientId: "The Consumer Key" diff --git a/docs/modules/ROOT/pages/salesforce-delete-sink.adoc b/docs/modules/ROOT/pages/salesforce-delete-sink.adoc index c1bcf1ef5..c0439e71c 100644 --- a/docs/modules/ROOT/pages/salesforce-delete-sink.adoc +++ b/docs/modules/ROOT/pages/salesforce-delete-sink.adoc @@ -4,10 +4,10 @@ *Provided by: "Red Hat"* -Removes an object from Salesforce. The body received must be a json -containing two keys: sObjectId and sObjectName. +Remove an object from Salesforce. -Example body: { "sObjectId": "XXXXX0", "sObjectName": "Contact" } +The data body must be JSON-formatted and it must +contain two keys: `sObjectId` and `sObjectName`. For example: `{ "sObjectId": "XXXXX0", "sObjectName": "Contact" }` == Configuration Options @@ -15,11 +15,11 @@ The following table summarizes the configuration options available for the `sale [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *clientId {empty}* *| Consumer Key| The Salesforce application consumer key| string| | -| *clientSecret {empty}* *| Consumer Secret| The Salesforce application consumer secret| string| | -| *password {empty}* *| Password| The Salesforce user password| string| | -| *userName {empty}* *| Username| The Salesforce username| string| | -| loginUrl| Login URL| The Salesforce instance login URL| string| `"https://login.salesforce.com"`| +| *clientId {empty}* *| Consumer Key| The Salesforce application consumer key.| string| | +| *clientSecret {empty}* *| Consumer Secret| The Salesforce application consumer secret.| string| | +| *password {empty}* *| Password| The Salesforce user password.| string| | +| *userName {empty}* *| Username| The Salesforce username.| string| | +| loginUrl| Login URL| The Salesforce instance login URL.| string| `"https://login.salesforce.com"`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -45,7 +45,7 @@ You can use the `salesforce-delete-sink` Kamelet as a Knative sink by binding it .salesforce-delete-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-delete-sink-binding @@ -58,7 +58,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-delete-sink properties: clientId: "The Consumer Key" @@ -101,7 +101,7 @@ You can use the `salesforce-delete-sink` Kamelet as a Kafka sink by binding it t .salesforce-delete-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-delete-sink-binding @@ -114,7 +114,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-delete-sink properties: clientId: "The Consumer Key" diff --git a/docs/modules/ROOT/pages/salesforce-source.adoc b/docs/modules/ROOT/pages/salesforce-source.adoc index c83d6cc4e..e1be91b79 100644 --- a/docs/modules/ROOT/pages/salesforce-source.adoc +++ b/docs/modules/ROOT/pages/salesforce-source.adoc @@ -12,18 +12,19 @@ The following table summarizes the configuration options available for the `sale [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *clientId {empty}* *| Consumer Key| The Salesforce application consumer key| string| | -| *clientSecret {empty}* *| Consumer Secret| The Salesforce application consumer secret| string| | -| *password {empty}* *| Password| The Salesforce user password| string| | -| *query {empty}* *| Query| The query to execute on Salesforce| string| | `"SELECT Id, Name, Email, Phone FROM Contact"` -| *topicName {empty}* *| Topic Name| The name of the topic/channel to use| string| | `"ContactTopic"` -| *userName {empty}* *| Username| The Salesforce username| string| | -| loginUrl| Login URL| The Salesforce instance login URL| string| `"https://login.salesforce.com"`| -| notifyForFields| Notify For Fields| Notify for fields, options are ALL, REFERENCED, SELECT, WHERE.| string| `"ALL"`| +| *clientId {empty}* *| Consumer Key| The Salesforce application consumer key.| string| | +| *clientSecret {empty}* *| Consumer Secret| The Salesforce application consumer secret.| string| | +| *password {empty}* *| Password| The Salesforce user password.| string| | +| *query {empty}* *| Query| The query to execute on Salesforce.| string| | `"SELECT Id, Name, Email, Phone FROM Contact"` +| *topicName {empty}* *| Topic Name| The name of the topic or channel.| string| | `"ContactTopic"` +| *userName {empty}* *| Username| The Salesforce username.| string| | +| loginUrl| Login URL| The Salesforce instance login URL.| string| `"https://login.salesforce.com"`| +| notifyForFields| Notify For Fields| Notify for fields.| string| `"ALL"`| | notifyForOperationCreate| Notify Operation Create| Notify for create operation.| boolean| `true`| | notifyForOperationDelete| Notify Operation Delete| Notify for delete operation.| boolean| `false`| | notifyForOperationUndelete| Notify Operation Undelete| Notify for undelete operation.| boolean| `false`| | notifyForOperationUpdate| Notify Operation Update| Notify for update operation.| boolean| `false`| +| operation| Operation| The operation to use| string| `"subscribe"`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -48,7 +49,7 @@ You can use the `salesforce-source` Kamelet as a Knative source by binding it to .salesforce-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-source-binding @@ -56,7 +57,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-source properties: clientId: "The Consumer Key" @@ -106,7 +107,7 @@ You can use the `salesforce-source` Kamelet as a Kafka source by binding it to a .salesforce-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-source-binding @@ -114,7 +115,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-source properties: clientId: "The Consumer Key" diff --git a/docs/modules/ROOT/pages/salesforce-update-sink.adoc b/docs/modules/ROOT/pages/salesforce-update-sink.adoc index 9b8875e3c..e99f41238 100644 --- a/docs/modules/ROOT/pages/salesforce-update-sink.adoc +++ b/docs/modules/ROOT/pages/salesforce-update-sink.adoc @@ -4,11 +4,15 @@ *Provided by: "Red Hat"* -Updates an object in Salesforce. The body received must contain a -JSON key-value pair for each property to update and sObjectName and -sObjectId must be provided as parameters. +Update an object in Salesforce. -Example of key-value pair: { "Phone": "1234567890", "Name": "Antonia" } +The body received must contain a JSON key-value pair for each property to update inside the payload attribute, for example: + +`{ "payload": { "Phone": "1234567890", "Name": "Antonia" } }` + +The body received must include the `sObjectName` and `sObjectId` properties, for example: + +`{ "payload": { "Phone": "1234567890", "Name": "Antonia" }, "sObjectId": "sObjectId", "sObjectName": "sObjectName" }` == Configuration Options @@ -16,13 +20,11 @@ The following table summarizes the configuration options available for the `sale [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *clientId {empty}* *| Consumer Key| The Salesforce application consumer key| string| | -| *clientSecret {empty}* *| Consumer Secret| The Salesforce application consumer secret| string| | -| *password {empty}* *| Password| The Salesforce user password| string| | -| *sObjectId {empty}* *| Object Id| Id of the object. Only required if using key-value pair.| string| | -| *sObjectName {empty}* *| Object Name| Type of the object. Only required if using key-value pair.| string| | `"Contact"` -| *userName {empty}* *| Username| The Salesforce username| string| | -| loginUrl| Login URL| The Salesforce instance login URL| string| `"https://login.salesforce.com"`| +| *clientId {empty}* *| Consumer Key| The Salesforce application consumer key.| string| | +| *clientSecret {empty}* *| Consumer Secret| The Salesforce application consumer secret.| string| | +| *password {empty}* *| Password| The Salesforce user password.| string| | +| *userName {empty}* *| Username| The Salesforce username.| string| | +| loginUrl| Login URL| The Salesforce instance login URL.| string| `"https://login.salesforce.com"`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -32,6 +34,9 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `salesforce-update-sink` Kamelet relies upon the presence of the following dependencies: +- camel:core +- camel:jsonpath +- camel:jackson - camel:salesforce - camel:kamelet @@ -46,7 +51,7 @@ You can use the `salesforce-update-sink` Kamelet as a Knative sink by binding it .salesforce-update-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-update-sink-binding @@ -59,14 +64,12 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-update-sink properties: clientId: "The Consumer Key" clientSecret: "The Consumer Secret" password: "The Password" - sObjectId: "The Object Id" - sObjectName: "Contact" userName: "The Username" ---- @@ -92,7 +95,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel salesforce-update-sink -p "sink.clientId=The Consumer Key" -p "sink.clientSecret=The Consumer Secret" -p "sink.password=The Password" -p "sink.sObjectId=The Object Id" -p "sink.sObjectName=Contact" -p "sink.userName=The Username" +kamel bind channel:mychannel salesforce-update-sink -p "sink.clientId=The Consumer Key" -p "sink.clientSecret=The Consumer Secret" -p "sink.password=The Password" -p "sink.userName=The Username" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -104,7 +107,7 @@ You can use the `salesforce-update-sink` Kamelet as a Kafka sink by binding it t .salesforce-update-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-update-sink-binding @@ -117,14 +120,12 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-update-sink properties: clientId: "The Consumer Key" clientSecret: "The Consumer Secret" password: "The Password" - sObjectId: "The Object Id" - sObjectName: "Contact" userName: "The Username" ---- @@ -151,7 +152,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic salesforce-update-sink -p "sink.clientId=The Consumer Key" -p "sink.clientSecret=The Consumer Secret" -p "sink.password=The Password" -p "sink.sObjectId=The Object Id" -p "sink.sObjectName=Contact" -p "sink.userName=The Username" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic salesforce-update-sink -p "sink.clientId=The Consumer Key" -p "sink.clientSecret=The Consumer Secret" -p "sink.password=The Password" -p "sink.userName=The Username" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/sftp-sink.adoc b/docs/modules/ROOT/pages/sftp-sink.adoc index a1201a2f8..8c9f541bf 100644 --- a/docs/modules/ROOT/pages/sftp-sink.adoc +++ b/docs/modules/ROOT/pages/sftp-sink.adoc @@ -6,11 +6,9 @@ Send data to an SFTP Server. -The Kamelet expects the following headers to be set: +In the header, you can set the `file` / `ce-file` property to specify the filename to upload. -- `file` / `ce-file`: as the file name to upload - -If the header won't be set the exchange ID will be used as file name. +If you do not set the property in the header, the Kamelet uses the exchange ID for the filename. == Configuration Options @@ -18,13 +16,20 @@ The following table summarizes the configuration options available for the `sftp [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *connectionHost {empty}* *| Connection Host| Hostname of the FTP server| string| | -| *connectionPort {empty}* *| Connection Port| Port of the FTP server| string| `22`| -| *directoryName {empty}* *| Directory Name| The starting directory| string| | -| *password {empty}* *| Password| The password to access the FTP server| string| | -| *username {empty}* *| Username| The username to access the FTP server| string| | -| fileExist| File Existence| How to behave in case of file already existent. There are 4 enums and the value can be one of Override, Append, Fail or Ignore| string| `"Override"`| -| passiveMode| Passive Mode| Sets passive mode connection| boolean| `false`| +| *connectionHost {empty}* *| Connection Host| The hostname of the FTP server| string| | +| *connectionPort {empty}* *| Connection Port| The port of the FTP server| string| `22`| +| *directoryName {empty}* *| Directory Name| The starting directory.| string| | +| autoCreate| Autocreate Missing Directories| Automatically create the directory the files should be written to.| boolean| `true`| +| binary| Binary| Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).| boolean| `false`| +| fileExist| File Existence| How to behave in case of file already existent.| string| `"Override"`| +| passiveMode| Passive Mode| Specifies to use passive mode connection.| boolean| `false`| +| password| Password| The password to access the FTP server.| string| | +| privateKeyFile| Private Key File| Set the private key file so that the SFTP endpoint can do private key verification.| string| | +| privateKeyPassphrase| Private Key Passphrase| Set the private key file passphrase so that the SFTP endpoint can do private key verification.| string| | +| privateKeyUri| Private Key URI| Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification.| string| | +| strictHostKeyChecking| Strict Host Checking| Sets whether to use strict host key checking.| string| `false`| +| useUserKnownHostsFile| Use User Known Hosts File| If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts.| boolean| `true`| +| username| Username| The username to access the FTP server.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -49,7 +54,7 @@ You can use the `sftp-sink` Kamelet as a Knative sink by binding it to a Knative .sftp-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: sftp-sink-binding @@ -62,13 +67,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: sftp-sink properties: connectionHost: "The Connection Host" directoryName: "The Directory Name" - password: "The Password" - username: "The Username" ---- @@ -93,7 +96,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind channel:mychannel sftp-sink -p "sink.connectionHost=The Connection Host" -p "sink.directoryName=The Directory Name" -p "sink.password=The Password" -p "sink.username=The Username" +kamel bind channel:mychannel sftp-sink -p "sink.connectionHost=The Connection Host" -p "sink.directoryName=The Directory Name" ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -105,7 +108,7 @@ You can use the `sftp-sink` Kamelet as a Kafka sink by binding it to a Kafka top .sftp-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: sftp-sink-binding @@ -118,13 +121,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: sftp-sink properties: connectionHost: "The Connection Host" directoryName: "The Directory Name" - password: "The Password" - username: "The Username" ---- @@ -150,7 +151,7 @@ Configure and run the sink by using the following command: [source,shell] ---- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic sftp-sink -p "sink.connectionHost=The Connection Host" -p "sink.directoryName=The Directory Name" -p "sink.password=The Password" -p "sink.username=The Username" +kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic sftp-sink -p "sink.connectionHost=The Connection Host" -p "sink.directoryName=The Directory Name" ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/sftp-source.adoc b/docs/modules/ROOT/pages/sftp-source.adoc index 0b6ef2b33..0bef8fed1 100644 --- a/docs/modules/ROOT/pages/sftp-source.adoc +++ b/docs/modules/ROOT/pages/sftp-source.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Receive data from an SFTP Server. +Receive data from an SFTP server. == Configuration Options @@ -12,14 +12,23 @@ The following table summarizes the configuration options available for the `sftp [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *connectionHost {empty}* *| Connection Host| Hostname of the SFTP server| string| | -| *connectionPort {empty}* *| Connection Port| Port of the FTP server| string| `22`| -| *directoryName {empty}* *| Directory Name| The starting directory| string| | -| *password {empty}* *| Password| The password to access the SFTP server| string| | -| *username {empty}* *| Username| The username to access the SFTP server| string| | -| idempotent| Idempotency| Skip already processed files.| boolean| `true`| -| passiveMode| Passive Mode| Sets passive mode connection| boolean| `false`| -| recursive| Recursive| If a directory, will look for files in all the sub-directories as well.| boolean| `false`| +| *connectionHost {empty}* *| Connection Host| The hostname of the SFTP server.| string| | +| *connectionPort {empty}* *| Connection Port| The port of the FTP server.| string| `22`| +| *directoryName {empty}* *| Directory Name| The starting directory.| string| | +| autoCreate| Autocreate Missing Directories| Automatically create starting directory.| boolean| `true`| +| binary| Binary| Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).| boolean| `false`| +| delete| Delete| If true, the file will be deleted after it is processed successfully.| boolean| `false`| +| idempotent| Idempotency| Skip already-processed files.| boolean| `true`| +| ignoreFileNotFoundOrPermissionError| Ignore File Not Found Or Permission Error| Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead.| boolean| `false`| +| passiveMode| Passive Mode| Sets the passive mode connection.| boolean| `false`| +| password| Password| The password to access the SFTP server.| string| | +| privateKeyFile| Private Key File| Set the private key file so that the SFTP endpoint can do private key verification.| string| | +| privateKeyPassphrase| Private Key Passphrase| Set the private key file passphrase so that the SFTP endpoint can do private key verification.| string| | +| privateKeyUri| Private Key URI| Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification.| string| | +| recursive| Recursive| If a directory, look for files in all sub-directories as well.| boolean| `false`| +| strictHostKeyChecking| Strict Host Checking| Sets whether to use strict host key checking.| string| `false`| +| useUserKnownHostsFile| Use User Known Hosts File| If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts.| boolean| `true`| +| username| Username| The username to access the SFTP server.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -44,7 +53,7 @@ You can use the `sftp-source` Kamelet as a Knative source by binding it to a Kna .sftp-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: sftp-source-binding @@ -52,13 +61,11 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: sftp-source properties: connectionHost: "The Connection Host" directoryName: "The Directory Name" - password: "The Password" - username: "The Username" sink: ref: kind: Channel @@ -88,7 +95,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind sftp-source -p "source.connectionHost=The Connection Host" -p "source.directoryName=The Directory Name" -p "source.password=The Password" -p "source.username=The Username" channel:mychannel +kamel bind sftp-source -p "source.connectionHost=The Connection Host" -p "source.directoryName=The Directory Name" channel:mychannel ---- This command creates the KameletBinding in the current namespace on the cluster. @@ -100,7 +107,7 @@ You can use the `sftp-source` Kamelet as a Kafka source by binding it to a Kafka .sftp-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: sftp-source-binding @@ -108,13 +115,11 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: sftp-source properties: connectionHost: "The Connection Host" directoryName: "The Directory Name" - password: "The Password" - username: "The Username" sink: ref: kind: KafkaTopic @@ -145,7 +150,7 @@ Configure and run the source by using the following command: [source,shell] ---- -kamel bind sftp-source -p "source.connectionHost=The Connection Host" -p "source.directoryName=The Directory Name" -p "source.password=The Password" -p "source.username=The Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +kamel bind sftp-source -p "source.connectionHost=The Connection Host" -p "source.directoryName=The Directory Name" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ---- This command creates the KameletBinding in the current namespace on the cluster. diff --git a/docs/modules/ROOT/pages/simple-filter-action.adoc b/docs/modules/ROOT/pages/simple-filter-action.adoc index 5a4a3e501..653315c0c 100644 --- a/docs/modules/ROOT/pages/simple-filter-action.adoc +++ b/docs/modules/ROOT/pages/simple-filter-action.adoc @@ -36,7 +36,7 @@ You can use the `simple-filter-action` Kamelet as an intermediate step in a Knat .simple-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: simple-filter-action-binding @@ -44,14 +44,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: simple-filter-action properties: expression: "The Simple Expression" @@ -96,7 +96,7 @@ You can use the `simple-filter-action` Kamelet as an intermediate step in a Kafk .simple-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: simple-filter-action-binding @@ -104,14 +104,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: simple-filter-action properties: expression: "The Simple Expression" diff --git a/docs/modules/ROOT/pages/slack-source.adoc b/docs/modules/ROOT/pages/slack-source.adoc index 1374fb622..567a7612b 100644 --- a/docs/modules/ROOT/pages/slack-source.adoc +++ b/docs/modules/ROOT/pages/slack-source.adoc @@ -12,8 +12,9 @@ The following table summarizes the configuration options available for the `slac [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *channel {empty}* *| Channel| The Slack channel to receive messages from| string| | `"#myroom"` -| *token {empty}* *| Token| The token to access Slack. A Slack app is needed. This app needs to have channels:history and channels:read permissions. The Bot User OAuth Access Token is the kind of token needed.| string| | +| *channel {empty}* *| Channel| The Slack channel to receive messages from.| string| | `"#myroom"` +| *token {empty}* *| Token| The Bot User OAuth Access Token to access Slack. A Slack app that has the following permissions is required: `channels:history`, `groups:history`, `im:history`, `mpim:history`, `channels:read`, `groups:read`, `im:read`, and `mpim:read`.| string| | +| delay| Delay| The delay between polls. If no unit provided, miliseconds is the default.| string| `"60000"`| `"60s or 6000 or 1m"` |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -23,9 +24,9 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `slack-source` Kamelet relies upon the presence of the following dependencies: -- camel:kamelet +- camel:gson - camel:slack -- camel:jackson +- camel:kamelet == Usage @@ -38,7 +39,7 @@ You can use the `slack-source` Kamelet as a Knative source by binding it to a Kn .slack-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: slack-source-binding @@ -46,7 +47,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: slack-source properties: channel: "#myroom" @@ -92,7 +93,7 @@ You can use the `slack-source` Kamelet as a Kafka source by binding it to a Kafk .slack-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: slack-source-binding @@ -100,7 +101,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: slack-source properties: channel: "#myroom" diff --git a/docs/modules/ROOT/pages/splunk-hec-sink.adoc b/docs/modules/ROOT/pages/splunk-hec-sink.adoc deleted file mode 100644 index 95259b95f..000000000 --- a/docs/modules/ROOT/pages/splunk-hec-sink.adoc +++ /dev/null @@ -1,156 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/splunk-hec-sink.svg[] Splunk HEC Sink - -*Provided by: "Red Hat"* - -The Splunk HEC sink allows to send data to Splunk using the https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector[HTTP Event Collector]. - -== Configuration Options - -The following table summarizes the configuration options available for the `splunk-hec-sink` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *splunkUrl {empty}* *| Splunk URL| The URL of your Splunk server. No need to set the protocol prefix.| string| | `"my_server.splunkcloud.com:8088"` -| *token {empty}* *| Token| The Token of the HEC. Note it is not the user's authentication token.| string| | -| bodyOnly| Body Only| Send to Splunk only data contained in the body.| boolean| `false`| -| headersOnly| Headers Only| Send to Splunk only data contained in the headers.| boolean| `false`| -| hostPayload| Host of the Event| The host field set in the data sent to Splunk, it is not related to the Splunk URL or the connection to Splunk server.| string| | -| https| Secure| Use a secure HTTPS connection.| boolean| `true`| -| index| Index| Splunk index to write to.| string| | -| skipTlsVerify| Skip TLS Verification| Skip TLS verification.| boolean| `false`| -| source| Source| The source named field of the data.| string| | -| sourceType| Source Type| The source named field of the data.| string| | -| time| Time| Time this even occurred. By default, the time will be when this event hits the splunk server.| string| | -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `splunk-hec-sink` Kamelet relies upon the presence of the following dependencies: - -- camel:core -- camel:splunk-hec -- camel:kamelet - -== Usage - -This section describes how you can use the `splunk-hec-sink`. - -=== Knative Sink - -You can use the `splunk-hec-sink` Kamelet as a Knative sink by binding it to a Knative object. - -.splunk-hec-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: splunk-hec-sink-binding -spec: - source: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: splunk-hec-sink - properties: - splunkUrl: "my_server.splunkcloud.com:8088" - token: "The Token" - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `splunk-hec-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f splunk-hec-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind channel:mychannel splunk-hec-sink -p "sink.splunkUrl=my_server.splunkcloud.com:8088" -p "sink.token=The Token" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Sink - -You can use the `splunk-hec-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. - -.splunk-hec-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: splunk-hec-sink-binding -spec: - source: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: splunk-hec-sink - properties: - splunkUrl: "my_server.splunkcloud.com:8088" - token: "The Token" - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `splunk-hec-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f splunk-hec-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic splunk-hec-sink -p "sink.splunkUrl=my_server.splunkcloud.com:8088" -p "sink.token=The Token" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/splunk-hec-sink.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/splunk-sink.adoc b/docs/modules/ROOT/pages/splunk-sink.adoc deleted file mode 100644 index c24dfd206..000000000 --- a/docs/modules/ROOT/pages/splunk-sink.adoc +++ /dev/null @@ -1,160 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/splunk-sink.svg[] Splunk Sink - -*Provided by: "Red Hat"* - -Send data to Splunk either by using "submit" or "stream" mode. - -The payload MUST be in json format. - -== Configuration Options - -The following table summarizes the configuration options available for the `splunk-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 authenticate to Splunk Server.| string| | -| *serverHostname {empty}* *| Splunk Server Address| The address of your Splunk server.| string| | `"my_server_splunk.com"` -| *username {empty}* *| Username| The username to authenticate to Splunk Server.| string| | -| app| Splunk App| The app name in Splunk.| string| | -| connectionTimeout| Connection Timeout| Timeout in milliseconds when connecting to Splunk server| integer| `5000`| -| index| Index| Splunk index to write to.| string| | -| mode| Mode| The mode to publish events to Splunk.| string| `"stream"`| -| protocol| Protocol| Connection Protocol to Splunk server.| string| `"https"`| -| serverPort| Splunk Server Port| The address of your Splunk server.| integer| `8089`| -| source| Source| The source named field of the data.| string| | -| sourceType| Source Type| The source named field of the data.| string| | -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `splunk-sink` Kamelet relies upon the presence of the following dependencies: - -- camel:core -- camel:splunk -- camel:kamelet - -== Usage - -This section describes how you can use the `splunk-sink`. - -=== Knative Sink - -You can use the `splunk-sink` Kamelet as a Knative sink by binding it to a Knative object. - -.splunk-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: splunk-sink-binding -spec: - source: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: splunk-sink - properties: - password: "The Password" - serverHostname: "my_server_splunk.com" - username: "The Username" - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `splunk-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f splunk-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind channel:mychannel splunk-sink -p "sink.password=The Password" -p "sink.serverHostname=my_server_splunk.com" -p "sink.username=The Username" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Sink - -You can use the `splunk-sink` Kamelet as a Kafka sink by binding it to a Kafka topic. - -.splunk-sink-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: splunk-sink-binding -spec: - source: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - sink: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: splunk-sink - properties: - password: "The Password" - serverHostname: "my_server_splunk.com" - username: "The Username" - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `splunk-sink-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the sink by using the following command: -+ -[source,shell] ----- -oc apply -f splunk-sink-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the sink by using the following command: - -[source,shell] ----- -kamel bind kafka.strimzi.io/v1beta1:KafkaTopic:my-topic splunk-sink -p "sink.password=The Password" -p "sink.serverHostname=my_server_splunk.com" -p "sink.username=The Username" ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/splunk-sink.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/splunk-source.adoc b/docs/modules/ROOT/pages/splunk-source.adoc deleted file mode 100644 index e1d8975b6..000000000 --- a/docs/modules/ROOT/pages/splunk-source.adoc +++ /dev/null @@ -1,172 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/splunk-source.svg[] Splunk Source - -*Provided by: "Red Hat"* - -Retrieve data from Splunk and outputs in json format. - -For the fields accepting time specifiers like `earliestTime`, it accepts a wide variety of formats, please check https://docs.splunk.com/Documentation/Splunk/9.0.0/Search/Specifytimemodifiersinyoursearch[Splunk documentation] for more information. - -== Configuration Options - -The following table summarizes the configuration options available for the `splunk-source` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *initEarliestTime {empty}* *| Init Earliest Time| Initial start offset of the first search.| string| | `"05/17/22 08:35:46:456"` -| *password {empty}* *| Password| The password to authenticate to Splunk Server.| string| | -| *query {empty}* *| Query| The Splunk query to run.| string| | -| *serverHostname {empty}* *| Splunk Server Address| The address of your Splunk server.| string| | `"my_server_splunk.com"` -| *username {empty}* *| Username| The username to authenticate to Splunk Server.| string| | -| app| Splunk App| The app name in Splunk.| string| | -| connectionTimeout| Connection Timeout| Timeout in milliseconds when connecting to Splunk server| integer| | -| count| Count| The maximum number of entities to return.| integer| | -| delay| Delay| Milliseconds before the next poll.| integer| | -| earliestTime| Earliest Time| Earliest time of the search time window.| string| | `"05/17/22 08:35:46:456"` -| index| Index| Splunk index to write to.| string| | -| latestTime| Latest Time| Latest time of the search time window.| string| | `"05/17/22 08:35:46:456"` -| protocol| Protocol| Connection Protocol to Splunk server.| string| `"https"`| -| repeat| Repeat| The maximum number of fires.| integer| | -| serverPort| Splunk Server Port| The address of your Splunk server.| integer| `8089`| -| source| Source| The source named field of the data.| string| | -| sourceType| Source Type| The source named field of the data.| string| | -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `splunk-source` Kamelet relies upon the presence of the following dependencies: - -- camel:jackson -- camel:core -- camel:splunk -- camel:kamelet -- mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001 - -== Usage - -This section describes how you can use the `splunk-source`. - -=== Knative Source - -You can use the `splunk-source` Kamelet as a Knative source by binding it to a Knative object. - -.splunk-source-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: splunk-source-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: splunk-source - properties: - initEarliestTime: "05/17/22 08:35:46:456" - password: "The Password" - query: "The Query" - serverHostname: "my_server_splunk.com" - username: "The Username" - sink: - ref: - kind: Channel - apiVersion: messaging.knative.dev/v1 - name: mychannel - ----- - -==== *Prerequisite* - -Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `splunk-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the source by using the following command: -+ -[source,shell] ----- -oc apply -f splunk-source-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the source by using the following command: - -[source,shell] ----- -kamel bind splunk-source -p "source.initEarliestTime=05/17/22 08:35:46:456" -p "source.password=The Password" -p "source.query=The Query" -p "source.serverHostname=my_server_splunk.com" -p "source.username=The Username" channel:mychannel ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Source - -You can use the `splunk-source` Kamelet as a Kafka source by binding it to a Kafka topic. - -.splunk-source-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: splunk-source-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: splunk-source - properties: - initEarliestTime: "05/17/22 08:35:46:456" - password: "The Password" - query: "The Query" - serverHostname: "my_server_splunk.com" - username: "The Username" - sink: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic - ----- - -==== *Prerequisites* - -Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. -Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. - -==== *Procedure for using the cluster CLI* - -. Save the `splunk-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. - -. Run the source by using the following command: -+ -[source,shell] ----- -oc apply -f splunk-source-binding.yaml ----- - -==== *Procedure for using the Kamel CLI* - -Configure and run the source by using the following command: - -[source,shell] ----- -kamel bind splunk-source -p "source.initEarliestTime=05/17/22 08:35:46:456" -p "source.password=The Password" -p "source.query=The Query" -p "source.serverHostname=my_server_splunk.com" -p "source.username=The Username" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -== Kamelet source file - -https://github.com/openshift-integration/kamelet-catalog/blob/main/splunk-source.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/sqlserver-sink.adoc b/docs/modules/ROOT/pages/sqlserver-sink.adoc index 82064c547..ebbc5aa13 100644 --- a/docs/modules/ROOT/pages/sqlserver-sink.adoc +++ b/docs/modules/ROOT/pages/sqlserver-sink.adoc @@ -6,11 +6,15 @@ Send data to a Microsoft SQL Server 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: +In your KameletBinding file, you must explicitly declare the SQL Server driver dependency in spec->integration->dependencies + +- "mvn:com.microsoft.sqlserver:mssql-jdbc:" + +This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' -The Kamelet needs to receive as input something like: +Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' @@ -20,12 +24,14 @@ The following table summarizes the configuration options available for the `sqls [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 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| | -| serverPort| Server Port| Server Port for the data source| string| `1433`| +| *databaseName {empty}* *| Database Name| The name of the SQL Server Database.| string| | +| *password {empty}* *| Password| The password to access a secured 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| The server name for the data source.| string| | `"localhost"` +| *username {empty}* *| Username| The username to access a secured SQL Server Database.| string| | +| encrypt| Encrypt Connection| Encrypt the connection to SQL Server.| boolean| `false`| +| serverPort| Server Port| The server port for the data source.| string| `1433`| +| trustServerCertificate| Trust Server Certificate| Trust Server Certificate| boolean| `true`| |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -38,8 +44,7 @@ At runtime, the `sqlserver-sink` Kamelet relies upon the presence of the followi - camel:jackson - camel:kamelet - camel:sql -- mvn:org.apache.commons:commons-dbcp2:2.7.0 -- mvn:com.microsoft.sqlserver:mssql-jdbc:9.2.1.jre11 +- mvn:org.apache.commons:commons-dbcp2:2.10.0 == Usage @@ -52,7 +57,7 @@ You can use the `sqlserver-sink` Kamelet as a Knative sink by binding it to a Kn .sqlserver-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: sqlserver-sink-binding @@ -65,7 +70,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: sqlserver-sink properties: databaseName: "The Database Name" @@ -109,7 +114,7 @@ You can use the `sqlserver-sink` Kamelet as a Kafka sink by binding it to a Kafk .sqlserver-sink-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: sqlserver-sink-binding @@ -122,7 +127,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: sqlserver-sink properties: databaseName: "The Database Name" diff --git a/docs/modules/ROOT/pages/telegram-source.adoc b/docs/modules/ROOT/pages/telegram-source.adoc index 79c8e0076..51e6f42c2 100644 --- a/docs/modules/ROOT/pages/telegram-source.adoc +++ b/docs/modules/ROOT/pages/telegram-source.adoc @@ -6,11 +6,11 @@ Receive all messages that people send to your Telegram bot. -To create a bot, contact the @botfather account using the Telegram app. +To create a bot, contact the @botfather account by using the Telegram app. -The source attaches the following headers to the messages: +The source attaches the following header to the messages: -- `chat-id` / `ce-chatid`: the ID of the chat where the message comes from +- `chat-id` / `ce-chatid`: The ID of the chat where the message comes from. == Configuration Options @@ -18,7 +18,7 @@ The following table summarizes the configuration options available for the `tele [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *authorizationToken {empty}* *| Token| The token to access your bot on Telegram. You you can obtain it from the Telegram @botfather.| string| | +| *authorizationToken {empty}* *| Token| The token to access your bot on Telegram. You can obtain it from the Telegram @botfather.| string| | |=== NOTE: Fields marked with an asterisk ({empty}*) are mandatory. @@ -44,7 +44,7 @@ You can use the `telegram-source` Kamelet as a Knative source by binding it to a .telegram-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: telegram-source-binding @@ -52,7 +52,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: telegram-source properties: authorizationToken: "The Token" @@ -97,7 +97,7 @@ You can use the `telegram-source` Kamelet as a Kafka source by binding it to a K .telegram-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: telegram-source-binding @@ -105,7 +105,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: telegram-source properties: authorizationToken: "The Token" diff --git a/docs/modules/ROOT/pages/timer-source.adoc b/docs/modules/ROOT/pages/timer-source.adoc index 4bdf560fb..ec4d740ae 100644 --- a/docs/modules/ROOT/pages/timer-source.adoc +++ b/docs/modules/ROOT/pages/timer-source.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Produces periodic events with a custom payload. +Produces periodic messages with a custom payload. == Configuration Options @@ -12,9 +12,9 @@ The following table summarizes the configuration options available for the `time [width="100%",cols="2,^2,3,^2,^2,^3",options="header"] |=== | Property| Name| Description| Type| Default| Example -| *message {empty}* *| Message| The message to generate| string| | `"hello world"` -| contentType| Content Type| The content type of the message being generated| string| `"text/plain"`| -| period| Period| The interval between two events in milliseconds| integer| `1000`| +| *message {empty}* *| Message| The message to generate.| string| | `"hello world"` +| contentType| Content Type| The content type of the generated message.| string| `"text/plain"`| +| period| Period| The interval (in milliseconds) to wait between producing the next message.| integer| `1000`| | repeatCount| Repeat Count| Specifies a maximum limit of number of fires| integer| | |=== @@ -40,7 +40,7 @@ You can use the `timer-source` Kamelet as a Knative source by binding it to a Kn .timer-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: timer-source-binding @@ -48,7 +48,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "hello world" @@ -93,7 +93,7 @@ You can use the `timer-source` Kamelet as a Kafka source by binding it to a Kafk .timer-source-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: timer-source-binding @@ -101,7 +101,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "hello world" diff --git a/docs/modules/ROOT/pages/timestamp-router-action.adoc b/docs/modules/ROOT/pages/timestamp-router-action.adoc index 7efe8cdd6..768e58fc6 100644 --- a/docs/modules/ROOT/pages/timestamp-router-action.adoc +++ b/docs/modules/ROOT/pages/timestamp-router-action.adoc @@ -24,7 +24,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `timestamp-router-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:kamelet - camel:core @@ -39,7 +39,7 @@ You can use the `timestamp-router-action` Kamelet as an intermediate step in a K .timestamp-router-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: timestamp-router-action-binding @@ -47,14 +47,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timestamp-router-action sink: ref: @@ -97,7 +97,7 @@ You can use the `timestamp-router-action` Kamelet as an intermediate step in a K .timestamp-router-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: timestamp-router-action-binding @@ -105,14 +105,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timestamp-router-action sink: ref: diff --git a/docs/modules/ROOT/pages/topic-name-matches-filter-action.adoc b/docs/modules/ROOT/pages/topic-name-matches-filter-action.adoc index 8eaf0fedb..b49fe4357 100644 --- a/docs/modules/ROOT/pages/topic-name-matches-filter-action.adoc +++ b/docs/modules/ROOT/pages/topic-name-matches-filter-action.adoc @@ -36,7 +36,7 @@ You can use the `topic-name-matches-filter-action` Kamelet as an intermediate st .topic-name-matches-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: topic-name-matches-filter-action-binding @@ -44,14 +44,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: topic-name-matches-filter-action properties: regex: "The Regex" @@ -96,7 +96,7 @@ You can use the `topic-name-matches-filter-action` Kamelet as an intermediate st .topic-name-matches-filter-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: topic-name-matches-filter-action-binding @@ -104,14 +104,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: topic-name-matches-filter-action properties: regex: "The Regex" diff --git a/docs/modules/ROOT/pages/twitter-directmessage-source.adoc b/docs/modules/ROOT/pages/twitter-directmessage-source.adoc new file mode 100644 index 000000000..a945ded29 --- /dev/null +++ b/docs/modules/ROOT/pages/twitter-directmessage-source.adoc @@ -0,0 +1,159 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/twitter-directmessage-source.svg[] Twitter Direct Message Source + +*Provided by: "Red Hat"* + +Allows to get all direct messages for your Twitter account. + +It requires tokens that can be obtained by creating an application +in the Twitter developer portal: https://developer.twitter.com/. + +== Configuration Options + +The following table summarizes the configuration options available for the `twitter-directmessage-source` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *accessToken {empty}* *| Access Token| The Access Token from the Twitter application in the developer portal| string| | +| *accessTokenSecret {empty}* *| Access Token Secret| The Access Token Secret from the Twitter application in the developer portal| string| | +| *apiKey {empty}* *| API Key| The API Key from the Twitter application in the developer portal| string| | +| *apiKeySecret {empty}* *| API Key Secret| The API Key Secret from the Twitter application in the developer portal| string| | +| *user {empty}* *| User| The user we want to read the direct messages| string| | `"ApacheCamel"` +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `twitter-directmessage-source` Kamelet relies upon the presence of the following dependencies: + +- camel:jackson +- camel:twitter +- camel:kamelet + +== Usage + +This section describes how you can use the `twitter-directmessage-source`. + +=== Knative Source + +You can use the `twitter-directmessage-source` Kamelet as a Knative source by binding it to a Knative object. + +.twitter-directmessage-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: twitter-directmessage-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: twitter-directmessage-source + properties: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + user: "ApacheCamel" + sink: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `twitter-directmessage-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f twitter-directmessage-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind twitter-directmessage-source -p "source.accessToken=The Access Token" -p "source.accessTokenSecret=The Access Token Secret" -p "source.apiKey=The API Key" -p "source.apiKeySecret=The API Key Secret" -p "source.user=ApacheCamel" channel:mychannel +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Source + +You can use the `twitter-directmessage-source` Kamelet as a Kafka source by binding it to a Kafka topic. + +.twitter-directmessage-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: twitter-directmessage-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: twitter-directmessage-source + properties: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + user: "ApacheCamel" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `twitter-directmessage-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f twitter-directmessage-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind twitter-directmessage-source -p "source.accessToken=The Access Token" -p "source.accessTokenSecret=The Access Token Secret" -p "source.apiKey=The API Key" -p "source.apiKeySecret=The API Key Secret" -p "source.user=ApacheCamel" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/twitter-directmessage-source.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/twitter-search-source.adoc b/docs/modules/ROOT/pages/twitter-search-source.adoc new file mode 100644 index 000000000..e8bbdcb53 --- /dev/null +++ b/docs/modules/ROOT/pages/twitter-search-source.adoc @@ -0,0 +1,159 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/twitter-search-source.svg[] Twitter Search Source + +*Provided by: "Red Hat"* + +Allows to get all tweets on particular keywords from Twitter. + +It requires tokens that can be obtained by creating an application +in the Twitter developer portal: https://developer.twitter.com/. + +== Configuration Options + +The following table summarizes the configuration options available for the `twitter-search-source` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *accessToken {empty}* *| Access Token| The Access Token from the Twitter application in the developer portal| string| | +| *accessTokenSecret {empty}* *| Access Token Secret| The Access Token Secret from the Twitter application in the developer portal| string| | +| *apiKey {empty}* *| API Key| The API Key from the Twitter application in the developer portal| string| | +| *apiKeySecret {empty}* *| API Key Secret| The API Key Secret from the Twitter application in the developer portal| string| | +| *keywords {empty}* *| Keywords| The keywords to use in the Twitter search (Supports Twitter standard operators)| string| | `"Apache Camel"` +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `twitter-search-source` Kamelet relies upon the presence of the following dependencies: + +- camel:jackson +- camel:twitter +- camel:kamelet + +== Usage + +This section describes how you can use the `twitter-search-source`. + +=== Knative Source + +You can use the `twitter-search-source` Kamelet as a Knative source by binding it to a Knative object. + +.twitter-search-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: twitter-search-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: twitter-search-source + properties: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + keywords: "Apache Camel" + sink: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `twitter-search-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f twitter-search-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind twitter-search-source -p "source.accessToken=The Access Token" -p "source.accessTokenSecret=The Access Token Secret" -p "source.apiKey=The API Key" -p "source.apiKeySecret=The API Key Secret" -p "source.keywords=Apache Camel" channel:mychannel +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Source + +You can use the `twitter-search-source` Kamelet as a Kafka source by binding it to a Kafka topic. + +.twitter-search-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: twitter-search-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: twitter-search-source + properties: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + keywords: "Apache Camel" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `twitter-search-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f twitter-search-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind twitter-search-source -p "source.accessToken=The Access Token" -p "source.accessTokenSecret=The Access Token Secret" -p "source.apiKey=The API Key" -p "source.apiKeySecret=The API Key Secret" -p "source.keywords=Apache Camel" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/twitter-search-source.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/twitter-timeline-source.adoc b/docs/modules/ROOT/pages/twitter-timeline-source.adoc new file mode 100644 index 000000000..aaf8c82c2 --- /dev/null +++ b/docs/modules/ROOT/pages/twitter-timeline-source.adoc @@ -0,0 +1,159 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT + += image:kamelets/twitter-timeline-source.svg[] Twitter Timeline Source + +*Provided by: "Red Hat"* + +Allows to get tweets from the timeline of a specific user from Twitter. + +It requires tokens that can be obtained by creating an application +in the Twitter developer portal: https://developer.twitter.com/. + +== Configuration Options + +The following table summarizes the configuration options available for the `twitter-timeline-source` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *accessToken {empty}* *| Access Token| The Access Token from the Twitter application in the developer portal| string| | +| *accessTokenSecret {empty}* *| Access Token Secret| The Access Token Secret from the Twitter application in the developer portal| string| | +| *apiKey {empty}* *| API Key| The API Key from the Twitter application in the developer portal| string| | +| *apiKeySecret {empty}* *| API Key Secret| The API Key Secret from the Twitter application in the developer portal| string| | +| *user {empty}* *| User| The user we want to read the timeline| string| | `"ApacheCamel"` +|=== + +NOTE: Fields marked with an asterisk ({empty}*) are mandatory. + + +== Dependencies + +At runtime, the `twitter-timeline-source` Kamelet relies upon the presence of the following dependencies: + +- camel:jackson +- camel:twitter +- camel:kamelet + +== Usage + +This section describes how you can use the `twitter-timeline-source`. + +=== Knative Source + +You can use the `twitter-timeline-source` Kamelet as a Knative source by binding it to a Knative object. + +.twitter-timeline-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: twitter-timeline-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: twitter-timeline-source + properties: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + user: "ApacheCamel" + sink: + ref: + kind: Channel + apiVersion: messaging.knative.dev/v1 + name: mychannel + +---- + +==== *Prerequisite* + +Make sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `twitter-timeline-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f twitter-timeline-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind twitter-timeline-source -p "source.accessToken=The Access Token" -p "source.accessTokenSecret=The Access Token Secret" -p "source.apiKey=The API Key" -p "source.apiKeySecret=The API Key Secret" -p "source.user=ApacheCamel" channel:mychannel +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +=== Kafka Source + +You can use the `twitter-timeline-source` Kamelet as a Kafka source by binding it to a Kafka topic. + +.twitter-timeline-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: twitter-timeline-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: twitter-timeline-source + properties: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + user: "ApacheCamel" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + +---- + +==== *Prerequisites* + +Ensure that you've installed the *AMQ Streams* operator in your OpenShift cluster and created a topic named `my-topic` in the current namespace. +Make also sure you have *"Red Hat Integration - Camel K"* installed into the OpenShift cluster you're connected to. + +==== *Procedure for using the cluster CLI* + +. Save the `twitter-timeline-source-binding.yaml` file to your local drive, and then edit it as needed for your configuration. + +. Run the source by using the following command: ++ +[source,shell] +---- +oc apply -f twitter-timeline-source-binding.yaml +---- + +==== *Procedure for using the Kamel CLI* + +Configure and run the source by using the following command: + +[source,shell] +---- +kamel bind twitter-timeline-source -p "source.accessToken=The Access Token" -p "source.accessTokenSecret=The Access Token Secret" -p "source.apiKey=The API Key" -p "source.apiKeySecret=The API Key Secret" -p "source.user=ApacheCamel" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic +---- + +This command creates the KameletBinding in the current namespace on the cluster. + +== Kamelet source file + +https://github.com/openshift-integration/kamelet-catalog/blob/main/twitter-timeline-source.kamelet.yaml + +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/docs/modules/ROOT/pages/value-to-key-action.adoc b/docs/modules/ROOT/pages/value-to-key-action.adoc index f7ef66134..fb8f902e6 100644 --- a/docs/modules/ROOT/pages/value-to-key-action.adoc +++ b/docs/modules/ROOT/pages/value-to-key-action.adoc @@ -4,7 +4,7 @@ *Provided by: "Red Hat"* -Replace the Kafka record key with a new key formed from a subset of fields in the body +Replace the Kafka record key with a new key formed from a fields subset coming from the message body == Configuration Options @@ -22,7 +22,7 @@ NOTE: Fields marked with an asterisk ({empty}*) are mandatory. At runtime, the `value-to-key-action` Kamelet relies upon the presence of the following dependencies: -- mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.0.0 +- mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - camel:core - camel:jackson - camel:kamelet @@ -38,7 +38,7 @@ You can use the `value-to-key-action` Kamelet as an intermediate step in a Knati .value-to-key-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: value-to-key-action-binding @@ -46,14 +46,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: value-to-key-action properties: fields: "The Fields" @@ -98,7 +98,7 @@ You can use the `value-to-key-action` Kamelet as an intermediate step in a Kafka .value-to-key-action-binding.yaml [source,yaml] ---- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: value-to-key-action-binding @@ -106,14 +106,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: value-to-key-action properties: fields: "The Fields" diff --git a/ftps-sink.kamelet.yaml b/ftps-sink.kamelet.yaml deleted file mode 100644 index 702e8b4eb..000000000 --- a/ftps-sink.kamelet.yaml +++ /dev/null @@ -1,93 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: ftps-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "FTP" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "FTPS Sink" - description: |- - Send data to an FTPS Server. - - The Kamelet expects the following headers to be set: - - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. - required: - - connectionHost - - connectionPort - - username - - password - - directoryName - type: object - properties: - connectionHost: - title: Connection Host - description: Hostname of the FTP server - type: string - connectionPort: - title: Connection Port - description: Port of the FTP server - type: string - default: 21 - username: - title: Username - description: The username to access the FTP server - type: string - password: - title: Password - description: The password to access the FTP server - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - directoryName: - title: Directory Name - description: The starting directory - type: string - passiveMode: - title: Passive Mode - description: Sets passive mode connection - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - fileExist: - title: File Existence - description: How to behave in case of file already existent. There are 4 enums and the value can be one of Override, Append, Fail or Ignore - type: string - default: Override - dependencies: - - "camel:ftp" - - "camel:core" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - choice: - when: - - simple: "${header[file]}" - steps: - - set-header: - name: CamelFileName - simple: "${header[file]}" - - simple: "${header[ce-file]}" - steps: - - set-header: - name: CamelFileName - simple: "${header[ce-file]}" - - to: - uri: "ftps:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}" - parameters: - password: "{{password}}" - passiveMode: "{{passiveMode}}" - fileExist: "{{fileExist}}" diff --git a/ftps-source.kamelet.yaml b/ftps-source.kamelet.yaml deleted file mode 100644 index e4b00d1fb..000000000 --- a/ftps-source.kamelet.yaml +++ /dev/null @@ -1,92 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: ftps-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "FTP" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "FTPS Source" - description: |- - Receive data from an FTPS Server. - required: - - connectionHost - - connectionPort - - username - - password - - directoryName - type: object - properties: - connectionHost: - title: Connection Host - description: Hostname of the FTPS server - type: string - connectionPort: - title: Connection Port - description: Port of the FTPS server - type: string - default: 21 - username: - title: Username - description: The username to access the FTPS server - type: string - password: - title: Password - description: The password to access the FTPS server - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - directoryName: - title: Directory Name - description: The starting directory - type: string - passiveMode: - title: Passive Mode - description: Sets passive mode connection - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - recursive: - title: Recursive - description: If a directory, will look for files in all the sub-directories as well. - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - idempotent: - title: Idempotency - description: Skip already processed files. - type: boolean - default: true - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - dependencies: - - "camel:ftp" - - "camel:core" - - "camel:kamelet" - template: - from: - uri: "ftps:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}" - parameters: - password: "{{password}}" - passiveMode: "{{passiveMode}}" - recursive: "{{recursive}}" - idempotent: "{{idempotent}}" - steps: - - set-header: - name: file - simple: "${header[CamelFileName]}" - - set-header: - name: ce-file - simple: "${header[CamelFileName]}" - - convert-body-to: - type: "java.io.InputStream" - - to: "kamelet:sink" diff --git a/http-sink.kamelet.yaml b/http-sink.kamelet.yaml deleted file mode 100644 index 75caacfd4..000000000 --- a/http-sink.kamelet.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: http-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "HTTP" - labels: - camel.apache.org/kamelet.type: sink -spec: - definition: - title: HTTP Sink - description: Forwards an event to a HTTP endpoint - required: - - url - type: object - properties: - url: - title: URL - description: The URL to send data to - type: string - example: "https://my-service/path" - pattern: "^(http|https)://.*" - method: - title: Method - description: The HTTP method to use - type: string - default: POST - dependencies: - - "camel:http" - - "camel:kamelet" - - "camel:core" - template: - from: - uri: kamelet:source - steps: - - remove-header: - name: CamelHttpUri - - set-header: - name: CamelHttpMethod - constant: "{{method}}" - - to: "{{url}}" diff --git a/insert-header-action.kamelet.yaml b/insert-header-action.kamelet.yaml deleted file mode 100644 index 8a66ec97f..000000000 --- a/insert-header-action.kamelet.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: insert-header-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Insert Header Action" - description: "Adds an header with a constant value to the message in transit" - required: - - name - - value - properties: - name: - title: Name - description: The name of the header to be added. For Knative only, the name of the header requires a CloudEvent (ce-) prefix. - type: string - value: - title: Value - description: The value of the header - type: string - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - set-header: - name: "{{name}}" - simple: "{{value}}" diff --git a/is-tombstone-filter-action.kamelet.yaml b/is-tombstone-filter-action.kamelet.yaml deleted file mode 100644 index 15eb800ae..000000000 --- a/is-tombstone-filter-action.kamelet.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: is-tombstone-filter-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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" - template: - from: - uri: kamelet:source - steps: - - filter: - simple: "${body} == null || ${body} == ''" - steps: - - stop: {} diff --git a/jms-ibm-mq-sink.kamelet.yaml b/jms-ibm-mq-sink.kamelet.yaml deleted file mode 100644 index 899022b1f..000000000 --- a/jms-ibm-mq-sink.kamelet.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: jms-ibm-mq-sink - annotations: - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTczLjA4IDU3Ni45NyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiM1YTc3YjU7fS5jbHMtM3tmaWxsOiNhZmJlZTA7fS5jbHMtNHtjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgpO30uY2xzLTV7Y2xpcC1wYXRoOnVybCgjY2xpcC1wYXRoLTIpO308L3N0eWxlPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNjQuNSw1MTAuODhWNDU3aDQuMDh2NTMuOTFabTQ3Ljc4LTI3LjcxYTEzLjE0LDEzLjE0LDAsMCwxLDkuMjMsMTNjMCw5LjYyLTYuMjgsMTQuNjktMTUuODIsMTQuNjlIMTg1LjI0VjQ1N2gxOS44NGM4Ljk0LDAsMTUuNiw1LjE1LDE1LjYsMTQuMDhhMTIuMzgsMTIuMzgsMCwwLDEtOC40LDEyLjEyWm0tMjIuOTUsMjQuMDhoMTUuOWM3LjM1LDAsMTIuMTktNC4xNywxMi4xOS0xMS4wNnMtNC44NC0xMS4wNS0xMi4xOS0xMS4wNWgtMTUuOXYyMi4xMVptMTUuMy00Ni42NWgtMTUuM3YyMC45aDE1LjNjNi41MSwwLDEyLTMsMTItMTAuNDVzLTUuNDUtMTAuNDUtMTItMTAuNDVabTcyLjYxLDUwLjI4VjQ2Ni40M2wtMTYuMzUsMzYuODhIMjU2LjhsLTE2LjY2LTM2Ljg4djQ0LjQ1aC00LjA5VjQ1N2g0LjA5bDE4Ljc4LDQxLjU3TDI3Ny4yNCw0NTdoNC4wOXY1My45MVoiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTIiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM0OS43LDUxMC44NFY0NzcuMjhoLS4xOGwtMTAuOTEsMjUuODRIMzMybC0xMC45MS0yNS44NEgzMjF2MzMuNTZoLTcuOVY0NTdoNy40NGwxNSwzNS4wN0wzNTAuMTMsNDU3aDcuNDZ2NTMuODFabTU0LjItMTAsNi44OCw1LjY1LTQuNjksNS42MS02LjU4LTUuNDRxLTQuNjIsNC41MS0xMi4zLDQuNjZhMTcuODksMTcuODksMCwwLDEtMTAuMjUtMy4xLDE3LjcsMTcuNywwLDAsMS02LjA4LTYuNTdjLS4zOC0uODEtLjczLTEuNTktMS0yLjMyYTE1LjQ1LDE1LjQ1LDAsMCwxLS43Mi0yLjg4LDE0NS4yOSwxNDUuMjksMCwwLDEsMC0yNSwxNS4zOCwxNS4zOCwwLDAsMSwxLjc1LTUuMTMsMTguMzMsMTguMzMsMCwwLDEsNi4wOC02LjY0LDE3LjQ3LDE3LjQ3LDAsMCwxLDEwLjI1LTMsMTcuNzYsMTcuNzYsMCwwLDEsMTAuMzYsMywxOCwxOCwwLDAsMSw1Ljk0LDYuNjQsMTIuNzksMTIuNzksMCwwLDEsMS44Miw1LjEzLDEwNy4yMywxMDcuMjMsMCwwLDEsLjQ2LDEyLjU1cTAsOC4zOC0uMzYsMTEuN2ExNC41MSwxNC41MSwwLDAsMS0xLjUzLDUuMTdabS02LjU0LTI3LjcxYTExLjI2LDExLjI2LDAsMCwwLTUuMjYtNy4yNCwxMS4xOCwxMS4xOCwwLDAsMC00LjkxLTEuMTUsMTAuNjMsMTAuNjMsMCwwLDAtNC44LDEuMTUsMTAuMDksMTAuMDksMCwwLDAtMy4yOSwyLjc3LDksOSwwLDAsMC0yLDQuNDgsNjYuNyw2Ni43LDAsMCwwLS41NywxMC44Myw2NS40Nyw2NS40NywwLDAsMCwuNTcsMTAuNzcsOSw5LDAsMCwwLDIsNC41NCw5LjQ3LDkuNDcsMCwwLDAsMy4yOSwyLjcxLDkuMTEsOS4xMSwwLDAsMCw0LjgsMS4yMiw4LjYyLDguNjIsMCwwLDAsNS44NC0xLjg5bC02LjY2LTUuNDcsNC42OS01LjU5LDYuMDksNXEuNzUtMi43My43NS0xMS4yOGE3MC42LDcwLjYsMCwwLDAtLjU0LTEwLjg0WiIvPjwvY2xpcFBhdGg+PC9kZWZzPjx0aXRsZT5JQk0gSVE8L3RpdGxlPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMjg3LjY0IiBjeT0iMjg3LjIiIHI9IjI3OC41Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9IjQ1OC4xNyA0MjYuNjcgMTE3LjExIDQyNi42NyAxMTcuMTEgMTUzLjU1IDcwLjkxIDE1My41NSA3MC45MSAxMzEuNTUgMTM5LjExIDEzMS41NSAxMzkuMTEgNDA0LjY3IDQzNi4xNyA0MDQuNjcgNDM2LjE3IDEzMS41NSA1MDQuMzcgMTMxLjU1IDUwNC4zNyAxNTMuNTUgNDU4LjE3IDE1My41NSA0NTguMTcgNDI2LjY3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjQyMC4yNiAyNTMuMTIgNDIwLjI2IDI0MS43NyAxNTUuMDIgMjQxLjc3IDE1NS4wMiAyNTIuODUgMjg3Ljg4IDMyOS40OSA0MjAuMjYgMjUzLjEyIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjI4Ny44OCAzMzkuNzUgMTU1LjAyIDI2My4xMSAxNTUuMDIgMzg4Ljg0IDQyMC4yNiAzODguODQgNDIwLjI2IDI2My4zOCAyODcuODggMzM5Ljc1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY0LjUsNTEwLjg4VjQ1N2g0LjA4djUzLjkxWm00Ny43OC0yNy43MWExMy4xNCwxMy4xNCwwLDAsMSw5LjIzLDEzYzAsOS42Mi02LjI4LDE0LjY5LTE1LjgyLDE0LjY5SDE4NS4yNFY0NTdoMTkuODRjOC45NCwwLDE1LjYsNS4xNSwxNS42LDE0LjA4YTEyLjM4LDEyLjM4LDAsMCwxLTguNCwxMi4xMlptLTIyLjk1LDI0LjA4aDE1LjljNy4zNSwwLDEyLjE5LTQuMTcsMTIuMTktMTEuMDZzLTQuODQtMTEuMDUtMTIuMTktMTEuMDVoLTE1Ljl2MjIuMTFabTE1LjMtNDYuNjVoLTE1LjN2MjAuOWgxNS4zYzYuNTEsMCwxMi0zLDEyLTEwLjQ1cy01LjQ1LTEwLjQ1LTEyLTEwLjQ1Wm03Mi42MSw1MC4yOFY0NjYuNDNsLTE2LjM1LDM2Ljg4SDI1Ni44bC0xNi42Ni0zNi44OHY0NC40NWgtNC4wOVY0NTdoNC4wOWwxOC43OCw0MS41N0wyNzcuMjQsNDU3aDQuMDl2NTMuOTFaIi8+PGcgY2xhc3M9ImNscy00Ij48aW1hZ2Ugd2lkdGg9IjEwNzUiIGhlaWdodD0iMTA4NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi42NyAxNi42Nykgc2NhbGUoMC41MykiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCRFFBQUFRK0NBSUFBQUN2Ri9oTEFBQUFDWEJJV1hNQUFCVVJBQUFWRVFGZVBUWjRBQUFYRTBsRVFWUjRYdTNaMFkzQ1FCUUVRUmFSbDUyWlEzOFh3a29JY0V0WDlUMEp0R2JOekFNQUFPQjI0Z1FBQUxqZGRWM1AzUVlBQU9BWHhBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBMHpzNXNBQUFCODEzRWNuaE1BQU9CKzUzbUtFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpEdzJnMkFENXVaM1FTNjFscTdDUUM4eVhNQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSU9HMUd3QWZ0dGJhVFFBQS9pUFBDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUXNHWm10d0VBQVBpNlA3REpHbXpiZ0JrUUFBQUFBRWxGVGtTdVFtQ0MiLz48L2c+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMzQ5LjcsNTEwLjg0VjQ3Ny4yOGgtLjE4bC0xMC45MSwyNS44NEgzMzJsLTEwLjkxLTI1Ljg0SDMyMXYzMy41NmgtNy45VjQ1N2g3LjQ0bDE1LDM1LjA3TDM1MC4xMyw0NTdoNy40NnY1My44MVptNTQuMi0xMCw2Ljg4LDUuNjUtNC42OSw1LjYxLTYuNTgtNS40NHEtNC42Miw0LjUxLTEyLjMsNC42NmExNy44OSwxNy44OSwwLDAsMS0xMC4yNS0zLjEsMTcuNywxNy43LDAsMCwxLTYuMDgtNi41N2MtLjM4LS44MS0uNzMtMS41OS0xLTIuMzJhMTUuNDUsMTUuNDUsMCwwLDEtLjcyLTIuODgsMTQ1LjI5LDE0NS4yOSwwLDAsMSwwLTI1LDE1LjM4LDE1LjM4LDAsMCwxLDEuNzUtNS4xMywxOC4zMywxOC4zMywwLDAsMSw2LjA4LTYuNjQsMTcuNDcsMTcuNDcsMCwwLDEsMTAuMjUtMywxNy43NiwxNy43NiwwLDAsMSwxMC4zNiwzLDE4LDE4LDAsMCwxLDUuOTQsNi42NCwxMi43OSwxMi43OSwwLDAsMSwxLjgyLDUuMTMsMTA3LjIzLDEwNy4yMywwLDAsMSwuNDYsMTIuNTVxMCw4LjM4LS4zNiwxMS43YTE0LjUxLDE0LjUxLDAsMCwxLTEuNTMsNS4xN1ptLTYuNTQtMjcuNzFhMTEuMjYsMTEuMjYsMCwwLDAtNS4yNi03LjI0LDExLjE4LDExLjE4LDAsMCwwLTQuOTEtMS4xNSwxMC42MywxMC42MywwLDAsMC00LjgsMS4xNSwxMC4wOSwxMC4wOSwwLDAsMC0zLjI5LDIuNzcsOSw5LDAsMCwwLTIsNC40OCw2Ni43LDY2LjcsMCwwLDAtLjU3LDEwLjgzLDY1LjQ3LDY1LjQ3LDAsMCwwLC41NywxMC43Nyw5LDksMCwwLDAsMiw0LjU0LDkuNDcsOS40NywwLDAsMCwzLjI5LDIuNzEsOS4xMSw5LjExLDAsMCwwLDQuOCwxLjIyLDguNjIsOC42MiwwLDAsMCw1Ljg0LTEuODlsLTYuNjYtNS40Nyw0LjY5LTUuNTksNi4wOSw1cS43NS0yLjczLjc1LTExLjI4YTcwLjYsNzAuNiwwLDAsMC0uNTQtMTAuODRaIi8+PGcgY2xhc3M9ImNscy01Ij48aW1hZ2Ugd2lkdGg9IjEwNzUiIGhlaWdodD0iMTA4NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi42NyAxNi42Nykgc2NhbGUoMC41MykiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCRFFBQUFRK0NBSUFBQUN2Ri9oTEFBQUFDWEJJV1hNQUFCVVJBQUFWRVFGZVBUWjRBQUFYRWtsRVFWUjRYdTNad1cyRVFCUkV3WjBWZVVGbWhQNGR3c2dIekxOVWRlNEVubnJOekFjQUFPQjE0Z1FBQUhqZGZkL2YzUVlBQU9BdmlCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCcG1aamNCQUFCNDFubWVuaE1BQU9COTEzV0pFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVNqdDBBQUxwbVpqZUIzMWxyN1NiQVV6d25BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0RoMkEwQW9HdXR0WnNBOEc5NFRnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVEQ21wbmRCZ0FBNEhFLzZiWWFiTE5wV0pvQUFBQUFTVVZPUks1Q1lJST0iLz48L2c+PC9zdmc+" - camel.apache.org/kamelet.support.level: "Preview" - camel.apache.org/provider: "Red Hat" - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.group: "JMS" - labels: - camel.apache.org/kamelet.type: "sink" - camel.apache.org/requires.runtime: camel-k -spec: - definition: - title: "JMS - IBM MQ Kamelet Sink" - description: |- - A Kamelet that can produce events to an IBM MQ message queue using JMS. - required: - - serverName - - serverPort - - destinationName - - queueManager - - channel - - username - - password - type: object - properties: - serverName: - title: "IBM MQ Server name" - description: "IBM MQ Server name or address" - type: string - serverPort: - title: "IBM MQ Server Port" - description: "IBM MQ Server port" - type: integer - default: 1414 - destinationType: - title: "Destination Type" - description: "The JMS destination type (queue or topic)" - type: string - default: queue - destinationName: - title: "Destination Name" - description: "The destination name" - type: string - queueManager: - title: "IBM MQ Queue Manager" - description: "Name of the IBM MQ Queue Manager" - type: string - channel: - title: "IBM MQ Channel" - description: "Name of the IBM MQ Channel" - type: string - clientId: - title: "IBM MQ Client ID" - description: "Name of the IBM MQ Client ID" - type: string - username: - title: "Username" - description: "Username to authenticate to IBM MQ server" - type: string - password: - title: "Password" - description: "Password to authenticate to IBM MQ server" - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - dependencies: - - "camel:jms" - - "camel:kamelet" - - "mvn:com.ibm.mq:com.ibm.mq.allclient:9.2.5.0" - template: - beans: - - name: wmqConnectionFactory - type: "#class:com.ibm.mq.jms.MQConnectionFactory" - property: - - key: XMSC_WMQ_HOST_NAME - value: '{{serverName}}' - - key: XMSC_WMQ_PORT - value: '{{serverPort}}' - - key: XMSC_WMQ_CHANNEL - value: '{{channel}}' - - key: XMSC_WMQ_QUEUE_MANAGER - value: '{{queueManager}}' - - key: XMSC_WMQ_CONNECTION_MODE - value: 1 - - key: XMSC_USERID - value: '{{username}}' - - key: XMSC_PASSWORD - value: '{{password}}' - - key: XMSC_CLIENT_ID - value: '{{?clientId}}' - from: - uri: "kamelet:source" - steps: - - to: - uri: "jms:{{destinationType}}:{{destinationName}}" - parameters: - connectionFactory: "#bean:{{wmqConnectionFactory}}" diff --git a/jms-ibm-mq-source.kamelet.yaml b/jms-ibm-mq-source.kamelet.yaml deleted file mode 100644 index cccb6e687..000000000 --- a/jms-ibm-mq-source.kamelet.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: jms-ibm-mq-source - annotations: - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTczLjA4IDU3Ni45NyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiM1YTc3YjU7fS5jbHMtM3tmaWxsOiNhZmJlZTA7fS5jbHMtNHtjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgpO30uY2xzLTV7Y2xpcC1wYXRoOnVybCgjY2xpcC1wYXRoLTIpO308L3N0eWxlPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNjQuNSw1MTAuODhWNDU3aDQuMDh2NTMuOTFabTQ3Ljc4LTI3LjcxYTEzLjE0LDEzLjE0LDAsMCwxLDkuMjMsMTNjMCw5LjYyLTYuMjgsMTQuNjktMTUuODIsMTQuNjlIMTg1LjI0VjQ1N2gxOS44NGM4Ljk0LDAsMTUuNiw1LjE1LDE1LjYsMTQuMDhhMTIuMzgsMTIuMzgsMCwwLDEtOC40LDEyLjEyWm0tMjIuOTUsMjQuMDhoMTUuOWM3LjM1LDAsMTIuMTktNC4xNywxMi4xOS0xMS4wNnMtNC44NC0xMS4wNS0xMi4xOS0xMS4wNWgtMTUuOXYyMi4xMVptMTUuMy00Ni42NWgtMTUuM3YyMC45aDE1LjNjNi41MSwwLDEyLTMsMTItMTAuNDVzLTUuNDUtMTAuNDUtMTItMTAuNDVabTcyLjYxLDUwLjI4VjQ2Ni40M2wtMTYuMzUsMzYuODhIMjU2LjhsLTE2LjY2LTM2Ljg4djQ0LjQ1aC00LjA5VjQ1N2g0LjA5bDE4Ljc4LDQxLjU3TDI3Ny4yNCw0NTdoNC4wOXY1My45MVoiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTIiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM0OS43LDUxMC44NFY0NzcuMjhoLS4xOGwtMTAuOTEsMjUuODRIMzMybC0xMC45MS0yNS44NEgzMjF2MzMuNTZoLTcuOVY0NTdoNy40NGwxNSwzNS4wN0wzNTAuMTMsNDU3aDcuNDZ2NTMuODFabTU0LjItMTAsNi44OCw1LjY1LTQuNjksNS42MS02LjU4LTUuNDRxLTQuNjIsNC41MS0xMi4zLDQuNjZhMTcuODksMTcuODksMCwwLDEtMTAuMjUtMy4xLDE3LjcsMTcuNywwLDAsMS02LjA4LTYuNTdjLS4zOC0uODEtLjczLTEuNTktMS0yLjMyYTE1LjQ1LDE1LjQ1LDAsMCwxLS43Mi0yLjg4LDE0NS4yOSwxNDUuMjksMCwwLDEsMC0yNSwxNS4zOCwxNS4zOCwwLDAsMSwxLjc1LTUuMTMsMTguMzMsMTguMzMsMCwwLDEsNi4wOC02LjY0LDE3LjQ3LDE3LjQ3LDAsMCwxLDEwLjI1LTMsMTcuNzYsMTcuNzYsMCwwLDEsMTAuMzYsMywxOCwxOCwwLDAsMSw1Ljk0LDYuNjQsMTIuNzksMTIuNzksMCwwLDEsMS44Miw1LjEzLDEwNy4yMywxMDcuMjMsMCwwLDEsLjQ2LDEyLjU1cTAsOC4zOC0uMzYsMTEuN2ExNC41MSwxNC41MSwwLDAsMS0xLjUzLDUuMTdabS02LjU0LTI3LjcxYTExLjI2LDExLjI2LDAsMCwwLTUuMjYtNy4yNCwxMS4xOCwxMS4xOCwwLDAsMC00LjkxLTEuMTUsMTAuNjMsMTAuNjMsMCwwLDAtNC44LDEuMTUsMTAuMDksMTAuMDksMCwwLDAtMy4yOSwyLjc3LDksOSwwLDAsMC0yLDQuNDgsNjYuNyw2Ni43LDAsMCwwLS41NywxMC44Myw2NS40Nyw2NS40NywwLDAsMCwuNTcsMTAuNzcsOSw5LDAsMCwwLDIsNC41NCw5LjQ3LDkuNDcsMCwwLDAsMy4yOSwyLjcxLDkuMTEsOS4xMSwwLDAsMCw0LjgsMS4yMiw4LjYyLDguNjIsMCwwLDAsNS44NC0xLjg5bC02LjY2LTUuNDcsNC42OS01LjU5LDYuMDksNXEuNzUtMi43My43NS0xMS4yOGE3MC42LDcwLjYsMCwwLDAtLjU0LTEwLjg0WiIvPjwvY2xpcFBhdGg+PC9kZWZzPjx0aXRsZT5JQk0gSVE8L3RpdGxlPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMjg3LjY0IiBjeT0iMjg3LjIiIHI9IjI3OC41Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9IjQ1OC4xNyA0MjYuNjcgMTE3LjExIDQyNi42NyAxMTcuMTEgMTUzLjU1IDcwLjkxIDE1My41NSA3MC45MSAxMzEuNTUgMTM5LjExIDEzMS41NSAxMzkuMTEgNDA0LjY3IDQzNi4xNyA0MDQuNjcgNDM2LjE3IDEzMS41NSA1MDQuMzcgMTMxLjU1IDUwNC4zNyAxNTMuNTUgNDU4LjE3IDE1My41NSA0NTguMTcgNDI2LjY3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjQyMC4yNiAyNTMuMTIgNDIwLjI2IDI0MS43NyAxNTUuMDIgMjQxLjc3IDE1NS4wMiAyNTIuODUgMjg3Ljg4IDMyOS40OSA0MjAuMjYgMjUzLjEyIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjI4Ny44OCAzMzkuNzUgMTU1LjAyIDI2My4xMSAxNTUuMDIgMzg4Ljg0IDQyMC4yNiAzODguODQgNDIwLjI2IDI2My4zOCAyODcuODggMzM5Ljc1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY0LjUsNTEwLjg4VjQ1N2g0LjA4djUzLjkxWm00Ny43OC0yNy43MWExMy4xNCwxMy4xNCwwLDAsMSw5LjIzLDEzYzAsOS42Mi02LjI4LDE0LjY5LTE1LjgyLDE0LjY5SDE4NS4yNFY0NTdoMTkuODRjOC45NCwwLDE1LjYsNS4xNSwxNS42LDE0LjA4YTEyLjM4LDEyLjM4LDAsMCwxLTguNCwxMi4xMlptLTIyLjk1LDI0LjA4aDE1LjljNy4zNSwwLDEyLjE5LTQuMTcsMTIuMTktMTEuMDZzLTQuODQtMTEuMDUtMTIuMTktMTEuMDVoLTE1Ljl2MjIuMTFabTE1LjMtNDYuNjVoLTE1LjN2MjAuOWgxNS4zYzYuNTEsMCwxMi0zLDEyLTEwLjQ1cy01LjQ1LTEwLjQ1LTEyLTEwLjQ1Wm03Mi42MSw1MC4yOFY0NjYuNDNsLTE2LjM1LDM2Ljg4SDI1Ni44bC0xNi42Ni0zNi44OHY0NC40NWgtNC4wOVY0NTdoNC4wOWwxOC43OCw0MS41N0wyNzcuMjQsNDU3aDQuMDl2NTMuOTFaIi8+PGcgY2xhc3M9ImNscy00Ij48aW1hZ2Ugd2lkdGg9IjEwNzUiIGhlaWdodD0iMTA4NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi42NyAxNi42Nykgc2NhbGUoMC41MykiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCRFFBQUFRK0NBSUFBQUN2Ri9oTEFBQUFDWEJJV1hNQUFCVVJBQUFWRVFGZVBUWjRBQUFYRTBsRVFWUjRYdTNaMFkzQ1FCUUVRUmFSbDUyWlEzOFh3a29JY0V0WDlUMEp0R2JOekFNQUFPQjI0Z1FBQUxqZGRWM1AzUVlBQU9BWHhBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBMHpzNXNBQUFCODEzRWNuaE1BQU9CKzUzbUtFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpEdzJnMkFENXVaM1FTNjFscTdDUUM4eVhNQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSU9HMUd3QWZ0dGJhVFFBQS9pUFBDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUXNHWm10d0VBQVBpNlA3REpHbXpiZ0JrUUFBQUFBRWxGVGtTdVFtQ0MiLz48L2c+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMzQ5LjcsNTEwLjg0VjQ3Ny4yOGgtLjE4bC0xMC45MSwyNS44NEgzMzJsLTEwLjkxLTI1Ljg0SDMyMXYzMy41NmgtNy45VjQ1N2g3LjQ0bDE1LDM1LjA3TDM1MC4xMyw0NTdoNy40NnY1My44MVptNTQuMi0xMCw2Ljg4LDUuNjUtNC42OSw1LjYxLTYuNTgtNS40NHEtNC42Miw0LjUxLTEyLjMsNC42NmExNy44OSwxNy44OSwwLDAsMS0xMC4yNS0zLjEsMTcuNywxNy43LDAsMCwxLTYuMDgtNi41N2MtLjM4LS44MS0uNzMtMS41OS0xLTIuMzJhMTUuNDUsMTUuNDUsMCwwLDEtLjcyLTIuODgsMTQ1LjI5LDE0NS4yOSwwLDAsMSwwLTI1LDE1LjM4LDE1LjM4LDAsMCwxLDEuNzUtNS4xMywxOC4zMywxOC4zMywwLDAsMSw2LjA4LTYuNjQsMTcuNDcsMTcuNDcsMCwwLDEsMTAuMjUtMywxNy43NiwxNy43NiwwLDAsMSwxMC4zNiwzLDE4LDE4LDAsMCwxLDUuOTQsNi42NCwxMi43OSwxMi43OSwwLDAsMSwxLjgyLDUuMTMsMTA3LjIzLDEwNy4yMywwLDAsMSwuNDYsMTIuNTVxMCw4LjM4LS4zNiwxMS43YTE0LjUxLDE0LjUxLDAsMCwxLTEuNTMsNS4xN1ptLTYuNTQtMjcuNzFhMTEuMjYsMTEuMjYsMCwwLDAtNS4yNi03LjI0LDExLjE4LDExLjE4LDAsMCwwLTQuOTEtMS4xNSwxMC42MywxMC42MywwLDAsMC00LjgsMS4xNSwxMC4wOSwxMC4wOSwwLDAsMC0zLjI5LDIuNzcsOSw5LDAsMCwwLTIsNC40OCw2Ni43LDY2LjcsMCwwLDAtLjU3LDEwLjgzLDY1LjQ3LDY1LjQ3LDAsMCwwLC41NywxMC43Nyw5LDksMCwwLDAsMiw0LjU0LDkuNDcsOS40NywwLDAsMCwzLjI5LDIuNzEsOS4xMSw5LjExLDAsMCwwLDQuOCwxLjIyLDguNjIsOC42MiwwLDAsMCw1Ljg0LTEuODlsLTYuNjYtNS40Nyw0LjY5LTUuNTksNi4wOSw1cS43NS0yLjczLjc1LTExLjI4YTcwLjYsNzAuNiwwLDAsMC0uNTQtMTAuODRaIi8+PGcgY2xhc3M9ImNscy01Ij48aW1hZ2Ugd2lkdGg9IjEwNzUiIGhlaWdodD0iMTA4NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi42NyAxNi42Nykgc2NhbGUoMC41MykiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCRFFBQUFRK0NBSUFBQUN2Ri9oTEFBQUFDWEJJV1hNQUFCVVJBQUFWRVFGZVBUWjRBQUFYRWtsRVFWUjRYdTNad1cyRVFCUkV3WjBWZVVGbWhQNGR3c2dIekxOVWRlNEVubnJOekFjQUFPQjE0Z1FBQUhqZGZkL2YzUVlBQU9BdmlCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCcG1aamNCQUFCNDFubWVuaE1BQU9COTEzV0pFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVNqdDBBQUxwbVpqZUIzMWxyN1NiQVV6d25BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0RoMkEwQW9HdXR0WnNBOEc5NFRnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVEQ21wbmRCZ0FBNEhFLzZiWWFiTE5wV0pvQUFBQUFTVVZPUks1Q1lJST0iLz48L2c+PC9zdmc+" - camel.apache.org/kamelet.support.level: "Preview" - camel.apache.org/provider: "Red Hat" - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.group: "JMS" - labels: - camel.apache.org/kamelet.type: "source" - camel.apache.org/requires.runtime: camel-k -spec: - definition: - title: "JMS - IBM MQ Kamelet Source" - description: |- - A Kamelet that can read events from an IBM MQ message queue using JMS. - required: - - serverName - - serverPort - - destinationName - - queueManager - - channel - - username - - password - type: object - properties: - serverName: - title: "IBM MQ Server name" - description: "IBM MQ Server name or address" - type: string - serverPort: - title: "IBM MQ Server Port" - description: "IBM MQ Server port" - type: integer - default: 1414 - destinationType: - title: "Destination Type" - description: "The JMS destination type (queue or topic)" - type: string - default: queue - destinationName: - title: "Destination Name" - description: "The destination name" - type: string - queueManager: - title: "IBM MQ Queue Manager" - description: "Name of the IBM MQ Queue Manager" - type: string - channel: - title: "IBM MQ Channel" - description: "Name of the IBM MQ Channel" - type: string - clientId: - title: "IBM MQ Client ID" - description: "Name of the IBM MQ Client ID" - type: string - username: - title: "Username" - description: "Username to authenticate to IBM MQ server" - type: string - password: - title: "Password" - description: "Password to authenticate to IBM MQ server" - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - dependencies: - - "camel:jms" - - "camel:kamelet" - - "mvn:com.ibm.mq:com.ibm.mq.allclient:9.2.5.0" - template: - beans: - - name: wmqConnectionFactory - type: "#class:com.ibm.mq.jms.MQConnectionFactory" - property: - - key: XMSC_WMQ_HOST_NAME - value: '{{serverName}}' - - key: XMSC_WMQ_PORT - value: '{{serverPort}}' - - key: XMSC_WMQ_CHANNEL - value: '{{channel}}' - - key: XMSC_WMQ_QUEUE_MANAGER - value: '{{queueManager}}' - - key: XMSC_WMQ_CONNECTION_MODE - value: 1 - - key: XMSC_USERID - value: '{{username}}' - - key: XMSC_PASSWORD - value: '{{password}}' - - key: XMSC_CLIENT_ID - value: '{{?clientId}}' - from: - uri: "jms:{{destinationType}}:{{destinationName}}" - parameters: - connectionFactory: "#bean:{{wmqConnectionFactory}}" - steps: - - to: - uri: "kamelet:sink" diff --git a/jslt-action.kamelet.yaml b/jslt-action.kamelet.yaml deleted file mode 100644 index 78e708d49..000000000 --- a/jslt-action.kamelet.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: jslt-action - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" - labels: - camel.apache.org/kamelet.type: "action" -spec: - definition: - title: "JSLT Action" - description: |- - Apply a JSLT query or transformation on JSON. - required: - - template - type: object - properties: - template: - title: Template - description: The inline template for JSLT Transformation - type: string - example: "file://template.json" - pattern: "^(http|https|file|classpath)://.*" - dependencies: - - "camel:jslt" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - to: - uri: "jslt:" - parameters: - resourceUri: "{{template}}" diff --git a/json-deserialize-action.kamelet.yaml b/json-deserialize-action.kamelet.yaml deleted file mode 100644 index aef4959cc..000000000 --- a/json-deserialize-action.kamelet.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: json-deserialize-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Json Deserialize Action" - description: "Deserialize payload to JSON" - type: object - dependencies: - - "camel:kamelet" - - "camel:core" - - "camel:jackson" - template: - from: - uri: kamelet:source - steps: - - unmarshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - remove-header: - name: "Content-Type" diff --git a/json-serialize-action.kamelet.yaml b/json-serialize-action.kamelet.yaml deleted file mode 100644 index c529cb5ce..000000000 --- a/json-serialize-action.kamelet.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: json-serialize-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Json Serialize Action" - description: "Serialize payload to JSON" - type: object - dependencies: - - "camel:kamelet" - - "camel:core" - - "camel:jackson" - template: - from: - uri: kamelet:source - steps: - - marshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - set-header: - name: "Content-Type" - constant: "application/json" diff --git a/kafka-manual-commit-action.kamelet.yaml b/kafka-manual-commit-action.kamelet.yaml deleted file mode 100644 index d52730c07..000000000 --- a/kafka-manual-commit-action.kamelet.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: kafka-manual-commit-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Kafka Manual Commit Action" - description: "Manually commit Kafka Offset" - type: object - dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - bean: "org.apache.camel.kamelets.utils.transform.kafka.ManualCommit" diff --git a/avro-deserialize-action.kamelet.yaml b/kamelets/avro-deserialize-action.kamelet.yaml similarity index 76% rename from avro-deserialize-action.kamelet.yaml rename to kamelets/avro-deserialize-action.kamelet.yaml index 0ed9541c5..753a75ef9 100644 --- a/avro-deserialize-action.kamelet.yaml +++ b/kamelets/avro-deserialize-action.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: avro-deserialize-action annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" labels: camel.apache.org/kamelet.type: "action" spec: @@ -14,8 +33,6 @@ spec: title: "Avro Deserialize Action" description: "Deserialize payload to Avro" type: object - required: - - schema properties: schema: title: Schema @@ -30,28 +47,26 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:kamelet" - "camel:core" - "camel:jackson-avro" template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.converter.avro.AvroSchemaResolver" + property: + - key: validate + value: '{{validate}}' + - key: schema + value: '{{schema:}}' from: uri: kamelet:source steps: - - set-property: - name: schema - constant: "{{schema}}" - - set-property: - name: validate - constant: "{{validate}}" - unmarshal: avro: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" - - remove-property: - name: schema - - remove-property: - name: validate + schemaResolver: "#bean:{{schemaResolver}}" - remove-header: name: "Content-Type" diff --git a/avro-serialize-action.kamelet.yaml b/kamelets/avro-serialize-action.kamelet.yaml similarity index 76% rename from avro-serialize-action.kamelet.yaml rename to kamelets/avro-serialize-action.kamelet.yaml index 502abbd52..bfb1b8b57 100644 --- a/avro-serialize-action.kamelet.yaml +++ b/kamelets/avro-serialize-action.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: avro-serialize-action annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" labels: camel.apache.org/kamelet.type: "action" spec: @@ -14,8 +33,6 @@ spec: title: "Avro Serialize Action" description: "Serialize payload to Avro" type: object - required: - - schema properties: schema: title: Schema @@ -30,29 +47,27 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:kamelet" - "camel:core" - "camel:jackson-avro" template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.converter.avro.AvroSchemaResolver" + property: + - key: validate + value: '{{validate}}' + - key: schema + value: '{{schema:}}' from: uri: kamelet:source steps: - - set-property: - name: schema - constant: "{{schema}}" - - set-property: - name: validate - constant: "{{validate}}" - marshal: avro: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" - - remove-property: - name: schema - - remove-property: - name: validate + schemaResolver: "#bean:{{schemaResolver}}" - set-header: name: "Content-Type" constant: "application/avro" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml b/kamelets/aws-ddb-sink.kamelet.yaml similarity index 59% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml rename to kamelets/aws-ddb-sink.kamelet.yaml index 7ab4a47a5..8d9a0f1ac 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml +++ b/kamelets/aws-ddb-sink.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -15,32 +15,40 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-ddb-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNMzkuNTA2IDEzLjY2N2gyMC4zMjF2NzEuOTk5SDM5LjUwNnpNNzQuMTMxIDY3LjU2NFY3OC41Mmw3LjQ4LTguNzY0di03LjYwMmwtNy40MzcgNS4zOTd6TTc0LjEzMSA2Mi45MzZsLjA0My0uMDEgNy40MzctNHYtNy42NDlsLTcuNDguNjg4ek03NC4xNzQgMzYuNDI5bC0uMDQzLS4wMVY0Ny4zNWw3LjQ4LjY5OXYtNy42NDV6Ii8+PHBhdGggZmlsbD0iIzFBNDc2RiIgZD0iTTgxLjYxMSA0OC4wNDlsLTcuNDgtLjY5OS0xNC4zMDMtLjU3MkgzOS41MDZsLTE0LjMwMy41NzJWMzYuNDQzbC0uMDE1LjAwOC4wMTUtLjAzMiAxNC4zMDMtMy4zMTRINTkuODI4bDE0LjMwMyAzLjMxNCA1LjI1OCAyLjc5NXYtMS43OTdsMi4yMjItLjI0My03LjQ4LTUuNDEtMTQuMzAzLTQuNDMySDM5LjUwNmwtMTQuMzAzIDQuNDMyVjIwLjgwN2wtNy40OCA4Ljc2M3Y3LjY1M2wuMDU4LS4wNDIgMi4xNjQuMjM2djEuODM0bC0yLjIyMiAxLjE4OXY3LjYxNWwuMDU4LS4wMDYgMi4xNjQuMDMydjMuMTk2bC0xLjg2Ny4wMjgtLjM1NS0uMDM0djcuNjE4bDIuMjIyIDEuMTk1djEuODU1bC0yLjEyOS4yMzUtLjA5My0uMDd2Ny42NTJsNy40OCA4Ljc2NFY2Ny41NjRsMTQuMzAzIDQuNDMySDU5LjgyOGwxNC4zNDUtNC40NDUgNy40MzgtNS4zNjctMi4yMjItLjI0NXYtMS44MThsLTUuMjE2IDIuODA1LTE0LjM0NSAzLjI5NXYuMDA0SDM5LjUwNnYtLjAwNGwtMTQuMzQ4LTMuMjk1LS4wMjUtLjA1MS4wNy4wMzdWNTEuOTY1bDE0LjMwMy41N3YuMDE0SDU5LjgyOHYtLjAxNGwxNC4zMDMtLjU3IDcuNDgtLjY1Ni0yLjIyMi0uMDMydi0zLjE5NnoiLz48L3N2Zz4=" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS DynamoDB Streams" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "AWS DynamoDB Sink" description: |- - Send data to AWS DynamoDB service. The sent data will insert/update/delete an item on the given AWS DynamoDB table. + Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes an item on the specified AWS DynamoDB table. - Access Key/Secret Key are the basic method for authenticating to the AWS DynamoDB service. These parameters are optional, because the Kamelet provide also the 'useDefaultCredentialsProvider'. + The basic authentication method for the AWS DynamoDB service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. - When using a default Credentials Provider the AWS DynamoDB client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. + If you use the default credentials provider, the DynamoDB client loads the credentials through this provider and doesn't use the basic authentication method. - This Kamelet expects a JSON as body. The mapping between the JSON fields and table attribute values is done by key, so if you have the input: - - '{"username":"oscerd", "city":"Rome"}' - - The Kamelet will insert/update an item in the given AWS DynamoDB table and set the attributes 'username' and 'city' respectively. Please note that the JSON object must include the primary key values that define the item. + This Kamelet expects a JSON-formatted body and it must include the primary key values that define the DynamoDB item. The mapping between the JSON fields and table attribute values is done by key. For example, for '{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an item in the specified AWS DynamoDB table and sets the values for the 'username' and 'city' attributes. + + For PutItem operation the Json body defines all item attributes. + For DeleteItem operation the Json body defines only the primary key attributes that identify the item to delete. + For UpdateItem operation the Json body defines both key attributes to identify the item to be updated and all item attributes tht get updated on the item. + + The given Json body can use "key" and "item" as top level properties. Both define a Json object that will be mapped to respective attribute value maps + { + "key": {}, + "item": {} + } required: - table - region @@ -48,11 +56,11 @@ spec: properties: table: title: Table - description: Name of the DynamoDB table to look at + description: The name of the DynamoDB table. type: string accessKey: title: Access Key - description: The access key obtained from AWS + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -60,7 +68,7 @@ spec: - urn:camel:group:credentials secretKey: title: Secret Key - description: The secret key obtained from AWS + description: The secret key obtained from AWS. type: string format: password x-descriptors: @@ -68,35 +76,30 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to + description: The AWS region to access. type: string - example: eu-west-1 - enum: ["af-south-1", "ap-east-1", "ap-northeast-1", "ap-northeast-2", "ap-northeast-3", "ap-south-1", "ap-southeast-1", "ap-southeast-2", "ap-southeast-3", "ca-central-1", "eu-central-1", "eu-north-1", "eu-south-1", "eu-west-1", "eu-west-2", "eu-west-3", "fips-us-east-1", "fips-us-east-2", "fips-us-west-1", "fips-us-west-2", "me-south-1", "sa-east-1", "us-east-1", "us-east-2", "us-west-1", "us-west-2", "cn-north-1", "cn-northwest-1", "us-gov-east-1", "us-gov-west-1", "us-iso-east-1", "us-iso-west-1", "us-isob-east-1"] + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] operation: title: Operation - description: The operation to perform (one of PutItem, UpdateItem, DeleteItem) + description: "The operation to perform." type: string + enum: ["PutItem", "UpdateItem", "DeleteItem"] default: PutItem example: PutItem - writeCapacity: - title: Write Capacity - description: The provisioned throughput to reserved for writing resources to your table - type: integer - default: 1 useDefaultCredentialsProvider: title: Default Credentials Provider - description: Set whether the DynamoDB client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in. + description: If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false uriEndpointOverride: title: Overwrite Endpoint URI - description: Set the overriding endpoint URI. This option needs to be used in combination with overrideEndpoint option. + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. type: string overrideEndpoint: title: Endpoint Overwrite - description: Set the need for overiding the endpoint URI. This option needs to be used in combination with uriEndpointOverride setting. + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' @@ -105,7 +108,7 @@ spec: in: mediaType: application/json dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - "camel:core" - "camel:jackson" - "camel:aws2-ddb" @@ -117,11 +120,8 @@ spec: - set-property: name: operation constant: "{{operation}}" - - unmarshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - bean: "org.apache.camel.kamelets.utils.transform.aws.ddb.JsonToDdbModelConverter" + - transform: + to-type: "aws2-ddb:application-json" - to: uri: "aws2-ddb:{{table}}" parameters: @@ -129,7 +129,6 @@ spec: accessKey: "{{?accessKey}}" region: "{{region}}" operation: "{{operation}}" - writeCapacity: "{{?writeCapacity}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" uriEndpointOverride: "{{?uriEndpointOverride}}" overrideEndpoint: "{{overrideEndpoint}}" diff --git a/aws-kinesis-sink.kamelet.yaml b/kamelets/aws-kinesis-sink.kamelet.yaml similarity index 59% rename from aws-kinesis-sink.kamelet.yaml rename to kamelets/aws-kinesis-sink.kamelet.yaml index 829969ee5..186a51166 100644 --- a/aws-kinesis-sink.kamelet.yaml +++ b/kamelets/aws-kinesis-sink.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-kinesis-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTS4wNTksMjE3LjU1OWwxMjguMTYyLDkwLjY3NUwyNTYsMjE3LjU1OSwxMjcuOTQ1LDE5OC45MjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDYsMTU0LjAxN2g2Ny41NzdWNTcuODM2TDE3NS45OSw0OS45NDMsMTI4LjE0Niw2My44OThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTE3NS45OSwxNTQuMDE3aDUyLjIzM1Y5MS42MzJsLTE0Ljk0LTQuNDgxLTM3LjI5Myw2LjMzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0yMTMuMjgyLDgyLjI2djcxLjc1N2g0Mi4yMjRMMjU2LDgxLjk0MWwtMTIuODI2LTUuMTI0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMjguMTQ3LDBWMTU0LjAxN2gyNS41VjEyLjc1MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTk1LjcyNCw1Ny44MzZsLTE5LjczMy03Ljg5NFYxNTQuMDE3aDE5LjczMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjI4LjIyNCw5MS42MzJsLTE0Ljk0MS00LjQ4djY2Ljg2NWgxNC45NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjQzLjE3NCwxNTQuMDE3SDI1NlY4MS45NDFsLTEyLjgyNi01LjEyNFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTI3Ljc1NCwxODQuODYzdjQ2LjAzM2wxMjcuNzUyLTMxLjg0NFYxNzIuMDg3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iI2Y2ODUzNCIvPjxwYXRoIGQ9Ik0xMjcuNzU0LDI2Mi43ODF2NDUuNDUzTDI1NiwyNDQuMTE0VjIxNy41NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNLjA1OSwyNDQuMzlsMTI3LjY5NSw2My44NDRWMjYyLjQ0OEwuMDU4LDIxNy41NThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTAsMTk5LjA1MWwxMjcuNzU0LDMxLjg0NVYxODQuODYyTDAsMTcyLjA4NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiM5ZDUwMjUiLz48L3N2Zz4=" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS Kinesis" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: sink spec: @@ -15,31 +34,28 @@ spec: description: |- Send data to AWS Kinesis. - The Kamelet expects the following header: - - - `partition` / `ce-partition`: to set the Kinesis partition key + The basic authentication method for the Kinesis service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the Kinesis client loads the credentials through this provider and doesn't use the basic authentication method. + + In the header, you can optionally set the `file` / `ce-partition` property to set the Kinesis partition key. - If the header won't be set the exchange ID will be used. + If you do not set the property in the header, the Kamelet uses the exchange ID for the partition key. - The Kamelet is also able to recognize the following header: + You can also set the `sequence-number` / `ce-sequencenumber` property in the header to specify the Sequence number. - - `sequence-number` / `ce-sequencenumber`: to set the Sequence number - - This header is optional. required: - stream - - accessKey - - secretKey - region type: object properties: stream: title: Stream Name - description: The Kinesis stream that you want to access (needs to be created in advance) + description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist. type: string accessKey: title: Access Key - description: The access key obtained from AWS + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -47,7 +63,7 @@ spec: - urn:camel:group:credentials secretKey: title: Secret Key - description: The secret key obtained from AWS + description: The secret key obtained from AWS. type: string format: password x-descriptors: @@ -55,9 +71,9 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to + description: The AWS region to access. type: string - example: eu-west-1 + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] useDefaultCredentialsProvider: title: Default Credentials Provider description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). @@ -65,8 +81,22 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + types: + in: + mediaType: application/octet-stream dependencies: - - camel:core + - "camel:core" - "camel:aws2-kinesis" - "camel:kamelet" template: @@ -109,3 +139,5 @@ spec: accessKey: "{{?accessKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/kamelets/aws-kinesis-source.kamelet.yaml b/kamelets/aws-kinesis-source.kamelet.yaml new file mode 100644 index 000000000..e30c36996 --- /dev/null +++ b/kamelets/aws-kinesis-source.kamelet.yaml @@ -0,0 +1,125 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-kinesis-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTS4wNTksMjE3LjU1OWwxMjguMTYyLDkwLjY3NUwyNTYsMjE3LjU1OSwxMjcuOTQ1LDE5OC45MjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDYsMTU0LjAxN2g2Ny41NzdWNTcuODM2TDE3NS45OSw0OS45NDMsMTI4LjE0Niw2My44OThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTE3NS45OSwxNTQuMDE3aDUyLjIzM1Y5MS42MzJsLTE0Ljk0LTQuNDgxLTM3LjI5Myw2LjMzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0yMTMuMjgyLDgyLjI2djcxLjc1N2g0Mi4yMjRMMjU2LDgxLjk0MWwtMTIuODI2LTUuMTI0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMjguMTQ3LDBWMTU0LjAxN2gyNS41VjEyLjc1MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTk1LjcyNCw1Ny44MzZsLTE5LjczMy03Ljg5NFYxNTQuMDE3aDE5LjczMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjI4LjIyNCw5MS42MzJsLTE0Ljk0MS00LjQ4djY2Ljg2NWgxNC45NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjQzLjE3NCwxNTQuMDE3SDI1NlY4MS45NDFsLTEyLjgyNi01LjEyNFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTI3Ljc1NCwxODQuODYzdjQ2LjAzM2wxMjcuNzUyLTMxLjg0NFYxNzIuMDg3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iI2Y2ODUzNCIvPjxwYXRoIGQ9Ik0xMjcuNzU0LDI2Mi43ODF2NDUuNDUzTDI1NiwyNDQuMTE0VjIxNy41NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNLjA1OSwyNDQuMzlsMTI3LjY5NSw2My44NDRWMjYyLjQ0OEwuMDU4LDIxNy41NThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTAsMTk5LjA1MWwxMjcuNzU0LDMxLjg0NVYxODQuODYyTDAsMTcyLjA4NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiM5ZDUwMjUiLz48L3N2Zz4=" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS Kinesis" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "AWS Kinesis Source" + description: |- + Receive data from AWS Kinesis. + + The basic authentication method for the Kinesis service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the Kinesis client loads the credentials through this provider and doesn't use the basic authentication method. + + Two headers will be duplicated with different names for clarity at sink level, CamelAwsKinesisPartitionKey will be duplicated into aws.kinesis.partition.key and CamelAwsKinesisSequenceNumber will be duplicated in aws.kinesis.sequence.number + required: + - stream + - region + type: object + properties: + stream: + title: Stream Name + description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist. + 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 + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected stream. + type: integer + default: 500 + types: + out: + mediaType: application/octet-stream + dependencies: + - "camel:aws2-kinesis" + - "camel:kamelet" + - "camel:core" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + template: + beans: + - name: duplicateHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAwsKinesis' + renamingPrefix: 'aws.kinesis.' + mode: 'filtering' + selectedHeaders: 'CamelAwsKinesisPartitionKey,CamelAwsKinesisSequenceNumber' + from: + uri: aws2-kinesis:{{stream}} + parameters: + secretKey: "{{?secretKey}}" + accessKey: "{{?accessKey}}" + region: "{{region}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" + steps: + - process: + ref: "{{duplicateHeaders}}" + - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml b/kamelets/aws-lambda-sink.kamelet.yaml similarity index 57% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml rename to kamelets/aws-lambda-sink.kamelet.yaml index 1e5b40259..1b361a0b1 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml +++ b/kamelets/aws-lambda-sink.kamelet.yaml @@ -1,33 +1,54 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-lambda-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA2NSIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTAgMjQ1LjI2MmwxNi4zMjIgOC4xNjFMMTkgMjQ4LjY2OFY1OS4zMzNsLTIuNjc4LTMuNDk0TDAgNjR2MTgxLjI2MiIgZmlsbD0iIzlENTAyNSIvPjxwYXRoIGQ9Ik00Ny42NzggNjMuNTdsLTMxLjM1Ni03LjczMXYxOTcuNTg0bDMxLjM1Ni03LjMwMlY2My41NyIgZmlsbD0iI0Y2ODUzNiIvPjxwYXRoIGQ9Ik0xNDMuODkzIDc4LjYwNGwyMi4zMzUtMTEuNTk3IDc0LjMwOSAyOC43NzgtMTkuNzU4IDIuNTc3LTc2Ljg4Ni0xOS43NTgiIGZpbGw9IiM2QjNBMTkiLz48cGF0aCBkPSJNMTQ0Ljc1MiAyMzAuNjU4bDIxLjkwNiAxMS41OTcgNzQuMzA4LTI4Ljc3OC0xOS43NTgtMi41NzgtNzYuNDU2IDE5Ljc1OSIgZmlsbD0iI0ZCQkY5MyIvPjxwYXRoIGQ9Ik0xNTAuMzM2IDE5OC44NzJsMzkuMDg3IDUuMTU1IDIuMjQ0LTQuMDI3di05MGwtMi4yNDQtNC43NjUtMzkuMDg3IDUuMTU0djg4LjQ4M00zNS42NTEgNDUuOTZsMjQuMDU0LTEyLjAyN0w2Mi4zMzMgMzl2MjMxbC0yLjYyOCA1LjMyOS0yNC4wNTQtMTIuMDI3VjQ1Ljk2IiBmaWxsPSIjOUQ1MDI1Ii8+PHBhdGggZD0iTTEwOC42NzEgMjU5LjAwN2wtNDguOTY2IDE1Ljg5MlYzMy45MzNsNDguOTY2IDE1Ljg5M3YyMDkuMTgxIiBmaWxsPSIjRjY4NTM2Ii8+PHBhdGggZD0iTTg5Ljc3MiAyODkuOTMzTDEyOCAzMDkuMjYybDQtNC41OTV2LTI5OUwxMjggMCA4OS43NzIgMTkuMzI5djI3MC42MDRNMjE5LjkxOSA5OC4zNjJsMTkuNzU5LTIuNTc3IDEuNjk3IDIuNDY1VjIxMWwtMS42OTcgMi45MDYtMTkuNzU5LTIuNTc3Vjk4LjM2MiIgZmlsbD0iIzlENTAyNSIvPjxwYXRoIGQ9Ik0xODkuNDIzIDEwNS4yMzV2OTkuMjIxbDQwLjgwNS00OS44MjUtNDAuODA1LTQ5LjM5NiIgZmlsbD0iI0Y2ODUzNiIvPjxwYXRoIGQ9Ik0yMzkuNjc4IDU1LjgzOUwxMjggMHYzMDkuMjYybDEyOC02NFY2NGwtMTYuMzIyLTguMTYxem0wIDE1OC4yMTdsLTczLjQ1IDIxLjkzNlY3My4yN2w3My40NSAyMS45MzZ2MTE4Ljg1eiIgZmlsbD0iI0Y2ODUzNiIvPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS Lambda" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: sink spec: definition: title: AWS Lambda Sink description: |- - Send a payload to an AWS Lambda function + Send a payload to an AWS Lambda function. + + The basic authentication method for the Lambda service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the Lambda client loads the credentials through this provider and doesn't use the basic authentication method. required: - function - - accessKey - - secretKey - region type: object properties: function: title: Function Name - description: The Lambda Function name + description: The Lambda Function name. type: string accessKey: title: Access Key - description: The access key obtained from AWS + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -35,7 +56,7 @@ spec: - urn:camel:group:credentials secretKey: title: Secret Key - description: The secret key obtained from AWS + description: The secret key obtained from AWS. type: string format: password x-descriptors: @@ -43,9 +64,9 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to + description: The AWS region to access. type: string - example: eu-west-1 + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] useDefaultCredentialsProvider: title: Default Credentials Provider description: If true, the Lambda client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). @@ -54,8 +75,8 @@ spec: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false dependencies: - - "camel:kamelet" - - "camel:aws2-lambda" + - "camel:aws2-lambda" + - "camel:kamelet" template: from: uri: kamelet:source diff --git a/aws-redshift-sink.kamelet.yaml b/kamelets/aws-redshift-sink.kamelet.yaml similarity index 73% rename from aws-redshift-sink.kamelet.yaml rename to kamelets/aws-redshift-sink.kamelet.yaml index 11e23b953..9c51ad327 100644 --- a/aws-redshift-sink.kamelet.yaml +++ b/kamelets/aws-redshift-sink.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -14,15 +14,17 @@ # See the License for the specific language governing permissions and # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-redshift-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNjE1IDE3ODMuNyIgdmlld0JveD0iMCAwIDE2MTUgMTc4My43IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im04MDcuNSAxMzYzLjggNjc4LjMgMTYxLjV2LTEyNzAuNWwtNjc4LjMgMTYxLjV6IiBmaWxsPSIjMjA1Yjk3Ii8+PHBhdGggZD0ibTE0ODUuOCAyNTQuOCAxMjkuMiA2NC42djExNDEuM2wtMTI5LjIgNjQuNnptLTY3OC4zIDExMDktNjc4LjMgMTYxLjV2LTEyNzAuNWw2NzguMyAxNjEuNXoiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtMTI5LjIgMjU0LjgtMTI5LjIgNjQuNnYxMTQxLjNsMTI5LjIgNjQuNnoiIGZpbGw9IiMyMDViOTciLz48cGF0aCBkPSJtOTc5LjggMTc4My43IDI1OC40LTEyOS4ydi0xNTI1LjNsLTI1OC40LTEyOS4yLTc5IDg0N3oiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtNjM1LjIgMTc4My43LTI1OC40LTEyOS4ydi0xNTI1LjNsMjU4LjQtMTI5LjIgNzkgODQ3eiIgZmlsbD0iIzIwNWI5NyIvPjxwYXRoIGQ9Im02MzUuMiAwaDM0OC4xdjE3ODAuMWgtMzQ4LjF6IiBmaWxsPSIjMmU3M2I3Ii8+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS Redshift" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -31,11 +33,11 @@ spec: description: |- Send data to an AWS Redshift 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: + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet needs to receive as input something like: + Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' required: @@ -48,23 +50,23 @@ spec: properties: serverName: title: Server Name - description: Server Name for the data source + description: The server name for the data source. type: string example: localhost serverPort: title: Server Port - description: Server Port for the data source + description: The server port for the AWS RedShi data source. type: string default: 5439 username: title: Username - description: The username to use for accessing a secured AWS Redshift Database + description: The username to access a secured AWS Redshift Database. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured AWS Redshift Database + description: The password to access a secured AWS Redshift Database. type: string format: password x-descriptors: @@ -72,12 +74,12 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the AWS Redshift Database + description: The query to execute against the AWS Redshift Database. type: string example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name - description: The Database Name we are pointing + description: The name of the AWS RedShift Database. type: string types: in: @@ -86,28 +88,24 @@ spec: - "camel:jackson" - "camel:kamelet" - "camel:sql" - - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.5" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" + - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.18" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" template: beans: - name: dsBean type: "#class:org.apache.commons.dbcp2.BasicDataSource" - property: - - key: username - value: '{{username}}' - - key: password - value: '{{password}}' - - key: url - value: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}' - - key: driverClassName - value: 'com.amazon.redshift.jdbc.Driver' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'com.amazon.redshift.jdbc.Driver' from: uri: "kamelet:source" steps: - unmarshal: - json: + json: library: Jackson - - to: + - to: uri: "sql:{{query}}" parameters: dataSource: "#bean:{{dsBean}}" diff --git a/kamelets/aws-s3-sink.kamelet.yaml b/kamelets/aws-s3-sink.kamelet.yaml new file mode 100644 index 000000000..283d52e93 --- /dev/null +++ b/kamelets/aws-s3-sink.kamelet.yaml @@ -0,0 +1,143 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-s3-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS S3" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "AWS S3 Sink" + description: |- + Upload data to an Amazon S3 Bucket. + + The basic authentication method for the S3 service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method. + + In the header, you can optionally set the `file` / `ce-partition` property to specify the name of the file to upload. + + If you do not set the property in the header, the Kamelet uses the exchange ID for the file name. + required: + - bucketNameOrArn + - region + type: object + properties: + bucketNameOrArn: + title: Bucket Name + description: The S3 Bucket name or Amazon Resource Name (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 + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + autoCreateBucket: + title: Autocreate Bucket + description: Specifies to automatically create the S3 bucket. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + keyName: + title: Key Name + description: The key name for saving an element in the bucket. + type: string + dependencies: + - "camel:core" + - "camel:aws2-s3" + - "camel:kamelet" + template: + from: + uri: "kamelet:source" + steps: + - choice: + precondition: true + when: + - simple: '${propertiesExist:!keyName}' + steps: + - choice: + when: + - simple: "${header[file]}" + steps: + - set-header: + name: CamelAwsS3Key + simple: "${header[file]}" + - simple: "${header[ce-file]}" + steps: + - set-header: + name: CamelAwsS3Key + simple: "${header[ce-file]}" + otherwise: + steps: + - set-header: + name: CamelAwsS3Key + simple: "${exchangeId}" + - to: + uri: "aws2-s3:{{bucketNameOrArn}}" + parameters: + secretKey: "{{?secretKey}}" + accessKey: "{{?accessKey}}" + region: "{{region}}" + autoCreateBucket: "{{autoCreateBucket}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + keyName: "{{?keyName}}" diff --git a/kamelets/aws-s3-source.kamelet.yaml b/kamelets/aws-s3-source.kamelet.yaml new file mode 100644 index 000000000..32990cd30 --- /dev/null +++ b/kamelets/aws-s3-source.kamelet.yaml @@ -0,0 +1,141 @@ +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-s3-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS S3" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "AWS S3 Source" + description: |- + Receive data from an Amazon S3 Bucket. + + The basic authentication method for the S3 service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method. + + Two headers will be duplicated with different names for clarity at sink level, CamelAwsS3Key will be duplicated into aws.s3.key and CamelAwsS3BucketName will be duplicated in aws.s3.bucket.name + required: + - bucketNameOrArn + - region + type: object + properties: + bucketNameOrArn: + title: Bucket Name + description: The S3 Bucket name or Amazon Resource Name (ARN). + type: string + deleteAfterRead: + title: Auto-delete Objects + description: Specifies to delete objects after consuming them. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true + accessKey: + title: Access Key + description: The access key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + autoCreateBucket: + title: Autocreate Bucket + description: Specifies to automatically create the S3 bucket. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + prefix: + title: Prefix + description: The AWS S3 bucket prefix to consider while searching. + type: string + example: 'folder/' + ignoreBody: + title: Ignore Body + description: If true, the S3 Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the S3 object is put in the body. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected bucket. + type: integer + default: 500 + maxMessagesPerPoll: + title: Max Messages Per Poll + description: Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited. + type: integer + default: 10 + dependencies: + - "camel:core" + - "camel:aws2-s3" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + template: + beans: + - name: renameHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAwsS3' + renamingPrefix: 'aws.s3.' + mode: 'filtering' + selectedHeaders: 'CamelAwsS3Key,CamelAwsS3BucketName' + from: + uri: "aws2-s3:{{bucketNameOrArn}}" + parameters: + autoCreateBucket: "{{autoCreateBucket}}" + secretKey: "{{?secretKey}}" + accessKey: "{{?accessKey}}" + region: "{{region}}" + ignoreBody: "{{ignoreBody}}" + deleteAfterRead: "{{deleteAfterRead}}" + prefix: "{{?prefix}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" + maxMessagesPerPoll: "{{maxMessagesPerPoll}}" + steps: + - process: + ref: "{{renameHeaders}}" + - to: "kamelet:sink" diff --git a/aws-s3-streaming-upload-sink.kamelet.yaml b/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml similarity index 58% rename from aws-s3-streaming-upload-sink.kamelet.yaml rename to kamelets/aws-s3-streaming-upload-sink.kamelet.yaml index 537b52706..c0c014904 100644 --- a/aws-s3-streaming-upload-sink.kamelet.yaml +++ b/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-s3-streaming-upload-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS S3" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -14,17 +33,19 @@ spec: title: "AWS S3 Streaming upload Sink" description: |- Upload data to AWS S3 in streaming upload mode. + + Access Key/Secret Key are the basic method for authenticating to the AWS S3 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'. + + When using a default Credentials Provider the S3 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. required: - bucketNameOrArn - - accessKey - - secretKey - region - keyName type: object properties: bucketNameOrArn: title: Bucket Name - description: The S3 Bucket name or ARN. + description: The S3 Bucket name or Amazon Resource Name (ARN).. type: string accessKey: title: Access Key @@ -44,9 +65,9 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to. + description: The AWS region to access. type: string - example: eu-west-1 + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] autoCreateBucket: title: Autocreate Bucket description: Setting the autocreation of the S3 bucket bucketName. @@ -62,13 +83,17 @@ spec: batchMessageNumber: title: Batch Message Number description: The number of messages composing a batch in streaming upload mode - type: int + type: integer default: 10 batchSize: title: Batch Size description: The batch size (in bytes) in streaming upload mode - type: int + type: integer default: 1000000 + streamingUploadTimeout: + title: Streaming Upload Timeout + description: While streaming upload mode is true, this option set the timeout to complete upload + type: integer 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 @@ -80,11 +105,22 @@ spec: type: string useDefaultCredentialsProvider: title: Default Credentials Provider - description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + description: Set whether the S3 client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in. type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false dependencies: - "camel:aws2-s3" - "camel:kamelet" @@ -98,7 +134,6 @@ spec: secretKey: "{{?secretKey}}" accessKey: "{{?accessKey}}" region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" autoCreateBucket: "{{autoCreateBucket}}" streamingUploadMode: "true" restartingPolicy: "{{restartingPolicy}}" @@ -106,4 +141,7 @@ spec: batchSize: "{{batchSize}}" namingStrategy: "{{namingStrategy}}" keyName: "{{keyName}}" - + streamingUploadTimeout: "{{?streamingUploadTimeout}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml b/kamelets/aws-sns-sink.kamelet.yaml similarity index 52% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml rename to kamelets/aws-sns-sink.kamelet.yaml index 3db0c4ef0..2f789459f 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml +++ b/kamelets/aws-sns-sink.kamelet.yaml @@ -1,33 +1,56 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-sns-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj48L3BhdGg+DQoJCTxwYXRoIGQ9Ik0zNy43NSwyMTMuMjMzIEwyMi44NzUsMjA5LjA2NyBMOC44MTcsMTkzLjAzMyBMMjUuODk5LDE5MC4yMjQgTDM3Ljc1LDIxMy4yMzMiIGZpbGw9IiM5OTVCODAiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTAsMTkxLjAxNyBMMTUuMjA0LDE5NC4xMDggTDE3LjQxMSwxOTAuMjI2IEwxNy40MTEsNTguNTAzIEwxNS4yMDQsNTUuOTQyIEwwLDY0LjYgTDAsMTkxLjAxNyIgZmlsbD0iIzdCM0Y2NSI+PC9wYXRoPg0KCQk8cGF0aCBkPSJNNzMuOTMzLDY5LjcwOCBMMTUuMjA4LDU1Ljk0MiBMMTUuMjA4LDE5NC4xMDggTDI0LjAwNiwxOTMuMjkgTDM3Ljc1LDIxMy4yMzMgTDQ4LjM1LDE5MS4wMjggTDczLjkzMywxODguNjUgTDczLjkzMyw2OS43MDgiIGZpbGw9IiNDMTdCOUQiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTMzLjk1OCwxOTguMTMzIEw2MC4wMjEsMjAzLjM4MyBMNjEuNzM3LDE5OS4zMzggTDYxLjczNywzNy40NCBMNjAuMDIxLDMzLjc3NSBMMzMuOTU4LDQ2Ljk4MyBMMzMuOTU4LDE5OC4xMzMiIGZpbGw9IiM3QjNGNjUiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTIwOC43MzQsODEuNTE2IEw2MC4wMjEsMzMuNzc1IEw2MC4wMjEsMjAzLjM4NyBMNzcuMjQyLDIwMS4xNzEgTDk4Ljg3NSwyMzIuMDMzIEwxMTYuMDAxLDE5Ni4xODMgTDIwOC43MzQsMTg0LjI1IEwyMDguNzM0LDgxLjUxNiIgZmlsbD0iI0MxN0I5RCI+PC9wYXRoPg0KCQk8cGF0aCBkPSJNMTgxLjgzMywyNTYuNDkyIEwxNDQuMjY3LDI0NS45NjcgTDEwOC43NTgsMjA1LjQ2NyBMMTU0Ljc5MSwyMDQuOTk5IEwxODEuODMzLDI1Ni40OTIiIGZpbGw9IiM5OTVCODAiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTg5LjU5MSwyMDguOTUgTDEyNy45MjEsMjE2LjM2NyBMMTMwLjg5OCwyMTMuODAxIEwxMzAuODk4LDQuMTE3IEwxMjcuOTIxLDAgTDg5LjU5MSwxOS4xNTggTDg5LjU5MSwyMDguOTUiIGZpbGw9IiM3QjNGNjUiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTI1Niw2NC4wMzMgTDEyNy45MjUsMCBMMTI3LjkyNSwyMTYuMzY3IEwxNTAuNTIyLDIxMS44MzkgTDE4MS44MzMsMjU2LjQ5MiBMMjA4LjczNCwyMDAuMTgzIEwyMDguNzE3LDIwMC4xODEgTDI1NiwxOTAuNzA4IEwyNTYsNjQuMDMzIiBmaWxsPSIjQzE3QjlEIj48L3BhdGg+DQoJPC9nPg0KPC9zdmc+DQo=" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS SNS" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: sink spec: definition: title: AWS SNS Sink description: |- - Send message to an AWS SNS Topic + Send message to an Amazon Simple Notification Service (SNS) topic. + + The basic authentication method for the SNS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the SNS client loads the credentials through this provider and doesn't use the basic authentication method. + + In the header, you can optionally set the `subject` / `ce-subject` property to specify the subject of the message. required: - topicNameOrArn - - accessKey - - secretKey - region type: object properties: topicNameOrArn: title: Topic Name - description: The SQS Topic name or ARN + description: The SNS topic name name or Amazon Resource Name (ARN). type: string accessKey: title: Access Key - description: The access key obtained from AWS + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -35,7 +58,7 @@ spec: - urn:camel:group:credentials secretKey: title: Secret Key - description: The secret key obtained from AWS + description: The secret key obtained from AWS. type: string format: password x-descriptors: @@ -43,9 +66,9 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to + description: The AWS region to access. type: string - example: eu-west-1 + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] autoCreateTopic: title: Autocreate Topic description: Setting the autocreation of the SNS topic. @@ -60,13 +83,37 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false dependencies: - - "camel:kamelet" - - "camel:aws2-sns" + - "camel:core" + - "camel:aws2-sns" + - "camel:kamelet" template: from: uri: kamelet:source steps: + - choice: + when: + - simple: "${header[subject]}" + steps: + - set-header: + name: CamelAwsSnsSubject + simple: "${header[subject]}" + - simple: "${header[ce-subject]}" + steps: + - set-header: + name: CamelAwsSnsSubject + simple: "${header[ce-subject]}" - to: uri: "aws2-sns:{{topicNameOrArn}}" parameters: @@ -75,3 +122,5 @@ spec: secretKey: "{{?secretKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/kamelets/aws-sqs-fifo-sink.kamelet.yaml b/kamelets/aws-sqs-fifo-sink.kamelet.yaml new file mode 100644 index 000000000..6062ff68c --- /dev/null +++ b/kamelets/aws-sqs-fifo-sink.kamelet.yaml @@ -0,0 +1,175 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-sqs-fifo-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAwIDEwMCIKICAgaGVpZ2h0PSI3Mi4xOTk5OTciCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDU5Ljg0OTk5OCA3Mi4xOTk5OTciCiAgIHdpZHRoPSI1OS44NDk5OTgiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxNDUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImRvd25sb2FkLnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wLjIgKGU4NmM4NzA4NzksIDIwMjEtMDEtMTUpIj48bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExNTEiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxNDkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMTYiCiAgICAgaWQ9Im5hbWVkdmlldzE0NyIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgZml0LW1hcmdpbi10b3A9IjAuMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAuMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwLjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAuMSIKICAgICBpbmtzY2FwZTp6b29tPSI4LjE5IgogICAgIGlua3NjYXBlOmN4PSIyOS45MjUiCiAgICAgaW5rc2NhcGU6Y3k9IjM2LjEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMTQ1IiAvPjxnCiAgICAgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAuMDc1LC0xMy45KSI+PGcKICAgICAgIGlkPSJnMTQyIj48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTQuNDYyLDQwLjQ5NCA1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTIwIiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDIwLjE3OSwyOC45MDggMjAuMTc5LDM3LjM0NCA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMjIiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI0OS45OTcsODYgMjAuMTksNzEuMDk0IDIwLjE5LDYyLjY1NCA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiNkOWE3NDEiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDc5LjgyNSwyOC45MTQgNzkuODIzLDM3LjM1IDUwLjAwMywyOC4zOTkgIgogICAgICAgICBpZD0icG9seWdvbjEyNiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjQ5Ljk5Nyw4NiA3OS44MDYsNzEuMDk5IDc5LjgwNiw2Mi42NiA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI4IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iMjAuMTc5LDI4LjkwOCAyMy45ODksMjcuMDA0IDIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzAiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI1MC4wMDEsNDAuODMyIDM5LjAxOSw0Mi4yMjkgMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgIgogICAgICAgICBpZD0icG9seWdvbjEzMiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjODc2OTI5IgogICAgICAgICBwb2ludHM9IjM1LjA4Myw0Mi43MjkgMjcuOTU0LDQzLjYzNyAyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTM0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM2MjRhMWUiCiAgICAgICAgIHBvaW50cz0iNzkuODIzLDM3LjM1IDU0LjQ4MSw0MC40OTYgMjMuOTg3LDM2LjIwMSA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzYiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iI2ZhZDc5MSIKICAgICAgICAgcG9pbnRzPSI3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2IDIzLjk4NSw2My43OTMgNDkuOTk5LDcxLjYgIgogICAgICAgICBpZD0icG9seWdvbjEzOCIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjUwLjAwMSw0MC44MzIgNzkuODA4LDQ0LjYyOSA3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTQwIiAvPjwvZz48L2c+PC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS SQS" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: sink +spec: + definition: + title: AWS SQS FIFO Sink + description: |- + + Send message to an AWS SQS FIFO Queue. + + Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'. + + When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. + required: + - queueNameOrArn + - region + type: object + properties: + queueNameOrArn: + title: Queue Name + description: The SQS Queue 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 + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + contentBasedDeduplication: + title: Content-Based Deduplication + description: Use content-based deduplication (should be enabled in the SQS FIFO queue first) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreateQueue: + title: Autocreate Queue + description: Setting the autocreation of the SQS queue. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + amazonAWSHost: + title: AWS Host + description: The hostname of the Amazon AWS cloud. + type: string + default: amazonaws.com + protocol: + title: Protocol + description: The underlying protocol used to communicate with SQS + type: string + example: http or https + default: https + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + dependencies: + - "camel:aws2-sqs" + - "camel:core" + - "camel:kamelet" + template: + from: + uri: kamelet:source + steps: + - set-property: + name: contentBasedDeduplication + constant: "{{contentBasedDeduplication}}" + - choice: + when: + - simple: "${header[group]}" + steps: + - set-property: + name: CamelAwsMessageGroupId + simple: "${header[group]}" + - simple: "${header[ce-group]}" + steps: + - set-property: + name: CamelAwsMessageGroupId + simple: "${header[ce-group]}" + otherwise: + steps: + - set-property: + name: CamelAwsMessageGroupId + simple: "${exchangeId}" + - choice: + when: + - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'" + steps: + - to: + uri: "aws2-sqs:{{queueNameOrArn}}" + parameters: + autoCreateQueue: "{{autoCreateQueue}}" + accessKey: "{{?accessKey}}" + secretKey: "{{?secretKey}}" + region: "{{region}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + messageGroupIdStrategy: "usePropertyValue" + messageDeduplicationIdStrategy: "useContentBasedDeduplication" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + otherwise: + steps: + - to: + uri: "aws2-sqs:{{queueNameOrArn}}" + parameters: + autoCreateQueue: "{{autoCreateQueue}}" + accessKey: "{{?accessKey}}" + secretKey: "{{?secretKey}}" + region: "{{region}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + messageGroupIdStrategy: "usePropertyValue" + messageDeduplicationIdStrategy: "useExchangeId" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/kamelets/aws-sqs-sink.kamelet.yaml b/kamelets/aws-sqs-sink.kamelet.yaml new file mode 100644 index 000000000..1069976ee --- /dev/null +++ b/kamelets/aws-sqs-sink.kamelet.yaml @@ -0,0 +1,124 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-sqs-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAwIDEwMCIKICAgaGVpZ2h0PSI3Mi4xOTk5OTciCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDU5Ljg0OTk5OCA3Mi4xOTk5OTciCiAgIHdpZHRoPSI1OS44NDk5OTgiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxNDUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImRvd25sb2FkLnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wLjIgKGU4NmM4NzA4NzksIDIwMjEtMDEtMTUpIj48bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExNTEiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxNDkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMTYiCiAgICAgaWQ9Im5hbWVkdmlldzE0NyIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgZml0LW1hcmdpbi10b3A9IjAuMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAuMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwLjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAuMSIKICAgICBpbmtzY2FwZTp6b29tPSI4LjE5IgogICAgIGlua3NjYXBlOmN4PSIyOS45MjUiCiAgICAgaW5rc2NhcGU6Y3k9IjM2LjEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMTQ1IiAvPjxnCiAgICAgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAuMDc1LC0xMy45KSI+PGcKICAgICAgIGlkPSJnMTQyIj48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTQuNDYyLDQwLjQ5NCA1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTIwIiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDIwLjE3OSwyOC45MDggMjAuMTc5LDM3LjM0NCA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMjIiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI0OS45OTcsODYgMjAuMTksNzEuMDk0IDIwLjE5LDYyLjY1NCA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiNkOWE3NDEiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDc5LjgyNSwyOC45MTQgNzkuODIzLDM3LjM1IDUwLjAwMywyOC4zOTkgIgogICAgICAgICBpZD0icG9seWdvbjEyNiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjQ5Ljk5Nyw4NiA3OS44MDYsNzEuMDk5IDc5LjgwNiw2Mi42NiA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI4IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iMjAuMTc5LDI4LjkwOCAyMy45ODksMjcuMDA0IDIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzAiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI1MC4wMDEsNDAuODMyIDM5LjAxOSw0Mi4yMjkgMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgIgogICAgICAgICBpZD0icG9seWdvbjEzMiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjODc2OTI5IgogICAgICAgICBwb2ludHM9IjM1LjA4Myw0Mi43MjkgMjcuOTU0LDQzLjYzNyAyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTM0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM2MjRhMWUiCiAgICAgICAgIHBvaW50cz0iNzkuODIzLDM3LjM1IDU0LjQ4MSw0MC40OTYgMjMuOTg3LDM2LjIwMSA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzYiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iI2ZhZDc5MSIKICAgICAgICAgcG9pbnRzPSI3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2IDIzLjk4NSw2My43OTMgNDkuOTk5LDcxLjYgIgogICAgICAgICBpZD0icG9seWdvbjEzOCIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjUwLjAwMSw0MC44MzIgNzkuODA4LDQ0LjYyOSA3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTQwIiAvPjwvZz48L2c+PC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS SQS" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: sink +spec: + definition: + title: AWS SQS Sink + description: |- + Send messages to an Amazon Simple Queue Service (SQS) queue. + + The basic authentication method for the SQS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the SQS client loads the credentials through this provider and doesn't use the basic authentication method. + required: + - queueNameOrArn + - region + type: object + properties: + queueNameOrArn: + title: Queue Name + description: The SQS Queue name or or Amazon Resource Name (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 + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + autoCreateQueue: + title: Autocreate Queue + description: Automatically create the SQS queue. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + amazonAWSHost: + title: AWS Host + description: The hostname of the Amazon AWS cloud. + type: string + default: amazonaws.com + protocol: + title: Protocol + description: The underlying protocol used to communicate with SQS. + type: string + example: http or https + default: https + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + dependencies: + - "camel:aws2-sqs" + - "camel:kamelet" + template: + from: + uri: kamelet:source + steps: + - to: + uri: "aws2-sqs:{{queueNameOrArn}}" + parameters: + autoCreateQueue: "{{autoCreateQueue}}" + accessKey: "{{?accessKey}}" + secretKey: "{{?secretKey}}" + region: "{{region}}" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/kamelets/aws-sqs-source.kamelet.yaml b/kamelets/aws-sqs-source.kamelet.yaml new file mode 100644 index 000000000..71a5ac775 --- /dev/null +++ b/kamelets/aws-sqs-source.kamelet.yaml @@ -0,0 +1,174 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-sqs-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAwIDEwMCIKICAgaGVpZ2h0PSI3Mi4xOTk5OTciCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDU5Ljg0OTk5OCA3Mi4xOTk5OTciCiAgIHdpZHRoPSI1OS44NDk5OTgiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxNDUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImRvd25sb2FkLnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wLjIgKGU4NmM4NzA4NzksIDIwMjEtMDEtMTUpIj48bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExNTEiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxNDkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMTYiCiAgICAgaWQ9Im5hbWVkdmlldzE0NyIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgZml0LW1hcmdpbi10b3A9IjAuMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAuMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwLjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAuMSIKICAgICBpbmtzY2FwZTp6b29tPSI4LjE5IgogICAgIGlua3NjYXBlOmN4PSIyOS45MjUiCiAgICAgaW5rc2NhcGU6Y3k9IjM2LjEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMTQ1IiAvPjxnCiAgICAgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAuMDc1LC0xMy45KSI+PGcKICAgICAgIGlkPSJnMTQyIj48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTQuNDYyLDQwLjQ5NCA1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTIwIiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDIwLjE3OSwyOC45MDggMjAuMTc5LDM3LjM0NCA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMjIiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI0OS45OTcsODYgMjAuMTksNzEuMDk0IDIwLjE5LDYyLjY1NCA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiNkOWE3NDEiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDc5LjgyNSwyOC45MTQgNzkuODIzLDM3LjM1IDUwLjAwMywyOC4zOTkgIgogICAgICAgICBpZD0icG9seWdvbjEyNiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjQ5Ljk5Nyw4NiA3OS44MDYsNzEuMDk5IDc5LjgwNiw2Mi42NiA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI4IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iMjAuMTc5LDI4LjkwOCAyMy45ODksMjcuMDA0IDIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzAiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI1MC4wMDEsNDAuODMyIDM5LjAxOSw0Mi4yMjkgMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgIgogICAgICAgICBpZD0icG9seWdvbjEzMiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjODc2OTI5IgogICAgICAgICBwb2ludHM9IjM1LjA4Myw0Mi43MjkgMjcuOTU0LDQzLjYzNyAyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTM0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM2MjRhMWUiCiAgICAgICAgIHBvaW50cz0iNzkuODIzLDM3LjM1IDU0LjQ4MSw0MC40OTYgMjMuOTg3LDM2LjIwMSA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzYiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iI2ZhZDc5MSIKICAgICAgICAgcG9pbnRzPSI3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2IDIzLjk4NSw2My43OTMgNDkuOTk5LDcxLjYgIgogICAgICAgICBpZD0icG9seWdvbjEzOCIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjUwLjAwMSw0MC44MzIgNzkuODA4LDQ0LjYyOSA3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTQwIiAvPjwvZz48L2c+PC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS SQS" + camel.apache.org/keda.type: "aws-sqs-queue" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "AWS SQS Source" + description: |- + Receive data from AWS SQS. + + Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'. + + When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. + + Two headers will be duplicated with different names for clarity at sink level, CamelAwsSqsMessageId will be duplicated into aws.sqs.message.id and CamelAwsSqsReceiptHandle will be duplicated in aws.sqs.receipt.handle + required: + - queueNameOrArn + - region + type: object + properties: + queueNameOrArn: + title: Queue Name + description: The SQS Queue Name or ARN + type: string + deleteAfterRead: + title: Auto-delete Messages + description: Delete messages after consuming them + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true + accessKey: + title: Access Key + description: The access key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + - urn:keda:authentication:awsAccessKeyID + - urn:keda:required + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + - urn:keda:authentication:awsSecretAccessKey + - urn:keda:required + region: + title: AWS Region + description: The AWS region to access. + type: string + x-descriptors: + - urn:keda:metadata:awsRegion + - urn:keda:required + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + autoCreateQueue: + title: Autocreate Queue + description: Setting the autocreation of the SQS queue. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + amazonAWSHost: + title: AWS Host + description: The hostname of the Amazon AWS cloud. + type: string + default: amazonaws.com + protocol: + title: Protocol + description: The underlying protocol used to communicate with SQS + type: string + example: http or https + default: https + queueURL: + title: Queue URL + description: The full SQS Queue URL (required if using KEDA) + type: string + x-descriptors: + - urn:keda:metadata:queueURL + - urn:keda:required + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected stream + type: integer + default: 500 + greedy: + title: Greedy Scheduler + description: If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + dependencies: + - "camel:core" + - "camel:aws2-sqs" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + template: + beans: + - name: renameHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAwsSqs' + renamingPrefix: 'aws.sqs.' + mode: 'filtering' + selectedHeaders: 'CamelAwsSqsReceiptHandle,CamelAwsSqsMessageId' + from: + uri: "aws2-sqs:{{queueNameOrArn}}" + parameters: + autoCreateQueue: "{{autoCreateQueue}}" + secretKey: "{{?secretKey}}" + accessKey: "{{?accessKey}}" + region: "{{region}}" + deleteAfterRead: "{{deleteAfterRead}}" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" + greedy: "{{greedy}}" + steps: + - process: + ref: "{{renameHeaders}}" + - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml b/kamelets/azure-storage-blob-sink.kamelet.yaml similarity index 94% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml rename to kamelets/azure-storage-blob-sink.kamelet.yaml index f4ef2479f..bc0819176 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml +++ b/kamelets/azure-storage-blob-sink.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -15,22 +15,24 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: - name: azure-storage-blob-append-sink + name: azure-storage-blob-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Azure Storage Blob" + camel.apache.org/kamelet.namespace: "Azure" labels: camel.apache.org/kamelet.type: "sink" spec: definition: - title: "Azure Storage Blob Append Sink" + title: "Azure Storage Blob Sink" description: |- - Upload data in append mode to Azure Storage Blob. + Upload data to Azure Storage Blob. In the header, you can set the `file` / `ce-file` property to specify the filename to upload. If you do set property in the header, the Kamelet uses the exchange ID as filename. required: @@ -91,6 +93,5 @@ spec: uri: "azure-storage-blob://{{accountName}}/{{containerName}}" parameters: accessKey: "{{?accessKey}}" - operation: "commitAppendBlob" - blobType: "appendBlob" + operation: "uploadBlockBlob" credentialType: "{{credentialType}}" diff --git a/azure-storage-blob-source.kamelet.yaml b/kamelets/azure-storage-blob-source.kamelet.yaml similarity index 71% rename from azure-storage-blob-source.kamelet.yaml rename to kamelets/azure-storage-blob-source.kamelet.yaml index f53aaa417..4ba65b3a8 100644 --- a/azure-storage-blob-source.kamelet.yaml +++ b/kamelets/azure-storage-blob-source.kamelet.yaml @@ -1,46 +1,63 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: azure-storage-blob-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Azure Storage Blob" + camel.apache.org/kamelet.namespace: "Azure" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Azure Storage Blob Source" description: |- - Consume Files from Azure Storage Blob. + Consume files from Azure Storage Blob. + + Two headers will be duplicated with different names for clarity at sink level, CamelAzureStorageBlobETag will be duplicated into azure.storage.blob.e.tag and CamelAzureStorageBlobBlobSize will be duplicated in azure.storage.blob.blob.size required: - accountName - containerName - - accessKey type: object properties: accountName: title: Account Name description: The Azure Storage Blob account name. type: string + x-descriptors: + - urn:camel:group:credentials containerName: title: Container Name description: The Azure Storage Blob container name. type: string accessKey: title: Access Key - description: The Azure Storage Blob access Key. + description: The Azure Storage Blob access key. type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials - credentialType: - title: Credential Type - description: Determines the credential strategy to adopt. Possible values are SHARED_ACCOUNT_KEY, SHARED_KEY_CREDENTIAL and AZURE_IDENTITY - type: string - default: SHARED_ACCOUNT_KEY delay: title: Delay description: The number of milliseconds before the next poll of the selected blob. @@ -53,20 +70,37 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + credentialType: + title: Credential Type + description: Determines the credential strategy to adopt. + type: string + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + default: "SHARED_ACCOUNT_KEY" dependencies: - - "camel:azure-storage-blob" - - "camel:jsonpath" - - "camel:core" - - "camel:timer" - - "camel:kamelet" + - "camel:azure-storage-blob" + - "camel:kamelet" + - "camel:core" + - "camel:jsonpath" + - "camel:timer" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" template: + beans: + - name: duplicateHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAzureStorageBlob' + renamingPrefix: 'azure.storage.blob.' + mode: 'filtering' + selectedHeaders: 'CamelAzureStorageBlobETag,CamelAzureStorageBlobBlobSize' from: uri: "azure-storage-blob:{{accountName}}/{{containerName}}" parameters: - accessKey: "{{accessKey}}" + accessKey: "{{?accessKey}}" credentialType: "{{credentialType}}" delay: "{{delay}}" steps: + - process: + ref: "{{duplicateHeaders}}" - to: "kamelet:sink" - choice: precondition: true @@ -77,6 +111,6 @@ spec: uri: "azure-storage-blob:{{accountName}}/{{containerName}}" parameters: operation: "deleteBlob" - accessKey: "{{accessKey}}" + accessKey: "{{?accessKey}}" credentialType: "{{credentialType}}" diff --git a/kamelets/azure-storage-datalake-sink.kamelet.yaml b/kamelets/azure-storage-datalake-sink.kamelet.yaml new file mode 100644 index 000000000..732e49c31 --- /dev/null +++ b/kamelets/azure-storage-datalake-sink.kamelet.yaml @@ -0,0 +1,113 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: azure-storage-datalake-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDExNTguMiA4NjAuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzA5NUNBMjt9DQoJLnN0MXtmaWxsOiNGRkZGRkY7fQ0KCS5zdDJ7ZmlsbDojMzJCRUVEO30NCgkuc3Qze2ZpbGw6IzFCMUIyMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkyNy43LDE5Ny44SDYwOC44Yy0zLjQsMC4xLTYuOC0wLjktOS41LTNsLTkxLjItNjAuN2MtMi45LTEuNy02LjEtMi42LTkuNS0yLjZIMjMwLjVjLTkuMywwLTE3LDcuNC0xNy4yLDE2LjgNCgl2NTYzLjdjMC4yLDkuMyw3LjksMTYuOCwxNy4yLDE2LjhoNjk3LjFjOS4zLDAsMTctNy41LDE3LjItMTYuOHYtNDk3Qzk0NC45LDIwNS42LDkzNy4yLDE5Ny44LDkyNy43LDE5Ny44TDkyNy43LDE5Ny44eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTQzOS4zLDE2NC4zSDI4Ni45Yy0zLjgsMC02LjksMy4xLTYuOSw2Ljl2MTkuNGMwLDMuOCwzLjEsNi45LDYuOSw2LjloMTUyLjNjMy44LDAsNi45LTMuMSw2LjktNi45DQoJYzAsMCwwLDAsMCwwdi0xOS40QzQ0Ni4xLDE2Ny4zLDQ0My4xLDE2NC4zLDQzOS4zLDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MiIgZD0iTTMwOC40LDE2NC4zaC0yMy43Yy0yLjYsMC00LjcsMi4xLTQuNyw0Ljd2MjMuN2MwLDIuNiwyLjEsNC43LDQuNyw0LjdoMjMuN2MyLjYsMCw0LjctMi4xLDQuNy00LjdWMTY5DQoJQzMxMy4yLDE2Ni40LDMxMS4xLDE2NC4zLDMwOC40LDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MyIgZD0iTTkyNy43LDE5N0g1NzkuMWMtNC42LTAuMS05LDEuOC0xMiw1LjJMNTA5LDI1OC4xYy0zLjMsMy03LjYsNC43LTEyLDQuN0gyMzAuNWMtOS41LDAtMTcuMiw3LjctMTcuMiwxNy4ybDAsMA0KCXY0MzAuM2MwLjIsOS4zLDcuOSwxNi44LDE3LjIsMTYuOGg2OTcuMWM5LjMsMCwxNy03LjQsMTcuMi0xNi44VjIxNWMwLjEtMi4zLTAuMy00LjctMS4xLTYuOUM5NDEuMywyMDEuNCw5MzQuOSwxOTcsOTI3LjcsMTk3eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTYyOS45LDI4OC4yYy0xLjEtMC4zLTIuMy0wLjMtMy41LDBjMCwwLTMuOSwwLTUuNiwzbC0xMzYsMTk3LjVjLTEuMiwyLjEtMS4yLDQuOCwwLDYuOWMxLjMsMi40LDMuNyw0LDYuNSw0LjMNCgloODAuNWwtMzUuNiwxMTkuNmMtMC40LDAuNy0wLjYsMS41LTAuNiwyLjJjMCwwLjgsMC4xLDEuNiwwLjQsMi4zYzAuMywwLjcsMC43LDEuNCwxLjMsMS45YzAuNiwwLjYsMS4zLDEsMiwxLjNjMSwwLjQsMiwwLjQsMywwDQoJYzIuNiwwLDMuOSwwLDUuNi0zTDY4OCw0MjMuN3YtNC4zYy0wLjItMy45LTMuNC02LjktNy4zLTYuOWgtODYuMWwzNC45LTExNy41QzYzMS4yLDI5My4yLDYzMS4zLDI5MC4zLDYyOS45LDI4OC4yTDYyOS45LDI4OC4yeiIvPg0KPC9zdmc+DQo=" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake" + camel.apache.org/kamelet.namespace: "Azure" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Azure Storage Blob Data Lake Sink" + description: |- + Send data to Azure Storage Blob Data Lake. + required: + - accountName + - clientId + - clientSecret + - tenantId + - fileSystemName + type: object + properties: + accountName: + title: Account Name + description: The Azure Storage Blob Data lake account name. + type: string + x-descriptors: + - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob Data lake client Id. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob Data lake client secret. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob Data lake tenant id. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + fileSystemName: + title: File System Name + description: The Azure Storage Blob Data lake File system name. + type: string + x-descriptors: + - urn:camel:group:credentials + dependencies: + - "camel:azure-storage-datalake" + - "camel:kamelet" + - "camel:core" + - "camel:timer" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + template: + from: + uri: "kamelet:source" + steps: + - choice: + when: + - simple: "${header[file]}" + steps: + - set-header: + name: CamelAzureStorageDataLakeFileName + simple: "${header[file]}" + - simple: "${header[ce-file]}" + steps: + - set-header: + name: CamelAzureStorageDataLakeFileName + simple: "${header[ce-file]}" + otherwise: + steps: + - set-header: + name: CamelAzureStorageDataLakeFileName + simple: "${exchangeId}" + - to: + uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}" + parameters: + clientId: "{{clientId}}" + clientSecret: "{{clientSecret}}" + tenantId: "{{tenantId}}" + operation: "upload" diff --git a/kamelets/azure-storage-datalake-source.kamelet.yaml b/kamelets/azure-storage-datalake-source.kamelet.yaml new file mode 100644 index 000000000..95dba3df9 --- /dev/null +++ b/kamelets/azure-storage-datalake-source.kamelet.yaml @@ -0,0 +1,100 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: azure-storage-datalake-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDExNTguMiA4NjAuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzA5NUNBMjt9DQoJLnN0MXtmaWxsOiNGRkZGRkY7fQ0KCS5zdDJ7ZmlsbDojMzJCRUVEO30NCgkuc3Qze2ZpbGw6IzFCMUIyMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkyNy43LDE5Ny44SDYwOC44Yy0zLjQsMC4xLTYuOC0wLjktOS41LTNsLTkxLjItNjAuN2MtMi45LTEuNy02LjEtMi42LTkuNS0yLjZIMjMwLjVjLTkuMywwLTE3LDcuNC0xNy4yLDE2LjgNCgl2NTYzLjdjMC4yLDkuMyw3LjksMTYuOCwxNy4yLDE2LjhoNjk3LjFjOS4zLDAsMTctNy41LDE3LjItMTYuOHYtNDk3Qzk0NC45LDIwNS42LDkzNy4yLDE5Ny44LDkyNy43LDE5Ny44TDkyNy43LDE5Ny44eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTQzOS4zLDE2NC4zSDI4Ni45Yy0zLjgsMC02LjksMy4xLTYuOSw2Ljl2MTkuNGMwLDMuOCwzLjEsNi45LDYuOSw2LjloMTUyLjNjMy44LDAsNi45LTMuMSw2LjktNi45DQoJYzAsMCwwLDAsMCwwdi0xOS40QzQ0Ni4xLDE2Ny4zLDQ0My4xLDE2NC4zLDQzOS4zLDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MiIgZD0iTTMwOC40LDE2NC4zaC0yMy43Yy0yLjYsMC00LjcsMi4xLTQuNyw0Ljd2MjMuN2MwLDIuNiwyLjEsNC43LDQuNyw0LjdoMjMuN2MyLjYsMCw0LjctMi4xLDQuNy00LjdWMTY5DQoJQzMxMy4yLDE2Ni40LDMxMS4xLDE2NC4zLDMwOC40LDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MyIgZD0iTTkyNy43LDE5N0g1NzkuMWMtNC42LTAuMS05LDEuOC0xMiw1LjJMNTA5LDI1OC4xYy0zLjMsMy03LjYsNC43LTEyLDQuN0gyMzAuNWMtOS41LDAtMTcuMiw3LjctMTcuMiwxNy4ybDAsMA0KCXY0MzAuM2MwLjIsOS4zLDcuOSwxNi44LDE3LjIsMTYuOGg2OTcuMWM5LjMsMCwxNy03LjQsMTcuMi0xNi44VjIxNWMwLjEtMi4zLTAuMy00LjctMS4xLTYuOUM5NDEuMywyMDEuNCw5MzQuOSwxOTcsOTI3LjcsMTk3eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTYyOS45LDI4OC4yYy0xLjEtMC4zLTIuMy0wLjMtMy41LDBjMCwwLTMuOSwwLTUuNiwzbC0xMzYsMTk3LjVjLTEuMiwyLjEtMS4yLDQuOCwwLDYuOWMxLjMsMi40LDMuNyw0LDYuNSw0LjMNCgloODAuNWwtMzUuNiwxMTkuNmMtMC40LDAuNy0wLjYsMS41LTAuNiwyLjJjMCwwLjgsMC4xLDEuNiwwLjQsMi4zYzAuMywwLjcsMC43LDEuNCwxLjMsMS45YzAuNiwwLjYsMS4zLDEsMiwxLjNjMSwwLjQsMiwwLjQsMywwDQoJYzIuNiwwLDMuOSwwLDUuNi0zTDY4OCw0MjMuN3YtNC4zYy0wLjItMy45LTMuNC02LjktNy4zLTYuOWgtODYuMWwzNC45LTExNy41QzYzMS4yLDI5My4yLDYzMS4zLDI5MC4zLDYyOS45LDI4OC4yTDYyOS45LDI4OC4yeiIvPg0KPC9zdmc+DQo=" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake" + camel.apache.org/kamelet.namespace: "Azure" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Azure Storage Blob Data Lake Source" + description: |- + Consume files from Azure Storage Blob Data Lake. + required: + - accountName + - clientId + - clientSecret + - tenantId + - fileSystemName + type: object + properties: + accountName: + title: Account Name + description: The Azure Storage Blob Data lake account name. + type: string + x-descriptors: + - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob Data lake client Id. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob Data lake client secret. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob Data lake tenant id. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + fileSystemName: + title: File System Name + description: The Azure Storage Blob Data lake File system name. + type: string + x-descriptors: + - urn:camel:group:credentials + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected blob. + type: integer + default: 500 + dependencies: + - "camel:azure-storage-datalake" + - "camel:kamelet" + - "camel:core" + - "camel:timer" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + template: + from: + uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}" + parameters: + clientId: "{{clientId}}" + clientSecret: "{{clientSecret}}" + tenantId: "{{tenantId}}" + delay: "{{delay}}" + steps: + - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml b/kamelets/azure-storage-queue-sink.kamelet.yaml similarity index 67% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml rename to kamelets/azure-storage-queue-sink.kamelet.yaml index f2ea7179d..835829763 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml +++ b/kamelets/azure-storage-queue-sink.kamelet.yaml @@ -1,27 +1,40 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: azure-storage-queue-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OGMtLjIzOCAwLS40NzUgMC0uNzEzLS4yNDRsLTkuMDI0LTcuMzE3djExLjk1MWgyMC42NlYzNy4zMTdsLTkuNzM2IDcuNTYxYy0uNDc1LjI0NC0uOTUuMjQ0LTEuMTg3LjI0NHptMjkuNjgzIDBjLS4yMzggMC0uNzEzIDAtLjcxMy0uMjQ0bC05LjI2MS03LjMxN3YxMS45NTFoMjAuNjZWMzcuMzE3bC05LjczNiA3LjU2MWMtLjQ3NS4yNDQtLjcxMy4yNDQtLjk1LjI0NHpNNjcuNjc4IDBIMjIuNTU5TDAgNDBsMjIuNTU5IDQwSDY3LjQ0TDkwIDQwIDY3LjY3OCAwem03LjgzNiA1Ny4wNzNIMTQuMDExYy0xLjkgMC0zLjMyNS0xLjcwNy0zLjMyNS0zLjY1OVYyOS4yNjhjMC0xLjk1MSAxLjQyNS0zLjY1OCAzLjMyNS0zLjY1OGg2MS41MDRjLjcxMyAwIDEuOSAwIDkuOTc0IDE1LjYxbC4yMzcuNzMyLS4yMzcuNzMyYy04LjA3NCAxNC4zOS05LjI2MSAxNC4zOS05Ljk3NCAxNC4zOXpNNDAuMzcgMzQuNjM0SDIwLjY2bDkuNzM2IDcuODA1em0tMjYuMzU5LTYuMzQxYy0uNDc1IDAtLjk1LjQ4OC0uOTUuOTc2djI0LjE0NmMwIC40ODguNDc1IDEuMjIuOTUgMS4yMkg3NS4wNGMxLjE4OC0xLjIyIDQuNzQ5LTcuMDczIDcuODM3LTEyLjY4My0zLjA4Ny02LjA5OC02Ljg4Ni0xMi40MzktNy44MzctMTMuNjU5SDE0LjAxMXptMjkuOTIxIDIyLjQzOWMwIC43MzItLjcxMyAxLjQ2My0xLjY2MyAxLjQ2M0gxOC45OThjLS43MTMgMC0uOTUtLjczMi0uOTUtMS40NjNWMzIuOTI3YzAtLjczMi4yMzgtLjk3Ni45NS0uOTc2SDQyLjI3Yy43MTIgMCAxLjY2My4yNDQgMS42NjMuOTc2djE3LjgwNXptMjkuMjA5IDBjMCAuNzMyLS40NzUgMS40NjMtMS4xODggMS40NjNINDguOTE5Yy0uNzEyIDAtMS4xODctLjczMi0xLjE4Ny0xLjQ2M1YzMi45MjdjMC0uNzMyLjQ3NS0uOTc2IDEuMTg3LS45NzZoMjMuMDM0Yy43MTMgMCAxLjE4OC4yNDQgMS4xODguOTc2djE3LjgwNXoiIGZpbGw9IiMwMDc4ZDciIHN0cm9rZT0ibm9uZSIvPjwvc3ltYm9sPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Azure Storage Queue" + camel.apache.org/kamelet.namespace: "Azure" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Azure Storage Queue Sink" description: |- - Send Messages to Azure Storage queues. - - The Kamelet is able to understand the following headers to be set: - - - `expiration` / `ce-expiration`: as the time to live of the message in the queue. + Send events to Azure Storage queues. - If the header won't be set the default of 7 days will be used. - - The format should be in this form: PnDTnHnMn.nS., e.g: PT20.345S — parses as 20.345 seconds, P2D — parses as 2 days. + In the header, you can set the `partition` / `ce-partition` property to determine how long an event remains in the Azure Storage queue. Use `PnDTnHnMn.nS.` format. For example, `PT20.345S` parses as 20.345 seconds and `P2D` parses as 2 days. If you not set the property in the header, the Kamelet uses the default of `P27D` (7 days). required: - accountName - queueName @@ -32,20 +45,22 @@ spec: title: Account Name description: The Azure Storage Queue account name. type: string + x-descriptors: + - urn:camel:group:credentials queueName: title: Queue Name description: The Azure Storage Queue container name. type: string accessKey: title: Access Key - description: The Azure Storage Queue access Key. + description: The Azure Storage Queue access key. type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials dependencies: - - camel:core + - "camel:core" - "camel:azure-storage-queue" - "camel:kamelet" template: diff --git a/azure-storage-queue-source.kamelet.yaml b/kamelets/azure-storage-queue-source.kamelet.yaml similarity index 57% rename from azure-storage-queue-source.kamelet.yaml rename to kamelets/azure-storage-queue-source.kamelet.yaml index b4b1e31c5..75786d437 100644 --- a/azure-storage-queue-source.kamelet.yaml +++ b/kamelets/azure-storage-queue-source.kamelet.yaml @@ -1,19 +1,40 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: azure-storage-queue-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OGMtLjIzOCAwLS40NzUgMC0uNzEzLS4yNDRsLTkuMDI0LTcuMzE3djExLjk1MWgyMC42NlYzNy4zMTdsLTkuNzM2IDcuNTYxYy0uNDc1LjI0NC0uOTUuMjQ0LTEuMTg3LjI0NHptMjkuNjgzIDBjLS4yMzggMC0uNzEzIDAtLjcxMy0uMjQ0bC05LjI2MS03LjMxN3YxMS45NTFoMjAuNjZWMzcuMzE3bC05LjczNiA3LjU2MWMtLjQ3NS4yNDQtLjcxMy4yNDQtLjk1LjI0NHpNNjcuNjc4IDBIMjIuNTU5TDAgNDBsMjIuNTU5IDQwSDY3LjQ0TDkwIDQwIDY3LjY3OCAwem03LjgzNiA1Ny4wNzNIMTQuMDExYy0xLjkgMC0zLjMyNS0xLjcwNy0zLjMyNS0zLjY1OVYyOS4yNjhjMC0xLjk1MSAxLjQyNS0zLjY1OCAzLjMyNS0zLjY1OGg2MS41MDRjLjcxMyAwIDEuOSAwIDkuOTc0IDE1LjYxbC4yMzcuNzMyLS4yMzcuNzMyYy04LjA3NCAxNC4zOS05LjI2MSAxNC4zOS05Ljk3NCAxNC4zOXpNNDAuMzcgMzQuNjM0SDIwLjY2bDkuNzM2IDcuODA1em0tMjYuMzU5LTYuMzQxYy0uNDc1IDAtLjk1LjQ4OC0uOTUuOTc2djI0LjE0NmMwIC40ODguNDc1IDEuMjIuOTUgMS4yMkg3NS4wNGMxLjE4OC0xLjIyIDQuNzQ5LTcuMDczIDcuODM3LTEyLjY4My0zLjA4Ny02LjA5OC02Ljg4Ni0xMi40MzktNy44MzctMTMuNjU5SDE0LjAxMXptMjkuOTIxIDIyLjQzOWMwIC43MzItLjcxMyAxLjQ2My0xLjY2MyAxLjQ2M0gxOC45OThjLS43MTMgMC0uOTUtLjczMi0uOTUtMS40NjNWMzIuOTI3YzAtLjczMi4yMzgtLjk3Ni45NS0uOTc2SDQyLjI3Yy43MTIgMCAxLjY2My4yNDQgMS42NjMuOTc2djE3LjgwNXptMjkuMjA5IDBjMCAuNzMyLS40NzUgMS40NjMtMS4xODggMS40NjNINDguOTE5Yy0uNzEyIDAtMS4xODctLjczMi0xLjE4Ny0xLjQ2M1YzMi45MjdjMC0uNzMyLjQ3NS0uOTc2IDEuMTg3LS45NzZoMjMuMDM0Yy43MTMgMCAxLjE4OC4yNDQgMS4xODguOTc2djE3LjgwNXoiIGZpbGw9IiMwMDc4ZDciIHN0cm9rZT0ibm9uZSIvPjwvc3ltYm9sPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Azure Storage Queue" + camel.apache.org/kamelet.namespace: "Azure" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Azure Storage Queue Source" description: |- - Receive Messages from Azure Storage queues. + Receive events from Azure Storage queues. + + One header will be duplicated with different names for clarity at sink level, CamelAzureStorageQueueMessageId will be duplicated into azure.storage.queue.message.id required: - accountName - queueName @@ -24,31 +45,45 @@ spec: title: Account Name description: The Azure Storage Queue account name. type: string + x-descriptors: + - urn:camel:group:credentials queueName: title: Queue Name description: The Azure Storage Queue container name. type: string accessKey: title: Access Key - description: The Azure Storage Queue access Key. + description: The Azure Storage Queue access key. type: string format: password x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password + - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials 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 + description: The maximum number of messages to get. You can specify a value between 1 and 32. The default is 1 (one message). If there are fewer than the maximum number of messages in the queue, then all the messages are returned. + type: integer default: 1 dependencies: - "camel:azure-storage-queue" - "camel:kamelet" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:core" template: + beans: + - name: renameHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAzureStorageQueue' + renamingPrefix: 'azure.storage.queue.' + mode: 'filtering' + selectedHeaders: 'CamelAzureStorageQueueMessageId' from: uri: "azure-storage-queue://{{accountName}}/{{queueName}}" parameters: accessKey: "{{accessKey}}" maxMessages: "{{maxMessages}}" steps: + - process: + ref: "{{renameHeaders}}" - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml b/kamelets/cassandra-sink.kamelet.yaml similarity index 73% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml rename to kamelets/cassandra-sink.kamelet.yaml index d7d72354d..3f5acd639 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml +++ b/kamelets/cassandra-sink.kamelet.yaml @@ -1,52 +1,70 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: cassandra-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHRpdGxlPmNhc3NhbmRyYTwvdGl0bGU+CjxwYXRoIGQ9Ik0yMy4zLDguN2MwLDAtMC4zLDAuMy0wLjUsMC41Yy0wLjUsMC41LTEuMiwxLjMtMS43LDEuNWgwYy0wLjEsMC0wLjEsMC0wLjItMC4xbDAuOS0xLjlsMCwwYzAsMC4xLTEsMS45LTIuMiwxLjZsMCwwCgljMCwwLDAsMC0wLjEsMGMwLjYtMC44LDAuOC0xLjUsMC44LTEuNXMtMSwxLjYtMi4zLDEuMmMwLDAtMC4xLDAtMC4xLTAuMWMwLDAsMC0wLjEsMC0wLjFjMC0wLjEsMC4xLTAuMSwwLjEtMC4yCgljMC4xLTAuMiwwLjMtMC41LDAuMy0wLjVTMTguMyw5LjUsMTgsOS43bDAsMGMtMC4yLDAuMS0wLjUsMC4zLTAuNywwLjNjLTAuMSwwLTAuMSwwLTAuMiwwYy0wLjMtMC4xLTAuMy0wLjMtMC4yLTAuNgoJYzAuMS0wLjMsMC4yLTAuNSwwLjItMC41cy0wLjMsMC40LTAuNSwwLjhjLTAuMiwwLjMtMC40LDAuNS0wLjYsMC42bC0wLjIsMGMtMC4xLTAuMiwwLjEtMSwwLjEtMWMtMC4xLDAuMi0wLjMsMC40LTAuNCwwLjYKCWMtMC4xLDAuMi0wLjMsMC4zLTAuNSwwLjRoMGMtMC4xLDAtMC4yLDAtMC4zLDBjMCwwLTAuMS0wLjEtMC4xLTAuMmMtMC4xLTAuNCwwLjItMSwwLjItMWMwLDAtMC4xLDAuMy0wLjMsMC43djAKCWMwLDAuMS0wLjEsMC4yLTAuMSwwLjJjLTAuMSwwLjItMC4yLDAuMy0wLjMsMC4zYy0wLjItMC4xLTAuMy0wLjMtMC4zLTAuNWMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjRzMCwwLjMtMC4yLDAuNwoJYzAsMC4xLTAuMSwwLjItMC4yLDAuM2MwLDAtMC4xLDAuMS0wLjEsMC4xYy0xLjIsMC4yLTIuNCwwLjYtMy41LDFjLTAuMywwLjEtMC42LDAuMi0wLjksMC4zYy0xLDAuNC0yLDEtMy4xLDEuNwoJYy0xLjIsMC44LTIuMywxLjYtMy40LDIuNmMtMC42LDAuNS0xLjIsMS4xLTEuOCwxLjdjNC43LTIuNiw2LjYtNi4zLDE1LjUtNi43YzYuNy0wLjMsOS45LDIuOCwxMC45LDIuOWMyLjYsMC4xLDQuMy0xLjksNC45LTIuNgoJYzAuMS0wLjIsMC4yLTAuMywwLjItMC4zYzAsMC0wLjQsMC41LTEsMWwwLDBjLTAuNiwwLjUtMS40LDAuOS0yLjEsMC44aDBjLTAuMSwwLTAuMiwwLTAuMywwYzEtMC42LDEuNi0xLjYsMi0yLjEKCWMwLjEtMC4yLDAuMy0wLjUsMC4zLTAuNXMtMi4zLDIuNC00LjEsMi4yYy0wLjEsMC0wLjEsMC0wLjIsMGMwLjgtMC42LDEuMy0xLjQsMS43LTIuMXYwaDBjMC40LTAuNywwLjYtMS4zLDAuNi0xLjMKCWMwLDAtMC40LDAuNy0xLDEuNGwwLDBjLTAuNiwwLjctMS4zLDEuNS0yLDEuN2MtMC4xLDAtMC4yLDAuMS0wLjMsMC4xYzEuNC0xLjMsMi4xLTMuMSwyLjEtMy4xcy0xLjUsMi4xLTIuNywyLjUKCWMtMC4xLDAtMC4yLDAuMS0wLjIsMC4xYzAuOC0wLjcsMS4yLTEuMiwxLjQtMS43YzAuMy0wLjUsMC40LTAuOSwwLjQtMC45bDAsMGMtMC4xLDAuMi0wLjIsMC4zLTAuNCwwLjRsMCwwYy0wLjMsMC40LTAuOSwxLTEuNCwxLjQKCWwwLDBjLTAuMSwwLjEtMC4zLDAuMi0wLjQsMC4zYzAsMC0wLjEsMC4xLTAuMSwwLjFjLTAuMSwwLjEtMC4yLDAuMS0wLjQsMC4yYzAsMC0wLjEsMC0wLjEsMGMtMC4xLTAuMS0wLjItMC4xLTAuMy0wLjIKCWMtMC4xLDAuMS0wLjEsMC4yLTAuMiwwLjJoMGMwLDAtMC4xLDAtMC4xLDBjMS4xLTEuMiwxLjktMi44LDEuOS0yLjhsMCwwYzAsMC0xLjYsMi4xLTIuMywyLjNjLTAuMSwwLTAuMi0wLjEtMC4zLTAuMQoJYzAtMC4xLDAtMC4xLDAuMS0wLjJjMC4yLTAuNCwwLjYtMSwwLjYtMXMtMC4xLDAuMS0wLjIsMC4xYy0wLjEsMC4xLTAuMywwLjItMC40LDAuM2MtMC4xLDAuMS0wLjIsMC4xLTAuMiwwLjEKCWMtMC4xLDAuMS0wLjIsMC4xLTAuMywwLjFjLTAuMSwwLjEtMC4yLDAuMS0wLjMsMC4xYy0wLjEsMC0wLjEsMC0wLjEsMEMyMi4zLDEwLjUsMjMuMyw4LjcsMjMuMyw4LjdMMjMuMyw4Ljd6IE0xNywxMS42CgljLTAuNCwwLTAuOCwwLTEuMiwwYy0wLjQsMC0wLjcsMC0xLjEsMC4xYy0wLjQsMC4yLTAuNywwLjQtMSwwLjZjMCwwLjEsMCwwLjEsMCwwLjJjMCwwLjEsMCwwLjItMC4xLDAuMmwxLjIsMC45bDAsMGwtMC41LTEuNwoJbDAuOCwxLjVjMCwwLDAuMSwwLDAuMSwwbDAtMS42bDAuNSwxLjZsMC42LTEuNWwwLDEuN2MwLDAsMCwwLDAsMGwwLjktMS4zbC0wLjUsMS42bDAsMGwxLjQtMC45bC0xLDEuNHYwbDEuMy0wLjVjMCwwLDAsMCwwLjEtMC4xCgljLTAuMy0wLjQsMC0wLjksMC41LTAuOGMwLjItMC4zLDAuMy0wLjcsMC40LTFDMTguNiwxMS43LDE3LjgsMTEuNiwxNywxMS42TDE3LDExLjZ6IE0xMy42LDExLjhMMTMuNiwxMS44Yy0wLjQsMC0wLjgsMC4xLTEuMiwwLjIKCXMtMC44LDAuMS0xLjEsMC4yaDBjMC4yLDAuNSwwLjQsMSwwLjcsMS40YzAuMS0wLjMsMC4zLTAuNiwwLjUtMC45Yy0wLjItMC41LDAuMy0wLjksMC44LTAuN0MxMy40LDExLjksMTMuNSwxMS44LDEzLjYsMTEuOAoJTDEzLjYsMTEuOHogTTE5LjYsMTEuOWMwLDAuNC0wLjEsMC43LTAuMiwxLjFjMC40LDAuMywwLjEsMS0wLjQsMC45Yy0wLjIsMC4zLTAuNSwwLjYtMC43LDAuOGwwLjksMGwtMS4zLDAuM2MwLDAtMC4xLDAuMS0wLjEsMC4xCgljMC44LDAuMSwxLjUsMC40LDIuMSwwLjljMC40LTAuOCwwLjctMS42LDAuNy0yLjZDMjAuNCwxMi44LDIwLDEyLjMsMTkuNiwxMS45TDE5LjYsMTEuOXogTTExLjEsMTIuMmMtMC40LDAuMS0wLjgsMC4yLTEuMSwwLjMKCWMtMC4yLDAuMy0wLjMsMC43LTAuMywxYzAsMi4yLDEuMyw0LDMuMSw0LjlsMCwwYy0wLjMtMC4zLTAuNi0wLjctMC44LTEuMWMtMC45LDAuMS0xLjItMS4xLTAuNC0xLjRjLTAuMS0wLjYsMC0xLjMsMC4yLTEuOQoJQzExLjUsMTMuNSwxMS4yLDEyLjksMTEuMSwxMi4yTDExLjEsMTIuMnogTTIxLjMsMTIuMmMwLjIsMC41LDAuMywxLjEsMC4zLDEuN2MwLDMuMy0yLjksNS45LTYuNiw1LjljLTMuNiwwLTYuNi0yLjYtNi42LTUuOQoJYzAtMC4zLDAtMC42LDAuMS0wLjljLTEsMC40LTEuOSwwLjktMi44LDEuNWMtMC4zLDAuNS0wLjQsMS4xLTAuNCwxLjZjMC4xLDEuMywxLjMsMi40LDMsMy4ybC0wLjMtMC4xYy0zLjEtMC45LTUuNSwwLjctOC4xLTAuNwoJYzAuNiwwLjUsMS4zLDEsMy4zLDFjMC43LDAsMi45LTAuMSwzLjMsMC4yYzAuNCwwLjMtMS40LDItMS40LDJzMy0yLjUsMy4zLTEuN2MwLjIsMC41LTAuOSwyLTAuOSwyczEtMS40LDEuOC0xLjcKCWMwLjUtMC4yLDEtMC4yLDEuNCwwLjRjMC4yLDAuMy0xLjIsMi4xLTEuMiwyLjFzMi0xLjksMi4zLTEuOGMwLjQsMC4xLDAsMS44LDAsMS44czAuNy0xLjcsMS4xLTEuOWMwLjUtMC4yLTEuMiw0LTEuMiw0CglzMi4xLTMuOSwyLjUtNGMwLjctMC4yLDEuMSwyLjcsMS4xLDIuN3MtMC4zLTIuNSwwLTIuN2MyLjMtMSwxLDQuMywxLDQuM3MxLjUtMy42LDAuNi00LjRjMi40LDEuNiwyLjEsNC40LDIuMSw0LjRzMC42LTEuNC0xLjEtNC43CgljMSwwLDIuNCwyLjUsMi40LDIuNXMtMS42LTIuOC0wLjUtMi44YzIuMS0wLjEsMi4zLDMuNywyLjMsMy43czAuNi0wLjUtMS4xLTQuMmMxLjEtMC43LDMuNywzLjQsMy43LDMuNHMtMi40LTQtMi00LjMKCWMwLjQtMC4zLDEuOCwxLjMsMS44LDEuM3MtMS4xLTEuNS0wLjgtMS42YzAuMy0wLjIsMy4yLDIuOSwzLjIsMi45cy0yLjUtMy0yLjEtMy40YzAuNC0wLjQsMi4zLDEsMi4zLDFzLTIuOC0xLjktMi4zLTIuMgoJYzAuOC0wLjQsMywxLDMsMXMtMS4zLTEuMS0xLjEtMS40YzAuMi0wLjMsMi44LDEuNywyLjgsMS43cy0yLjMtMS44LTIuNC0yLjNjLTAuMS0wLjUsMS44LDAuMiwxLjgsMC4ycy0yLjEtMS0yLjItMS4zCgljMC0wLjMsMS40LDAuMywxLjQsMC4zcy0yLTEuNi0yLjUtMC4zYy0wLjEsMC4yLTAuMiwwLjQtMC40LDAuNmMwLjEtMC40LDAuMi0wLjcsMC4xLTEuMWMwLTAuMSwwLTAuMi0wLjEtMC40CglDMjQuNiwxMy41LDIzLjIsMTIuOCwyMS4zLDEyLjJMMjEuMywxMi4yeiBNMTMuNSwxMi44Yy0wLjEsMC4yLTAuNCwwLjMtMC43LDAuMmMtMC4xLDAuMS0wLjEsMC4yLTAuMiwwLjNsMS43LDAuNmMwLDAsMCwwLDAtMC4xCglMMTMuNSwxMi44eiBNMTIuNywxMy40Yy0wLjEsMC4yLTAuMiwwLjQtMC4zLDAuN2MwLjIsMC4yLDAuMywwLjMsMC41LDAuNWwxLjIsMGwwLDBMMTIuNywxMy40eiBNMTguMiwxNC4xbC0wLjgsMC42bDAuMSwwCglDMTcuOCwxNC41LDE4LDE0LjMsMTguMiwxNC4xeiBNMTIuMiwxNC41QzEyLjIsMTQuNSwxMi4yLDE0LjUsMTIuMiwxNC41Yy0wLjEsMC41LTAuMSwwLjktMC4xLDEuM2MwLjMsMC4xLDAuNiwwLjMsMC42LDAuNmwxLjItMC44CgljLTAuMSwwLTAuMi0wLjEtMC4zLTAuMWwtMS40LTAuMWwwLjgtMC4yQzEyLjgsMTUsMTIuNSwxNC44LDEyLjIsMTQuNUwxMi4yLDE0LjV6IE0xMy4zLDE0LjhjMC4yLDAuMSwwLjQsMC4yLDAuNiwwLjNsMC4yLDAKCWMwLDAsMCwwLDAtMC4xTDEzLjMsMTQuOHogTTE3LjQsMTUuN2wxLjIsMS4yTDE3LDE2LjJsMC45LDEuNGwtMS40LTEuMWwwLDBsMC41LDEuN2wtMC44LTEuNWwtMC4xLDEuOGwtMC41LTEuOGwtMC42LDEuN2wwLjItMS44CglsMCwwTDE0LDE4LjJsMC40LTEuNWMtMC41LDAuNC0wLjgsMS0xLjEsMS42YzAuMSwwLjEsMC4zLDAuMywwLjQsMC40YzIuMiwwLjYsNC42LTAuMyw1LjgtMi4zYy0wLjUtMC4zLTEuMS0wLjYtMS43LTAuN0wxNy40LDE1Ljd6CgkgTTE0LjIsMTZsLTEuNCwwLjVjMCwwLDAsMCwwLDAuMWMwLDAuMi0wLjEsMC40LTAuMiwwLjZjMC4xLDAuMywwLjMsMC42LDAuNSwwLjhjMC4xLTAuMywwLjMtMC42LDAuNC0wLjhMMTMsMTcuNEwxNC4yLDE2egoJIE0xOSwxOS43Yy0wLjIsMC4xLTAuNSwwLjEtMC44LDAuMkMxOC41LDE5LjgsMTguOCwxOS43LDE5LDE5Ljd6IE0xNy42LDIwYy0wLjIsMC0wLjMsMC4xLTAuNSwwLjFjLTAuMywwLTAuNSwwLjEtMC44LDAuMQoJQzE2LjgsMjAuMSwxNy4yLDIwLjEsMTcuNiwyMEwxNy42LDIweiBNMTUuOCwyMC4yYy0wLjEsMC0wLjMsMC0wLjQsMEMxNS41LDIwLjIsMTUuNiwyMC4yLDE1LjgsMjAuMnoiLz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Cassandra" + camel.apache.org/kamelet.namespace: "Nosql" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Cassandra Sink" description: |- - Send data to a Cassandra Cluster. + Send data to an Apache Cassandra cluster. - This Kamelet expects the body as JSON Array. The content of the JSON Array will be used as input for the CQL Prepared Statement set in the query parameter. + This Kamelet expects JSON Array formatted data. The content of the JSON Array is used as input for the CQL Prepared Statement set in the query parameter. required: - connectionHost - connectionPort - keyspace - - username - - password - query type: object properties: connectionHost: title: Connection Host - description: Hostname(s) cassandra server(s). Multiple hosts can be separated by comma. + description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames. type: string example: localhost connectionPort: title: Connection Port - description: Port number of cassandra server(s) + description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers. type: string example: 9042 keyspace: title: Keyspace - description: Keyspace to use + description: The keyspace to use. type: string example: customers username: title: Username - description: The username to use for accessing a secured Cassandra Cluster + description: The username for accessing a secured Cassandra cluster. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured Cassandra Cluster + description: The password for accessing a secured Cassandra cluster. type: string format: password x-descriptors: @@ -54,13 +72,26 @@ spec: - urn:camel:group:credentials consistencyLevel: title: Consistency Level - description: Consistency level to use. The value can be one of ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, SERIAL, LOCAL_SERIAL, LOCAL_ONE + description: The consistency level to use. type: string default: ANY + enum: ["ANY", "ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "LOCAL_ONE"] + prepareStatements: + title: Prepare Statements + description: If true, specifies to use PreparedStatements as the query. If false, specifies to use regular Statements as the query. + type: boolean + default: true + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:checkbox query: title: Query - description: The Prepared statement to execute against the Cassandra cluster table + description: The query to execute against the Cassandra cluster table. type: string + extraTypeCodecs: + title: Extra Type Codecs + description: To use a specific comma separated list of Extra Type codecs. + type: string + enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"] types: in: mediaType: application/json @@ -79,7 +110,9 @@ spec: - to: uri: "cql://{{connectionHost}}:{{connectionPort}}/{{keyspace}}" parameters: - username: "{{username}}" - password: "{{password}}" - cql: "{{query}}" + username: "{{?username}}" + password: "{{?password}}" + prepareStatements: "{{prepareStatements}}" consistencyLevel: "{{consistencyLevel}}" + cql: "{{query}}" + extraTypeCodecs: "{{?extraTypeCodecs}}" diff --git a/cassandra-source.kamelet.yaml b/kamelets/cassandra-source.kamelet.yaml similarity index 77% rename from cassandra-source.kamelet.yaml rename to kamelets/cassandra-source.kamelet.yaml index befa15099..2d143ad91 100644 --- a/cassandra-source.kamelet.yaml +++ b/kamelets/cassandra-source.kamelet.yaml @@ -1,50 +1,68 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: cassandra-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHRpdGxlPmNhc3NhbmRyYTwvdGl0bGU+CjxwYXRoIGQ9Ik0yMy4zLDguN2MwLDAtMC4zLDAuMy0wLjUsMC41Yy0wLjUsMC41LTEuMiwxLjMtMS43LDEuNWgwYy0wLjEsMC0wLjEsMC0wLjItMC4xbDAuOS0xLjlsMCwwYzAsMC4xLTEsMS45LTIuMiwxLjZsMCwwCgljMCwwLDAsMC0wLjEsMGMwLjYtMC44LDAuOC0xLjUsMC44LTEuNXMtMSwxLjYtMi4zLDEuMmMwLDAtMC4xLDAtMC4xLTAuMWMwLDAsMC0wLjEsMC0wLjFjMC0wLjEsMC4xLTAuMSwwLjEtMC4yCgljMC4xLTAuMiwwLjMtMC41LDAuMy0wLjVTMTguMyw5LjUsMTgsOS43bDAsMGMtMC4yLDAuMS0wLjUsMC4zLTAuNywwLjNjLTAuMSwwLTAuMSwwLTAuMiwwYy0wLjMtMC4xLTAuMy0wLjMtMC4yLTAuNgoJYzAuMS0wLjMsMC4yLTAuNSwwLjItMC41cy0wLjMsMC40LTAuNSwwLjhjLTAuMiwwLjMtMC40LDAuNS0wLjYsMC42bC0wLjIsMGMtMC4xLTAuMiwwLjEtMSwwLjEtMWMtMC4xLDAuMi0wLjMsMC40LTAuNCwwLjYKCWMtMC4xLDAuMi0wLjMsMC4zLTAuNSwwLjRoMGMtMC4xLDAtMC4yLDAtMC4zLDBjMCwwLTAuMS0wLjEtMC4xLTAuMmMtMC4xLTAuNCwwLjItMSwwLjItMWMwLDAtMC4xLDAuMy0wLjMsMC43djAKCWMwLDAuMS0wLjEsMC4yLTAuMSwwLjJjLTAuMSwwLjItMC4yLDAuMy0wLjMsMC4zYy0wLjItMC4xLTAuMy0wLjMtMC4zLTAuNWMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjRzMCwwLjMtMC4yLDAuNwoJYzAsMC4xLTAuMSwwLjItMC4yLDAuM2MwLDAtMC4xLDAuMS0wLjEsMC4xYy0xLjIsMC4yLTIuNCwwLjYtMy41LDFjLTAuMywwLjEtMC42LDAuMi0wLjksMC4zYy0xLDAuNC0yLDEtMy4xLDEuNwoJYy0xLjIsMC44LTIuMywxLjYtMy40LDIuNmMtMC42LDAuNS0xLjIsMS4xLTEuOCwxLjdjNC43LTIuNiw2LjYtNi4zLDE1LjUtNi43YzYuNy0wLjMsOS45LDIuOCwxMC45LDIuOWMyLjYsMC4xLDQuMy0xLjksNC45LTIuNgoJYzAuMS0wLjIsMC4yLTAuMywwLjItMC4zYzAsMC0wLjQsMC41LTEsMWwwLDBjLTAuNiwwLjUtMS40LDAuOS0yLjEsMC44aDBjLTAuMSwwLTAuMiwwLTAuMywwYzEtMC42LDEuNi0xLjYsMi0yLjEKCWMwLjEtMC4yLDAuMy0wLjUsMC4zLTAuNXMtMi4zLDIuNC00LjEsMi4yYy0wLjEsMC0wLjEsMC0wLjIsMGMwLjgtMC42LDEuMy0xLjQsMS43LTIuMXYwaDBjMC40LTAuNywwLjYtMS4zLDAuNi0xLjMKCWMwLDAtMC40LDAuNy0xLDEuNGwwLDBjLTAuNiwwLjctMS4zLDEuNS0yLDEuN2MtMC4xLDAtMC4yLDAuMS0wLjMsMC4xYzEuNC0xLjMsMi4xLTMuMSwyLjEtMy4xcy0xLjUsMi4xLTIuNywyLjUKCWMtMC4xLDAtMC4yLDAuMS0wLjIsMC4xYzAuOC0wLjcsMS4yLTEuMiwxLjQtMS43YzAuMy0wLjUsMC40LTAuOSwwLjQtMC45bDAsMGMtMC4xLDAuMi0wLjIsMC4zLTAuNCwwLjRsMCwwYy0wLjMsMC40LTAuOSwxLTEuNCwxLjQKCWwwLDBjLTAuMSwwLjEtMC4zLDAuMi0wLjQsMC4zYzAsMC0wLjEsMC4xLTAuMSwwLjFjLTAuMSwwLjEtMC4yLDAuMS0wLjQsMC4yYzAsMC0wLjEsMC0wLjEsMGMtMC4xLTAuMS0wLjItMC4xLTAuMy0wLjIKCWMtMC4xLDAuMS0wLjEsMC4yLTAuMiwwLjJoMGMwLDAtMC4xLDAtMC4xLDBjMS4xLTEuMiwxLjktMi44LDEuOS0yLjhsMCwwYzAsMC0xLjYsMi4xLTIuMywyLjNjLTAuMSwwLTAuMi0wLjEtMC4zLTAuMQoJYzAtMC4xLDAtMC4xLDAuMS0wLjJjMC4yLTAuNCwwLjYtMSwwLjYtMXMtMC4xLDAuMS0wLjIsMC4xYy0wLjEsMC4xLTAuMywwLjItMC40LDAuM2MtMC4xLDAuMS0wLjIsMC4xLTAuMiwwLjEKCWMtMC4xLDAuMS0wLjIsMC4xLTAuMywwLjFjLTAuMSwwLjEtMC4yLDAuMS0wLjMsMC4xYy0wLjEsMC0wLjEsMC0wLjEsMEMyMi4zLDEwLjUsMjMuMyw4LjcsMjMuMyw4LjdMMjMuMyw4Ljd6IE0xNywxMS42CgljLTAuNCwwLTAuOCwwLTEuMiwwYy0wLjQsMC0wLjcsMC0xLjEsMC4xYy0wLjQsMC4yLTAuNywwLjQtMSwwLjZjMCwwLjEsMCwwLjEsMCwwLjJjMCwwLjEsMCwwLjItMC4xLDAuMmwxLjIsMC45bDAsMGwtMC41LTEuNwoJbDAuOCwxLjVjMCwwLDAuMSwwLDAuMSwwbDAtMS42bDAuNSwxLjZsMC42LTEuNWwwLDEuN2MwLDAsMCwwLDAsMGwwLjktMS4zbC0wLjUsMS42bDAsMGwxLjQtMC45bC0xLDEuNHYwbDEuMy0wLjVjMCwwLDAsMCwwLjEtMC4xCgljLTAuMy0wLjQsMC0wLjksMC41LTAuOGMwLjItMC4zLDAuMy0wLjcsMC40LTFDMTguNiwxMS43LDE3LjgsMTEuNiwxNywxMS42TDE3LDExLjZ6IE0xMy42LDExLjhMMTMuNiwxMS44Yy0wLjQsMC0wLjgsMC4xLTEuMiwwLjIKCXMtMC44LDAuMS0xLjEsMC4yaDBjMC4yLDAuNSwwLjQsMSwwLjcsMS40YzAuMS0wLjMsMC4zLTAuNiwwLjUtMC45Yy0wLjItMC41LDAuMy0wLjksMC44LTAuN0MxMy40LDExLjksMTMuNSwxMS44LDEzLjYsMTEuOAoJTDEzLjYsMTEuOHogTTE5LjYsMTEuOWMwLDAuNC0wLjEsMC43LTAuMiwxLjFjMC40LDAuMywwLjEsMS0wLjQsMC45Yy0wLjIsMC4zLTAuNSwwLjYtMC43LDAuOGwwLjksMGwtMS4zLDAuM2MwLDAtMC4xLDAuMS0wLjEsMC4xCgljMC44LDAuMSwxLjUsMC40LDIuMSwwLjljMC40LTAuOCwwLjctMS42LDAuNy0yLjZDMjAuNCwxMi44LDIwLDEyLjMsMTkuNiwxMS45TDE5LjYsMTEuOXogTTExLjEsMTIuMmMtMC40LDAuMS0wLjgsMC4yLTEuMSwwLjMKCWMtMC4yLDAuMy0wLjMsMC43LTAuMywxYzAsMi4yLDEuMyw0LDMuMSw0LjlsMCwwYy0wLjMtMC4zLTAuNi0wLjctMC44LTEuMWMtMC45LDAuMS0xLjItMS4xLTAuNC0xLjRjLTAuMS0wLjYsMC0xLjMsMC4yLTEuOQoJQzExLjUsMTMuNSwxMS4yLDEyLjksMTEuMSwxMi4yTDExLjEsMTIuMnogTTIxLjMsMTIuMmMwLjIsMC41LDAuMywxLjEsMC4zLDEuN2MwLDMuMy0yLjksNS45LTYuNiw1LjljLTMuNiwwLTYuNi0yLjYtNi42LTUuOQoJYzAtMC4zLDAtMC42LDAuMS0wLjljLTEsMC40LTEuOSwwLjktMi44LDEuNWMtMC4zLDAuNS0wLjQsMS4xLTAuNCwxLjZjMC4xLDEuMywxLjMsMi40LDMsMy4ybC0wLjMtMC4xYy0zLjEtMC45LTUuNSwwLjctOC4xLTAuNwoJYzAuNiwwLjUsMS4zLDEsMy4zLDFjMC43LDAsMi45LTAuMSwzLjMsMC4yYzAuNCwwLjMtMS40LDItMS40LDJzMy0yLjUsMy4zLTEuN2MwLjIsMC41LTAuOSwyLTAuOSwyczEtMS40LDEuOC0xLjcKCWMwLjUtMC4yLDEtMC4yLDEuNCwwLjRjMC4yLDAuMy0xLjIsMi4xLTEuMiwyLjFzMi0xLjksMi4zLTEuOGMwLjQsMC4xLDAsMS44LDAsMS44czAuNy0xLjcsMS4xLTEuOWMwLjUtMC4yLTEuMiw0LTEuMiw0CglzMi4xLTMuOSwyLjUtNGMwLjctMC4yLDEuMSwyLjcsMS4xLDIuN3MtMC4zLTIuNSwwLTIuN2MyLjMtMSwxLDQuMywxLDQuM3MxLjUtMy42LDAuNi00LjRjMi40LDEuNiwyLjEsNC40LDIuMSw0LjRzMC42LTEuNC0xLjEtNC43CgljMSwwLDIuNCwyLjUsMi40LDIuNXMtMS42LTIuOC0wLjUtMi44YzIuMS0wLjEsMi4zLDMuNywyLjMsMy43czAuNi0wLjUtMS4xLTQuMmMxLjEtMC43LDMuNywzLjQsMy43LDMuNHMtMi40LTQtMi00LjMKCWMwLjQtMC4zLDEuOCwxLjMsMS44LDEuM3MtMS4xLTEuNS0wLjgtMS42YzAuMy0wLjIsMy4yLDIuOSwzLjIsMi45cy0yLjUtMy0yLjEtMy40YzAuNC0wLjQsMi4zLDEsMi4zLDFzLTIuOC0xLjktMi4zLTIuMgoJYzAuOC0wLjQsMywxLDMsMXMtMS4zLTEuMS0xLjEtMS40YzAuMi0wLjMsMi44LDEuNywyLjgsMS43cy0yLjMtMS44LTIuNC0yLjNjLTAuMS0wLjUsMS44LDAuMiwxLjgsMC4ycy0yLjEtMS0yLjItMS4zCgljMC0wLjMsMS40LDAuMywxLjQsMC4zcy0yLTEuNi0yLjUtMC4zYy0wLjEsMC4yLTAuMiwwLjQtMC40LDAuNmMwLjEtMC40LDAuMi0wLjcsMC4xLTEuMWMwLTAuMSwwLTAuMi0wLjEtMC40CglDMjQuNiwxMy41LDIzLjIsMTIuOCwyMS4zLDEyLjJMMjEuMywxMi4yeiBNMTMuNSwxMi44Yy0wLjEsMC4yLTAuNCwwLjMtMC43LDAuMmMtMC4xLDAuMS0wLjEsMC4yLTAuMiwwLjNsMS43LDAuNmMwLDAsMCwwLDAtMC4xCglMMTMuNSwxMi44eiBNMTIuNywxMy40Yy0wLjEsMC4yLTAuMiwwLjQtMC4zLDAuN2MwLjIsMC4yLDAuMywwLjMsMC41LDAuNWwxLjIsMGwwLDBMMTIuNywxMy40eiBNMTguMiwxNC4xbC0wLjgsMC42bDAuMSwwCglDMTcuOCwxNC41LDE4LDE0LjMsMTguMiwxNC4xeiBNMTIuMiwxNC41QzEyLjIsMTQuNSwxMi4yLDE0LjUsMTIuMiwxNC41Yy0wLjEsMC41LTAuMSwwLjktMC4xLDEuM2MwLjMsMC4xLDAuNiwwLjMsMC42LDAuNmwxLjItMC44CgljLTAuMSwwLTAuMi0wLjEtMC4zLTAuMWwtMS40LTAuMWwwLjgtMC4yQzEyLjgsMTUsMTIuNSwxNC44LDEyLjIsMTQuNUwxMi4yLDE0LjV6IE0xMy4zLDE0LjhjMC4yLDAuMSwwLjQsMC4yLDAuNiwwLjNsMC4yLDAKCWMwLDAsMCwwLDAtMC4xTDEzLjMsMTQuOHogTTE3LjQsMTUuN2wxLjIsMS4yTDE3LDE2LjJsMC45LDEuNGwtMS40LTEuMWwwLDBsMC41LDEuN2wtMC44LTEuNWwtMC4xLDEuOGwtMC41LTEuOGwtMC42LDEuN2wwLjItMS44CglsMCwwTDE0LDE4LjJsMC40LTEuNWMtMC41LDAuNC0wLjgsMS0xLjEsMS42YzAuMSwwLjEsMC4zLDAuMywwLjQsMC40YzIuMiwwLjYsNC42LTAuMyw1LjgtMi4zYy0wLjUtMC4zLTEuMS0wLjYtMS43LTAuN0wxNy40LDE1Ljd6CgkgTTE0LjIsMTZsLTEuNCwwLjVjMCwwLDAsMCwwLDAuMWMwLDAuMi0wLjEsMC40LTAuMiwwLjZjMC4xLDAuMywwLjMsMC42LDAuNSwwLjhjMC4xLTAuMywwLjMtMC42LDAuNC0wLjhMMTMsMTcuNEwxNC4yLDE2egoJIE0xOSwxOS43Yy0wLjIsMC4xLTAuNSwwLjEtMC44LDAuMkMxOC41LDE5LjgsMTguOCwxOS43LDE5LDE5Ljd6IE0xNy42LDIwYy0wLjIsMC0wLjMsMC4xLTAuNSwwLjFjLTAuMywwLTAuNSwwLjEtMC44LDAuMQoJQzE2LjgsMjAuMSwxNy4yLDIwLjEsMTcuNiwyMEwxNy42LDIweiBNMTUuOCwyMC4yYy0wLjEsMC0wLjMsMC0wLjQsMEMxNS41LDIwLjIsMTUuNiwyMC4yLDE1LjgsMjAuMnoiLz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Cassandra" + camel.apache.org/kamelet.namespace: "Nosql" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Cassandra Source" description: |- - Query a Cassandra cluster table. + Send a query to an Apache Cassandra cluster table. required: - connectionHost - connectionPort - keyspace - - username - - password - query type: object properties: connectionHost: title: Connection Host - description: Hostname(s) cassandra server(s). Multiple hosts can be separated by comma. + description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames. type: string example: localhost connectionPort: title: Connection Port - description: Port number of cassandra server(s) + description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers. type: string example: 9042 keyspace: title: Keyspace - description: Keyspace to use + description: The keyspace to use. type: string example: customers username: title: Username - description: The username to use for accessing a secured Cassandra Cluster + description: The username for accessing a secured Cassandra cluster. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured Cassandra Cluster + description: The password for accessing a secured Cassandra cluster. type: string format: password x-descriptors: @@ -52,18 +70,25 @@ spec: - urn:camel:group:credentials resultStrategy: title: Result Strategy - description: The strategy to convert the result set of the query. Possible values are ALL, ONE, LIMIT_10, LIMIT_100... + description: The strategy to convert the result set of the query. type: string default: ALL + enum: ["ALL", "ONE", "LIMIT_10", "LIMIT_100"] consistencyLevel: title: Consistency Level - description: Consistency level to use. The value can be one of ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, SERIAL, LOCAL_SERIAL, LOCAL_ONE + description: The consistency level to use. type: string default: QUORUM + enum: ["ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "SERIAL", "LOCAL_SERIAL", "LOCAL_ONE"] query: title: Query - description: The query to execute against the Cassandra cluster table + description: The query to execute against the Cassandra cluster table. + type: string + extraTypeCodecs: + title: Extra Type Codecs + description: To use a specific comma separated list of Extra Type codecs. type: string + enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"] types: out: mediaType: application/json @@ -75,11 +100,12 @@ spec: from: uri: "cql://{{connectionHost}}:{{connectionPort}}/{{keyspace}}" parameters: - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" cql: "{{query}}" consistencyLevel: "{{consistencyLevel}}" resultSetConversionStrategy: "{{resultStrategy}}" + extraTypeCodecs: "{{?extraTypeCodecs}}" steps: - marshal: json: {} diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-sink.kamelet.yaml b/kamelets/ceph-sink.kamelet.yaml similarity index 87% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-sink.kamelet.yaml rename to kamelets/ceph-sink.kamelet.yaml index 1c761056d..2e4c964d9 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-sink.kamelet.yaml +++ b/kamelets/ceph-sink.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: ceph-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTU3IiB2aWV3Qm94PSIwIDAgMTYwIDE1NyIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZD0iTTc5LjgxNTIgOTYuMDczOUM4OC42ODM2IDk2LjA3MzkgOTUuNzA0NCA4OS4wNTMxIDk1LjcwNDQgODAuMTg0OEM5NS43MDQ0IDcxLjMxNjQgODguNjgzNiA2NC4yOTU2IDc5LjgxNTIgNjQuMjk1NkM3MC45NDY5IDY0LjI5NTYgNjMuOTI2MSA3MS4zMTY0IDYzLjkyNjEgODAuMTg0OEM2My45MjYxIDg4LjY4MzYgNzEuMzE2NCA5Ni4wNzM5IDc5LjgxNTIgOTYuMDczOVpNMTAxLjI0NyAxNTYuMzA1TDEwNS42ODEgMTU0LjgyN0MxMTAuMTE1IDE1My4zNDkgMTE0LjkxOSAxNTEuNTAxIDExOC45ODQgMTQ4LjkxNUMxMTEuNTk0IDE0NC44NSAxMDcuMTU5IDEzNy40NiAxMDcuMTU5IDEyOC45NjFDMTA3LjE1OSAxMjMuNDE4IDEwOS4zNzYgMTE4LjI0NSAxMTMuNDQxIDExMy4wNzJDMTEzLjQ0MSAxMTMuMDcyIDExMy40NDEgMTEzLjA3MiAxMTMuODExIDExMi43MDJMMTE0LjkxOSAxMTEuMjI0QzExNi4wMjggMTA5Ljc0NiAxMTcuMTM2IDEwOC42MzcgMTE4LjI0NSAxMDcuMTU5QzEyMS45NCAxMDEuOTg2IDEyNC44OTYgOTYuMDczOSAxMjYuMzc0IDg5Ljc5MjJDMTI3Ljg1MiA4Mi43NzE0IDEyOC4yMjIgNzUuNzUwNiAxMjYuNzQ0IDY4LjcyOThDMTI1LjI2NiA2Mi40NDggMTIyLjY3OSA1Ni4xNjYzIDExOC45ODQgNTAuOTkzMUMxMTUuMjg5IDQ1LjgxOTkgMTEwLjg1NSA0MS4zODU3IDEwNS4zMTIgMzguMDZDOTkuNzY5MSAzNC43MzQ0IDkzLjQ4NzMgMzIuMTQ3OCA4Ni44MzYgMzEuNDA4OEM4NC42MTg5IDMxLjAzOTMgODIuNDAxOSAzMS4wMzkzIDgwLjE4NDggMzEuMDM5M0g3OS40NDU3Qzc3LjIyODYgMzEuMDM5MyA3NS4wMTE2IDMxLjAzOTMgNzIuNzk0NSAzMS40MDg4QzY2LjE0MzIgMzIuNTE3MyA1OS44NjE0IDM0LjczNDQgNTQuMzE4NyAzOC4wNkM0OS4xNDU1IDQxLjM4NTcgNDQuMzQxOCA0NS44MTk5IDQwLjY0NjcgNTAuOTkzMUMzNi45NTE1IDU2LjE2NjMgMzMuOTk1NCA2Mi40NDggMzIuODg2OCA2OC43Mjk4QzMxLjQwODggNzUuNzUwNiAzMS40MDg4IDgyLjc3MTQgMzMuMjU2NCA4OS40MjI2QzM0LjczNDQgOTUuNzA0NCAzNy42OTA1IDEwMS42MTcgNDEuMzg1NyAxMDYuNzlMNDQuNzExMyAxMTAuODU1TDQ1LjgxOTkgMTEyLjMzM0M0OS44ODQ1IDExNy4xMzYgNTIuMTAxNiAxMjIuNjc5IDUyLjEwMTYgMTI4LjIyMkM1Mi4xMDE2IDEzNi43MjEgNDcuMjk3OSAxNDQuMTExIDQwLjI3NzEgMTQ4LjE3NkM0NC4zNDE4IDE1MC4zOTMgNDkuMTQ1NSAxNTIuNjEgNTMuNTc5NyAxNTQuMDg4TDU4LjM4MzQgMTU1LjU2NkM1OS4xMjI0IDE1NC44MjcgNjIuNDQ4IDE1Mi42MSA2NS40MDQyIDE0OC4xNzZDNjguMzYwMyAxNDQuMTExIDcxLjY4NTkgMTM3LjQ2IDcxLjY4NTkgMTI4LjIyMkM3MS42ODU5IDEyMi42NzkgNzAuNTc3NCAxMTcuNTA2IDY4LjM2MDMgMTEyLjMzM0M2Ni4xNDMyIDEwNy4xNTkgNjMuMTg3MSAxMDIuNzI1IDU5LjQ5MTkgOTguNjYwNUw1OC43NTI5IDk3LjU1MkM1Ny4yNzQ4IDk2LjA3MzkgNTUuNzk2OCA5NC4yMjYzIDU0LjY4ODIgOTIuMzc4OEM1My4yMTAyIDg5Ljc5MjIgNTIuMTAxNiA4Ny41NzUxIDUxLjczMjEgODQuNjE4OUM1MC42MjM2IDgwLjU1NDMgNTAuNjIzNiA3Ni40ODk2IDUxLjczMjEgNzIuNDI0OUM1Mi40NzExIDY4LjcyOTggNTMuOTQ5MiA2NS4wMzQ2IDU2LjE2NjMgNjIuMDc4NUM1OC4zODM0IDU5LjEyMjQgNjAuOTcgNTYuNTM1OCA2NC4yOTU2IDU0LjMxODdDNjcuNjIxMiA1Mi4xMDE2IDcxLjMxNjQgNTAuOTkzMSA3NS4wMTE1IDUwLjI1NEM3Ni40ODk2IDQ5Ljg4NDUgNzcuNTk4MiA0OS44ODQ1IDc5LjA3NjIgNDkuODg0NUg3OS44MTUyQzgxLjI5MzMgNDkuODg0NSA4Mi40MDE5IDQ5Ljg4NDUgODMuODc5OSA1MC4yNTRDODcuNTc1MSA1MC42MjM2IDkxLjI3MDIgNTIuMTAxNiA5NC41OTU4IDU0LjMxODdDOTcuOTIxNSA1Ni4xNjYzIDEwMC41MDggNTguNzUyOSAxMDIuNzI1IDYyLjA3ODVDMTA0Ljk0MiA2NS4wMzQ2IDEwNi40MiA2OC43Mjk4IDEwNy4xNTkgNzIuNDI0OUMxMDcuODk4IDc2LjQ4OTYgMTA3Ljg5OCA4MC41NTQzIDEwNy4xNTkgODQuNjE4OUMxMDYuNDIgODcuMjA1NSAxMDUuNjgxIDg5Ljc5MjIgMTA0LjIwMyA5Mi4zNzg4QzEwMy4wOTUgOTQuMjI2MyAxMDEuNjE3IDk2LjA3MzkgMTAwLjEzOSA5Ny41NTJMOTkuMzk5NSA5OC42NjA1Qzk1LjcwNDQgMTAyLjcyNSA5Mi43NDgzIDEwNy4xNTkgOTAuNTMxMiAxMTIuMzMzQzg4LjMxNDEgMTE3LjUwNiA4Ny4yMDU1IDEyMi42NzkgODcuMjA1NSAxMjguMjIyQzg3LjIwNTUgMTM3LjQ2IDkwLjUzMTIgMTQ0LjExMSA5My40ODczIDE0OC4xNzZDOTYuODEyOSAxNTMuMzQ5IDEwMC4xMzkgMTU1LjkzNSAxMDEuMjQ3IDE1Ni4zMDVaTTEzMC40MzkgMTQxLjUyNEMxMzkuMzA3IDEzNC4xMzQgMTQ3LjA2NyAxMjQuNTI3IDE1MS44NzEgMTE0LjU1QzE1NC40NTcgMTA5LjM3NiAxNTYuMzA1IDEwMy40NjQgMTU3Ljc4MyA5Ny45MjE1QzE1OS4yNjEgOTIuMDA5MiAxNjAgODUuNzI3NSAxNjAgNzkuODE1MkMxNjAgNjkuMDk5MyAxNTcuNzgzIDU4LjM4MzQgMTUzLjcxOCA0OC43NzZDMTQ5LjY1NCAzOS4xNjg2IDE0My43NDEgMzAuNjY5NyAxMzYuNzIxIDIzLjI3OTRDMTI5LjMzIDE1Ljg4OTEgMTIwLjgzMSAxMC4zNDY0IDExMS4yMjQgNi4yODE3NkMxMDEuMjQ3IDIuMjE3MDkgOTAuOTAwNyAwIDgwLjE4NDggMEg3OS44MTUyQzY5LjA5OTMgMCA1OC4zODM0IDIuMjE3MDkgNDguNzc2IDYuMjgxNzZDMzkuMTY4NiAxMC4zNDY0IDMwLjY2OTcgMTYuMjU4NyAyMy4yNzk0IDIzLjI3OTRDMTUuODg5MSAzMC42Njk3IDEwLjM0NjQgMzkuMTY4NiA2LjI4MTc2IDQ4Ljc3NkMyLjIxNzA5IDU4Ljc1MjkgMCA2OS4wOTkzIDAgNzkuODE1MkMwIDg2LjA5NyAwLjczOTAzIDkyLjAwOTIgMi4yMTcwOSA5Ny45MjE1QzMuNjk1MTUgMTAzLjgzNCA1LjU0MjczIDEwOS4zNzYgOC4xMjkzMyAxMTQuNTVDMTIuOTMzIDEyNC41MjcgMjAuNjkyOCAxMzQuMTM0IDI5LjU2MTIgMTQxLjUyNEMzNS40NzM0IDEzOC4xOTkgMzguNDI5NiAxMzQuODczIDM5LjE2ODYgMTMxLjE3OEMzOS45MDc2IDEyNy40ODMgMzguNDI5NiAxMjMuNzg4IDM0LjM2NDkgMTE4Ljk4NEMyNC43NTc1IDEwNy44OTggMTkuNTg0MyA5My44NTY4IDE5LjU4NDMgNzkuNDQ1N0MxOS41ODQzIDQ2LjE4OTQgNDYuNTU4OSAxOS4yMTQ4IDc5LjgxNTIgMTguODQ1M0g4MC4xODQ4SDgwLjU1NDNDMTEzLjgxMSAxOC44NDUzIDE0MC43ODUgNDUuODE5OSAxNDAuNzg1IDc5LjQ0NTdDMTQwLjc4NSA5My44NTY4IDEzNS42MTIgMTA4LjI2OCAxMjYuMDA1IDExOC45ODRDMTIxLjk0IDEyMy43ODggMTIwLjQ2MiAxMjcuNDgzIDEyMS4yMDEgMTMxLjE3OEMxMjEuNTcgMTM0Ljg3MyAxMjQuODk2IDEzOC41NjggMTMwLjQzOSAxNDEuNTI0WiIgZmlsbD0iI0VGNDI0RCI+PC9wYXRoPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cmVjdCB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE1Ni4zMDUiIGZpbGw9IndoaXRlIj48L3JlY3Q+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+IA==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Ceph" + camel.apache.org/kamelet.namespace: "Cloud" labels: camel.apache.org/kamelet.type: "sink" spec: diff --git a/ceph-source.kamelet.yaml b/kamelets/ceph-source.kamelet.yaml similarity index 88% rename from ceph-source.kamelet.yaml rename to kamelets/ceph-source.kamelet.yaml index 9885e5764..9f987aa77 100644 --- a/ceph-source.kamelet.yaml +++ b/kamelets/ceph-source.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: ceph-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTU3IiB2aWV3Qm94PSIwIDAgMTYwIDE1NyIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZD0iTTc5LjgxNTIgOTYuMDczOUM4OC42ODM2IDk2LjA3MzkgOTUuNzA0NCA4OS4wNTMxIDk1LjcwNDQgODAuMTg0OEM5NS43MDQ0IDcxLjMxNjQgODguNjgzNiA2NC4yOTU2IDc5LjgxNTIgNjQuMjk1NkM3MC45NDY5IDY0LjI5NTYgNjMuOTI2MSA3MS4zMTY0IDYzLjkyNjEgODAuMTg0OEM2My45MjYxIDg4LjY4MzYgNzEuMzE2NCA5Ni4wNzM5IDc5LjgxNTIgOTYuMDczOVpNMTAxLjI0NyAxNTYuMzA1TDEwNS42ODEgMTU0LjgyN0MxMTAuMTE1IDE1My4zNDkgMTE0LjkxOSAxNTEuNTAxIDExOC45ODQgMTQ4LjkxNUMxMTEuNTk0IDE0NC44NSAxMDcuMTU5IDEzNy40NiAxMDcuMTU5IDEyOC45NjFDMTA3LjE1OSAxMjMuNDE4IDEwOS4zNzYgMTE4LjI0NSAxMTMuNDQxIDExMy4wNzJDMTEzLjQ0MSAxMTMuMDcyIDExMy40NDEgMTEzLjA3MiAxMTMuODExIDExMi43MDJMMTE0LjkxOSAxMTEuMjI0QzExNi4wMjggMTA5Ljc0NiAxMTcuMTM2IDEwOC42MzcgMTE4LjI0NSAxMDcuMTU5QzEyMS45NCAxMDEuOTg2IDEyNC44OTYgOTYuMDczOSAxMjYuMzc0IDg5Ljc5MjJDMTI3Ljg1MiA4Mi43NzE0IDEyOC4yMjIgNzUuNzUwNiAxMjYuNzQ0IDY4LjcyOThDMTI1LjI2NiA2Mi40NDggMTIyLjY3OSA1Ni4xNjYzIDExOC45ODQgNTAuOTkzMUMxMTUuMjg5IDQ1LjgxOTkgMTEwLjg1NSA0MS4zODU3IDEwNS4zMTIgMzguMDZDOTkuNzY5MSAzNC43MzQ0IDkzLjQ4NzMgMzIuMTQ3OCA4Ni44MzYgMzEuNDA4OEM4NC42MTg5IDMxLjAzOTMgODIuNDAxOSAzMS4wMzkzIDgwLjE4NDggMzEuMDM5M0g3OS40NDU3Qzc3LjIyODYgMzEuMDM5MyA3NS4wMTE2IDMxLjAzOTMgNzIuNzk0NSAzMS40MDg4QzY2LjE0MzIgMzIuNTE3MyA1OS44NjE0IDM0LjczNDQgNTQuMzE4NyAzOC4wNkM0OS4xNDU1IDQxLjM4NTcgNDQuMzQxOCA0NS44MTk5IDQwLjY0NjcgNTAuOTkzMUMzNi45NTE1IDU2LjE2NjMgMzMuOTk1NCA2Mi40NDggMzIuODg2OCA2OC43Mjk4QzMxLjQwODggNzUuNzUwNiAzMS40MDg4IDgyLjc3MTQgMzMuMjU2NCA4OS40MjI2QzM0LjczNDQgOTUuNzA0NCAzNy42OTA1IDEwMS42MTcgNDEuMzg1NyAxMDYuNzlMNDQuNzExMyAxMTAuODU1TDQ1LjgxOTkgMTEyLjMzM0M0OS44ODQ1IDExNy4xMzYgNTIuMTAxNiAxMjIuNjc5IDUyLjEwMTYgMTI4LjIyMkM1Mi4xMDE2IDEzNi43MjEgNDcuMjk3OSAxNDQuMTExIDQwLjI3NzEgMTQ4LjE3NkM0NC4zNDE4IDE1MC4zOTMgNDkuMTQ1NSAxNTIuNjEgNTMuNTc5NyAxNTQuMDg4TDU4LjM4MzQgMTU1LjU2NkM1OS4xMjI0IDE1NC44MjcgNjIuNDQ4IDE1Mi42MSA2NS40MDQyIDE0OC4xNzZDNjguMzYwMyAxNDQuMTExIDcxLjY4NTkgMTM3LjQ2IDcxLjY4NTkgMTI4LjIyMkM3MS42ODU5IDEyMi42NzkgNzAuNTc3NCAxMTcuNTA2IDY4LjM2MDMgMTEyLjMzM0M2Ni4xNDMyIDEwNy4xNTkgNjMuMTg3MSAxMDIuNzI1IDU5LjQ5MTkgOTguNjYwNUw1OC43NTI5IDk3LjU1MkM1Ny4yNzQ4IDk2LjA3MzkgNTUuNzk2OCA5NC4yMjYzIDU0LjY4ODIgOTIuMzc4OEM1My4yMTAyIDg5Ljc5MjIgNTIuMTAxNiA4Ny41NzUxIDUxLjczMjEgODQuNjE4OUM1MC42MjM2IDgwLjU1NDMgNTAuNjIzNiA3Ni40ODk2IDUxLjczMjEgNzIuNDI0OUM1Mi40NzExIDY4LjcyOTggNTMuOTQ5MiA2NS4wMzQ2IDU2LjE2NjMgNjIuMDc4NUM1OC4zODM0IDU5LjEyMjQgNjAuOTcgNTYuNTM1OCA2NC4yOTU2IDU0LjMxODdDNjcuNjIxMiA1Mi4xMDE2IDcxLjMxNjQgNTAuOTkzMSA3NS4wMTE1IDUwLjI1NEM3Ni40ODk2IDQ5Ljg4NDUgNzcuNTk4MiA0OS44ODQ1IDc5LjA3NjIgNDkuODg0NUg3OS44MTUyQzgxLjI5MzMgNDkuODg0NSA4Mi40MDE5IDQ5Ljg4NDUgODMuODc5OSA1MC4yNTRDODcuNTc1MSA1MC42MjM2IDkxLjI3MDIgNTIuMTAxNiA5NC41OTU4IDU0LjMxODdDOTcuOTIxNSA1Ni4xNjYzIDEwMC41MDggNTguNzUyOSAxMDIuNzI1IDYyLjA3ODVDMTA0Ljk0MiA2NS4wMzQ2IDEwNi40MiA2OC43Mjk4IDEwNy4xNTkgNzIuNDI0OUMxMDcuODk4IDc2LjQ4OTYgMTA3Ljg5OCA4MC41NTQzIDEwNy4xNTkgODQuNjE4OUMxMDYuNDIgODcuMjA1NSAxMDUuNjgxIDg5Ljc5MjIgMTA0LjIwMyA5Mi4zNzg4QzEwMy4wOTUgOTQuMjI2MyAxMDEuNjE3IDk2LjA3MzkgMTAwLjEzOSA5Ny41NTJMOTkuMzk5NSA5OC42NjA1Qzk1LjcwNDQgMTAyLjcyNSA5Mi43NDgzIDEwNy4xNTkgOTAuNTMxMiAxMTIuMzMzQzg4LjMxNDEgMTE3LjUwNiA4Ny4yMDU1IDEyMi42NzkgODcuMjA1NSAxMjguMjIyQzg3LjIwNTUgMTM3LjQ2IDkwLjUzMTIgMTQ0LjExMSA5My40ODczIDE0OC4xNzZDOTYuODEyOSAxNTMuMzQ5IDEwMC4xMzkgMTU1LjkzNSAxMDEuMjQ3IDE1Ni4zMDVaTTEzMC40MzkgMTQxLjUyNEMxMzkuMzA3IDEzNC4xMzQgMTQ3LjA2NyAxMjQuNTI3IDE1MS44NzEgMTE0LjU1QzE1NC40NTcgMTA5LjM3NiAxNTYuMzA1IDEwMy40NjQgMTU3Ljc4MyA5Ny45MjE1QzE1OS4yNjEgOTIuMDA5MiAxNjAgODUuNzI3NSAxNjAgNzkuODE1MkMxNjAgNjkuMDk5MyAxNTcuNzgzIDU4LjM4MzQgMTUzLjcxOCA0OC43NzZDMTQ5LjY1NCAzOS4xNjg2IDE0My43NDEgMzAuNjY5NyAxMzYuNzIxIDIzLjI3OTRDMTI5LjMzIDE1Ljg4OTEgMTIwLjgzMSAxMC4zNDY0IDExMS4yMjQgNi4yODE3NkMxMDEuMjQ3IDIuMjE3MDkgOTAuOTAwNyAwIDgwLjE4NDggMEg3OS44MTUyQzY5LjA5OTMgMCA1OC4zODM0IDIuMjE3MDkgNDguNzc2IDYuMjgxNzZDMzkuMTY4NiAxMC4zNDY0IDMwLjY2OTcgMTYuMjU4NyAyMy4yNzk0IDIzLjI3OTRDMTUuODg5MSAzMC42Njk3IDEwLjM0NjQgMzkuMTY4NiA2LjI4MTc2IDQ4Ljc3NkMyLjIxNzA5IDU4Ljc1MjkgMCA2OS4wOTkzIDAgNzkuODE1MkMwIDg2LjA5NyAwLjczOTAzIDkyLjAwOTIgMi4yMTcwOSA5Ny45MjE1QzMuNjk1MTUgMTAzLjgzNCA1LjU0MjczIDEwOS4zNzYgOC4xMjkzMyAxMTQuNTVDMTIuOTMzIDEyNC41MjcgMjAuNjkyOCAxMzQuMTM0IDI5LjU2MTIgMTQxLjUyNEMzNS40NzM0IDEzOC4xOTkgMzguNDI5NiAxMzQuODczIDM5LjE2ODYgMTMxLjE3OEMzOS45MDc2IDEyNy40ODMgMzguNDI5NiAxMjMuNzg4IDM0LjM2NDkgMTE4Ljk4NEMyNC43NTc1IDEwNy44OTggMTkuNTg0MyA5My44NTY4IDE5LjU4NDMgNzkuNDQ1N0MxOS41ODQzIDQ2LjE4OTQgNDYuNTU4OSAxOS4yMTQ4IDc5LjgxNTIgMTguODQ1M0g4MC4xODQ4SDgwLjU1NDNDMTEzLjgxMSAxOC44NDUzIDE0MC43ODUgNDUuODE5OSAxNDAuNzg1IDc5LjQ0NTdDMTQwLjc4NSA5My44NTY4IDEzNS42MTIgMTA4LjI2OCAxMjYuMDA1IDExOC45ODRDMTIxLjk0IDEyMy43ODggMTIwLjQ2MiAxMjcuNDgzIDEyMS4yMDEgMTMxLjE3OEMxMjEuNTcgMTM0Ljg3MyAxMjQuODk2IDEzOC41NjggMTMwLjQzOSAxNDEuNTI0WiIgZmlsbD0iI0VGNDI0RCI+PC9wYXRoPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cmVjdCB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE1Ni4zMDUiIGZpbGw9IndoaXRlIj48L3JlY3Q+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+IA==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Ceph" + camel.apache.org/kamelet.namespace: "Cloud" labels: camel.apache.org/kamelet.type: "source" spec: diff --git a/kamelets/data-type-action.kamelet.yaml b/kamelets/data-type-action.kamelet.yaml new file mode 100644 index 000000000..3063ea2c4 --- /dev/null +++ b/kamelets/data-type-action.kamelet.yaml @@ -0,0 +1,72 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: data-type-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Data Type Action" + description: |- + Applies a given data type with respective data transformation. + required: + - format + type: object + properties: + scheme: + title: Component Scheme + description: The data type component scheme enables users to apply Camel component specific data type conversions. + type: string + format: + title: Data Type Format + description: Defines the data type that will be applied by this action. Apache Camel and the Kamelet catalog support different data types and performs automatic message conversion according to the given type. + type: string + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + template: + beans: + - name: dataTypeProcessor + type: "#class:org.apache.camel.processor.transformer.DataTypeProcessor" + from: + uri: "kamelet:source" + steps: + - choice: + when: + - simple: "'{{?scheme}}' != ''" + steps: + - set-property: + name: CamelDataType + simple: "{{?scheme}}:{{format}}" + otherwise: + steps: + - set-property: + name: CamelDataType + simple: "{{format}}" + - bean: + ref: "{{dataTypeProcessor}}" + method: process diff --git a/elasticsearch-index-sink.kamelet.yaml b/kamelets/elasticsearch-index-sink.kamelet.yaml similarity index 78% rename from elasticsearch-index-sink.kamelet.yaml rename to kamelets/elasticsearch-index-sink.kamelet.yaml index 8754cecc3..1c86b962b 100644 --- a/elasticsearch-index-sink.kamelet.yaml +++ b/kamelets/elasticsearch-index-sink.kamelet.yaml @@ -1,29 +1,49 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: elasticsearch-index-sink labels: camel.apache.org/kamelet.type: "sink" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.group: "ElasticSearch" + camel.apache.org/kamelet.namespace: "Search" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1NTAgMjUwIiB2aWV3Qm94PSI3Nyw4Myw0MTAsOTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8cGF0aCBkPSJtMTc4IDEwMi41aDMxM3Y0MWgtMzEzeiIgZmlsbD0ibm9uZSIvPgogPGcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyI+CiAgPHBhdGggZD0ibTE5My4zIDEzOS40Yy00IDAtNy4yLTEuMi05LjUtMy41cy0zLjQtNS42LTMuNC05LjdjMC00LjIgMS4xLTcuNiAzLjItMTBzNS0zLjYgOC43LTMuNmMzLjQgMCA2LjEgMSA4LjEgMy4xczMgNC45IDMgOC42djNoLTE3LjNjLjEgMi41LjggNC40IDIgNS44czMuMSAyIDUuNCAyYzEuNSAwIDMtLjEgNC4zLS40czIuNy0uOCA0LjMtMS40djQuNWMtMS4zLjYtMi43IDEuMS00LjEgMS40cy0zIC4yLTQuNy4yem0tMS4xLTIyLjZjLTEuOCAwLTMuMi42LTQuMiAxLjdzLTEuNyAyLjctMS45IDQuOWgxMS44YzAtMi4xLS41LTMuOC0xLjUtNC45cy0yLjQtMS43LTQuMi0xLjd6Ii8+CiAgPHBhdGggZD0ibTIxNS4xIDEzOWgtNS41di0zNi41aDUuNXoiLz4KICA8cGF0aCBkPSJtMjM5LjIgMTM5LTEuMS0zLjZoLS4yYy0xLjIgMS42LTIuNSAyLjctMy44IDMuMnMtMi45LjktNC45LjljLTIuNSAwLTQuNS0uNy02LTIuMXMtMi4xLTMuMy0yLjEtNS44YzAtMi43IDEtNC43IDMtNnM1LTIuMSA5LjEtMi4ybDQuNS0uMXYtMS40YzAtMS43LS40LTIuOS0xLjItMy43cy0yLTEuMi0zLjYtMS4yYy0xLjMgMC0yLjYuMi0zLjguNnMtMi40LjktMy41IDEuNGwtMS44LTMuOWMxLjQtLjcgMi45LTEuMyA0LjYtMS43czMuMi0uNiA0LjctLjZjMy4zIDAgNS44LjcgNy41IDIuMnMyLjUgMy43IDIuNSA2Ljh2MTcuMnptLTguMi0zLjhjMiAwIDMuNi0uNiA0LjgtMS43czEuOC0yLjcgMS44LTQuN3YtMi4ybC0zLjMuMWMtMi42LjEtNC41LjUtNS43IDEuM3MtMS44IDItMS44IDMuNmMwIDEuMi4zIDIuMSAxIDIuN3MxLjguOSAzLjIuOXoiLz4KICA8cGF0aCBkPSJtMjY4LjIgMTMxLjZjMCAyLjUtLjkgNC41LTIuOCA1LjhzLTQuNSAyLTcuOSAyYy0zLjUgMC02LjItLjUtOC4zLTEuNnYtNC44YzMgMS40IDUuOSAyLjEgOC41IDIuMSAzLjQgMCA1LjEtMSA1LjEtMy4xIDAtLjctLjItMS4yLS42LTEuNnMtMS0uOS0xLjktMS40LTIuMS0xLTMuNi0xLjZjLTMtMS4yLTUtMi4zLTYuMS0zLjVzLTEuNi0yLjctMS42LTQuNWMwLTIuMi45LTMuOSAyLjctNS4yczQuMi0xLjggNy4zLTEuOGMzIDAgNS45LjYgOC42IDEuOWwtMS44IDQuMWMtMi44LTEuMi01LjEtMS43LTcuMS0xLjctMi45IDAtNC40LjgtNC40IDIuNSAwIC44LjQgMS41IDEuMSAyLjFzMi40IDEuMyA1IDIuM2MyLjEuOCAzLjcgMS42IDQuNyAyLjNzMS43IDEuNSAyLjIgMi40Yy43IDEgLjkgMiAuOSAzLjN6Ii8+CiAgPHBhdGggZD0ibTI4My44IDEzNWMxLjMgMCAyLjctLjIgNC0uNnY0LjFjLS42LjMtMS40LjUtMi40LjdzLTIgLjMtMyAuM2MtNS4yIDAtNy44LTIuOC03LjgtOC4ydi0xNGgtMy41di0yLjRsMy44LTIgMS45LTUuNWgzLjR2NS44aDcuNHY0LjJoLTcuNHYxMy45YzAgMS4zLjMgMi4zIDEgMi45czEuNi44IDIuNi44eiIvPgogIDxwYXRoIGQ9Im0yOTIuNyAxMDYuMmMwLTEgLjMtMS43LjgtMi4zczEuMy0uOCAyLjMtLjggMS43LjMgMi4zLjguOCAxLjMuOCAyLjNjMCAuOS0uMyAxLjctLjggMi4ycy0xLjMuOC0yLjMuOC0xLjgtLjMtMi4zLS44LS44LTEuMy0uOC0yLjJ6bTUuOSAzMi44aC01LjV2LTI1LjloNS41eiIvPgogIDxwYXRoIGQ9Im0zMTYuOSAxMzkuNGMtMy45IDAtNi45LTEuMS04LjktMy40cy0zLjEtNS42LTMuMS05LjljMC00LjQgMS4xLTcuNyAzLjItMTAuMXM1LjItMy41IDkuMi0zLjVjMi43IDAgNS4yLjUgNy40IDEuNWwtMS43IDQuNGMtMi4zLS45LTQuMi0xLjQtNS44LTEuNC00LjUgMC02LjcgMy02LjcgOC45IDAgMi45LjYgNS4xIDEuNyA2LjZzMi44IDIuMiA0LjkgMi4yYzIuNSAwIDQuOC0uNiA3LTEuOHY0LjhjLTEgLjYtMiAxLTMuMiAxLjJzLTIuNC41LTQgLjV6Ii8+CiAgPHBhdGggZD0ibTM0Ny42IDEzMS42YzAgMi41LS45IDQuNS0yLjggNS44cy00LjUgMi03LjkgMmMtMy41IDAtNi4yLS41LTguMy0xLjZ2LTQuOGMzIDEuNCA1LjkgMi4xIDguNSAyLjEgMy40IDAgNS4xLTEgNS4xLTMuMSAwLS43LS4yLTEuMi0uNi0xLjZzLTEtLjktMS45LTEuNC0yLjEtMS0zLjYtMS42Yy0zLTEuMi01LTIuMy02LjEtMy41cy0xLjYtMi43LTEuNi00LjVjMC0yLjIuOS0zLjkgMi43LTUuMnM0LjItMS44IDcuMy0xLjhjMyAwIDUuOS42IDguNiAxLjlsLTEuOCA0LjFjLTIuOC0xLjItNS4xLTEuNy03LjEtMS43LTIuOSAwLTQuNC44LTQuNCAyLjUgMCAuOC40IDEuNSAxLjEgMi4xczIuNCAxLjMgNSAyLjNjMi4xLjggMy43IDEuNiA0LjcgMi4zczEuNyAxLjUgMi4yIDIuNGMuNyAxIC45IDIgLjkgMy4zeiIvPgogIDxwYXRoIGQ9Im0zNjQuOSAxMzkuNGMtNCAwLTcuMi0xLjItOS41LTMuNXMtMy40LTUuNi0zLjQtOS43YzAtNC4yIDEuMS03LjYgMy4yLTEwczUtMy42IDguNy0zLjZjMy40IDAgNi4xIDEgOC4xIDMuMXMzIDQuOSAzIDguNnYzaC0xNy4zYy4xIDIuNS44IDQuNCAyIDUuOHMzLjEgMiA1LjQgMmMxLjUgMCAzLS4xIDQuMy0uNHMyLjctLjggNC4zLTEuNHY0LjVjLTEuMy42LTIuNyAxLjEtNC4xIDEuNHMtMi45LjItNC43LjJ6bS0xLTIyLjZjLTEuOCAwLTMuMi42LTQuMiAxLjdzLTEuNyAyLjctMS45IDQuOWgxMS44YzAtMi4xLS41LTMuOC0xLjUtNC45cy0yLjUtMS43LTQuMi0xLjd6Ii8+CiAgPHBhdGggZD0ibTM5Ny40IDEzOS0xLjEtMy42aC0uMmMtMS4yIDEuNi0yLjUgMi43LTMuOCAzLjJzLTIuOS45LTQuOS45Yy0yLjUgMC00LjUtLjctNi0yLjFzLTIuMS0zLjMtMi4xLTUuOGMwLTIuNyAxLTQuNyAzLTZzNS0yLjEgOS4xLTIuMmw0LjUtLjF2LTEuNGMwLTEuNy0uNC0yLjktMS4yLTMuN3MtMi0xLjItMy42LTEuMmMtMS4zIDAtMi42LjItMy44LjZzLTIuNC45LTMuNSAxLjRsLTEuOC0zLjljMS40LS43IDIuOS0xLjMgNC42LTEuN3MzLjItLjYgNC43LS42YzMuMyAwIDUuOC43IDcuNSAyLjJzMi41IDMuNyAyLjUgNi44djE3LjJ6bS04LjItMy44YzIgMCAzLjYtLjYgNC44LTEuN3MxLjgtMi43IDEuOC00Ljd2LTIuMmwtMy4zLjFjLTIuNi4xLTQuNS41LTUuNyAxLjNzLTEuOCAyLTEuOCAzLjZjMCAxLjIuMyAyLjEgMSAyLjdzMS45LjkgMy4yLjl6Ii8+CiAgPHBhdGggZD0ibTQyMi4yIDExMi42YzEuMSAwIDIgLjEgMi43LjJsLS41IDUuMWMtLjgtLjItMS42LS4zLTIuNC0uMy0yLjIgMC00IC43LTUuNCAyLjJzLTIuMSAzLjMtMi4xIDUuNnYxMy42aC01LjV2LTI1LjloNC4zbC43IDQuNmguM2MuOS0xLjUgMi0yLjggMy40LTMuN3MyLjktMS40IDQuNS0xLjR6Ii8+CiAgPHBhdGggZD0ibTQ0MC4yIDEzOS40Yy0zLjkgMC02LjktMS4xLTguOS0zLjRzLTMuMS01LjYtMy4xLTkuOWMwLTQuNCAxLjEtNy43IDMuMi0xMC4xczUuMi0zLjUgOS4yLTMuNWMyLjcgMCA1LjIuNSA3LjQgMS41bC0xLjcgNC40Yy0yLjMtLjktNC4yLTEuNC01LjgtMS40LTQuNSAwLTYuNyAzLTYuNyA4LjkgMCAyLjkuNiA1LjEgMS43IDYuNnMyLjggMi4yIDQuOSAyLjJjMi41IDAgNC44LS42IDctMS44djQuOGMtMSAuNi0yIDEtMy4yIDEuMnMtMi40LjUtNCAuNXoiLz4KICA8cGF0aCBkPSJtNDc2LjMgMTM5aC01LjV2LTE2YzAtMi0uNC0zLjUtMS4yLTQuNXMtMi4xLTEuNS0zLjgtMS41Yy0yLjMgMC00IC43LTUuMSAyLjFzLTEuNiAzLjctMS42IDYuOXYxM2gtNS41di0zNi41aDUuNXY5LjNjMCAxLjUtLjEgMy4xLS4zIDQuOGguNGMuOC0xLjIgMS44LTIuMiAzLjEtMi45czIuOS0xIDQuNy0xYzYuMyAwIDkuNCAzLjIgOS40IDkuNXYxNi44eiIvPgogPC9nPgogPHBhdGggZD0ibTE0MS44IDExNS41aC0yMC45Yy4xLjUuMyAxIC40IDEuNC43IDIuNCAxLjEgNC45IDEuMyA3LjUuMSAxIC4xIDIuMS4xIDMuMXMwIDIuMS0uMSAzLjFjLS4yIDIuNi0uNiA1LjEtMS4zIDcuNS0uMS41LS4zIDEtLjQgMS40aDIwLjljNi42IDAgMTEuOS01LjQgMTEuOS0xMnMtNS4zLTEyLTExLjktMTJ6IiBmaWxsPSIjMDBhOWU1Ii8+CiA8cGF0aCBkPSJtMTIyLjYgMTMwLjZjLjEtMSAuMS0yLjEuMS0zLjFzMC0yLjEtLjEtMy4xYy0uMi0yLjYtLjYtNS4xLTEuMy03LjUtLjEtLjUtLjMtMS0uNC0xLjRoLTMyLjNjLTEuMiAzLjgtMS44IDcuOC0xLjggMTJzLjYgOC4yIDEuOCAxMmgzMi4zYy4xLS41LjMtMSAuNC0xLjQuNy0yLjQgMS4xLTQuOSAxLjMtNy41eiIgZmlsbD0iIzM1MzUzNSIvPgogPHBhdGggZD0ibTE0NS40IDE0My41aC0yNmMtLjggMS44LTEuNyAzLjUtMi43IDUuMS0xLjUgMi41LTMuMyA0LjctNS4zIDYuOC0uNy43LTEuNCAxLjMtMi4xIDItMS40IDEuMy0zIDIuNC00LjYgMy41IDYuMyA0LjIgMTMuOSA2LjYgMjIgNi42IDEzLjkgMCAyNi4xLTcuMSAzMy4zLTE3LjgtMy43LTMuOC04LjktNi4yLTE0LjYtNi4yeiIgZmlsbD0iIzAwYmZiMyIvPgogPHBhdGggZD0ibTExNi43IDE0OC42YzEtMS42IDEuOS0zLjMgMi43LTUuMWgtMjkuM2MzLjEgNy4xIDguMiAxMy4yIDE0LjcgMTcuNCAxLjYtMS4xIDMuMS0yLjIgNC42LTMuNS43LS42IDEuNC0xLjMgMi4xLTIgMS45LTIgMy43LTQuMyA1LjItNi44eiIgZmlsbD0iIzAxOWI4ZiIvPgogPHBhdGggZD0ibTExMS40IDk5LjZjLS43LS43LTEuNC0xLjMtMi4xLTItMS40LTEuMy0zLTIuNC00LjYtMy41LTYuNCA0LjItMTEuNSAxMC4zLTE0LjcgMTcuNGgyOS4zYy0uOC0xLjgtMS43LTMuNS0yLjctNS4xLTEuNC0yLjUtMy4yLTQuOC01LjItNi44eiIgZmlsbD0iI2Y5YjExMCIvPgogPHBhdGggZD0ibTEyNi43IDg3LjVjLTguMSAwLTE1LjcgMi40LTIyIDYuNiAxLjYgMS4xIDMuMSAyLjIgNC42IDMuNS43LjYgMS40IDEuMyAyLjEgMiAyIDIuMSAzLjggNC4zIDUuMyA2LjggMSAxLjYgMS45IDMuMyAyLjcgNS4xaDI2YzUuNyAwIDEwLjktMi40IDE0LjYtNi4yLTcuMi0xMC43LTE5LjQtMTcuOC0zMy4zLTE3Ljh6IiBmaWxsPSIjZmVkMTBhIi8+Cjwvc3ZnPg==" spec: definition: title: "ElasticSearch Index Sink" description: |- - This sink stores documents into ElasticSearch. + Stores JSON-formatted data into ElasticSearch. - Input data must have JSON format according to the index used. + The input data must be formatted in JSON according to the requirements of the index. - - `indexId` / `ce-indexid`: as the index ID for Elasticsearch + If you specify the `certificate` property, you must base64 encode it before you pass it as a parameter. + + In the header, you can set the following properties: - If the header won't be set the exchange ID will be used as index. - - - `indexName` / `ce-indexname`: as the index Name for Elasticsearch - - If the header won't be set the exchange ID will be used as index name. + - `indexId` / `ce-indexid`: The index ID for ElasticSearch. + + - `indexName` / `ce-indexname`: The index name for ElasticSearch. + + If you do not set a property in the header, the Kamelet uses the exchange ID for the index setting. required: - clusterName - hostAddresses @@ -31,13 +51,13 @@ spec: properties: user: title: Username - description: Username to connect to ElasticSearch. + description: The username to connect to ElasticSearch. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: Password to connect to ElasticSearch. + description: The password to connect to ElasticSearch. type: string format: password x-descriptors: @@ -45,42 +65,46 @@ spec: - urn:camel:group:credentials enableSSL: title: Enable SSL - description: Do we want to connect using SSL? + description: Specifies to connect by using SSL. type: boolean default: true x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' hostAddresses: title: Host Addresses - description: Comma separated list with ip:port formatted remote transport addresses to use. + description: A comma-separated list of remote transport addresses in `ip:port format`. type: string example: quickstart-es-http:9200 clusterName: title: ElasticSearch Cluster Name - description: Name of the cluster. + description: The name of the ElasticSearch cluster. type: string example: quickstart indexName: title: Index in ElasticSearch - description: The name of the index to act against. + description: The name of the ElasticSearch index. type: string example: data + certificate: + title: Certificate + description: The Certificate for accessing the Elasticsearch cluster. You must encode this value in base64. + type: string types: out: - mediaType: application/json + mediaType: text/plain in: mediaType: application/json dependencies: - "camel:core" - "camel:jackson" - "camel:kamelet" - - "camel:elasticsearch-rest" + - "camel:elasticsearch" - "camel:gson" - "camel:bean" template: beans: - name: local-es - type: "#class:org.apache.camel.component.elasticsearch.ElasticsearchComponent" + type: "#class:org.apache.camel.component.es.ElasticsearchComponent" properties: user: "{{?user}}" password: "{{?password}}" @@ -111,6 +135,8 @@ spec: - set-header: name: "indexName" simple: "${header[ce-indexname]}" + - unmarshal: + json: {} - to: uri: "{{local-es}}:{{clusterName}}" parameters: @@ -118,5 +144,4 @@ spec: hostAddresses: "{{hostAddresses}}" enableSSL: "{{enableSSL}}" indexName: "{{?indexName}}" - - marshal: - json: { } + certificatePath: "base64:{{?certificate}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/extract-field-action.kamelet.yaml b/kamelets/extract-field-action.kamelet.yaml similarity index 57% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/extract-field-action.kamelet.yaml rename to kamelets/extract-field-action.kamelet.yaml index 31835b4d6..4bf0d1488 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/extract-field-action.kamelet.yaml +++ b/kamelets/extract-field-action.kamelet.yaml @@ -1,25 +1,76 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: extract-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Extract Field Action" - description: "Extract a field from the body" + description: |- + Extract a field from the message body. + + The extract field action expects an application/json content type. + + The field parameter allows you to specify which field of the json the user wants to extract. By default the message body will be overriden with the extracted field. + + The optional parameter headerOutput allows the user to specify wheter the extracted field should be stored in a message header named 'CamelKameletsExtractFieldName', leaving the message body untouched. + + The optional parameter headerOutputName allows the user to specify a custom header name instead of the default 'CamelKameletsExtractFieldName'. This parameter must be used in conjunction with headerOutput. + If no headerOutputName parameter will be provided, the default 'CamelKameletsExtractFieldName' will be used. + + The optional parameter strictHeaderCheck allows to user to enable a strict header name check. If enabled the action will check if the header output name (custom or default) has been used already in the exchange. If so, the extracted field will be stored in the message body, if not, the extracted field will be stored in the selected header (custom or default). + + The headerOutput/headerOutputName/strictHeaderCheck parameters are particulary useful in case you would like to reuse an extracted field as parameter for another header, for example. required: - field properties: field: title: Field - description: The name of the field to be added + description: The name of the field to extract type: string + headerOutput: + title: Header Output + description: If enable the action will store the extracted field in an header named CamelKameletsExtractFieldName + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + headerOutputName: + title: Header Output Name + description: A custom name for the header containing the extracted field + default: "none" + type: string + strictHeaderCheck: + title: Strict Header Check + description: If enabled the action will check if the header output name (custom or default) has been used already in the exchange. If so, the extracted field will be stored in the message body, if not, the extracted field will be stored in the selected header (custom or default). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' trimField: title: Trim Field description: If enabled we return the Raw extracted field @@ -29,11 +80,20 @@ spec: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:kamelet" - "camel:core" - "camel:jackson" template: + beans: + - name: extractField + type: "#class:org.apache.camel.kamelets.utils.transform.ExtractField" + properties: + field: '{{field}}' + headerOutput: '{{headerOutput}}' + headerOutputName: '{{headerOutputName}}' + strictHeaderCheck: '{{strictHeaderCheck}}' + trimField: '{{trimField}}' from: uri: kamelet:source steps: @@ -48,13 +108,8 @@ spec: json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - - set-property: - name: "field" - constant: "{{field}}" - - set-property: - name: "trimField" - constant: "{{trimField}}" - - bean: "org.apache.camel.kamelets.utils.transform.ExtractField" + - process: + ref: "{{extractField}}" - choice: when: - simple: "${exchangeProperty[trimField]} == 'false'" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-sink.kamelet.yaml b/kamelets/ftp-sink.kamelet.yaml similarity index 79% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-sink.kamelet.yaml rename to kamelets/ftp-sink.kamelet.yaml index b43ae0f7d..268432891 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-sink.kamelet.yaml +++ b/kamelets/ftp-sink.kamelet.yaml @@ -1,25 +1,41 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: ftp-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "FTP" + camel.apache.org/kamelet.namespace: "File" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "FTP Sink" description: |- - Send data to an FTP Server. + Send data to an FTP server. + + In the header, you can set the `file` / `ce-file` property to specify the filename to upload. - The Kamelet expects the following headers to be set: - - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. + If you do not set the property in the header, the Kamelet uses the exchange ID for the filename. required: - connectionHost - connectionPort @@ -30,20 +46,22 @@ spec: properties: connectionHost: title: Connection Host - description: Hostname of the FTP server + description: The hostname of the FTP server. type: string connectionPort: title: Connection Port - description: Port of the FTP server + description: The port of the FTP server. type: string default: 21 username: title: Username - description: The username to access the FTP server + description: The username to access the FTP server. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to access the FTP server + description: The password to access the FTP server. type: string format: password x-descriptors: @@ -51,20 +69,35 @@ spec: - urn:camel:group:credentials directoryName: title: Directory Name - description: The starting directory + description: The starting directory. type: string passiveMode: title: Passive Mode - description: Sets passive mode connection + description: Specifies to use passive mode connection. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' fileExist: title: File Existence - description: How to behave in case of file already existent. There are 4 enums and the value can be one of Override, Append, Fail or Ignore + description: How to behave in case of file already existent. type: string default: Override + enum: ["Override", "Append", "Fail", "Ignore"] + binary: + title: Binary + description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreate: + title: Autocreate Missing Directories + description: Automatically create the directory the files should be written to. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "camel:ftp" - "camel:core" @@ -91,3 +124,5 @@ spec: password: "{{password}}" passiveMode: "{{passiveMode}}" fileExist: "{{fileExist}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" diff --git a/ftp-source.kamelet.yaml b/kamelets/ftp-source.kamelet.yaml similarity index 78% rename from ftp-source.kamelet.yaml rename to kamelets/ftp-source.kamelet.yaml index 0ee56dd38..96f5ae7cd 100644 --- a/ftp-source.kamelet.yaml +++ b/kamelets/ftp-source.kamelet.yaml @@ -1,19 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: ftp-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "FTP" + camel.apache.org/kamelet.namespace: "File" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "FTP Source" description: |- - Receive data from an FTP Server. + Receive data from an FTP server. required: - connectionHost - connectionPort @@ -24,20 +42,22 @@ spec: properties: connectionHost: title: Connection Host - description: Hostname of the FTP server + description: The hostname of the FTP server. type: string connectionPort: title: Connection Port - description: Port of the FTP server + description: The port of the FTP server. type: string default: 21 username: title: Username - description: The username to access the FTP server + description: The username to access the FTP server. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to access the FTP server + description: The password to access the FTP server. type: string format: password x-descriptors: @@ -49,25 +69,46 @@ spec: type: string passiveMode: title: Passive Mode - description: Sets passive mode connection + description: Specifes to use passive mode connection. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' recursive: title: Recursive - description: If a directory, will look for files in all the sub-directories as well. + description: If a directory, look for files in all the sub-directories as well. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' idempotent: title: Idempotency - description: Skip already processed files. + description: Skip already-processed files. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + binary: + title: Binary + description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreate: + title: Autocreate Missing Directories + description: Automatically create starting directory. type: boolean default: true x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + delete: + title: Delete + description: If true, the file will be deleted after it is processed successfully. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "camel:ftp" - "camel:core" @@ -80,6 +121,9 @@ spec: passiveMode: "{{passiveMode}}" recursive: "{{recursive}}" idempotent: "{{idempotent}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" + delete: "{{delete}}" steps: - set-header: name: file diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml b/kamelets/has-header-filter-action.kamelet.yaml similarity index 79% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml rename to kamelets/has-header-filter-action.kamelet.yaml index 7499f6a10..eda32fb5b 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml +++ b/kamelets/has-header-filter-action.kamelet.yaml @@ -1,24 +1,42 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: has-header-filter-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "EIP" spec: definition: title: "Has Header Filter Action" - description: "Filter based on the presence of one header" + description: "Filter message based on the presence of one header" required: - name properties: name: title: Header Name - description: The header name to evaluate. The header name must be passed by the source Kamelet. For Knative only, if you are using Cloud Events, you must include the CloudEvent (ce-) prefix in the header name. + description: The header name to evaluate. The header name must be passed by the source Kamelet. For Knative only, the name of the header requires a CloudEvent (ce-) prefix. type: string example: headerName value: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/hoist-field-action.kamelet.yaml b/kamelets/hoist-field-action.kamelet.yaml similarity index 80% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/hoist-field-action.kamelet.yaml rename to kamelets/hoist-field-action.kamelet.yaml index 36a854728..daddc641f 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/hoist-field-action.kamelet.yaml +++ b/kamelets/hoist-field-action.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: hoist-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Hoist Field Action" @@ -22,7 +40,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - "camel:core" - "camel:jackson" - "camel:kamelet" @@ -35,7 +53,7 @@ spec: - simple: "${header[Content-Type]} == 'application/json'" steps: - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -43,7 +61,7 @@ spec: constant: "{{field}}" - bean: "org.apache.camel.kamelets.utils.transform.HoistField" - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/kamelets/http-sink.kamelet.yaml b/kamelets/http-sink.kamelet.yaml new file mode 100644 index 000000000..96e1ebab5 --- /dev/null +++ b/kamelets/http-sink.kamelet.yaml @@ -0,0 +1,63 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: http-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "HTTP" + camel.apache.org/kamelet.namespace: "HTTP" + labels: + camel.apache.org/kamelet.type: sink +spec: + definition: + title: HTTP Sink + description: Forward data to a HTTP or HTTPS endpoint. + required: + - url + type: object + properties: + url: + title: URL + description: The URL to which you want to send data. + type: string + example: "https://my-service/path" + pattern: "^(http|https)://.*" + method: + title: Method + description: The HTTP method to use. + type: string + default: POST + enum: ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE", "PATCH"] + dependencies: + - "camel:http" + - "camel:kamelet" + - "camel:core" + template: + from: + uri: kamelet:source + steps: + - remove-header: + name: CamelHttpUri + - set-header: + name: CamelHttpMethod + constant: "{{method}}" + - to: "{{url}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-field-action.kamelet.yaml b/kamelets/insert-field-action.kamelet.yaml similarity index 73% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/insert-field-action.kamelet.yaml rename to kamelets/insert-field-action.kamelet.yaml index 842c56b5f..6b1027a26 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-field-action.kamelet.yaml +++ b/kamelets/insert-field-action.kamelet.yaml @@ -1,18 +1,41 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: insert-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Insert Field Action" - description: "Adds a custom field with a constant value to the message in transit" + description: |- + Adds a custom field with a simple language parsed value to the message in transit. + + The extract field action expected an application/json content type. + + If for example you have an array like '{ "foo":"John", "bar":30 }' and your action has been configured with field as 'element' and value as 'hello', you'll get '{ "foo":"John", "bar":30, "element":"hello" }' required: - field - value @@ -27,11 +50,17 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:core" - "camel:jackson" - "camel:kamelet" template: + beans: + - name: insertField + type: "#class:org.apache.camel.kamelets.utils.transform.InsertField" + properties: + field: '{{field}}' + value: '{{value}}' from: uri: kamelet:source steps: @@ -46,13 +75,8 @@ spec: json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - - set-property: - name: "field" - constant: "{{field}}" - - set-property: - name: "value" - constant: "{{value}}" - - bean: "org.apache.camel.kamelets.utils.transform.InsertField" + - process: + ref: "{{insertField}}" - choice: when: - simple: "${exchangeProperty[deserialized]} == 'true'" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/throttle-action.kamelet.yaml b/kamelets/insert-header-action.kamelet.yaml similarity index 85% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/throttle-action.kamelet.yaml rename to kamelets/insert-header-action.kamelet.yaml index b66eadb8e..e8be99d68 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/throttle-action.kamelet.yaml +++ b/kamelets/insert-header-action.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -14,34 +14,36 @@ # See the License for the specific language governing permissions and # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: - name: throttle-action + name: insert-header-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "EIP" spec: definition: - title: "Throttle Action" - description: "The Throttle action allows you to ensure that a specific sink does not get overloaded." + title: "Insert Header Action" + description: "Adds an header with a simple language parsed expression to the message in transit" required: - - messages + - name + - value properties: - messages: - title: Messages Number - description: The number of messages to send in the time period set - type: integer - example: 10 - timePeriod: - title: Time Period - description: Sets the time period during which the maximum request count is valid for, in milliseconds + name: + title: Name + description: The name of the header to be added. For Knative only, the name of the header requires a CloudEvent (ce-) prefix. + type: string + example: headername + value: + title: Value + description: The value of the header to be added type: string - default: "1000" type: object dependencies: - "camel:core" @@ -50,6 +52,6 @@ spec: from: uri: kamelet:source steps: - - throttle: - constant: "{{messages}}" - timePeriodMillis: "{{timePeriod}}" + - set-header: + name: "{{name}}" + simple: "{{value}}" diff --git a/kamelets/is-tombstone-filter-action.kamelet.yaml b/kamelets/is-tombstone-filter-action.kamelet.yaml new file mode 100644 index 000000000..2d88f5117 --- /dev/null +++ b/kamelets/is-tombstone-filter-action.kamelet.yaml @@ -0,0 +1,45 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: is-tombstone-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" +spec: + definition: + title: "Is Tombstone Filter Action" + description: "Filter based on the presence of body or not" + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + template: + from: + uri: kamelet:source + steps: + - filter: + simple: "${body} == null || ${body} == ''" + steps: + - stop: {} diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml b/kamelets/jira-add-comment-sink.kamelet.yaml similarity index 72% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml rename to kamelets/jira-add-comment-sink.kamelet.yaml index 4452b2d06..6e47d7e6a 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml +++ b/kamelets/jira-add-comment-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-add-comment-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -21,10 +39,10 @@ spec: The comment is set in the body of the message. + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: @@ -40,12 +58,18 @@ spec: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials types: in: mediaType: application/json @@ -54,7 +78,7 @@ spec: - "camel:jackson" - "camel:jira" - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "kamelet:source" @@ -70,5 +94,6 @@ spec: uri: "jira:AddComment" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + access-token: "{{?personal-token}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml b/kamelets/jira-add-issue-sink.kamelet.yaml similarity index 79% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml rename to kamelets/jira-add-issue-sink.kamelet.yaml index bdf1ae670..22b1769a7 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml +++ b/kamelets/jira-add-issue-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-add-issue-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -33,10 +51,10 @@ spec: The issue description can be set from the body of the message or the `issueDescription`/`ce-issueDescription` in the header, however the body takes precedence. + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: @@ -52,12 +70,18 @@ spec: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials types: in: mediaType: application/json @@ -66,7 +90,7 @@ spec: - "camel:jackson" - "camel:jira" - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "kamelet:source" @@ -124,5 +148,6 @@ spec: uri: "jira:AddIssue" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + access-token: "{{?personal-token}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml b/kamelets/jira-source.kamelet.yaml similarity index 69% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml rename to kamelets/jira-source.kamelet.yaml index 744730e99..226f1b95c 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml +++ b/kamelets/jira-source.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "source" spec: @@ -14,34 +32,41 @@ spec: title: "Jira Source" description: |- Receive notifications about new issues from Jira. + + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: title: Jira URL - description: The URL of your instance of Jira + description: The URL of your instance of Jira. type: string example: http://my_jira.com:8081 username: title: Username - description: The username to access Jira + description: The username to access Jira. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira. type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials jql: title: JQL - description: A query to filter issues + description: A query to filter issues. type: string example: project=MyProject @@ -50,16 +75,17 @@ spec: mediaType: application/json dependencies: - "camel:jackson" - - "camel:kamelet" - "camel:jira" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "camel:kamelet" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "jira:newIssues" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + accessToken: "{{?personal-token}}" jql: "{{jql}}" steps: - marshal: diff --git a/jira-transition-issue-sink.kamelet.yaml b/kamelets/jira-transition-issue-sink.kamelet.yaml similarity index 74% rename from jira-transition-issue-sink.kamelet.yaml rename to kamelets/jira-transition-issue-sink.kamelet.yaml index 28ea620e3..e236a7246 100644 --- a/jira-transition-issue-sink.kamelet.yaml +++ b/kamelets/jira-transition-issue-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-transition-issue-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -23,10 +41,10 @@ spec: The comment of the transition is set in the body of the message. + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: @@ -42,12 +60,18 @@ spec: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials types: in: mediaType: application/json @@ -56,7 +80,7 @@ spec: - "camel:jackson" - "camel:jira" - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "kamelet:source" @@ -79,5 +103,6 @@ spec: uri: "jira:transitionIssue" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + access-token: "{{?personal-token}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml b/kamelets/jira-update-issue-sink.kamelet.yaml similarity index 79% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml rename to kamelets/jira-update-issue-sink.kamelet.yaml index 2b1fb36eb..ad38b7a58 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml +++ b/kamelets/jira-update-issue-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-update-issue-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -33,10 +51,10 @@ spec: The issue description can be set from the body of the message or the `issueDescription`/`ce-issueDescription` in the header, however the body takes precedence. + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: @@ -52,12 +70,18 @@ spec: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials types: in: mediaType: application/json @@ -66,7 +90,7 @@ spec: - "camel:jackson" - "camel:jira" - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "kamelet:source" @@ -124,5 +148,6 @@ spec: uri: "jira:UpdateIssue" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + access-token: "{{?personal-token}}" diff --git a/jms-amqp-10-sink.kamelet.yaml b/kamelets/jms-amqp-10-sink.kamelet.yaml similarity index 96% rename from jms-amqp-10-sink.kamelet.yaml rename to kamelets/jms-amqp-10-sink.kamelet.yaml index 3b3b0ffd9..7577f94de 100644 --- a/jms-amqp-10-sink.kamelet.yaml +++ b/kamelets/jms-amqp-10-sink.kamelet.yaml @@ -1,19 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jms-amqp-10-sink annotations: camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMTkzLjgzMzVtbSIKICAgaGVpZ2h0PSI5Ny4yNjgwMTNtbSIKICAgdmlld0JveD0iMCAwIDE5My44MzM1IDk3LjI2ODAxMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMTAwMyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi4zICgyNDA1NTQ2LCAyMDE4LTAzLTExKSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icXBpZC5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM5OTciPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMV8tNyIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeDE9Ii02ODczLjY0NzkiCiAgICAgICB5MT0iMjc3NC4yOTk4IgogICAgICAgeDI9Ii02NjM2LjIzNzMiCiAgICAgICB5Mj0iMjQ5Ni42ODk1IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRjU5NzIzIgogICAgICAgICBpZD0ic3RvcDMxNzItNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMxMjMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNGNjk4MjIiCiAgICAgICAgIGlkPSJzdG9wMzE3NC0zIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuODM4MyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMTc2LTUiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMl8tNiIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeDE9Ii04NjMwLjcxOTciCiAgICAgICB5MT0iMjgwNC45NjA3IgogICAgICAgeDI9Ii02OTM2LjkyNTMiCiAgICAgICB5Mj0iMjgwNC45NjA3IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzE5Ny0yIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMTk5LTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyMDEtMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyMDMtMiIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF8zXy03IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg0MjYuMjU1OSIKICAgICAgIHkxPSIyNjM1LjI4MzkiCiAgICAgICB4Mj0iLTc0MTYuOTE5NCIKICAgICAgIHkyPSIyNjM1LjI4MzkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMyODI2NjEiCiAgICAgICAgIGlkPSJzdG9wMzIwOC0wIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzY2MkU4QyIKICAgICAgICAgaWQ9InN0b3AzMjEwLTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUUyMDY0IgogICAgICAgICBpZD0ic3RvcDMyMTItMyIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIwMzIiCiAgICAgICAgIGlkPSJzdG9wMzIxNC02IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzRfLTAiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgeTE9IjI4MjAuODYwNCIKICAgICAgIHgyPSItNjg0MS43OTMiCiAgICAgICB5Mj0iMjgyMC44NjA0IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzIxOS02IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMjIxLTIiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyMjMtNiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyMjUtMSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF81Xy04IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg0MTIuMDU3NiIKICAgICAgIHkxPSIyNzk3Ljg3ODkiCiAgICAgICB4Mj0iLTc1MjEuOTE3NSIKICAgICAgIHkyPSIyNzk3Ljg3ODkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMyODI2NjEiCiAgICAgICAgIGlkPSJzdG9wMzIzMC03IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzY2MkU4QyIKICAgICAgICAgaWQ9InN0b3AzMjMyLTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUUyMDY0IgogICAgICAgICBpZD0ic3RvcDMyMzQtMiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIwMzIiCiAgICAgICAgIGlkPSJzdG9wMzIzNi0wIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzZfLTIiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgeTE9IjI2NDUuNDg5NyIKICAgICAgIHgyPSItNjg0MS43OTMiCiAgICAgICB5Mj0iMjY0NS40ODk3IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzI0MS0zIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMjQzLTciIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyNDUtNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyNDctOSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF83Xy0yIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg2NDAuNjU5MiIKICAgICAgIHkxPSIyNjU0LjI2NDkiCiAgICAgICB4Mj0iLTY5NDYuODY0NyIKICAgICAgIHkyPSIyNjU0LjI2NDkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuMzIzMyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgaWQ9InN0b3AzMjUyLTIiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC42MzAyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICBpZD0ic3RvcDMyNTQtOCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjc1MTQiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgIGlkPSJzdG9wMzI1Ni05IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgIGlkPSJzdG9wMzI1OC03IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzhfLTMiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgeTE9IjI1OTMuNDQ2IgogICAgICAgeDI9Ii02ODQxLjc5MjUiCiAgICAgICB5Mj0iMjU5My40NDYiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuMzIzMyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgaWQ9InN0b3AzMjY3LTYiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC42MzAyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICBpZD0ic3RvcDMyNjktMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjc1MTQiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgIGlkPSJzdG9wMzI3MS0yIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgIGlkPSJzdG9wMzI3My05IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzlfLTMiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgeTE9IjI1OTkuMzI0MiIKICAgICAgIHgyPSItNjg0MS43OTI1IgogICAgICAgeTI9IjI1OTkuMzI0MiIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUMyMDYzIgogICAgICAgICBpZD0ic3RvcDMyODItMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDODIwMzciCiAgICAgICAgIGlkPSJzdG9wMzI4NC05IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjEzNSIKICAgICAgICAgaWQ9InN0b3AzMjg2LTQiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMjg4LTciIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMTBfLTgiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItNzU4NC4wMzg2IgogICAgICAgeTE9IjI2MDAuNTUxNSIKICAgICAgIHgyPSItNzIwOS42NTQzIgogICAgICAgeTI9IjI2MDAuNTUxNSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUMyMDYzIgogICAgICAgICBpZD0ic3RvcDMyOTctNCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDODIwMzciCiAgICAgICAgIGlkPSJzdG9wMzI5OS01IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjEzNSIKICAgICAgICAgaWQ9InN0b3AzMzAxLTAiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMzAzLTMiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxNzkuMjM0NjYiCiAgICAgaW5rc2NhcGU6Y3k9IjIwNy4wNzAyOSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBmaXQtbWFyZ2luLXRvcD0iMCIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3MjYiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA0OSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMTE0IgogICAgIGlua3NjYXBlOndpbmRvdy15PSI1NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwMDAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2Ny4yNDA5NiwtMTUuNjM4MzgzKSI+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6IzJkMmQyZDtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgIGQ9Im0gLTg0LjA4NzA2MSwxMTIuNzgyMzQgYyAtMC4xMDA0OCwtMC4xMDA0OCAtMC4xODI3LC0xNi40NjE2NzYgLTAuMTgyNywtMzYuMzU4MjA2IDAsLTMyLjc0MzI2IDAuMDM5NywtMzYuMTkwNzUgMC40MTg1MiwtMzYuMzM2MTEgMC41NDUxMywtMC4yMDkxOSA3LjYxMzY2NCwtMC4yMDkxOSA4LjE1ODgwNCwwIDAuMzA5MjUsMC4xMTg2NyAwLjQxODUxLDAuNTI5MDUgMC40MTg1MSwxLjU3MTg4IDAsMS42MjU5NyAwLjMyODE5LDEuOTgxMiAxLjE0NDA3LDEuMjM4MzUgNC4yOTMxNywtMy45MDg5MSAxNC40OTI5NSwtNS4wMDQyNiAyMS4yMTEzNSwtMi4yNzc4OSA4LjcxOTYzLDMuNTM4NDggMTMuOTM5NTgsMTMuNjQ1NjQgMTMuMjY0MzI5LDI1LjY4MzExIC0wLjUxNjQ0LDkuMjA2NCAtNC40MzQzOTksMTcuMDUzMjEgLTEwLjk3NTk2OSwyMS45ODI0MiAtNC4xNTM0MiwzLjEyOTcgLTcuMjM5ODUsNC4xNDUyIC0xMi42MDUyMyw0LjE0NzM3IC00LjczMjE0LDAuMDAyIC03Ljg3MjIxLC0wLjcyNDExIC0xMC4zMjE5OSwtMi4zODY1OCAtMC41MzI5NSwtMC4zNjE2NiAtMS4xMDc0MywtMC42ODM4OCAtMS4yNzY2MywtMC43MTYwMiAtMC4yMjg0NiwtMC4wNDM0IC0wLjM0MTY4LDIuOTcxNiAtMC40Mzk5MywxMS43MTU1MDYgbCAtMC4xMzIyOSwxMS43NzM5NiAtNC4yNDkwNywwLjA3MjUgYyAtMi4zMzY5OSwwLjAzOTkgLTQuMzMxMjg0LC0wLjAxIC00LjQzMTc3NCwtMC4xMTAyNSB6IG0gMjEuOTEwMDE0LC0yOC4yNzU1MTYgYyAzLjAwMDEyLC0wLjYzMjY4IDUuMDAyOTYsLTEuNzcwODggNy40NDg4NSwtNC4yMzMxMyAyLjQzODMsLTIuNDU0NjEgMy44ODUyOCwtNS4wNDA3MiA0Ljg5MTgzLC04Ljc0Mjg0IDAuNzc1NjYsLTIuODUyOTIgMC44NDA1MiwtOS4yNjc1MiAwLjEyNTU5LC0xMi40MjExNCAtMS43MTAyLC03LjU0Mzg3IC02LjE2MTIsLTExLjQzNDcxIC0xNC4wOTQ0NCwtMTIuMzIwNjMgLTEuOTg0NTYsLTAuMjIxNjIgLTIuNzQ3NjksLTAuMTk0OSAtNC4yMjYwMiwwLjE0Nzk1IC0yLjQ0NzA5LDAuNTY3NTEgLTUuNDEzMywyLjAzNzc0IC02LjQxNjYsMy4xODA0NSBsIC0wLjgyNjA5LDAuOTQwODUgdiAxNC4yMzg2IDE0LjIzODU5IGwgMC43NTk4NywxLjA0ODk2IGMgMi41NzUwNCwzLjU1NDc2IDcuMTYzMDksNS4wMTM0NCAxMi4zMzcwMSwzLjkyMjM0IHogbSAtNDUuMjA3ODQzLDEuMjAyNDggYyAtNS4wNzA5NiwzLjI1ODIyIC0xMC42NTgzNSw1LjI5NzI2IC0xNi43MDQ2Niw2LjA5NjE2IC0zLjIwMzQyLDAuNDIzMjYgLTkuMzE3MzMsMC4xNjIyNyAtMTIuNjIwMzYsLTAuNTM4NzYgLTE1LjA2MTMsLTMuMTk2NTUgLTI2LjUyMTAzLC0xNC42MzM4MyAtMjkuOTEwMDksLTI5Ljg1MTUgLTAuODI3OTQsLTMuNzE3NjggLTAuODI3OTQsLTExLjQ3NjYzIDAsLTE1LjE5NDMxIDMuNjY3MjksLTE2LjQ2NzAxMyAxNi43MTM3NSwtMjguMzM2OTczIDMzLjQwMjMyLC0zMC4zOTAxODMgMy4wNzYyMywtMC4zNzg0NyA4LjgyNTg2LC0wLjE3Njg5IDExLjg3OCwwLjQxNjQ0IDE1LjM0OTc2LDIuOTgzOTYgMjcuMDg2OTc5LDE0LjUxMTgxIDMwLjUxODEwOSwyOS45NzM3NDMgMC43NzAzNywzLjQ3MTU1IDAuODMzMDEsMTEuMTY5OTcgMC4xMTk2LDE0LjY5ODM4IC0xLjM1MTk2LDYuNjg2NTcgLTQuNzU0MzMsMTMuNTI1NTEgLTguOTg3ODYsMTguMDY2MDYgMCwwIC0xLjA4Mzk3OSwyLjU4MDI5NSAtNy42OTUwNTksNi43MjM5NyB6IG0gLTE0Ljc2NTA0LC0yLjg5NzMgYyAzLjY1MTk2LC0wLjc5OTc1IDguMzYwMTksLTIuNzU5NyA4LjY4OTIzLC0zLjYxNzE2IGwgNS44MDUzLC01Ljg0NDEyIDEuMjkyOTIsMC40MzY5NSAwLjc2LC0wLjg1NjcgYyAxLjU4MzQxLC0xLjc4NDg5IDMuOTE5MjIsLTUuNzE3NDcgNC45MDkxNCwtOC4yNjUwNSAxLjQ4OTY1OSwtMy44MzM2MyAxLjk3NTc5OSwtNi40NzAxOSAxLjk3NTc5OSwtMTAuNzE1NjIgMCwtNC4yNDU0NCAtMC40ODYxNCwtNi44ODIgLTEuOTc1Nzk5LC0xMC43MTU2MyAtMy41ODY5MywtOS4yMzA5ODMgLTExLjg5MTIyLC0xNi4xNDc3MTMgLTIxLjk0MTAxLC0xOC4yNzQ4ODMgLTMuMDY4NzksLTAuNjQ5NTUgLTguODM3NDcsLTAuNjQ5NTUgLTExLjkwNjI1LDAgLTExLjg0NzQ4LDIuNTA3NjggLTIwLjk5NDMxLDExLjU0Nzg4MyAtMjMuNDQyOTcsMjMuMTY5NjczIC0wLjY0MjY1LDMuMDUwMTYgLTAuNjQyNjUsOC41OTE1MSAwLDExLjY0MTY3IDIuNjc0MjQsMTIuNjkyNDggMTMuMzU1NjEsMjIuMjI4NTIgMjYuNDg1NjgsMjMuNjQ1NzIgMi4wMzMyOCwwLjIxOTQ2IDcuMDcyNzQsLTAuMTA2NjMgOS4zNDc5NSwtMC42MDQ4OSB6IG0gOTAuNjU4MDUsOC42NDkxNSBjIC0wLjA2OTc5LC0wLjE4NTI3IC0wLjE1NjQwOSwtMTAuMzM4MTEgLTAuMTkyNDg3LC0yMi41NjE4NiBsIC0wLjA2NTYsLTIyLjIyNSAtNS4wMjcwODQsLTAuMTMyMjkgLTUuMDI3MDgzLC0wLjEzMjI5IHYgLTMuOTY4NzUgLTMuOTY4NzUgaCA5LjkyMTg3NSA5LjkyMTg3NSB2IDI2LjU5MDYzIDI2LjU5MDYyIGwgLTQuNzAyMzA3LDAuMDcyMyBjIC0zLjYxNzg0NCwwLjA1NTYgLTQuNzMxNTY4LC0wLjAwNSAtNC44MjkxOTEsLTAuMjY0NTkgeiBtIDMwLjU2NTg3MzM3LC0wLjYwMDM5IEMgLTkuMjU4Mzc1OSw4OS4xODM5MjQgLTE1LjQxNDg5Nyw4Mi42NDg4MDQgLTE3LjM3MjQzMyw3My40MDI5NTQgYyAtMS4wMzIxNjksLTQuODc1MTUgLTAuOTE0NDc5LC0xMS4zNyAwLjI5MTQ3MywtMTYuMDg1MjMgMS44NTkwMjksLTcuMjY4NzMgNy4yNzQyNTMxLC0xNC4zNzY1MSAxMy4yNTIxMDMxLC0xNy4zOTQxMiAzLjEwOTI3ODI3LC0xLjU2OTU2IDUuMDQ1MjI5MywtMS45Nzc4NCA5LjM4NTE0MjMsLTEuOTc5MjYgMi41MDU2OTYsLTcuOWUtNCA0LjUwNTIwMjYsMC4xMzM2NCA1LjQyMzk1NzYsMC4zNjQ3MyAxLjcwNzMwNiwwLjQyOTQzIDQuNjcwNiwxLjcxNzc1IDUuMzM1ODc2LDIuMzE5ODIgMC4yNTU4ODYsMC4yMzE1NyAwLjY0ODI3NywwLjM1MDgxIDAuODcxOTc3LDAuMjY0OTcgMC4zNTc0MDEsLTAuMTM3MTUgMC40MDY3MywtMS41Njk3OSAwLjQwNjczLC0xMS44MTI0NTMgdiAtMTEuNjU2MzcgbCA0LjQzMTc3MSwwLjA3MjYgNC40MzE3NzEsMC4wNzI1IDAuMDY3MDksMzYuMzE0MDYzIDAuMDY3MDgsMzYuMzE0MDYgaCAtNC40OTg4NTQgLTQuNDk4ODU2IHYgLTEuNDM5NTkgYyAwLC0wLjc5MTc4IC0wLjExMzA1OSwtMS41MDk0NyAtMC4yNTEyNDUsLTEuNTk0ODcgLTAuMTM4MTg0LC0wLjA4NTQgLTEuMDIwMTk3LDAuMzcxMTYgLTEuOTYwMDIzLDEuMDE0NiAtMC45Mzk4MjksMC42NDM0MyAtMi4zNzk4OTUsMS40MjA5NyAtMy4yMDAxNDksMS43Mjc4NiAtMy4zOTU5ODk2LDEuMjcwNjEgLTkuMzc1MzY0NiwxLjcwNTk3IC0xMy4xMDk0MTU2MywwLjk1NDUxIHogTSAxMS42MDY5NzUsODMuMDY2NDU0IGMgMi4xODAyMjUsLTAuNzUwMTEgNC41OTM5NSwtMi4xMDAxNiA1LjMzOTk5LC0yLjk4Njc3IGwgMC42NDc4NjEsLTAuNzY5OTQgdiAtMTQuMjI3NTEgLTE0LjIyNzUgbCAtMC43NTk4NjIsLTEuMDQ4OTYgYyAtMC45OTgwNzcsLTEuMzc3OCAtMi41NDM0MjYsLTIuNTgwMzUgLTQuNDE5ODc1LC0zLjQzOTQyIC0yLjAwMTM4LC0wLjkxNjI2IC01LjQ5MTE4MzYsLTEuMTMzODMgLTguMTUxNzQ4NiwtMC41MDgyMiAtOC4yMDkyNzczLDEuOTMwMzQgLTEzLjI1OTA5NDMsMTAuMDQ3MzIgLTEyLjc3MDg1MDMsMjAuNTI3NjIgMC41MjYyMTEsMTEuMjk1MjcgNS45NTEzMjMsMTcuMDkzMDEgMTYuMDcyODk1MywxNy4xNzY4OSAxLjg3MzIyMSwwLjAxNTUgMi45MzIxNDk2LC0wLjExNDQ4IDQuMDQxNTg5NiwtMC40OTYxOSB6IE0gLTMxLjQ5NzkzMSwzMS4zOTExNzEgYyAtMC4wNzMxOCwtMC4xOTA3IC0wLjEwMDI5LC0yLjM2NjQxIC0wLjA2MDI1LC00LjgzNDkyIGwgMC4wNzI4LC00LjQ4ODIxIGggNC42MzAyMDggNC42MzAyMDkgdiA0Ljc2MjUgNC43NjI1IGwgLTQuNTY5OTYsMC4wNzI0IGMgLTMuNTc2NDM0LDAuMDU2NyAtNC41OTg4ODUsLTAuMDAzIC00LjcwMzAwNiwtMC4yNzQyOSB6IgogICAgICAgaWQ9InBhdGgxNTkxIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3NjY3Njc3NjY2Njc2NjY2Nzc2Nzc2NjY2NjY3NjY2NjY3NzY3NjY2NjY2NjY3Njc3Njc2NjY2NzY2NjY2NjY2NjY2NjY3Nzc2NzY2NzY2NjY2NjY3NjY2NjY2NjY2NjY2Nzc2NjY3NjY2NjY2NjYyIgLz4KICAgIDxnCiAgICAgICBpZD0iZzMxNjkiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgtMC4wMTQ0MTc5MywwLjAyNDk3MjYsLTAuMDI0OTcyNiwtMC4wMTQ0MTc5MywtODEuNzM0ODg3LDgxLjgyNDQ0NikiPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDI3NCIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItNjg3My42NDc5IgogICAgICAgICB5MT0iMjc3NC4yOTk4IgogICAgICAgICB4Mj0iLTY2MzYuMjM3MyIKICAgICAgICAgeTI9IjI0OTYuNjg5NSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRjU5NzIzIgogICAgICAgICAgIGlkPSJzdG9wNDI3NiIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMTIzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNGNjk4MjIiCiAgICAgICAgICAgaWQ9InN0b3A0Mjc4IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjgzODMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgICBpZD0ic3RvcDQyODAiIC8+CiAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNzM2LjEsOC4xIGMgLTI3LjEsMTYgLTcyLjIsNjEuMyAtMTI1LjgsMTI3IGwgNDkuMyw5My4yIEMgNjk0LjMsMTc4LjggNzI5LjUsMTM0LjEgNzY1LDk2IGMgMi44LC0zIDQuMSwtNC40IDQuMSwtNC40IC0xLjMsMS40IC0yLjgsMyAtNC4xLDQuNCAtMTEuNSwxMi42IC00Ni40LDUzLjQgLTk5LDEzNC4yIDUwLjcsLTIuNSAxMjguNSwtMTIuOSAxOTIsLTIzLjcgMTksLTEwNS45IC0xOC41LC0xNTQuMyAtMTguNSwtMTU0LjMgMCwwIC00Ny42LC03NyAtMTAzLjQsLTQ0LjEgeiIKICAgICAgICAgaWQ9InBhdGgzMTc4IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzFfLTcpIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDY1Mi41LDUzOS45IGMgMC4zLC0wLjEgMC43LC0wLjEgMS4xLC0wLjIgbCAtNy4xLDAuOCBjIC0wLjQsMC4yIC0wLjgsMC40IC0xLjIsMC42IDIuMywtMC41IDQuOCwtMC45IDcuMiwtMS4yIHoiCiAgICAgICAgIGlkPSJwYXRoMzE4MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA2MDIsNzA2LjkgYyAtNCwwLjkgLTguMSwxLjYgLTEyLjMsMi4zIDQuMiwtMC43IDguMywtMS41IDEyLjMsLTIuMyB6IgogICAgICAgICBpZD0icGF0aDMxODIiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjU5LjQsMTA4MS40IGMgMC41LC0xLjMgMSwtMi44IDEuNSwtNC4xIDEwLjksLTI4LjcgMjEuNywtNTYuNiAzMi4zLC04My44IDExLjksLTMwLjUgMjMuNywtNjAgMzUuNSwtODguNiAxMi4zLC0zMC4xIDI0LjUsLTU5LjMgMzYuNCwtODcuNSAxMi41LC0yOS41IDI0LjksLTU4IDM3LjEsLTg1LjQgOS45LC0yMi4zIDE5LjYsLTQzLjkgMjkuMiwtNjQuOCAzLjIsLTcgNi40LC0xMy45IDkuNiwtMjAuNyA2LjMsLTEzLjYgMTIuNSwtMjYuOCAxOC43LC0zOS44IDUuNywtMTEuOSAxMS4zLC0yMy42IDE3LC0zNS4yIDEuOSwtMy44IDMuNywtNy42IDUuNiwtMTEuNCAwLjMsLTAuNiAwLjYsLTEuMiAwLjksLTEuOSBsIC02LjEsMC42IC00LjgsLTkuNSBjIC0wLjUsMC45IC0wLjksMS45IC0xLjQsMi44IC04LjYsMTcuMyAtMTcuMywzNC42IC0yNS44LDUyLjEgLTQuOSwxMC4yIC05LjgsMjAuNCAtMTQuNywzMC41IC0xMy41LDI4LjMgLTI2LjcsNTcgLTM5LjgsODUuNiAtMTMuMiwyOS4xIC0yNi4xLDU4LjMgLTM4LjksODcuNiAtMTIuNCwyOC44IC0yNC43LDU3LjYgLTM2LjYsODYuMyAtMTEuOSwyOC43IC0yMy42LDU3LjMgLTM1LDg1LjYgLTExLjksMjkuNiAtMjMuNCw1OSAtMzQuNiw4OCAtMi42LDYuNiAtNSwxMy4xIC03LjYsMTkuNiAtOSwyMy40IC0xNy44LDQ2LjYgLTI2LjMsNjkuNCBsIDcuNiwxNSA2LjgsLTAuNyBjIDAuMiwtMC43IDAuNSwtMS4zIDAuNywtMi4xIDExLjEsLTI5LjggMjIsLTU5LjEgMzIuNywtODcuNiB6IgogICAgICAgICBpZD0icGF0aDMxODQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gNTg2LjYsNzA5LjYgWiIKICAgICAgICAgaWQ9InBhdGgzMTg2IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU3MC4yLDc5MSBjIC02LjMsMS4xIC0xMi43LDIuMyAtMTkuNCwzLjQgMCwwIC0wLjEsMCAtMC4xLDAuMSAzLjQsLTAuNSA2LjcsLTEgMTAsLTEuNSAzLjEsLTAuNyA2LjMsLTEuMyA5LjUsLTIgeiIKICAgICAgICAgaWQ9InBhdGgzMTg4IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDojYmQyMDJlIiAvPgogICAgICA8cGF0aAogICAgICAgICBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIKICAgICAgICAgZD0ibSA1NzAuMiw3OTEgYyAtNi4zLDEuMSAtMTIuNywyLjMgLTE5LjQsMy40IDAsMCAtMC4xLDAgLTAuMSwwLjEgMy40LC0wLjUgNi43LC0xIDEwLC0xLjUgMy4xLC0wLjcgNi4zLC0xLjMgOS41LC0yIHoiCiAgICAgICAgIGlkPSJwYXRoMzE5MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zNTtmaWxsOiNiZDIwMmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNTg2LjcsNzA5LjUgYyAwLDAgMCwwLjEgMCwwIC0wLjEsMCAtMC4xLDAgLTAuMSwwLjEgMSwtMC4xIDIuMSwtMC4zIDMuMSwtMC41IDQuMiwtMC42IDguMywtMS4zIDEyLjMsLTIuMyAtNSwwLjkgLTEwLDEuOCAtMTUuMywyLjcgeiIKICAgICAgICAgaWQ9InBhdGgzMTkyIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDojYmQyMDJlIiAvPgogICAgICA8cGF0aAogICAgICAgICBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIKICAgICAgICAgZD0ibSA1ODYuNyw3MDkuNSBjIDAsMCAwLDAuMSAwLDAgLTAuMSwwIC0wLjEsMCAtMC4xLDAuMSAxLC0wLjEgMi4xLC0wLjMgMy4xLC0wLjUgNC4yLC0wLjYgOC4zLC0xLjMgMTIuMywtMi4zIC01LDAuOSAtMTAsMS44IC0xNS4zLDIuNyB6IgogICAgICAgICBpZD0icGF0aDMxOTQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDI5MSIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODYzMC43MTk3IgogICAgICAgICB5MT0iMjgwNC45NjA3IgogICAgICAgICB4Mj0iLTY5MzYuOTI1MyIKICAgICAgICAgeTI9IjI4MDQuOTYwNyIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0MjkzIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQyOTUiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDI5NyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDI5OSIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1MTQsNDY5LjIgYyAxNSwtMjguMSAzMC4yLC01NS41IDQ1LjUsLTgyLjEgMTUuOSwtMjcuOCAzMi4xLC01NC42IDQ4LjQsLTgwLjYgMC45LC0xLjUgMiwtMy4xIDIuOSwtNC42IDE2LjEsLTI1LjUgMzIuNCwtNTAuMSA0OC43LC03My41IGwgLTQ5LjMsLTkzLjIgYyAtMy43LDQuNSAtNy40LDkuMSAtMTEuMiwxMy45IC0xNC4zLDE3LjggLTI5LDM2LjggLTQ0LjIsNTcuMSAtMTcuMSwyMi44IC0zNC42LDQ3LjIgLTUyLjUsNzIuOCAtMTYuNCwyMy42IC0zMy4yLDQ4LjMgLTUwLDc0IC0xNC4zLDIxLjggLTI4LjUsNDQuMiAtNDIuNyw2Ny4yIC0wLjUsMC44IC0xLDEuNyAtMS41LDIuNiBsIDY0LjMsMTI3IEMgNDg2LDUyMi4zIDUwMCw0OTUuNCA1MTQsNDY5LjIgWiIKICAgICAgICAgaWQ9InBhdGgzMjA1IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzJfLTYpIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDMwMiIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODQyNi4yNTU5IgogICAgICAgICB5MT0iMjYzNS4yODM5IgogICAgICAgICB4Mj0iLTc0MTYuOTE5NCIKICAgICAgICAgeTI9IjI2MzUuMjgzOSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojMjgyNjYxIgogICAgICAgICAgIGlkPSJzdG9wNDMwNCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iOS41NDgzODllLTAyIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM2NjJFOEMiCiAgICAgICAgICAgaWQ9InN0b3A0MzA2IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjc4ODIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlFMjA2NCIKICAgICAgICAgICBpZD0ic3RvcDQzMDgiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuOTQ4NyIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMDMyIgogICAgICAgICAgIGlkPSJzdG9wNDMxMCIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAyMjEuMiwxMTg0LjQgYyAtOC41LDIzLjMgLTE3LjEsNDcuMiAtMjUuNiw3MS41IC0wLjEsMC4zIC0wLjIsMC43IC0wLjQsMSAtMS4yLDMuNCAtMi41LDYuOSAtMy42LDEwLjMgLTUuOCwxNi40IC0xMC44LDMxLjIgLTIyLjMsNjQuNyAxOC45LDguNiAzNC4xLDMxLjQgNDguNSw1Ny4yIC0xLjUsLTI2LjcgLTEyLjUsLTUxLjggLTMzLjYsLTcxLjIgOTMuMyw0LjIgMTczLjcsLTE5LjQgMjE1LjMsLTg3LjYgMy43LC02LjEgNy4xLC0xMi40IDEwLjIsLTE5LjMgLTE4LjksMjQgLTQyLjQsMzQuMSAtODYuNSwzMS43IC0wLjEsMCAtMC4yLDAuMSAtMC4zLDAuMSAwLjEsMCAwLjIsLTAuMSAwLjMsLTAuMSA2NSwtMjkuMSA5Ny41LC01NyAxMjYuNCwtMTAzLjIgNi44LC0xMSAxMy41LC0yMi45IDIwLjMsLTM2LjIgLTU2LjgsNTguMyAtMTIyLjUsNzQuOSAtMTkxLjgsNjIuMyBsIC01Miw1LjcgYyAtMS43LDQuNCAtMy4yLDguNyAtNC45LDEzLjEgeiIKICAgICAgICAgaWQ9InBhdGgzMjE2IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzNfLTcpIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDMxMyIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgICB5MT0iMjgyMC44NjA0IgogICAgICAgICB4Mj0iLTY4NDEuNzkzIgogICAgICAgICB5Mj0iMjgyMC44NjA0IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzMTUiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDMxNyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzE5IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzIxIiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDI0NS41LDEwNjguMSBjIDExLjIsLTI5IDIyLjgsLTU4LjQgMzQuNiwtODggMTEuNCwtMjguNCAyMywtNTcgMzUsLTg1LjYgMTIsLTI4LjYgMjQuMiwtNTcuNSAzNi42LC04Ni4zIDEyLjYsLTI5LjMgMjUuNiwtNTguNSAzOC45LC04Ny42IDEzLjEsLTI4LjggMjYuMywtNTcuNCAzOS44LC04NS42IDQuOCwtMTAuMiA5LjgsLTIwLjQgMTQuNywtMzAuNSA4LjUsLTE3LjUgMTcuMSwtMzQuOSAyNS44LC01Mi4xIDAuNSwtMC45IDAuOSwtMS45IDEuNCwtMi44IEwgNDA4LDQyMi42IGMgLTEsMS43IC0yLjEsMy41IC0zLjIsNS4xIC0xNSwyNC41IC0yOS45LDQ5LjUgLTQ0LjUsNzUgLTE0LjgsMjUuOCAtMjkuMyw1Mi4xIC00My41LDc4LjggLTExLjksMjIuNSAtMjMuNiw0NS4xIC0zNS4xLDY4LjEgLTIuMyw0LjYgLTQuNSw5LjMgLTYuOCwxMy45IC0xNCwyOC45IC0yNi42LDU2LjYgLTM4LjEsODMuNSAtMTMsMzAuMyAtMjQuNCw1OS4zIC0zNC4zLDg2LjggLTYuNiwxOC4xIC0xMi41LDM1LjUgLTE4LDUyLjMgLTQuNSwxNC4zIC04LjcsMjguNyAtMTIuOSw0MyAtOS42LDMzLjYgLTE3LjksNjcuMiAtMjQuNywxMDAuNiBsIDY0LjYsMTI3LjUgYyA4LjUsLTIyLjggMTcuMywtNDYgMjYuMywtNjkuNCAyLjcsLTYuNyA1LjEsLTEzLjMgNy43LC0xOS43IHoiCiAgICAgICAgIGlkPSJwYXRoMzIyNyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF80Xy0wKSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMjQiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg0MTIuMDU3NiIKICAgICAgICAgeTE9IjI3OTcuODc4OSIKICAgICAgICAgeDI9Ii03NTIxLjkxNzUiCiAgICAgICAgIHkyPSIyNzk3Ljg3ODkiCiAgICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzI4MjY2MSIKICAgICAgICAgICBpZD0ic3RvcDQzMjYiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojNjYyRThDIgogICAgICAgICAgIGlkPSJzdG9wNDMyOCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5RTIwNjQiCiAgICAgICAgICAgaWQ9InN0b3A0MzMwIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjAzMiIKICAgICAgICAgICBpZD0ic3RvcDQzMzIiIC8+CiAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTQ2LjIsMTAzNCBjIC04LjEsNDAuOCAtMTMuOSw4MS40IC0xNi44LDEyMS44IC0wLjEsMS40IC0wLjIsMi44IC0wLjMsNC4yIC0yMC4yLC0zMi4zIC03NC4xLC02My44IC03NCwtNjMuNSAzOC43LDU2IDY4LDExMS42IDcyLjMsMTY2LjIgLTIwLjcsNC4yIC00OSwtMS45IC04MS43LC0xMy45IDM0LjEsMzEuNCA1OS43LDQwIDY5LjgsNDIuNCAtMzEuNCwyIC02NCwyMy41IC05Ni45LDQ4LjMgNDguMSwtMTkuNiA4NywtMjcuNCAxMTQuOCwtMjEuMSAtNDQuMiwxMjUgLTg4LjQsMjYzIC0xMzIuNyw0MDkuNiAxMy42LC00IDIxLjcsLTEzLjIgMjYuMiwtMjUuNSA3LjksLTI2LjUgNjAuMiwtMjAwLjcgMTQyLjMsLTQyOS40IDIuNCwtNi41IDQuNywtMTMuMSA3LjEsLTE5LjYgMC42LC0xLjkgMS4zLC0zLjcgMiwtNS40IDguNiwtMjQgMTcuNywtNDguNSAyNi45LC03My41IDIuMSwtNS43IDQuMiwtMTEuNCA2LjQsLTE3LjEgMCwtMC4xIDAuMSwtMC4yIDAuMSwtMC4zIEwgMTQ3LDEwMjkuNyBjIC0wLjIsMS4zIC0wLjUsMi44IC0wLjgsNC4zIHoiCiAgICAgICAgIGlkPSJwYXRoMzIzOCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF81Xy04KSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMzUiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg1MzUuNTg3OSIKICAgICAgICAgeTE9IjI2NDUuNDg5NyIKICAgICAgICAgeDI9Ii02ODQxLjc5MyIKICAgICAgICAgeTI9IjI2NDUuNDg5NyIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0MzM3IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzMzkiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM0MSIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM0MyIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA0ODIuMyw1NjAuMiBjIC0xLjksMy44IC0zLjcsNy42IC01LjYsMTEuNCAtNS42LDExLjUgLTExLjIsMjMuMiAtMTcsMzUuMiAtNi4yLDEzIC0xMi40LDI2LjIgLTE4LjcsMzkuOCAtMy4yLDYuOCAtNi40LDEzLjcgLTkuNiwyMC43IC05LjYsMjAuOSAtMTkuMyw0Mi41IC0yOS4yLDY0LjggLTEyLjEsMjcuMyAtMjQuNiw1NS44IC0zNy4xLDg1LjQgLTExLjksMjguMiAtMjQuMiw1Ny4zIC0zNi40LDg3LjUgLTExLjcsMjguNiAtMjMuNSw1OC4yIC0zNS41LDg4LjYgLTEwLjcsMjcuMSAtMjEuNSw1NS4xIC0zMi4zLDgzLjggLTAuNSwxLjMgLTEsMi44IC0xLjUsNC4xIC0xMC44LDI4LjUgLTIxLjcsNTcuOCAtMzIuNiw4Ny44IC0wLjIsMC43IC0wLjUsMS4zIC0wLjcsMi4xIGwgNTIsLTUuNyBjIC0xLC0wLjIgLTIuMSwtMC4zIC0zLjEsLTAuNSA2Mi4xLC03LjcgMTQ0LjgsLTU0LjIgMTk4LjEsLTExMS41IDI0LjYsLTI2LjQgNDYuOSwtNTcuNiA2Ny41LC05NC4xIDE1LjMsLTI3LjEgMjkuOCwtNTcuMyA0My42LC05MC42IDEyLC0yOS4xIDIzLjUsLTYwLjcgMzQuNiwtOTQuOCAtMTQuMyw3LjUgLTMwLjYsMTMuMSAtNDguNiwxNi45IC0zLjIsMC43IC02LjQsMS4zIC05LjcsMS45IC0zLjMsMC42IC02LjYsMS4xIC0xMCwxLjUgdiAwIDAgYyAwLDAgMC4xLDAgMC4xLC0wLjEgNTgsLTIyLjMgOTQuNSwtNjUuMyAxMjEsLTExOCAtMTUuMiwxMC40IC00MCwyNCAtNjkuNywzMC41IC00LDAuOSAtOC4xLDEuNiAtMTIuMywyLjMgLTEsMC4xIC0yLjEsMC4zIC0zLjEsMC41IHYgMCAwIGggMC4xIGMgMCwwIDAsMCAwLjEsMCB2IDAgYyAyMC4yLC04LjQgMzcuMSwtMTcuOSA1MS44LC0yOSAzLjIsLTIuNCA2LjMsLTQuOCA5LjEsLTcuNCA0LjUsLTMuOSA4LjcsLTggMTIuOSwtMTIuMiAyLjYsLTIuOCA1LjEsLTUuNiA3LjYsLTguNSA1LjgsLTYuOSAxMS4yLC0xNC4zIDE2LjIsLTIyLjMgMS41LC0yLjUgMy4xLC00LjkgNC41LC03LjUgMiwtMy43IDMuOCwtNy40IDUuNiwtMTAuOSA4LjEsLTE2LjIgMTQuNiwtMzAuOCAxOS43LC00My41IDIuNiwtNi40IDQuOCwtMTIuMiA2LjgsLTE3LjggMC44LC0yLjIgMS41LC00LjMgMi4yLC02LjQgMi4xLC02LjEgMy43LC0xMS41IDUsLTE2LjMgMiwtNy4yIDMuMiwtMTIuOSAzLjgsLTE3IHYgMCAwIGMgLTIsMS41IC00LjIsMy4xIC02LjgsNC42IC0xNy41LDEwLjUgLTQ3LjUsMTkuOSAtNzEuNywyNC40IGwgNDcuNywtNS4yIC00Ny43LDUuMiBjIC0wLjMsMC4xIC0wLjcsMC4xIC0xLjEsMC4yIC0yLjUsMC40IC00LjgsMC44IC03LjMsMS4xIDAuNCwtMC4yIDAuOCwtMC40IDEuMiwtMC42IGwgLTE2My4zLDE3LjkgYyAwLDAuNCAtMC4zLDEuMSAtMC42LDEuNyB6IgogICAgICAgICBpZD0icGF0aDMyNDkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOnVybCgjU1ZHSURfNl8tMikiIC8+CiAgICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgICBpZD0ibGluZWFyR3JhZGllbnQ0MzQ2IgogICAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgICAgeDE9Ii04NjQwLjY1OTIiCiAgICAgICAgIHkxPSIyNjU0LjI2NDkiCiAgICAgICAgIHgyPSItNjk0Ni44NjQ3IgogICAgICAgICB5Mj0iMjY1NC4yNjQ5IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzNDgiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDM1MCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzUyIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzU0IiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDY2Ni4xLDIzMC4yIGMgLTE0LjUsMjIuMyAtMzAuMyw0Ny42IC00Ny41LDc2LjMgLTAuOSwxLjQgLTEuOSwzLjEgLTIuNyw0LjUgLTE0LjcsMjQuOCAtMzAuMyw1MiAtNDYuOSw4MS45IC0xNC4yLDI1LjggLTI5LDUzLjQgLTQ0LjQsODMuMSAtMTMuNCwyNS45IC0yNy4yLDUzLjQgLTQxLjUsODIuNSBsIDE2My4zLC0xNy45IGMgNDcuNiwtMjEuOSA2OC44LC00MS42IDg5LjQsLTcwLjMgNS40LC03LjkgMTEsLTE2LjEgMTYuNCwtMjQuNyAxNi44LC0yNi4yIDMzLjIsLTU1IDQ3LjksLTgzLjcgMTQuMiwtMjcuNyAyNi43LC01NS4xIDM2LjMsLTc5LjkgNi4xLC0xNS43IDExLC0zMC4zIDE0LjQsLTQzLjIgMywtMTEuMyA1LjMsLTIyLjEgNy4xLC0zMi40IC02My4zLDEwLjkgLTE0MS4yLDIxLjMgLTE5MS44LDIzLjggeiIKICAgICAgICAgaWQ9InBhdGgzMjYwIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzdfLTIpIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU2MC41LDc5Mi44IGMgLTMuMywwLjYgLTYuNiwxLjEgLTEwLDEuNSB2IDAgYyAzLjQsLTAuMyA2LjgsLTAuOSAxMCwtMS41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI2MiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTYwLjUsNzkyLjggYyAtMy4zLDAuNiAtNi42LDEuMSAtMTAsMS41IHYgMCBjIDMuNCwtMC4zIDYuOCwtMC45IDEwLC0xLjUgeiIKICAgICAgICAgaWQ9InBhdGgzMjY0IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0ib3BhY2l0eTowLjM1O2ZpbGw6I2JkMjAyZSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzNTkiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg1MzUuNTg4OSIKICAgICAgICAgeTE9IjI1OTMuNDQ2IgogICAgICAgICB4Mj0iLTY4NDEuNzkyNSIKICAgICAgICAgeTI9IjI1OTMuNDQ2IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzNjEiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDM2MyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzY1IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzY3IiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU2MC41LDc5Mi44IGMgLTMuMywwLjYgLTYuNiwxLjEgLTEwLDEuNSB2IDAgYyAzLjQsLTAuMyA2LjgsLTAuOSAxMCwtMS41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI3NSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF84Xy0zKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDEsLTAuMSAyLjEsLTAuMyAzLjEsLTAuNSAtMSwwLjEgLTIsMC40IC0zLjEsMC41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI3NyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTg2LjYsNzA5LjYgYyAxLC0wLjEgMi4xLC0wLjMgMy4xLC0wLjUgLTEsMC4xIC0yLDAuNCAtMy4xLDAuNSB6IgogICAgICAgICBpZD0icGF0aDMyNzkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDM3MiIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgICB5MT0iMjU5OS4zMjQyIgogICAgICAgICB4Mj0iLTY4NDEuNzkyNSIKICAgICAgICAgeTI9IjI1OTkuMzI0MiIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0Mzc0IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzNzYiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM3OCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM4MCIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDEsLTAuMSAyLjEsLTAuMyAzLjEsLTAuNSAtMSwwLjEgLTIsMC40IC0zLjEsMC41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI5MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF85Xy0zKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDAuMSwwIDAuMSwtMC4xIDAsMCB2IDAgMCAwIGMgMC4xLC0wLjEgMC4xLDAgMCwwIHoiCiAgICAgICAgIGlkPSJwYXRoMzI5MiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTg2LjYsNzA5LjYgYyAwLjEsMCAwLjEsLTAuMSAwLDAgdiAwIDAgMCBjIDAuMSwtMC4xIDAuMSwwIDAsMCB6IgogICAgICAgICBpZD0icGF0aDMyOTQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDM4NSIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItNzU4NC4wMzg2IgogICAgICAgICB5MT0iMjYwMC41NTE1IgogICAgICAgICB4Mj0iLTcyMDkuNjU0MyIKICAgICAgICAgeTI9IjI2MDAuNTUxNSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0Mzg3IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzODkiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM5MSIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM5MyIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDAuMSwwIDAuMSwtMC4xIDAsMCB2IDAgMCAwIGMgMC4xLC0wLjEgMC4xLDAgMCwwIHoiCiAgICAgICAgIGlkPSJwYXRoMzMwNSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8xMF8tOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K" + camel.apache.org/kamelet.support.level: "Stable" camel.apache.org/provider: "Red Hat" - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.group: "JMS" + camel.apache.org/kamelet.namespace: "Messaging" labels: camel.apache.org/kamelet.type: "sink" camel.apache.org/requires.runtime: camel-k spec: definition: - title: "JMS - AMQP 1.0 Kamelet Sink" - description: "A Kamelet that can produce events to any AMQP 1.0 compliant message broker using the Apache Qpid JMS client" + title: "JMS - AMQP 1.0 Sink" + description: "Send data to any AMQP 1.0 compliant message broker by using the Apache Qpid JMS client." required: - destinationName - remoteURI @@ -21,29 +39,28 @@ spec: properties: destinationType: title: "Destination Type" - description: "The JMS destination type (i.e.: queue or topic)" + description: "The JMS destination type (queue or topic)." type: string default: queue destinationName: title: "Destination Name" - description: "The JMS destination name" + description: "The JMS destination name." type: string remoteURI: title: "Broker URL" - description: "The JMS URL" + description: "The JMS URL." type: string example: "amqp://my-host:31616" dependencies: - "camel:jms" + - "camel:amqp" - "camel:kamelet" - - "mvn:org.apache.qpid:qpid-jms-client:0.55.0" template: beans: - name: connectionFactoryBean type: "#class:org.apache.qpid.jms.JmsConnectionFactory" - property: - - key: remoteURI - value: '{{remoteURI}}' + properties: + remoteURI: '{{remoteURI}}' from: uri: "kamelet:source" steps: diff --git a/jms-amqp-10-source.kamelet.yaml b/kamelets/jms-amqp-10-source.kamelet.yaml similarity index 96% rename from jms-amqp-10-source.kamelet.yaml rename to kamelets/jms-amqp-10-source.kamelet.yaml index 284448286..f2afd116b 100644 --- a/jms-amqp-10-source.kamelet.yaml +++ b/kamelets/jms-amqp-10-source.kamelet.yaml @@ -1,19 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jms-amqp-10-source annotations: camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMTkzLjgzMzVtbSIKICAgaGVpZ2h0PSI5Ny4yNjgwMTNtbSIKICAgdmlld0JveD0iMCAwIDE5My44MzM1IDk3LjI2ODAxMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMTAwMyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi4zICgyNDA1NTQ2LCAyMDE4LTAzLTExKSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icXBpZC5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM5OTciPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMV8tNyIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeDE9Ii02ODczLjY0NzkiCiAgICAgICB5MT0iMjc3NC4yOTk4IgogICAgICAgeDI9Ii02NjM2LjIzNzMiCiAgICAgICB5Mj0iMjQ5Ni42ODk1IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRjU5NzIzIgogICAgICAgICBpZD0ic3RvcDMxNzItNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMxMjMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNGNjk4MjIiCiAgICAgICAgIGlkPSJzdG9wMzE3NC0zIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuODM4MyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMTc2LTUiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMl8tNiIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeDE9Ii04NjMwLjcxOTciCiAgICAgICB5MT0iMjgwNC45NjA3IgogICAgICAgeDI9Ii02OTM2LjkyNTMiCiAgICAgICB5Mj0iMjgwNC45NjA3IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzE5Ny0yIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMTk5LTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyMDEtMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyMDMtMiIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF8zXy03IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg0MjYuMjU1OSIKICAgICAgIHkxPSIyNjM1LjI4MzkiCiAgICAgICB4Mj0iLTc0MTYuOTE5NCIKICAgICAgIHkyPSIyNjM1LjI4MzkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMyODI2NjEiCiAgICAgICAgIGlkPSJzdG9wMzIwOC0wIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzY2MkU4QyIKICAgICAgICAgaWQ9InN0b3AzMjEwLTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUUyMDY0IgogICAgICAgICBpZD0ic3RvcDMyMTItMyIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIwMzIiCiAgICAgICAgIGlkPSJzdG9wMzIxNC02IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzRfLTAiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgeTE9IjI4MjAuODYwNCIKICAgICAgIHgyPSItNjg0MS43OTMiCiAgICAgICB5Mj0iMjgyMC44NjA0IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzIxOS02IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMjIxLTIiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyMjMtNiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyMjUtMSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF81Xy04IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg0MTIuMDU3NiIKICAgICAgIHkxPSIyNzk3Ljg3ODkiCiAgICAgICB4Mj0iLTc1MjEuOTE3NSIKICAgICAgIHkyPSIyNzk3Ljg3ODkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMyODI2NjEiCiAgICAgICAgIGlkPSJzdG9wMzIzMC03IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzY2MkU4QyIKICAgICAgICAgaWQ9InN0b3AzMjMyLTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUUyMDY0IgogICAgICAgICBpZD0ic3RvcDMyMzQtMiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIwMzIiCiAgICAgICAgIGlkPSJzdG9wMzIzNi0wIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzZfLTIiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgeTE9IjI2NDUuNDg5NyIKICAgICAgIHgyPSItNjg0MS43OTMiCiAgICAgICB5Mj0iMjY0NS40ODk3IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzI0MS0zIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMjQzLTciIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyNDUtNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyNDctOSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF83Xy0yIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg2NDAuNjU5MiIKICAgICAgIHkxPSIyNjU0LjI2NDkiCiAgICAgICB4Mj0iLTY5NDYuODY0NyIKICAgICAgIHkyPSIyNjU0LjI2NDkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuMzIzMyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgaWQ9InN0b3AzMjUyLTIiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC42MzAyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICBpZD0ic3RvcDMyNTQtOCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjc1MTQiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgIGlkPSJzdG9wMzI1Ni05IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgIGlkPSJzdG9wMzI1OC03IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzhfLTMiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgeTE9IjI1OTMuNDQ2IgogICAgICAgeDI9Ii02ODQxLjc5MjUiCiAgICAgICB5Mj0iMjU5My40NDYiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuMzIzMyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgaWQ9InN0b3AzMjY3LTYiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC42MzAyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICBpZD0ic3RvcDMyNjktMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjc1MTQiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgIGlkPSJzdG9wMzI3MS0yIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgIGlkPSJzdG9wMzI3My05IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzlfLTMiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgeTE9IjI1OTkuMzI0MiIKICAgICAgIHgyPSItNjg0MS43OTI1IgogICAgICAgeTI9IjI1OTkuMzI0MiIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUMyMDYzIgogICAgICAgICBpZD0ic3RvcDMyODItMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDODIwMzciCiAgICAgICAgIGlkPSJzdG9wMzI4NC05IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjEzNSIKICAgICAgICAgaWQ9InN0b3AzMjg2LTQiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMjg4LTciIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMTBfLTgiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItNzU4NC4wMzg2IgogICAgICAgeTE9IjI2MDAuNTUxNSIKICAgICAgIHgyPSItNzIwOS42NTQzIgogICAgICAgeTI9IjI2MDAuNTUxNSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUMyMDYzIgogICAgICAgICBpZD0ic3RvcDMyOTctNCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDODIwMzciCiAgICAgICAgIGlkPSJzdG9wMzI5OS01IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjEzNSIKICAgICAgICAgaWQ9InN0b3AzMzAxLTAiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMzAzLTMiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxNzkuMjM0NjYiCiAgICAgaW5rc2NhcGU6Y3k9IjIwNy4wNzAyOSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBmaXQtbWFyZ2luLXRvcD0iMCIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3MjYiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA0OSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMTE0IgogICAgIGlua3NjYXBlOndpbmRvdy15PSI1NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwMDAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2Ny4yNDA5NiwtMTUuNjM4MzgzKSI+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6IzJkMmQyZDtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgIGQ9Im0gLTg0LjA4NzA2MSwxMTIuNzgyMzQgYyAtMC4xMDA0OCwtMC4xMDA0OCAtMC4xODI3LC0xNi40NjE2NzYgLTAuMTgyNywtMzYuMzU4MjA2IDAsLTMyLjc0MzI2IDAuMDM5NywtMzYuMTkwNzUgMC40MTg1MiwtMzYuMzM2MTEgMC41NDUxMywtMC4yMDkxOSA3LjYxMzY2NCwtMC4yMDkxOSA4LjE1ODgwNCwwIDAuMzA5MjUsMC4xMTg2NyAwLjQxODUxLDAuNTI5MDUgMC40MTg1MSwxLjU3MTg4IDAsMS42MjU5NyAwLjMyODE5LDEuOTgxMiAxLjE0NDA3LDEuMjM4MzUgNC4yOTMxNywtMy45MDg5MSAxNC40OTI5NSwtNS4wMDQyNiAyMS4yMTEzNSwtMi4yNzc4OSA4LjcxOTYzLDMuNTM4NDggMTMuOTM5NTgsMTMuNjQ1NjQgMTMuMjY0MzI5LDI1LjY4MzExIC0wLjUxNjQ0LDkuMjA2NCAtNC40MzQzOTksMTcuMDUzMjEgLTEwLjk3NTk2OSwyMS45ODI0MiAtNC4xNTM0MiwzLjEyOTcgLTcuMjM5ODUsNC4xNDUyIC0xMi42MDUyMyw0LjE0NzM3IC00LjczMjE0LDAuMDAyIC03Ljg3MjIxLC0wLjcyNDExIC0xMC4zMjE5OSwtMi4zODY1OCAtMC41MzI5NSwtMC4zNjE2NiAtMS4xMDc0MywtMC42ODM4OCAtMS4yNzY2MywtMC43MTYwMiAtMC4yMjg0NiwtMC4wNDM0IC0wLjM0MTY4LDIuOTcxNiAtMC40Mzk5MywxMS43MTU1MDYgbCAtMC4xMzIyOSwxMS43NzM5NiAtNC4yNDkwNywwLjA3MjUgYyAtMi4zMzY5OSwwLjAzOTkgLTQuMzMxMjg0LC0wLjAxIC00LjQzMTc3NCwtMC4xMTAyNSB6IG0gMjEuOTEwMDE0LC0yOC4yNzU1MTYgYyAzLjAwMDEyLC0wLjYzMjY4IDUuMDAyOTYsLTEuNzcwODggNy40NDg4NSwtNC4yMzMxMyAyLjQzODMsLTIuNDU0NjEgMy44ODUyOCwtNS4wNDA3MiA0Ljg5MTgzLC04Ljc0Mjg0IDAuNzc1NjYsLTIuODUyOTIgMC44NDA1MiwtOS4yNjc1MiAwLjEyNTU5LC0xMi40MjExNCAtMS43MTAyLC03LjU0Mzg3IC02LjE2MTIsLTExLjQzNDcxIC0xNC4wOTQ0NCwtMTIuMzIwNjMgLTEuOTg0NTYsLTAuMjIxNjIgLTIuNzQ3NjksLTAuMTk0OSAtNC4yMjYwMiwwLjE0Nzk1IC0yLjQ0NzA5LDAuNTY3NTEgLTUuNDEzMywyLjAzNzc0IC02LjQxNjYsMy4xODA0NSBsIC0wLjgyNjA5LDAuOTQwODUgdiAxNC4yMzg2IDE0LjIzODU5IGwgMC43NTk4NywxLjA0ODk2IGMgMi41NzUwNCwzLjU1NDc2IDcuMTYzMDksNS4wMTM0NCAxMi4zMzcwMSwzLjkyMjM0IHogbSAtNDUuMjA3ODQzLDEuMjAyNDggYyAtNS4wNzA5NiwzLjI1ODIyIC0xMC42NTgzNSw1LjI5NzI2IC0xNi43MDQ2Niw2LjA5NjE2IC0zLjIwMzQyLDAuNDIzMjYgLTkuMzE3MzMsMC4xNjIyNyAtMTIuNjIwMzYsLTAuNTM4NzYgLTE1LjA2MTMsLTMuMTk2NTUgLTI2LjUyMTAzLC0xNC42MzM4MyAtMjkuOTEwMDksLTI5Ljg1MTUgLTAuODI3OTQsLTMuNzE3NjggLTAuODI3OTQsLTExLjQ3NjYzIDAsLTE1LjE5NDMxIDMuNjY3MjksLTE2LjQ2NzAxMyAxNi43MTM3NSwtMjguMzM2OTczIDMzLjQwMjMyLC0zMC4zOTAxODMgMy4wNzYyMywtMC4zNzg0NyA4LjgyNTg2LC0wLjE3Njg5IDExLjg3OCwwLjQxNjQ0IDE1LjM0OTc2LDIuOTgzOTYgMjcuMDg2OTc5LDE0LjUxMTgxIDMwLjUxODEwOSwyOS45NzM3NDMgMC43NzAzNywzLjQ3MTU1IDAuODMzMDEsMTEuMTY5OTcgMC4xMTk2LDE0LjY5ODM4IC0xLjM1MTk2LDYuNjg2NTcgLTQuNzU0MzMsMTMuNTI1NTEgLTguOTg3ODYsMTguMDY2MDYgMCwwIC0xLjA4Mzk3OSwyLjU4MDI5NSAtNy42OTUwNTksNi43MjM5NyB6IG0gLTE0Ljc2NTA0LC0yLjg5NzMgYyAzLjY1MTk2LC0wLjc5OTc1IDguMzYwMTksLTIuNzU5NyA4LjY4OTIzLC0zLjYxNzE2IGwgNS44MDUzLC01Ljg0NDEyIDEuMjkyOTIsMC40MzY5NSAwLjc2LC0wLjg1NjcgYyAxLjU4MzQxLC0xLjc4NDg5IDMuOTE5MjIsLTUuNzE3NDcgNC45MDkxNCwtOC4yNjUwNSAxLjQ4OTY1OSwtMy44MzM2MyAxLjk3NTc5OSwtNi40NzAxOSAxLjk3NTc5OSwtMTAuNzE1NjIgMCwtNC4yNDU0NCAtMC40ODYxNCwtNi44ODIgLTEuOTc1Nzk5LC0xMC43MTU2MyAtMy41ODY5MywtOS4yMzA5ODMgLTExLjg5MTIyLC0xNi4xNDc3MTMgLTIxLjk0MTAxLC0xOC4yNzQ4ODMgLTMuMDY4NzksLTAuNjQ5NTUgLTguODM3NDcsLTAuNjQ5NTUgLTExLjkwNjI1LDAgLTExLjg0NzQ4LDIuNTA3NjggLTIwLjk5NDMxLDExLjU0Nzg4MyAtMjMuNDQyOTcsMjMuMTY5NjczIC0wLjY0MjY1LDMuMDUwMTYgLTAuNjQyNjUsOC41OTE1MSAwLDExLjY0MTY3IDIuNjc0MjQsMTIuNjkyNDggMTMuMzU1NjEsMjIuMjI4NTIgMjYuNDg1NjgsMjMuNjQ1NzIgMi4wMzMyOCwwLjIxOTQ2IDcuMDcyNzQsLTAuMTA2NjMgOS4zNDc5NSwtMC42MDQ4OSB6IG0gOTAuNjU4MDUsOC42NDkxNSBjIC0wLjA2OTc5LC0wLjE4NTI3IC0wLjE1NjQwOSwtMTAuMzM4MTEgLTAuMTkyNDg3LC0yMi41NjE4NiBsIC0wLjA2NTYsLTIyLjIyNSAtNS4wMjcwODQsLTAuMTMyMjkgLTUuMDI3MDgzLC0wLjEzMjI5IHYgLTMuOTY4NzUgLTMuOTY4NzUgaCA5LjkyMTg3NSA5LjkyMTg3NSB2IDI2LjU5MDYzIDI2LjU5MDYyIGwgLTQuNzAyMzA3LDAuMDcyMyBjIC0zLjYxNzg0NCwwLjA1NTYgLTQuNzMxNTY4LC0wLjAwNSAtNC44MjkxOTEsLTAuMjY0NTkgeiBtIDMwLjU2NTg3MzM3LC0wLjYwMDM5IEMgLTkuMjU4Mzc1OSw4OS4xODM5MjQgLTE1LjQxNDg5Nyw4Mi42NDg4MDQgLTE3LjM3MjQzMyw3My40MDI5NTQgYyAtMS4wMzIxNjksLTQuODc1MTUgLTAuOTE0NDc5LC0xMS4zNyAwLjI5MTQ3MywtMTYuMDg1MjMgMS44NTkwMjksLTcuMjY4NzMgNy4yNzQyNTMxLC0xNC4zNzY1MSAxMy4yNTIxMDMxLC0xNy4zOTQxMiAzLjEwOTI3ODI3LC0xLjU2OTU2IDUuMDQ1MjI5MywtMS45Nzc4NCA5LjM4NTE0MjMsLTEuOTc5MjYgMi41MDU2OTYsLTcuOWUtNCA0LjUwNTIwMjYsMC4xMzM2NCA1LjQyMzk1NzYsMC4zNjQ3MyAxLjcwNzMwNiwwLjQyOTQzIDQuNjcwNiwxLjcxNzc1IDUuMzM1ODc2LDIuMzE5ODIgMC4yNTU4ODYsMC4yMzE1NyAwLjY0ODI3NywwLjM1MDgxIDAuODcxOTc3LDAuMjY0OTcgMC4zNTc0MDEsLTAuMTM3MTUgMC40MDY3MywtMS41Njk3OSAwLjQwNjczLC0xMS44MTI0NTMgdiAtMTEuNjU2MzcgbCA0LjQzMTc3MSwwLjA3MjYgNC40MzE3NzEsMC4wNzI1IDAuMDY3MDksMzYuMzE0MDYzIDAuMDY3MDgsMzYuMzE0MDYgaCAtNC40OTg4NTQgLTQuNDk4ODU2IHYgLTEuNDM5NTkgYyAwLC0wLjc5MTc4IC0wLjExMzA1OSwtMS41MDk0NyAtMC4yNTEyNDUsLTEuNTk0ODcgLTAuMTM4MTg0LC0wLjA4NTQgLTEuMDIwMTk3LDAuMzcxMTYgLTEuOTYwMDIzLDEuMDE0NiAtMC45Mzk4MjksMC42NDM0MyAtMi4zNzk4OTUsMS40MjA5NyAtMy4yMDAxNDksMS43Mjc4NiAtMy4zOTU5ODk2LDEuMjcwNjEgLTkuMzc1MzY0NiwxLjcwNTk3IC0xMy4xMDk0MTU2MywwLjk1NDUxIHogTSAxMS42MDY5NzUsODMuMDY2NDU0IGMgMi4xODAyMjUsLTAuNzUwMTEgNC41OTM5NSwtMi4xMDAxNiA1LjMzOTk5LC0yLjk4Njc3IGwgMC42NDc4NjEsLTAuNzY5OTQgdiAtMTQuMjI3NTEgLTE0LjIyNzUgbCAtMC43NTk4NjIsLTEuMDQ4OTYgYyAtMC45OTgwNzcsLTEuMzc3OCAtMi41NDM0MjYsLTIuNTgwMzUgLTQuNDE5ODc1LC0zLjQzOTQyIC0yLjAwMTM4LC0wLjkxNjI2IC01LjQ5MTE4MzYsLTEuMTMzODMgLTguMTUxNzQ4NiwtMC41MDgyMiAtOC4yMDkyNzczLDEuOTMwMzQgLTEzLjI1OTA5NDMsMTAuMDQ3MzIgLTEyLjc3MDg1MDMsMjAuNTI3NjIgMC41MjYyMTEsMTEuMjk1MjcgNS45NTEzMjMsMTcuMDkzMDEgMTYuMDcyODk1MywxNy4xNzY4OSAxLjg3MzIyMSwwLjAxNTUgMi45MzIxNDk2LC0wLjExNDQ4IDQuMDQxNTg5NiwtMC40OTYxOSB6IE0gLTMxLjQ5NzkzMSwzMS4zOTExNzEgYyAtMC4wNzMxOCwtMC4xOTA3IC0wLjEwMDI5LC0yLjM2NjQxIC0wLjA2MDI1LC00LjgzNDkyIGwgMC4wNzI4LC00LjQ4ODIxIGggNC42MzAyMDggNC42MzAyMDkgdiA0Ljc2MjUgNC43NjI1IGwgLTQuNTY5OTYsMC4wNzI0IGMgLTMuNTc2NDM0LDAuMDU2NyAtNC41OTg4ODUsLTAuMDAzIC00LjcwMzAwNiwtMC4yNzQyOSB6IgogICAgICAgaWQ9InBhdGgxNTkxIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3NjY3Njc3NjY2Njc2NjY2Nzc2Nzc2NjY2NjY3NjY2NjY3NzY3NjY2NjY2NjY3Njc3Njc2NjY2NzY2NjY2NjY2NjY2NjY3Nzc2NzY2NzY2NjY2NjY3NjY2NjY2NjY2NjY2Nzc2NjY3NjY2NjY2NjYyIgLz4KICAgIDxnCiAgICAgICBpZD0iZzMxNjkiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgtMC4wMTQ0MTc5MywwLjAyNDk3MjYsLTAuMDI0OTcyNiwtMC4wMTQ0MTc5MywtODEuNzM0ODg3LDgxLjgyNDQ0NikiPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDI3NCIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItNjg3My42NDc5IgogICAgICAgICB5MT0iMjc3NC4yOTk4IgogICAgICAgICB4Mj0iLTY2MzYuMjM3MyIKICAgICAgICAgeTI9IjI0OTYuNjg5NSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRjU5NzIzIgogICAgICAgICAgIGlkPSJzdG9wNDI3NiIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMTIzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNGNjk4MjIiCiAgICAgICAgICAgaWQ9InN0b3A0Mjc4IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjgzODMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgICBpZD0ic3RvcDQyODAiIC8+CiAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNzM2LjEsOC4xIGMgLTI3LjEsMTYgLTcyLjIsNjEuMyAtMTI1LjgsMTI3IGwgNDkuMyw5My4yIEMgNjk0LjMsMTc4LjggNzI5LjUsMTM0LjEgNzY1LDk2IGMgMi44LC0zIDQuMSwtNC40IDQuMSwtNC40IC0xLjMsMS40IC0yLjgsMyAtNC4xLDQuNCAtMTEuNSwxMi42IC00Ni40LDUzLjQgLTk5LDEzNC4yIDUwLjcsLTIuNSAxMjguNSwtMTIuOSAxOTIsLTIzLjcgMTksLTEwNS45IC0xOC41LC0xNTQuMyAtMTguNSwtMTU0LjMgMCwwIC00Ny42LC03NyAtMTAzLjQsLTQ0LjEgeiIKICAgICAgICAgaWQ9InBhdGgzMTc4IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzFfLTcpIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDY1Mi41LDUzOS45IGMgMC4zLC0wLjEgMC43LC0wLjEgMS4xLC0wLjIgbCAtNy4xLDAuOCBjIC0wLjQsMC4yIC0wLjgsMC40IC0xLjIsMC42IDIuMywtMC41IDQuOCwtMC45IDcuMiwtMS4yIHoiCiAgICAgICAgIGlkPSJwYXRoMzE4MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA2MDIsNzA2LjkgYyAtNCwwLjkgLTguMSwxLjYgLTEyLjMsMi4zIDQuMiwtMC43IDguMywtMS41IDEyLjMsLTIuMyB6IgogICAgICAgICBpZD0icGF0aDMxODIiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjU5LjQsMTA4MS40IGMgMC41LC0xLjMgMSwtMi44IDEuNSwtNC4xIDEwLjksLTI4LjcgMjEuNywtNTYuNiAzMi4zLC04My44IDExLjksLTMwLjUgMjMuNywtNjAgMzUuNSwtODguNiAxMi4zLC0zMC4xIDI0LjUsLTU5LjMgMzYuNCwtODcuNSAxMi41LC0yOS41IDI0LjksLTU4IDM3LjEsLTg1LjQgOS45LC0yMi4zIDE5LjYsLTQzLjkgMjkuMiwtNjQuOCAzLjIsLTcgNi40LC0xMy45IDkuNiwtMjAuNyA2LjMsLTEzLjYgMTIuNSwtMjYuOCAxOC43LC0zOS44IDUuNywtMTEuOSAxMS4zLC0yMy42IDE3LC0zNS4yIDEuOSwtMy44IDMuNywtNy42IDUuNiwtMTEuNCAwLjMsLTAuNiAwLjYsLTEuMiAwLjksLTEuOSBsIC02LjEsMC42IC00LjgsLTkuNSBjIC0wLjUsMC45IC0wLjksMS45IC0xLjQsMi44IC04LjYsMTcuMyAtMTcuMywzNC42IC0yNS44LDUyLjEgLTQuOSwxMC4yIC05LjgsMjAuNCAtMTQuNywzMC41IC0xMy41LDI4LjMgLTI2LjcsNTcgLTM5LjgsODUuNiAtMTMuMiwyOS4xIC0yNi4xLDU4LjMgLTM4LjksODcuNiAtMTIuNCwyOC44IC0yNC43LDU3LjYgLTM2LjYsODYuMyAtMTEuOSwyOC43IC0yMy42LDU3LjMgLTM1LDg1LjYgLTExLjksMjkuNiAtMjMuNCw1OSAtMzQuNiw4OCAtMi42LDYuNiAtNSwxMy4xIC03LjYsMTkuNiAtOSwyMy40IC0xNy44LDQ2LjYgLTI2LjMsNjkuNCBsIDcuNiwxNSA2LjgsLTAuNyBjIDAuMiwtMC43IDAuNSwtMS4zIDAuNywtMi4xIDExLjEsLTI5LjggMjIsLTU5LjEgMzIuNywtODcuNiB6IgogICAgICAgICBpZD0icGF0aDMxODQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gNTg2LjYsNzA5LjYgWiIKICAgICAgICAgaWQ9InBhdGgzMTg2IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU3MC4yLDc5MSBjIC02LjMsMS4xIC0xMi43LDIuMyAtMTkuNCwzLjQgMCwwIC0wLjEsMCAtMC4xLDAuMSAzLjQsLTAuNSA2LjcsLTEgMTAsLTEuNSAzLjEsLTAuNyA2LjMsLTEuMyA5LjUsLTIgeiIKICAgICAgICAgaWQ9InBhdGgzMTg4IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDojYmQyMDJlIiAvPgogICAgICA8cGF0aAogICAgICAgICBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIKICAgICAgICAgZD0ibSA1NzAuMiw3OTEgYyAtNi4zLDEuMSAtMTIuNywyLjMgLTE5LjQsMy40IDAsMCAtMC4xLDAgLTAuMSwwLjEgMy40LC0wLjUgNi43LC0xIDEwLC0xLjUgMy4xLC0wLjcgNi4zLC0xLjMgOS41LC0yIHoiCiAgICAgICAgIGlkPSJwYXRoMzE5MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zNTtmaWxsOiNiZDIwMmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNTg2LjcsNzA5LjUgYyAwLDAgMCwwLjEgMCwwIC0wLjEsMCAtMC4xLDAgLTAuMSwwLjEgMSwtMC4xIDIuMSwtMC4zIDMuMSwtMC41IDQuMiwtMC42IDguMywtMS4zIDEyLjMsLTIuMyAtNSwwLjkgLTEwLDEuOCAtMTUuMywyLjcgeiIKICAgICAgICAgaWQ9InBhdGgzMTkyIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDojYmQyMDJlIiAvPgogICAgICA8cGF0aAogICAgICAgICBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIKICAgICAgICAgZD0ibSA1ODYuNyw3MDkuNSBjIDAsMCAwLDAuMSAwLDAgLTAuMSwwIC0wLjEsMCAtMC4xLDAuMSAxLC0wLjEgMi4xLC0wLjMgMy4xLC0wLjUgNC4yLC0wLjYgOC4zLC0xLjMgMTIuMywtMi4zIC01LDAuOSAtMTAsMS44IC0xNS4zLDIuNyB6IgogICAgICAgICBpZD0icGF0aDMxOTQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDI5MSIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODYzMC43MTk3IgogICAgICAgICB5MT0iMjgwNC45NjA3IgogICAgICAgICB4Mj0iLTY5MzYuOTI1MyIKICAgICAgICAgeTI9IjI4MDQuOTYwNyIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0MjkzIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQyOTUiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDI5NyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDI5OSIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1MTQsNDY5LjIgYyAxNSwtMjguMSAzMC4yLC01NS41IDQ1LjUsLTgyLjEgMTUuOSwtMjcuOCAzMi4xLC01NC42IDQ4LjQsLTgwLjYgMC45LC0xLjUgMiwtMy4xIDIuOSwtNC42IDE2LjEsLTI1LjUgMzIuNCwtNTAuMSA0OC43LC03My41IGwgLTQ5LjMsLTkzLjIgYyAtMy43LDQuNSAtNy40LDkuMSAtMTEuMiwxMy45IC0xNC4zLDE3LjggLTI5LDM2LjggLTQ0LjIsNTcuMSAtMTcuMSwyMi44IC0zNC42LDQ3LjIgLTUyLjUsNzIuOCAtMTYuNCwyMy42IC0zMy4yLDQ4LjMgLTUwLDc0IC0xNC4zLDIxLjggLTI4LjUsNDQuMiAtNDIuNyw2Ny4yIC0wLjUsMC44IC0xLDEuNyAtMS41LDIuNiBsIDY0LjMsMTI3IEMgNDg2LDUyMi4zIDUwMCw0OTUuNCA1MTQsNDY5LjIgWiIKICAgICAgICAgaWQ9InBhdGgzMjA1IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzJfLTYpIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDMwMiIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODQyNi4yNTU5IgogICAgICAgICB5MT0iMjYzNS4yODM5IgogICAgICAgICB4Mj0iLTc0MTYuOTE5NCIKICAgICAgICAgeTI9IjI2MzUuMjgzOSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojMjgyNjYxIgogICAgICAgICAgIGlkPSJzdG9wNDMwNCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iOS41NDgzODllLTAyIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM2NjJFOEMiCiAgICAgICAgICAgaWQ9InN0b3A0MzA2IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjc4ODIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlFMjA2NCIKICAgICAgICAgICBpZD0ic3RvcDQzMDgiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuOTQ4NyIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMDMyIgogICAgICAgICAgIGlkPSJzdG9wNDMxMCIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAyMjEuMiwxMTg0LjQgYyAtOC41LDIzLjMgLTE3LjEsNDcuMiAtMjUuNiw3MS41IC0wLjEsMC4zIC0wLjIsMC43IC0wLjQsMSAtMS4yLDMuNCAtMi41LDYuOSAtMy42LDEwLjMgLTUuOCwxNi40IC0xMC44LDMxLjIgLTIyLjMsNjQuNyAxOC45LDguNiAzNC4xLDMxLjQgNDguNSw1Ny4yIC0xLjUsLTI2LjcgLTEyLjUsLTUxLjggLTMzLjYsLTcxLjIgOTMuMyw0LjIgMTczLjcsLTE5LjQgMjE1LjMsLTg3LjYgMy43LC02LjEgNy4xLC0xMi40IDEwLjIsLTE5LjMgLTE4LjksMjQgLTQyLjQsMzQuMSAtODYuNSwzMS43IC0wLjEsMCAtMC4yLDAuMSAtMC4zLDAuMSAwLjEsMCAwLjIsLTAuMSAwLjMsLTAuMSA2NSwtMjkuMSA5Ny41LC01NyAxMjYuNCwtMTAzLjIgNi44LC0xMSAxMy41LC0yMi45IDIwLjMsLTM2LjIgLTU2LjgsNTguMyAtMTIyLjUsNzQuOSAtMTkxLjgsNjIuMyBsIC01Miw1LjcgYyAtMS43LDQuNCAtMy4yLDguNyAtNC45LDEzLjEgeiIKICAgICAgICAgaWQ9InBhdGgzMjE2IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzNfLTcpIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDMxMyIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgICB5MT0iMjgyMC44NjA0IgogICAgICAgICB4Mj0iLTY4NDEuNzkzIgogICAgICAgICB5Mj0iMjgyMC44NjA0IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzMTUiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDMxNyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzE5IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzIxIiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDI0NS41LDEwNjguMSBjIDExLjIsLTI5IDIyLjgsLTU4LjQgMzQuNiwtODggMTEuNCwtMjguNCAyMywtNTcgMzUsLTg1LjYgMTIsLTI4LjYgMjQuMiwtNTcuNSAzNi42LC04Ni4zIDEyLjYsLTI5LjMgMjUuNiwtNTguNSAzOC45LC04Ny42IDEzLjEsLTI4LjggMjYuMywtNTcuNCAzOS44LC04NS42IDQuOCwtMTAuMiA5LjgsLTIwLjQgMTQuNywtMzAuNSA4LjUsLTE3LjUgMTcuMSwtMzQuOSAyNS44LC01Mi4xIDAuNSwtMC45IDAuOSwtMS45IDEuNCwtMi44IEwgNDA4LDQyMi42IGMgLTEsMS43IC0yLjEsMy41IC0zLjIsNS4xIC0xNSwyNC41IC0yOS45LDQ5LjUgLTQ0LjUsNzUgLTE0LjgsMjUuOCAtMjkuMyw1Mi4xIC00My41LDc4LjggLTExLjksMjIuNSAtMjMuNiw0NS4xIC0zNS4xLDY4LjEgLTIuMyw0LjYgLTQuNSw5LjMgLTYuOCwxMy45IC0xNCwyOC45IC0yNi42LDU2LjYgLTM4LjEsODMuNSAtMTMsMzAuMyAtMjQuNCw1OS4zIC0zNC4zLDg2LjggLTYuNiwxOC4xIC0xMi41LDM1LjUgLTE4LDUyLjMgLTQuNSwxNC4zIC04LjcsMjguNyAtMTIuOSw0MyAtOS42LDMzLjYgLTE3LjksNjcuMiAtMjQuNywxMDAuNiBsIDY0LjYsMTI3LjUgYyA4LjUsLTIyLjggMTcuMywtNDYgMjYuMywtNjkuNCAyLjcsLTYuNyA1LjEsLTEzLjMgNy43LC0xOS43IHoiCiAgICAgICAgIGlkPSJwYXRoMzIyNyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF80Xy0wKSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMjQiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg0MTIuMDU3NiIKICAgICAgICAgeTE9IjI3OTcuODc4OSIKICAgICAgICAgeDI9Ii03NTIxLjkxNzUiCiAgICAgICAgIHkyPSIyNzk3Ljg3ODkiCiAgICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzI4MjY2MSIKICAgICAgICAgICBpZD0ic3RvcDQzMjYiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojNjYyRThDIgogICAgICAgICAgIGlkPSJzdG9wNDMyOCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5RTIwNjQiCiAgICAgICAgICAgaWQ9InN0b3A0MzMwIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjAzMiIKICAgICAgICAgICBpZD0ic3RvcDQzMzIiIC8+CiAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTQ2LjIsMTAzNCBjIC04LjEsNDAuOCAtMTMuOSw4MS40IC0xNi44LDEyMS44IC0wLjEsMS40IC0wLjIsMi44IC0wLjMsNC4yIC0yMC4yLC0zMi4zIC03NC4xLC02My44IC03NCwtNjMuNSAzOC43LDU2IDY4LDExMS42IDcyLjMsMTY2LjIgLTIwLjcsNC4yIC00OSwtMS45IC04MS43LC0xMy45IDM0LjEsMzEuNCA1OS43LDQwIDY5LjgsNDIuNCAtMzEuNCwyIC02NCwyMy41IC05Ni45LDQ4LjMgNDguMSwtMTkuNiA4NywtMjcuNCAxMTQuOCwtMjEuMSAtNDQuMiwxMjUgLTg4LjQsMjYzIC0xMzIuNyw0MDkuNiAxMy42LC00IDIxLjcsLTEzLjIgMjYuMiwtMjUuNSA3LjksLTI2LjUgNjAuMiwtMjAwLjcgMTQyLjMsLTQyOS40IDIuNCwtNi41IDQuNywtMTMuMSA3LjEsLTE5LjYgMC42LC0xLjkgMS4zLC0zLjcgMiwtNS40IDguNiwtMjQgMTcuNywtNDguNSAyNi45LC03My41IDIuMSwtNS43IDQuMiwtMTEuNCA2LjQsLTE3LjEgMCwtMC4xIDAuMSwtMC4yIDAuMSwtMC4zIEwgMTQ3LDEwMjkuNyBjIC0wLjIsMS4zIC0wLjUsMi44IC0wLjgsNC4zIHoiCiAgICAgICAgIGlkPSJwYXRoMzIzOCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF81Xy04KSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMzUiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg1MzUuNTg3OSIKICAgICAgICAgeTE9IjI2NDUuNDg5NyIKICAgICAgICAgeDI9Ii02ODQxLjc5MyIKICAgICAgICAgeTI9IjI2NDUuNDg5NyIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0MzM3IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzMzkiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM0MSIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM0MyIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA0ODIuMyw1NjAuMiBjIC0xLjksMy44IC0zLjcsNy42IC01LjYsMTEuNCAtNS42LDExLjUgLTExLjIsMjMuMiAtMTcsMzUuMiAtNi4yLDEzIC0xMi40LDI2LjIgLTE4LjcsMzkuOCAtMy4yLDYuOCAtNi40LDEzLjcgLTkuNiwyMC43IC05LjYsMjAuOSAtMTkuMyw0Mi41IC0yOS4yLDY0LjggLTEyLjEsMjcuMyAtMjQuNiw1NS44IC0zNy4xLDg1LjQgLTExLjksMjguMiAtMjQuMiw1Ny4zIC0zNi40LDg3LjUgLTExLjcsMjguNiAtMjMuNSw1OC4yIC0zNS41LDg4LjYgLTEwLjcsMjcuMSAtMjEuNSw1NS4xIC0zMi4zLDgzLjggLTAuNSwxLjMgLTEsMi44IC0xLjUsNC4xIC0xMC44LDI4LjUgLTIxLjcsNTcuOCAtMzIuNiw4Ny44IC0wLjIsMC43IC0wLjUsMS4zIC0wLjcsMi4xIGwgNTIsLTUuNyBjIC0xLC0wLjIgLTIuMSwtMC4zIC0zLjEsLTAuNSA2Mi4xLC03LjcgMTQ0LjgsLTU0LjIgMTk4LjEsLTExMS41IDI0LjYsLTI2LjQgNDYuOSwtNTcuNiA2Ny41LC05NC4xIDE1LjMsLTI3LjEgMjkuOCwtNTcuMyA0My42LC05MC42IDEyLC0yOS4xIDIzLjUsLTYwLjcgMzQuNiwtOTQuOCAtMTQuMyw3LjUgLTMwLjYsMTMuMSAtNDguNiwxNi45IC0zLjIsMC43IC02LjQsMS4zIC05LjcsMS45IC0zLjMsMC42IC02LjYsMS4xIC0xMCwxLjUgdiAwIDAgYyAwLDAgMC4xLDAgMC4xLC0wLjEgNTgsLTIyLjMgOTQuNSwtNjUuMyAxMjEsLTExOCAtMTUuMiwxMC40IC00MCwyNCAtNjkuNywzMC41IC00LDAuOSAtOC4xLDEuNiAtMTIuMywyLjMgLTEsMC4xIC0yLjEsMC4zIC0zLjEsMC41IHYgMCAwIGggMC4xIGMgMCwwIDAsMCAwLjEsMCB2IDAgYyAyMC4yLC04LjQgMzcuMSwtMTcuOSA1MS44LC0yOSAzLjIsLTIuNCA2LjMsLTQuOCA5LjEsLTcuNCA0LjUsLTMuOSA4LjcsLTggMTIuOSwtMTIuMiAyLjYsLTIuOCA1LjEsLTUuNiA3LjYsLTguNSA1LjgsLTYuOSAxMS4yLC0xNC4zIDE2LjIsLTIyLjMgMS41LC0yLjUgMy4xLC00LjkgNC41LC03LjUgMiwtMy43IDMuOCwtNy40IDUuNiwtMTAuOSA4LjEsLTE2LjIgMTQuNiwtMzAuOCAxOS43LC00My41IDIuNiwtNi40IDQuOCwtMTIuMiA2LjgsLTE3LjggMC44LC0yLjIgMS41LC00LjMgMi4yLC02LjQgMi4xLC02LjEgMy43LC0xMS41IDUsLTE2LjMgMiwtNy4yIDMuMiwtMTIuOSAzLjgsLTE3IHYgMCAwIGMgLTIsMS41IC00LjIsMy4xIC02LjgsNC42IC0xNy41LDEwLjUgLTQ3LjUsMTkuOSAtNzEuNywyNC40IGwgNDcuNywtNS4yIC00Ny43LDUuMiBjIC0wLjMsMC4xIC0wLjcsMC4xIC0xLjEsMC4yIC0yLjUsMC40IC00LjgsMC44IC03LjMsMS4xIDAuNCwtMC4yIDAuOCwtMC40IDEuMiwtMC42IGwgLTE2My4zLDE3LjkgYyAwLDAuNCAtMC4zLDEuMSAtMC42LDEuNyB6IgogICAgICAgICBpZD0icGF0aDMyNDkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOnVybCgjU1ZHSURfNl8tMikiIC8+CiAgICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgICBpZD0ibGluZWFyR3JhZGllbnQ0MzQ2IgogICAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgICAgeDE9Ii04NjQwLjY1OTIiCiAgICAgICAgIHkxPSIyNjU0LjI2NDkiCiAgICAgICAgIHgyPSItNjk0Ni44NjQ3IgogICAgICAgICB5Mj0iMjY1NC4yNjQ5IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzNDgiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDM1MCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzUyIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzU0IiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDY2Ni4xLDIzMC4yIGMgLTE0LjUsMjIuMyAtMzAuMyw0Ny42IC00Ny41LDc2LjMgLTAuOSwxLjQgLTEuOSwzLjEgLTIuNyw0LjUgLTE0LjcsMjQuOCAtMzAuMyw1MiAtNDYuOSw4MS45IC0xNC4yLDI1LjggLTI5LDUzLjQgLTQ0LjQsODMuMSAtMTMuNCwyNS45IC0yNy4yLDUzLjQgLTQxLjUsODIuNSBsIDE2My4zLC0xNy45IGMgNDcuNiwtMjEuOSA2OC44LC00MS42IDg5LjQsLTcwLjMgNS40LC03LjkgMTEsLTE2LjEgMTYuNCwtMjQuNyAxNi44LC0yNi4yIDMzLjIsLTU1IDQ3LjksLTgzLjcgMTQuMiwtMjcuNyAyNi43LC01NS4xIDM2LjMsLTc5LjkgNi4xLC0xNS43IDExLC0zMC4zIDE0LjQsLTQzLjIgMywtMTEuMyA1LjMsLTIyLjEgNy4xLC0zMi40IC02My4zLDEwLjkgLTE0MS4yLDIxLjMgLTE5MS44LDIzLjggeiIKICAgICAgICAgaWQ9InBhdGgzMjYwIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzdfLTIpIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU2MC41LDc5Mi44IGMgLTMuMywwLjYgLTYuNiwxLjEgLTEwLDEuNSB2IDAgYyAzLjQsLTAuMyA2LjgsLTAuOSAxMCwtMS41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI2MiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTYwLjUsNzkyLjggYyAtMy4zLDAuNiAtNi42LDEuMSAtMTAsMS41IHYgMCBjIDMuNCwtMC4zIDYuOCwtMC45IDEwLC0xLjUgeiIKICAgICAgICAgaWQ9InBhdGgzMjY0IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0ib3BhY2l0eTowLjM1O2ZpbGw6I2JkMjAyZSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzNTkiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg1MzUuNTg4OSIKICAgICAgICAgeTE9IjI1OTMuNDQ2IgogICAgICAgICB4Mj0iLTY4NDEuNzkyNSIKICAgICAgICAgeTI9IjI1OTMuNDQ2IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzNjEiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDM2MyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzY1IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzY3IiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU2MC41LDc5Mi44IGMgLTMuMywwLjYgLTYuNiwxLjEgLTEwLDEuNSB2IDAgYyAzLjQsLTAuMyA2LjgsLTAuOSAxMCwtMS41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI3NSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF84Xy0zKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDEsLTAuMSAyLjEsLTAuMyAzLjEsLTAuNSAtMSwwLjEgLTIsMC40IC0zLjEsMC41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI3NyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTg2LjYsNzA5LjYgYyAxLC0wLjEgMi4xLC0wLjMgMy4xLC0wLjUgLTEsMC4xIC0yLDAuNCAtMy4xLDAuNSB6IgogICAgICAgICBpZD0icGF0aDMyNzkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDM3MiIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgICB5MT0iMjU5OS4zMjQyIgogICAgICAgICB4Mj0iLTY4NDEuNzkyNSIKICAgICAgICAgeTI9IjI1OTkuMzI0MiIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0Mzc0IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzNzYiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM3OCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM4MCIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDEsLTAuMSAyLjEsLTAuMyAzLjEsLTAuNSAtMSwwLjEgLTIsMC40IC0zLjEsMC41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI5MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF85Xy0zKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDAuMSwwIDAuMSwtMC4xIDAsMCB2IDAgMCAwIGMgMC4xLC0wLjEgMC4xLDAgMCwwIHoiCiAgICAgICAgIGlkPSJwYXRoMzI5MiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTg2LjYsNzA5LjYgYyAwLjEsMCAwLjEsLTAuMSAwLDAgdiAwIDAgMCBjIDAuMSwtMC4xIDAuMSwwIDAsMCB6IgogICAgICAgICBpZD0icGF0aDMyOTQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDM4NSIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItNzU4NC4wMzg2IgogICAgICAgICB5MT0iMjYwMC41NTE1IgogICAgICAgICB4Mj0iLTcyMDkuNjU0MyIKICAgICAgICAgeTI9IjI2MDAuNTUxNSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0Mzg3IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzODkiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM5MSIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM5MyIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDAuMSwwIDAuMSwtMC4xIDAsMCB2IDAgMCAwIGMgMC4xLC0wLjEgMC4xLDAgMCwwIHoiCiAgICAgICAgIGlkPSJwYXRoMzMwNSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8xMF8tOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K" + camel.apache.org/kamelet.support.level: "Stable" camel.apache.org/provider: "Red Hat" - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.group: "JMS" + camel.apache.org/kamelet.namespace: "Messaging" labels: camel.apache.org/kamelet.type: "source" camel.apache.org/requires.runtime: camel-k spec: definition: - title: "JMS - AMQP 1.0 Kamelet Source" - description: "A Kamelet that can consume events from any AMQP 1.0 compliant message broker using the Apache Qpid JMS client" + title: "JMS - AMQP 1.0 Source" + description: "Consume data from any AMQP 1.0 compliant message broker by using the Apache Qpid JMS client." required: - destinationName - remoteURI @@ -21,29 +39,28 @@ spec: properties: destinationType: title: "Destination Type" - description: "The JMS destination type (i.e.: queue or topic)" + description: "The JMS destination type (queue or topic)." type: string default: queue destinationName: title: "Destination Name" - description: "The JMS destination name" + description: "The JMS destination name." type: string remoteURI: title: "Broker URL" - description: "The JMS URL" + description: "The JMS URL." type: string example: "amqp://my-host:31616" dependencies: - "camel:jms" + - "camel:amqp" - "camel:kamelet" - - "mvn:org.apache.qpid:qpid-jms-client:0.55.0" template: beans: - name: connectionFactoryBean type: "#class:org.apache.qpid.jms.JmsConnectionFactory" - property: - - key: remoteURI - value: '{{remoteURI}}' + properties: + remoteURI: '{{remoteURI}}' from: uri: "jms:{{destinationType}}:{{destinationName}}" parameters: diff --git a/kamelets/jms-ibm-mq-sink.kamelet.yaml b/kamelets/jms-ibm-mq-sink.kamelet.yaml new file mode 100644 index 000000000..ccdb457d5 --- /dev/null +++ b/kamelets/jms-ibm-mq-sink.kamelet.yaml @@ -0,0 +1,120 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: jms-ibm-mq-sink + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgIHZpZXdCb3g9IjAgMCA1NzMuMDggNTc2Ljk3Ij4KICAgIDxkZWZzPgogICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgLmNscy0xe2ZpbGw6I2ZmZjt9LmNscy0ye2ZpbGw6IzVhNzdiNTt9LmNscy0ze2ZpbGw6I2FmYmVlMDt9LmNscy00e2NsaXAtcGF0aDp1cmwoI2NsaXAtcGF0aCk7fS5jbHMtNXtjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgtMik7fQogICAgICAgIDwvc3R5bGU+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwLXBhdGgiPgogICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiCiAgICAgICAgICAgICAgICAgIGQ9Ik0xNjQuNSw1MTAuODhWNDU3aDQuMDh2NTMuOTFabTQ3Ljc4LTI3LjcxYTEzLjE0LDEzLjE0LDAsMCwxLDkuMjMsMTNjMCw5LjYyLTYuMjgsMTQuNjktMTUuODIsMTQuNjlIMTg1LjI0VjQ1N2gxOS44NGM4Ljk0LDAsMTUuNiw1LjE1LDE1LjYsMTQuMDhhMTIuMzgsMTIuMzgsMCwwLDEtOC40LDEyLjEyWm0tMjIuOTUsMjQuMDhoMTUuOWM3LjM1LDAsMTIuMTktNC4xNywxMi4xOS0xMS4wNnMtNC44NC0xMS4wNS0xMi4xOS0xMS4wNWgtMTUuOXYyMi4xMVptMTUuMy00Ni42NWgtMTUuM3YyMC45aDE1LjNjNi41MSwwLDEyLTMsMTItMTAuNDVzLTUuNDUtMTAuNDUtMTItMTAuNDVabTcyLjYxLDUwLjI4VjQ2Ni40M2wtMTYuMzUsMzYuODhIMjU2LjhsLTE2LjY2LTM2Ljg4djQ0LjQ1aC00LjA5VjQ1N2g0LjA5bDE4Ljc4LDQxLjU3TDI3Ny4yNCw0NTdoNC4wOXY1My45MVoiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgICAgIDxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTIiPgogICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiCiAgICAgICAgICAgICAgICAgIGQ9Ik0zNDkuNyw1MTAuODRWNDc3LjI4aC0uMThsLTEwLjkxLDI1Ljg0SDMzMmwtMTAuOTEtMjUuODRIMzIxdjMzLjU2aC03LjlWNDU3aDcuNDRsMTUsMzUuMDdMMzUwLjEzLDQ1N2g3LjQ2djUzLjgxWm01NC4yLTEwLDYuODgsNS42NS00LjY5LDUuNjEtNi41OC01LjQ0cS00LjYyLDQuNTEtMTIuMyw0LjY2YTE3Ljg5LDE3Ljg5LDAsMCwxLTEwLjI1LTMuMSwxNy43LDE3LjcsMCwwLDEtNi4wOC02LjU3Yy0uMzgtLjgxLS43My0xLjU5LTEtMi4zMmExNS40NSwxNS40NSwwLDAsMS0uNzItMi44OCwxNDUuMjksMTQ1LjI5LDAsMCwxLDAtMjUsMTUuMzgsMTUuMzgsMCwwLDEsMS43NS01LjEzLDE4LjMzLDE4LjMzLDAsMCwxLDYuMDgtNi42NCwxNy40NywxNy40NywwLDAsMSwxMC4yNS0zLDE3Ljc2LDE3Ljc2LDAsMCwxLDEwLjM2LDMsMTgsMTgsMCwwLDEsNS45NCw2LjY0LDEyLjc5LDEyLjc5LDAsMCwxLDEuODIsNS4xMywxMDcuMjMsMTA3LjIzLDAsMCwxLC40NiwxMi41NXEwLDguMzgtLjM2LDExLjdhMTQuNTEsMTQuNTEsMCwwLDEtMS41Myw1LjE3Wm0tNi41NC0yNy43MWExMS4yNiwxMS4yNiwwLDAsMC01LjI2LTcuMjQsMTEuMTgsMTEuMTgsMCwwLDAtNC45MS0xLjE1LDEwLjYzLDEwLjYzLDAsMCwwLTQuOCwxLjE1LDEwLjA5LDEwLjA5LDAsMCwwLTMuMjksMi43Nyw5LDksMCwwLDAtMiw0LjQ4LDY2LjcsNjYuNywwLDAsMC0uNTcsMTAuODMsNjUuNDcsNjUuNDcsMCwwLDAsLjU3LDEwLjc3LDksOSwwLDAsMCwyLDQuNTQsOS40Nyw5LjQ3LDAsMCwwLDMuMjksMi43MSw5LjExLDkuMTEsMCwwLDAsNC44LDEuMjIsOC42Miw4LjYyLDAsMCwwLDUuODQtMS44OWwtNi42Ni01LjQ3LDQuNjktNS41OSw2LjA5LDVxLjc1LTIuNzMuNzUtMTEuMjhhNzAuNiw3MC42LDAsMCwwLS41NC0xMC44NFoiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgPC9kZWZzPgogICAgPHRpdGxlPklCTSBJUTwvdGl0bGU+CiAgICA8Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjI4Ny42NCIgY3k9IjI4Ny4yIiByPSIyNzguNSIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0zIgogICAgICAgICAgICAgcG9pbnRzPSI0NTguMTcgNDI2LjY3IDExNy4xMSA0MjYuNjcgMTE3LjExIDE1My41NSA3MC45MSAxNTMuNTUgNzAuOTEgMTMxLjU1IDEzOS4xMSAxMzEuNTUgMTM5LjExIDQwNC42NyA0MzYuMTcgNDA0LjY3IDQzNi4xNyAxMzEuNTUgNTA0LjM3IDEzMS41NSA1MDQuMzcgMTUzLjU1IDQ1OC4xNyAxNTMuNTUgNDU4LjE3IDQyNi42NyIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0xIgogICAgICAgICAgICAgcG9pbnRzPSI0MjAuMjYgMjUzLjEyIDQyMC4yNiAyNDEuNzcgMTU1LjAyIDI0MS43NyAxNTUuMDIgMjUyLjg1IDI4Ny44OCAzMjkuNDkgNDIwLjI2IDI1My4xMiIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0xIgogICAgICAgICAgICAgcG9pbnRzPSIyODcuODggMzM5Ljc1IDE1NS4wMiAyNjMuMTEgMTU1LjAyIDM4OC44NCA0MjAuMjYgMzg4Ljg0IDQyMC4yNiAyNjMuMzggMjg3Ljg4IDMzOS43NSIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIgogICAgICAgICAgZD0iTTE2NC41LDUxMC44OFY0NTdoNC4wOHY1My45MVptNDcuNzgtMjcuNzFhMTMuMTQsMTMuMTQsMCwwLDEsOS4yMywxM2MwLDkuNjItNi4yOCwxNC42OS0xNS44MiwxNC42OUgxODUuMjRWNDU3aDE5Ljg0YzguOTQsMCwxNS42LDUuMTUsMTUuNiwxNC4wOGExMi4zOCwxMi4zOCwwLDAsMS04LjQsMTIuMTJabS0yMi45NSwyNC4wOGgxNS45YzcuMzUsMCwxMi4xOS00LjE3LDEyLjE5LTExLjA2cy00Ljg0LTExLjA1LTEyLjE5LTExLjA1aC0xNS45djIyLjExWm0xNS4zLTQ2LjY1aC0xNS4zdjIwLjloMTUuM2M2LjUxLDAsMTItMywxMi0xMC40NXMtNS40NS0xMC40NS0xMi0xMC40NVptNzIuNjEsNTAuMjhWNDY2LjQzbC0xNi4zNSwzNi44OEgyNTYuOGwtMTYuNjYtMzYuODh2NDQuNDVoLTQuMDlWNDU3aDQuMDlsMTguNzgsNDEuNTdMMjc3LjI0LDQ1N2g0LjA5djUzLjkxWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIgogICAgICAgICAgZD0iTTM0OS43LDUxMC44NFY0NzcuMjhoLS4xOGwtMTAuOTEsMjUuODRIMzMybC0xMC45MS0yNS44NEgzMjF2MzMuNTZoLTcuOVY0NTdoNy40NGwxNSwzNS4wN0wzNTAuMTMsNDU3aDcuNDZ2NTMuODFabTU0LjItMTAsNi44OCw1LjY1LTQuNjksNS42MS02LjU4LTUuNDRxLTQuNjIsNC41MS0xMi4zLDQuNjZhMTcuODksMTcuODksMCwwLDEtMTAuMjUtMy4xLDE3LjcsMTcuNywwLDAsMS02LjA4LTYuNTdjLS4zOC0uODEtLjczLTEuNTktMS0yLjMyYTE1LjQ1LDE1LjQ1LDAsMCwxLS43Mi0yLjg4LDE0NS4yOSwxNDUuMjksMCwwLDEsMC0yNSwxNS4zOCwxNS4zOCwwLDAsMSwxLjc1LTUuMTMsMTguMzMsMTguMzMsMCwwLDEsNi4wOC02LjY0LDE3LjQ3LDE3LjQ3LDAsMCwxLDEwLjI1LTMsMTcuNzYsMTcuNzYsMCwwLDEsMTAuMzYsMywxOCwxOCwwLDAsMSw1Ljk0LDYuNjQsMTIuNzksMTIuNzksMCwwLDEsMS44Miw1LjEzLDEwNy4yMywxMDcuMjMsMCwwLDEsLjQ2LDEyLjU1cTAsOC4zOC0uMzYsMTEuN2ExNC41MSwxNC41MSwwLDAsMS0xLjUzLDUuMTdabS02LjU0LTI3LjcxYTExLjI2LDExLjI2LDAsMCwwLTUuMjYtNy4yNCwxMS4xOCwxMS4xOCwwLDAsMC00LjkxLTEuMTUsMTAuNjMsMTAuNjMsMCwwLDAtNC44LDEuMTUsMTAuMDksMTAuMDksMCwwLDAtMy4yOSwyLjc3LDksOSwwLDAsMC0yLDQuNDgsNjYuNyw2Ni43LDAsMCwwLS41NywxMC44Myw2NS40Nyw2NS40NywwLDAsMCwuNTcsMTAuNzcsOSw5LDAsMCwwLDIsNC41NCw5LjQ3LDkuNDcsMCwwLDAsMy4yOSwyLjcxLDkuMTEsOS4xMSwwLDAsMCw0LjgsMS4yMiw4LjYyLDguNjIsMCwwLDAsNS44NC0xLjg5bC02LjY2LTUuNDcsNC42OS01LjU5LDYuMDksNXEuNzUtMi43My43NS0xMS4yOGE3MC42LDcwLjYsMCwwLDAtLjU0LTEwLjg0WiIvPgo8L3N2Zz4=" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/provider: "Red Hat" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.group: "JMS" + camel.apache.org/kamelet.namespace: "Messaging" + labels: + camel.apache.org/kamelet.type: "sink" + camel.apache.org/requires.runtime: camel-k +spec: + definition: + title: "JMS - IBM MQ Sink" + description: |- + A Kamelet that can produce events to an IBM MQ message queue using JMS. + + In your KameletBinding file, you must explicitly declare the IBM MQ Server driver dependency in spec->integration->dependencies + + - "mvn:com.ibm.mq:com.ibm.mq.allclient:" + + required: + - serverName + - serverPort + - destinationName + - queueManager + - channel + - username + - password + type: object + properties: + serverName: + title: "IBM MQ Server name" + description: "IBM MQ Server name or address" + type: string + serverPort: + title: "IBM MQ Server Port" + description: "IBM MQ Server port" + type: integer + default: 1414 + destinationType: + title: "Destination Type" + description: "The JMS destination type (queue or topic)" + type: string + default: queue + destinationName: + title: "Destination Name" + description: "The destination name" + type: string + queueManager: + title: "IBM MQ Queue Manager" + description: "Name of the IBM MQ Queue Manager" + type: string + channel: + title: "IBM MQ Channel" + description: "Name of the IBM MQ Channel" + type: string + clientId: + title: "IBM MQ Client ID" + description: "Name of the IBM MQ Client ID" + type: string + username: + title: "Username" + description: "Username to authenticate to IBM MQ server" + type: string + password: + title: "Password" + description: "Password to authenticate to IBM MQ server" + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + sslCipherSuite: + title: "CipherSuite" + description: "CipherSuite to use for enabling TLS" + type: string + dependencies: + - "camel:jms" + - "camel:kamelet" + template: + beans: + - name: wmqConnectionFactory + type: "#class:com.ibm.mq.jms.MQConnectionFactory" + properties: + XMSC_WMQ_HOST_NAME: '{{serverName}}' + XMSC_WMQ_PORT: '{{serverPort}}' + XMSC_WMQ_CHANNEL: '{{channel}}' + XMSC_WMQ_QUEUE_MANAGER: '{{queueManager}}' + XMSC_WMQ_CONNECTION_MODE: 1 + XMSC_USERID: '{{username}}' + XMSC_PASSWORD: '{{password}}' + XMSC_CLIENT_ID: '{{?clientId}}' + XMSC_WMQ_SSL_CIPHER_SUITE: '{{?sslCipherSuite}}' + from: + uri: "kamelet:source" + steps: + - to: + uri: "jms:{{destinationType}}:{{destinationName}}" + parameters: + connectionFactory: "#bean:{{wmqConnectionFactory}}" diff --git a/kamelets/jms-ibm-mq-source.kamelet.yaml b/kamelets/jms-ibm-mq-source.kamelet.yaml new file mode 100644 index 000000000..2e5ae8e2b --- /dev/null +++ b/kamelets/jms-ibm-mq-source.kamelet.yaml @@ -0,0 +1,120 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: jms-ibm-mq-source + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgIHZpZXdCb3g9IjAgMCA1NzMuMDggNTc2Ljk3Ij4KICAgIDxkZWZzPgogICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgLmNscy0xe2ZpbGw6I2ZmZjt9LmNscy0ye2ZpbGw6IzVhNzdiNTt9LmNscy0ze2ZpbGw6I2FmYmVlMDt9LmNscy00e2NsaXAtcGF0aDp1cmwoI2NsaXAtcGF0aCk7fS5jbHMtNXtjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgtMik7fQogICAgICAgIDwvc3R5bGU+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwLXBhdGgiPgogICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiCiAgICAgICAgICAgICAgICAgIGQ9Ik0xNjQuNSw1MTAuODhWNDU3aDQuMDh2NTMuOTFabTQ3Ljc4LTI3LjcxYTEzLjE0LDEzLjE0LDAsMCwxLDkuMjMsMTNjMCw5LjYyLTYuMjgsMTQuNjktMTUuODIsMTQuNjlIMTg1LjI0VjQ1N2gxOS44NGM4Ljk0LDAsMTUuNiw1LjE1LDE1LjYsMTQuMDhhMTIuMzgsMTIuMzgsMCwwLDEtOC40LDEyLjEyWm0tMjIuOTUsMjQuMDhoMTUuOWM3LjM1LDAsMTIuMTktNC4xNywxMi4xOS0xMS4wNnMtNC44NC0xMS4wNS0xMi4xOS0xMS4wNWgtMTUuOXYyMi4xMVptMTUuMy00Ni42NWgtMTUuM3YyMC45aDE1LjNjNi41MSwwLDEyLTMsMTItMTAuNDVzLTUuNDUtMTAuNDUtMTItMTAuNDVabTcyLjYxLDUwLjI4VjQ2Ni40M2wtMTYuMzUsMzYuODhIMjU2LjhsLTE2LjY2LTM2Ljg4djQ0LjQ1aC00LjA5VjQ1N2g0LjA5bDE4Ljc4LDQxLjU3TDI3Ny4yNCw0NTdoNC4wOXY1My45MVoiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgICAgIDxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTIiPgogICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiCiAgICAgICAgICAgICAgICAgIGQ9Ik0zNDkuNyw1MTAuODRWNDc3LjI4aC0uMThsLTEwLjkxLDI1Ljg0SDMzMmwtMTAuOTEtMjUuODRIMzIxdjMzLjU2aC03LjlWNDU3aDcuNDRsMTUsMzUuMDdMMzUwLjEzLDQ1N2g3LjQ2djUzLjgxWm01NC4yLTEwLDYuODgsNS42NS00LjY5LDUuNjEtNi41OC01LjQ0cS00LjYyLDQuNTEtMTIuMyw0LjY2YTE3Ljg5LDE3Ljg5LDAsMCwxLTEwLjI1LTMuMSwxNy43LDE3LjcsMCwwLDEtNi4wOC02LjU3Yy0uMzgtLjgxLS43My0xLjU5LTEtMi4zMmExNS40NSwxNS40NSwwLDAsMS0uNzItMi44OCwxNDUuMjksMTQ1LjI5LDAsMCwxLDAtMjUsMTUuMzgsMTUuMzgsMCwwLDEsMS43NS01LjEzLDE4LjMzLDE4LjMzLDAsMCwxLDYuMDgtNi42NCwxNy40NywxNy40NywwLDAsMSwxMC4yNS0zLDE3Ljc2LDE3Ljc2LDAsMCwxLDEwLjM2LDMsMTgsMTgsMCwwLDEsNS45NCw2LjY0LDEyLjc5LDEyLjc5LDAsMCwxLDEuODIsNS4xMywxMDcuMjMsMTA3LjIzLDAsMCwxLC40NiwxMi41NXEwLDguMzgtLjM2LDExLjdhMTQuNTEsMTQuNTEsMCwwLDEtMS41Myw1LjE3Wm0tNi41NC0yNy43MWExMS4yNiwxMS4yNiwwLDAsMC01LjI2LTcuMjQsMTEuMTgsMTEuMTgsMCwwLDAtNC45MS0xLjE1LDEwLjYzLDEwLjYzLDAsMCwwLTQuOCwxLjE1LDEwLjA5LDEwLjA5LDAsMCwwLTMuMjksMi43Nyw5LDksMCwwLDAtMiw0LjQ4LDY2LjcsNjYuNywwLDAsMC0uNTcsMTAuODMsNjUuNDcsNjUuNDcsMCwwLDAsLjU3LDEwLjc3LDksOSwwLDAsMCwyLDQuNTQsOS40Nyw5LjQ3LDAsMCwwLDMuMjksMi43MSw5LjExLDkuMTEsMCwwLDAsNC44LDEuMjIsOC42Miw4LjYyLDAsMCwwLDUuODQtMS44OWwtNi42Ni01LjQ3LDQuNjktNS41OSw2LjA5LDVxLjc1LTIuNzMuNzUtMTEuMjhhNzAuNiw3MC42LDAsMCwwLS41NC0xMC44NFoiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgPC9kZWZzPgogICAgPHRpdGxlPklCTSBJUTwvdGl0bGU+CiAgICA8Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjI4Ny42NCIgY3k9IjI4Ny4yIiByPSIyNzguNSIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0zIgogICAgICAgICAgICAgcG9pbnRzPSI0NTguMTcgNDI2LjY3IDExNy4xMSA0MjYuNjcgMTE3LjExIDE1My41NSA3MC45MSAxNTMuNTUgNzAuOTEgMTMxLjU1IDEzOS4xMSAxMzEuNTUgMTM5LjExIDQwNC42NyA0MzYuMTcgNDA0LjY3IDQzNi4xNyAxMzEuNTUgNTA0LjM3IDEzMS41NSA1MDQuMzcgMTUzLjU1IDQ1OC4xNyAxNTMuNTUgNDU4LjE3IDQyNi42NyIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0xIgogICAgICAgICAgICAgcG9pbnRzPSI0MjAuMjYgMjUzLjEyIDQyMC4yNiAyNDEuNzcgMTU1LjAyIDI0MS43NyAxNTUuMDIgMjUyLjg1IDI4Ny44OCAzMjkuNDkgNDIwLjI2IDI1My4xMiIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0xIgogICAgICAgICAgICAgcG9pbnRzPSIyODcuODggMzM5Ljc1IDE1NS4wMiAyNjMuMTEgMTU1LjAyIDM4OC44NCA0MjAuMjYgMzg4Ljg0IDQyMC4yNiAyNjMuMzggMjg3Ljg4IDMzOS43NSIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIgogICAgICAgICAgZD0iTTE2NC41LDUxMC44OFY0NTdoNC4wOHY1My45MVptNDcuNzgtMjcuNzFhMTMuMTQsMTMuMTQsMCwwLDEsOS4yMywxM2MwLDkuNjItNi4yOCwxNC42OS0xNS44MiwxNC42OUgxODUuMjRWNDU3aDE5Ljg0YzguOTQsMCwxNS42LDUuMTUsMTUuNiwxNC4wOGExMi4zOCwxMi4zOCwwLDAsMS04LjQsMTIuMTJabS0yMi45NSwyNC4wOGgxNS45YzcuMzUsMCwxMi4xOS00LjE3LDEyLjE5LTExLjA2cy00Ljg0LTExLjA1LTEyLjE5LTExLjA1aC0xNS45djIyLjExWm0xNS4zLTQ2LjY1aC0xNS4zdjIwLjloMTUuM2M2LjUxLDAsMTItMywxMi0xMC40NXMtNS40NS0xMC40NS0xMi0xMC40NVptNzIuNjEsNTAuMjhWNDY2LjQzbC0xNi4zNSwzNi44OEgyNTYuOGwtMTYuNjYtMzYuODh2NDQuNDVoLTQuMDlWNDU3aDQuMDlsMTguNzgsNDEuNTdMMjc3LjI0LDQ1N2g0LjA5djUzLjkxWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIgogICAgICAgICAgZD0iTTM0OS43LDUxMC44NFY0NzcuMjhoLS4xOGwtMTAuOTEsMjUuODRIMzMybC0xMC45MS0yNS44NEgzMjF2MzMuNTZoLTcuOVY0NTdoNy40NGwxNSwzNS4wN0wzNTAuMTMsNDU3aDcuNDZ2NTMuODFabTU0LjItMTAsNi44OCw1LjY1LTQuNjksNS42MS02LjU4LTUuNDRxLTQuNjIsNC41MS0xMi4zLDQuNjZhMTcuODksMTcuODksMCwwLDEtMTAuMjUtMy4xLDE3LjcsMTcuNywwLDAsMS02LjA4LTYuNTdjLS4zOC0uODEtLjczLTEuNTktMS0yLjMyYTE1LjQ1LDE1LjQ1LDAsMCwxLS43Mi0yLjg4LDE0NS4yOSwxNDUuMjksMCwwLDEsMC0yNSwxNS4zOCwxNS4zOCwwLDAsMSwxLjc1LTUuMTMsMTguMzMsMTguMzMsMCwwLDEsNi4wOC02LjY0LDE3LjQ3LDE3LjQ3LDAsMCwxLDEwLjI1LTMsMTcuNzYsMTcuNzYsMCwwLDEsMTAuMzYsMywxOCwxOCwwLDAsMSw1Ljk0LDYuNjQsMTIuNzksMTIuNzksMCwwLDEsMS44Miw1LjEzLDEwNy4yMywxMDcuMjMsMCwwLDEsLjQ2LDEyLjU1cTAsOC4zOC0uMzYsMTEuN2ExNC41MSwxNC41MSwwLDAsMS0xLjUzLDUuMTdabS02LjU0LTI3LjcxYTExLjI2LDExLjI2LDAsMCwwLTUuMjYtNy4yNCwxMS4xOCwxMS4xOCwwLDAsMC00LjkxLTEuMTUsMTAuNjMsMTAuNjMsMCwwLDAtNC44LDEuMTUsMTAuMDksMTAuMDksMCwwLDAtMy4yOSwyLjc3LDksOSwwLDAsMC0yLDQuNDgsNjYuNyw2Ni43LDAsMCwwLS41NywxMC44Myw2NS40Nyw2NS40NywwLDAsMCwuNTcsMTAuNzcsOSw5LDAsMCwwLDIsNC41NCw5LjQ3LDkuNDcsMCwwLDAsMy4yOSwyLjcxLDkuMTEsOS4xMSwwLDAsMCw0LjgsMS4yMiw4LjYyLDguNjIsMCwwLDAsNS44NC0xLjg5bC02LjY2LTUuNDcsNC42OS01LjU5LDYuMDksNXEuNzUtMi43My43NS0xMS4yOGE3MC42LDcwLjYsMCwwLDAtLjU0LTEwLjg0WiIvPgo8L3N2Zz4=" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/provider: "Red Hat" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.group: "JMS" + camel.apache.org/kamelet.namespace: "Messaging" + labels: + camel.apache.org/kamelet.type: "source" + camel.apache.org/requires.runtime: camel-k +spec: + definition: + title: "JMS - IBM MQ Source" + description: |- + A Kamelet that can read events from an IBM MQ message queue using JMS. + + In your KameletBinding file, you must explicitly declare the IBM MQ Server driver dependency in spec->integration->dependencies + + - "mvn:com.ibm.mq:com.ibm.mq.allclient:" + + required: + - serverName + - serverPort + - destinationName + - queueManager + - channel + - username + - password + type: object + properties: + serverName: + title: "IBM MQ Server name" + description: "IBM MQ Server name or address" + type: string + serverPort: + title: "IBM MQ Server Port" + description: "IBM MQ Server port" + type: integer + default: 1414 + destinationType: + title: "Destination Type" + description: "The JMS destination type (queue or topic)" + type: string + default: queue + destinationName: + title: "Destination Name" + description: "The destination name" + type: string + queueManager: + title: "IBM MQ Queue Manager" + description: "Name of the IBM MQ Queue Manager" + type: string + channel: + title: "IBM MQ Channel" + description: "Name of the IBM MQ Channel" + type: string + clientId: + title: "IBM MQ Client ID" + description: "Name of the IBM MQ Client ID" + type: string + username: + title: "Username" + description: "Username to authenticate to IBM MQ server" + type: string + password: + title: "Password" + description: "Password to authenticate to IBM MQ server" + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + sslCipherSuite: + title: "CipherSuite" + description: "CipherSuite to use for enabling TLS" + type: string + dependencies: + - "camel:jms" + - "camel:kamelet" + template: + beans: + - name: wmqConnectionFactory + type: "#class:com.ibm.mq.jms.MQConnectionFactory" + properties: + XMSC_WMQ_HOST_NAME: '{{serverName}}' + XMSC_WMQ_PORT: '{{serverPort}}' + XMSC_WMQ_CHANNEL: '{{channel}}' + XMSC_WMQ_QUEUE_MANAGER: '{{queueManager}}' + XMSC_WMQ_CONNECTION_MODE: 1 + XMSC_USERID: '{{username}}' + XMSC_PASSWORD: '{{password}}' + XMSC_CLIENT_ID: '{{?clientId}}' + XMSC_WMQ_SSL_CIPHER_SUITE: '{{?sslCipherSuite}}' + from: + uri: "jms:{{destinationType}}:{{destinationName}}" + parameters: + connectionFactory: "#bean:{{wmqConnectionFactory}}" + steps: + - to: + uri: "kamelet:sink" diff --git a/kamelets/jslt-action.kamelet.yaml b/kamelets/jslt-action.kamelet.yaml new file mode 100644 index 000000000..5aba69f39 --- /dev/null +++ b/kamelets/jslt-action.kamelet.yaml @@ -0,0 +1,55 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: jslt-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "JSLT Action" + description: |- + Apply a JSLT query or transformation on JSON. + required: + - template + type: object + properties: + template: + title: Template + description: The inline template for JSLT Transformation + type: string + example: "file://template.json" + pattern: "^(http|https|file|classpath)://.*" + dependencies: + - "camel:jslt" + - "camel:kamelet" + template: + from: + uri: "kamelet:source" + steps: + - to: + uri: "jslt:" + parameters: + resourceUri: "{{template}}" diff --git a/kamelets/json-deserialize-action.kamelet.yaml b/kamelets/json-deserialize-action.kamelet.yaml new file mode 100644 index 000000000..5cf2f89f2 --- /dev/null +++ b/kamelets/json-deserialize-action.kamelet.yaml @@ -0,0 +1,49 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: json-deserialize-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "JSON" +spec: + definition: + title: "Json Deserialize Action" + description: "Deserialize payload to JSON" + type: object + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson" + template: + from: + uri: kamelet:source + steps: + - unmarshal: + json: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + - remove-header: + name: "Content-Type" diff --git a/kamelets/json-serialize-action.kamelet.yaml b/kamelets/json-serialize-action.kamelet.yaml new file mode 100644 index 000000000..1f9eb2de4 --- /dev/null +++ b/kamelets/json-serialize-action.kamelet.yaml @@ -0,0 +1,50 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: json-serialize-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "JSON" +spec: + definition: + title: "Json Serialize Action" + description: "Serialize payload to JSON" + type: object + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson" + template: + from: + uri: kamelet:source + steps: + - marshal: + json: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + - set-header: + name: "Content-Type" + constant: "application/json" diff --git a/kamelets/kafka-scram-sink.kamelet.yaml b/kamelets/kafka-scram-sink.kamelet.yaml new file mode 100644 index 000000000..d4908fd85 --- /dev/null +++ b/kamelets/kafka-scram-sink.kamelet.yaml @@ -0,0 +1,120 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: kafka-scram-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Kafka" + camel.apache.org/kamelet.namespace: "Kafka" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Kafka Scram Sink" + description: |- + Send data to Kafka topics through SCRAM login module. + + The Kamelet is able to understand the following headers to be set: + + - `key` / `ce-key`: as message key + + - `partition-key` / `ce-partitionkey`: as message partition key + + Both the headers are optional. + required: + - topic + - bootstrapServers + - user + - password + type: object + properties: + topic: + title: Topic Names + description: Comma separated list of Kafka topic names + type: string + bootstrapServers: + title: Bootstrap Servers + description: Comma separated list of Kafka Broker URLs + type: string + securityProtocol: + title: Security Protocol + description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported + type: string + default: SASL_SSL + saslMechanism: + title: SASL Mechanism + description: The Simple Authentication and Security Layer (SASL) Mechanism used. + type: string + default: SCRAM-SHA-512 + user: + title: Username + description: Username to authenticate to Kafka + type: string + x-descriptors: + - urn:camel:group:credentials + password: + title: Password + description: Password to authenticate to kafka + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + dependencies: + - "camel:core" + - "camel:kafka" + - "camel:kamelet" + template: + from: + uri: "kamelet:source" + steps: + - choice: + when: + - simple: "${header[key]}" + steps: + - set-header: + name: kafka.KEY + simple: "${header[key]}" + - simple: "${header[ce-key]}" + steps: + - set-header: + name: kafka.KEY + simple: "${header[ce-key]}" + - choice: + when: + - simple: "${header[partition-key]}" + steps: + - set-header: + name: kafka.PARTITION_KEY + simple: "${header[partition-key]}" + - simple: "${header[ce-partitionkey]}" + steps: + - set-header: + name: kafka.PARTITION_KEY + simple: "${header[ce-partitionkey]}" + - to: + uri: "kafka:{{topic}}" + parameters: + brokers: "{{bootstrapServers}}" + securityProtocol: "{{securityProtocol}}" + saslMechanism: "{{saslMechanism}}" + saslJaasConfig: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="{{user}}" password="{{password}}";' diff --git a/kamelets/kafka-scram-source.kamelet.yaml b/kamelets/kafka-scram-source.kamelet.yaml new file mode 100644 index 000000000..5f0a55a3d --- /dev/null +++ b/kamelets/kafka-scram-source.kamelet.yaml @@ -0,0 +1,154 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: kafka-scram-source + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Kafka" + camel.apache.org/kamelet.namespace: "Kafka" + camel.apache.org/keda.type: "kafka" + camel.apache.org/keda.authentication.sasl: "scram-sha-512" + camel.apache.org/keda.authentication.tls: "enable" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Kafka Scram Source" + description: |- + Receive data from Kafka topics through SCRAM login module. + required: + - topic + - bootstrapServers + - user + - password + type: object + properties: + topic: + title: Topic Names + description: Comma separated list of Kafka topic names + type: string + x-descriptors: + - urn:keda:metadata:topic + - urn:keda:required + bootstrapServers: + title: Bootstrap Servers + description: Comma separated list of Kafka Broker URLs + type: string + x-descriptors: + - urn:keda:metadata:bootstrapServers + - urn:keda:required + securityProtocol: + title: Security Protocol + description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported + type: string + default: SASL_SSL + saslMechanism: + title: SASL Mechanism + description: The Simple Authentication and Security Layer (SASL) Mechanism used. + type: string + default: SCRAM-SHA-512 + user: + title: Username + description: Username to authenticate to Kafka + type: string + x-descriptors: + - urn:camel:group:credentials + - urn:keda:authentication:username + - urn:keda:required + password: + title: Password + description: Password to authenticate to kafka + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + - urn:keda:authentication:password + - urn:keda:required + autoCommitEnable: + title: Auto Commit Enable + description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + allowManualCommit: + title: Allow Manual Commit + description: Whether to allow doing manual commits + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + pollOnError: + title: Poll On Error Behavior + description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of DISCARD, ERROR_HANDLER, RECONNECT, RETRY, STOP + type: string + default: "ERROR_HANDLER" + autoOffsetReset: + title: Auto Offset Reset + description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none + type: string + default: "latest" + x-descriptors: + - urn:keda:metadata:offsetResetPolicy + consumerGroup: + title: Consumer Group + description: A string that uniquely identifies the group of consumers to which this source belongs + type: string + example: "my-group-id" + x-descriptors: + - urn:keda:metadata:consumerGroup + - urn:keda:required + deserializeHeaders: + title: Automatically Deserialize Headers + description: When enabled the Kamelet source will deserialize all message headers to String representation. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:core" + - "camel:kafka" + - "camel:kamelet" + template: + beans: + - name: kafkaHeaderDeserializer + type: "#class:org.apache.camel.kamelets.utils.serialization.kafka.KafkaHeaderDeserializer" + properties: + enabled: '{{deserializeHeaders}}' + from: + uri: "kafka:{{topic}}" + parameters: + brokers: "{{?bootstrapServers}}" + securityProtocol: "{{securityProtocol}}" + saslMechanism: "{{saslMechanism}}" + saslJaasConfig: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="{{user}}" password="{{password}}";' + autoCommitEnable: "{{autoCommitEnable}}" + allowManualCommit: "{{allowManualCommit}}" + pollOnError: "{{pollOnError}}" + autoOffsetReset: "{{autoOffsetReset}}" + groupId: "{{?consumerGroup}}" + steps: + - process: + ref: "{{kafkaHeaderDeserializer}}" + - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-sink.kamelet.yaml b/kamelets/kafka-sink.kamelet.yaml similarity index 78% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-sink.kamelet.yaml rename to kamelets/kafka-sink.kamelet.yaml index af5200263..ac451d50e 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-sink.kamelet.yaml +++ b/kamelets/kafka-sink.kamelet.yaml @@ -1,19 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: kafka-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Kafka" + camel.apache.org/kamelet.namespace: "Kafka" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Kafka Sink" description: |- - Send data to Kafka topics. + Send data to Kafka topics through Plain Login Module. The Kamelet is able to understand the following headers to be set: @@ -34,7 +52,7 @@ spec: description: Comma separated list of Kafka topic names type: string bootstrapServers: - title: Brokers + title: Bootstrap Servers description: Comma separated list of Kafka Broker URLs type: string securityProtocol: @@ -51,6 +69,8 @@ spec: title: Username description: Username to authenticate to Kafka type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password description: Password to authenticate to kafka @@ -60,7 +80,7 @@ spec: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials dependencies: - - camel:core + - "camel:core" - "camel:kafka" - "camel:kamelet" template: @@ -97,4 +117,4 @@ spec: brokers: "{{bootstrapServers}}" securityProtocol: "{{securityProtocol}}" saslMechanism: "{{saslMechanism}}" - saslJaasConfig: "org.apache.kafka.common.security.plain.PlainLoginModule required username='{{user}}' password='{{password}}';" + saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="{{user}}" password="{{password}}";' diff --git a/kafka-source.kamelet.yaml b/kamelets/kafka-source.kamelet.yaml similarity index 70% rename from kafka-source.kamelet.yaml rename to kamelets/kafka-source.kamelet.yaml index 491375660..af9f0068d 100644 --- a/kafka-source.kamelet.yaml +++ b/kamelets/kafka-source.kamelet.yaml @@ -1,19 +1,40 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: kafka-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Kafka" + camel.apache.org/kamelet.namespace: "Kafka" + camel.apache.org/keda.type: "kafka" + camel.apache.org/keda.authentication.sasl: "plaintext" + camel.apache.org/keda.authentication.tls: "enable" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Kafka Source" description: |- - Receive data from Kafka topics. + Receive data from Kafka topics through Plain Login Module. required: - topic - bootstrapServers @@ -25,10 +46,16 @@ spec: title: Topic Names description: Comma separated list of Kafka topic names type: string + x-descriptors: + - urn:keda:metadata:topic + - urn:keda:required bootstrapServers: - title: Brokers + title: Bootstrap Servers description: Comma separated list of Kafka Broker URLs type: string + x-descriptors: + - urn:keda:metadata:bootstrapServers + - urn:keda:required securityProtocol: title: Security Protocol description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported @@ -43,6 +70,10 @@ spec: title: Username description: Username to authenticate to Kafka type: string + x-descriptors: + - urn:camel:group:credentials + - urn:keda:authentication:username + - urn:keda:required password: title: Password description: Password to authenticate to kafka @@ -51,6 +82,8 @@ spec: x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + - urn:keda:authentication:password + - urn:keda:required autoCommitEnable: title: Auto Commit Enable description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer @@ -75,43 +108,47 @@ spec: description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none type: string default: "latest" + x-descriptors: + - urn:keda:metadata:offsetResetPolicy consumerGroup: title: Consumer Group description: A string that uniquely identifies the group of consumers to which this source belongs type: string example: "my-group-id" + x-descriptors: + - urn:keda:metadata:consumerGroup + - urn:keda:required deserializeHeaders: title: Automatically Deserialize Headers description: When enabled the Kamelet source will deserialize all message headers to String representation. type: boolean - default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:core" - "camel:kafka" - "camel:kamelet" template: + beans: + - name: kafkaHeaderDeserializer + type: "#class:org.apache.camel.kamelets.utils.serialization.kafka.KafkaHeaderDeserializer" + properties: + enabled: '{{deserializeHeaders}}' from: uri: "kafka:{{topic}}" parameters: brokers: "{{?bootstrapServers}}" securityProtocol: "{{securityProtocol}}" saslMechanism: "{{saslMechanism}}" - saslJaasConfig: "org.apache.kafka.common.security.plain.PlainLoginModule required username='{{user}}' password='{{password}}';" + saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="{{user}}" password="{{password}}";' autoCommitEnable: "{{autoCommitEnable}}" allowManualCommit: "{{allowManualCommit}}" pollOnError: "{{pollOnError}}" autoOffsetReset: "{{autoOffsetReset}}" groupId: "{{?consumerGroup}}" steps: - - set-property: - name: deserializeHeaders - constant: "{{deserializeHeaders}}" - - choice: - when: - - simple: "${exchangeProperty.deserializeHeaders} == 'true'" - steps: - - bean: "org.apache.camel.kamelets.utils.serialization.kafka.KafkaHeaderDeserializer" - - to: "kamelet:sink" + - process: + ref: "{{kafkaHeaderDeserializer}}" + - to: "kamelet:sink" diff --git a/kamelets/log-action.kamelet.yaml b/kamelets/log-action.kamelet.yaml new file mode 100644 index 000000000..bbb963855 --- /dev/null +++ b/kamelets/log-action.kamelet.yaml @@ -0,0 +1,149 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: log-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Logging" + camel.apache.org/kamelet.namespace: "Logging" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Log Action" + description: |- + Logs all data that flows between source and sink, useful for debugging purposes. + type: object + properties: + loggerName: + title: Logger Name + description: Name of the logging category to use + type: string + default: "log-action" + level: + title: Log Level + description: Logging level to use + type: string + default: "INFO" + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:select:TRACE' + - 'urn:alm:descriptor:com.tectonic.ui:select:DEBUG' + - 'urn:alm:descriptor:com.tectonic.ui:select:INFO' + - 'urn:alm:descriptor:com.tectonic.ui:select:WARN' + - 'urn:alm:descriptor:com.tectonic.ui:select:ERROR' + - 'urn:alm:descriptor:com.tectonic.ui:select:OFF' + logMask: + title: Log Mask + description: Mask sensitive information like password or passphrase in the log + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + marker: + title: Marker + description: An optional Marker name to use + type: string + multiline: + title: Multiline + description: If enabled then each information is outputted on a newline + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showAllProperties: + title: Show All Properties + description: Show all of the exchange properties (both internal and custom) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showBody: + title: Show Body + description: Show the message body + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showBodyType: + title: Show Body Type + description: Show the body Java type + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showExchangePattern: + title: Show Exchange Pattern + description: Shows the Message Exchange Pattern (or MEP for short) + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showHeaders: + title: Show Headers + description: Show the headers received + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showProperties: + title: Show Properties + description: Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showStreams: + title: Show Streams + description: Show the stream bodies (they may not be available in following steps) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showCachedStreams: + title: Show Cached Streams + description: Whether Camel should show cached stream bodies or not. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + dependencies: + - "camel:kamelet" + - "camel:log" + template: + from: + uri: "kamelet:source" + steps: + - to: + uri: "log:{{loggerName}}" + parameters: + level: "{{?level}}" + logMask: "{{?logMask}}" + marker: "{{?marker}}" + multiline: "{{?multiline}}" + showAllProperties: "{{?showAllProperties}}" + showBody: "{{?showBody}}" + showBodyType: "{{?showBodyType}}" + showExchangePattern: "{{?showExchangePattern}}" + showHeaders: "{{?showHeaders}}" + showProperties: "{{?showProperties}}" + showStreams: "{{?showStreams}}" + showCachedStreams: "{{?showCachedStreams}}" diff --git a/kamelets/log-sink.kamelet.yaml b/kamelets/log-sink.kamelet.yaml new file mode 100644 index 000000000..7611fec9a --- /dev/null +++ b/kamelets/log-sink.kamelet.yaml @@ -0,0 +1,149 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: log-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Logging" + camel.apache.org/kamelet.namespace: "Logging" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Log Sink" + description: |- + A sink that logs all data that it receives, useful for debugging purposes. + type: object + properties: + loggerName: + title: Logger Name + description: Name of the logging category to use + type: string + default: "log-sink" + level: + title: Log Level + description: Logging level to use + type: string + default: "INFO" + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:select:TRACE' + - 'urn:alm:descriptor:com.tectonic.ui:select:DEBUG' + - 'urn:alm:descriptor:com.tectonic.ui:select:INFO' + - 'urn:alm:descriptor:com.tectonic.ui:select:WARN' + - 'urn:alm:descriptor:com.tectonic.ui:select:ERROR' + - 'urn:alm:descriptor:com.tectonic.ui:select:OFF' + logMask: + title: Log Mask + description: Mask sensitive information like password or passphrase in the log + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + marker: + title: Marker + description: An optional Marker name to use + type: string + multiline: + title: Multiline + description: If enabled then each information is outputted on a newline + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showAllProperties: + title: Show All Properties + description: Show all of the exchange properties (both internal and custom) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showBody: + title: Show Body + description: Show the message body + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showBodyType: + title: Show Body Type + description: Show the body Java type + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showExchangePattern: + title: Show Exchange Pattern + description: Shows the Message Exchange Pattern (or MEP for short) + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showHeaders: + title: Show Headers + description: Show the headers received + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showProperties: + title: Show Properties + description: Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showStreams: + title: Show Streams + description: Show the stream bodies (they may not be available in following steps) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showCachedStreams: + title: Show Cached Streams + description: Whether Camel should show cached stream bodies or not. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + dependencies: + - "camel:kamelet" + - "camel:log" + template: + from: + uri: "kamelet:source" + steps: + - to: + uri: "log:{{loggerName}}" + parameters: + level: "{{?level}}" + logMask: "{{?logMask}}" + marker: "{{?marker}}" + multiline: "{{?multiline}}" + showAllProperties: "{{?showAllProperties}}" + showBody: "{{?showBody}}" + showBodyType: "{{?showBodyType}}" + showExchangePattern: "{{?showExchangePattern}}" + showHeaders: "{{?showHeaders}}" + showProperties: "{{?showProperties}}" + showStreams: "{{?showStreams}}" + showCachedStreams: "{{?showCachedStreams}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml b/kamelets/mariadb-sink.kamelet.yaml similarity index 80% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml rename to kamelets/mariadb-sink.kamelet.yaml index f859c8eb1..f9aa64144 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml +++ b/kamelets/mariadb-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: mariadb-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-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: "Red Hat" camel.apache.org/kamelet.group: "SQL" + camel.apache.org/kamelet.namespace: "Database" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -15,11 +33,15 @@ spec: description: |- Send data to a MariaDB 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: + In your KameletBinding file, you must explicitly declare the MariaDB Server driver dependency in spec->integration->dependencies. + + - "mvn:org.mariadb.jdbc:mariadb-java-client:" + + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet needs to receive as input something like: + Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' required: @@ -32,21 +54,23 @@ spec: properties: serverName: title: Server Name - description: Server Name for the data source + description: The server name for the data source. type: string example: localhost serverPort: title: Server Port - description: Server Port for the data source + description: The server port for the data source. type: string default: 3306 username: title: Username - description: The username to use for accessing a secured MariaDB Database + description: The username to access a secured MariaDB Database. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured MariaDB Database + description: The password to access a secured MariaDB Database. type: string format: password x-descriptors: @@ -54,12 +78,12 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the MariaDB Database + 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 + description: The name of the MariaDB Database. type: string types: in: @@ -68,28 +92,23 @@ spec: - "camel:jackson" - "camel:kamelet" - "camel:sql" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" - - "mvn:org.mariadb.jdbc:mariadb-java-client" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" template: 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}}:{{serverPort}}/{{databaseName}}' - - key: driverClassName - value: 'org.mariadb.jdbc.Driver' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:mariadb://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'org.mariadb.jdbc.Driver' from: uri: "kamelet:source" steps: - unmarshal: - json: + json: library: Jackson - - to: + - to: uri: "sql:{{query}}" parameters: dataSource: "#bean:{{dsBean}}" diff --git a/mask-field-action.kamelet.yaml b/kamelets/mask-field-action.kamelet.yaml similarity index 81% rename from mask-field-action.kamelet.yaml rename to kamelets/mask-field-action.kamelet.yaml index cdc9d1f23..ac48887f0 100644 --- a/mask-field-action.kamelet.yaml +++ b/kamelets/mask-field-action.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: mask-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Mask Fields Action" @@ -27,7 +45,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:jackson" - "camel:kamelet" - "camel:core" @@ -43,7 +61,7 @@ spec: name: deserialized constant: "true" - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -58,7 +76,7 @@ spec: - simple: "${exchangeProperty[deserialized]} == 'true'" steps: - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml b/kamelets/message-timestamp-router-action.kamelet.yaml similarity index 83% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml rename to kamelets/message-timestamp-router-action.kamelet.yaml index 2932a2ad4..d8a5083e0 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml +++ b/kamelets/message-timestamp-router-action.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: message-timestamp-router-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Message Timestamp Router Action" @@ -32,12 +50,12 @@ spec: type: string timestampKeyFormat: title: Timestamp Keys Format - description: Format of the timestamp keys. Possible values are 'timestamp' or any format string for the timestamp that is compatible with java.text.SimpleDateFormat. In case of 'timestamp' the field will be evaluated as milliseconds since 1970, so as a UNIX Timestamp. + description: Format of the timestamp keys. Possible values are 'timestamp' or any format string for the timestamp that is compatible with java.text.SimpleDateFormat. In case of 'timestamp' the field will be evaluated as milliseconds since 1970, so as a UNIX Timestamp. type: string default: "timestamp" type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:jackson" - "camel:kamelet" - "camel:core" @@ -50,7 +68,7 @@ spec: - simple: "${header[Content-Type]} == 'application/json'" steps: - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -67,7 +85,7 @@ spec: constant: "{{timestampKeyFormat}}" - bean: "org.apache.camel.kamelets.utils.transform.MessageTimestampRouter" - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/mongodb-sink.kamelet.yaml b/kamelets/mongodb-sink.kamelet.yaml similarity index 55% rename from mongodb-sink.kamelet.yaml rename to kamelets/mongodb-sink.kamelet.yaml index fc99e5d8a..0050405d9 100644 --- a/mongodb-sink.kamelet.yaml +++ b/kamelets/mongodb-sink.kamelet.yaml @@ -1,25 +1,41 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: mongodb-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "MongoDB" + camel.apache.org/kamelet.namespace: "Nosql" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "MongoDB Sink" description: |- - Send documents to MongoDB. + Send data to MongoDB. - This Kamelet expects a JSON as body. + This Kamelet expects a JSON-formatted body. - Properties you can set as headers: - - - `db-upsert` / `ce-dbupsert`: if the database should create the element if it does not exist. Boolean value. + In the header, you can set the `db-upsert` / `ce-dbupsert` property, a boolean value that specifies whether the database should create an element if it does not exist. required: - hosts - collection @@ -28,35 +44,52 @@ spec: properties: hosts: title: MongoDB Hosts - description: Comma separated list of MongoDB Host Addresses in host:port format. + description: A comma-separated list of MongoDB host addresses in `host:port` format. type: string collection: title: MongoDB Collection - description: Sets the name of the MongoDB collection to bind to this endpoint. + description: The name of the MongoDB collection to bind to this endpoint. type: string password: title: MongoDB Password - description: User password for accessing MongoDB. + description: A user password for accessing MongoDB. type: string format: password x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials username: title: MongoDB Username - description: Username for accessing MongoDB. + description: A username for accessing MongoDB. type: string + x-descriptors: + - urn:camel:group:credentials + ssl: + title: Enable Ssl for Mongodb Connection + description: whether to enable ssl connection to mongodb + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + sslValidationEnabled: + title: Enables Ssl Certificates Validation and Host name checks. + description: IMPORTANT this should be disabled only in test environment since can pose security issues. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' database: title: MongoDB Database - description: Sets the name of the MongoDB database to target. + description: The name of the MongoDB database. type: string writeConcern: title: Write Concern - description: Configure the level of acknowledgment requested from MongoDB for write operations, possible values are ACKNOWLEDGED, W1, W2, W3, UNACKNOWLEDGED, JOURNALED, MAJORITY. + description: The level of acknowledgment requested from MongoDB for write operations. type: string + enum: ["ACKNOWLEDGED", "W1", "W2", "W3", "UNACKNOWLEDGED", "JOURNALED", "MAJORITY"] createCollection: title: Collection - description: Create collection during initialisation if it doesn't exist. + description: Create a collection during initialization if it doesn't exist. type: boolean default: false x-descriptors: @@ -65,14 +98,23 @@ spec: in: mediaType: application/json dependencies: - - camel:core + - "camel:core" - "camel:kamelet" - "camel:mongodb" - "camel:jackson" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" template: beans: - name: local-mongodb type: "#class:org.apache.camel.component.mongodb.MongoDbComponent" + - name: mongo-client + type: "#class:org.apache.camel.kamelets.utils.mongodb.SslAwareMongoClient" + properties: + password: "{{?password}}" + username: "{{?username}}" + hosts: "{{hosts}}" + ssl: "{{ssl}}" + sslValidationEnabled: "{{sslValidationEnabled}}" from: uri: kamelet:source steps: @@ -93,9 +135,7 @@ spec: parameters: createCollection: "{{?createCollection}}" writeConcern: "{{?writeConcern}}" - hosts: "{{hosts}}" collection: "{{collection}}" - password: "{{?password}}" - username: "{{?username}}" database: "{{database}}" operation: "insert" + mongoConnection: "#{{mongo-client}}" diff --git a/kamelets/mongodb-source.kamelet.yaml b/kamelets/mongodb-source.kamelet.yaml new file mode 100644 index 000000000..c6e117ceb --- /dev/null +++ b/kamelets/mongodb-source.kamelet.yaml @@ -0,0 +1,126 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: mongodb-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "MongoDB" + camel.apache.org/kamelet.namespace: "Nosql" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "MongoDB Source" + description: |- + Consume data from MongoDB. + + If you enable the `persistentTailTracking` property, the consumer keeps track of the last consumed message and, on the next restart, the consumption restarts from that message. If you enable `persistentTailTracking`, you must provide a value for the `tailTrackIncreasingField` property (by default it is optional). + + If you disable the `persistentTailTracking` property, the consumer consumes the whole collection and waits in idle for new data to consume. + + The collection that provides the data must be a capped collection. + required: + - hosts + - collection + - database + type: object + properties: + hosts: + title: MongoDB Hosts + description: A comma-separated list of MongoDB host addresses in `host:port` format. + type: string + collection: + title: MongoDB Collection + description: The name of the MongoDB collection to bind to this endpoint. + type: string + password: + title: MongoDB Password + description: The user password for accessing MongoDB. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + username: + title: MongoDB Username + description: The username for accessing MongoDB. The username must be present in the MongoDB's authentication database (`authenticationDatabase`). By default, the MongoDB `authenticationDatabase` is 'admin'. + type: string + x-descriptors: + - urn:camel:group:credentials + ssl: + title: Enable Ssl for Mongodb Connection + description: whether to enable ssl connection to mongodb + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + sslValidationEnabled: + title: Enables Ssl Certificates Validation and Host name checks. + description: IMPORTANT this should be disabled only in test environment since can pose security issues. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + database: + title: MongoDB Database + description: The name of the MongoDB database. + type: string + persistentTailTracking: + title: MongoDB Persistent Tail Tracking + description: Specifies to enable persistent tail tracking, which is a mechanism to keep track of the last consumed data across system restarts. The next time the system is up, the endpoint recovers the cursor from the point where it last stopped consuimg data. This option will only work on capped collections. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + tailTrackIncreasingField: + title: MongoDB Tail Track Increasing Field + description: The correlation field in the incoming data which is of increasing nature and is used to position the tailing cursor every time it is generated. + type: string + dependencies: + - "camel:kamelet" + - "camel:mongodb" + - "camel:jackson" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + template: + beans: + - name: local-mongodb + type: "#class:org.apache.camel.component.mongodb.MongoDbComponent" + - name: mongo-client + type: "#class:org.apache.camel.kamelets.utils.mongodb.SslAwareMongoClient" + properties: + password: "{{?password}}" + username: "{{?username}}" + hosts: "{{hosts}}" + ssl: "{{ssl}}" + sslValidationEnabled: "{{sslValidationEnabled}}" + from: + uri: "{{local-mongodb}}:test" + parameters: + collection: "{{collection}}" + database: "{{database}}" + persistentTailTracking: "{{persistentTailTracking}}" + tailTrackIncreasingField: "{{?tailTrackIncreasingField}}" + mongoConnection: "#{{mongo-client}}" + steps: + - marshal: + json: {} + - to: kamelet:sink diff --git a/kamelets/mysql-sink.kamelet.yaml b/kamelets/mysql-sink.kamelet.yaml new file mode 100644 index 000000000..6a4b6b76a --- /dev/null +++ b/kamelets/mysql-sink.kamelet.yaml @@ -0,0 +1,114 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: mysql-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmVyc2lvbj0iMS4wIj4KIDxyZWN0IGZpbGw9IiMyNjU1N2MiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgeD0iLTMwIiB5PSItMzAiIHJ4PSIxLjQiIHJ5PSIxLjQiIHRyYW5zZm9ybT0ibWF0cml4KDAsLTEsLTEsMCwwLDApIi8+CiA8cGF0aCBvcGFjaXR5PSIuMiIgZD0ibTguMDI1NCA4LjAwMDFjLTAuNzgyNS0wLjAxNjYtMS4xNDk0IDAuNTI0NC0wLjk4ODMgMS40NTcgMC4wNTIgMC4zMDA2IDAuMzE1MiAwLjcyOTkgMC44ODI4IDEuNDQxOSAwLjYzMTIyIDAuNzkwOSAwLjg4NTE0IDEuMjIyNyAxLjE2MDIgMS45NzA3IDAuNDMzNiAxLjE3OTMgMC42MzQwMyAxLjU3NDggMC45ODYzMyAxLjk0MzQgMC4yNzM2NiAwLjI4NjMgMC4yNzM2OSAwLjI4NzEyIDAuMDg5ODQgMC44NzEwOS0wLjI4NTA3IDAuOTA1NTYtMC4zNDQwNyAyLjcyMDctMC4xMTUyMyAzLjU3NDIgMC4zNDI0OCAxLjI3NzQgMC43NjQwMiAxLjg1NzQgMS4zNTE2IDEuODU3NCAwLjQxOTY4IDAgMC43NjM2NC0wLjM1MDkyIDAuODg2NzItMC45MDQzIDAuMDQyNjgtMC4xOTE4NiAwLjEyMjQ5LTAuNDY2MDcgMC4xNzc3My0wLjYwOTM4IDAuMDk1MzUtMC4yNDcyOCAwLjEyMDkzLTAuMjI4MTggMC40OTQxNCAwLjM4MDg2IDAuMjE2MjggMC4zNTI5NiAwLjYyODY2IDAuODc4NjEgMC45MTYwMiAxLjE2OCAwLjY2MzggMC42Njg0NSAxLjU3NDkgMS40MjE3IDEuNjQwNiAxLjM1NzQgMC4wMjc3NS0wLjAyNzEzLTAuMjM4LTAuNDIxNzctMC41ODk4NC0wLjg3ODkxcy0xLjAxNTEtMS41MTg5LTEuNDc0Ni0yLjM1OTRjLTAuNTM1OTMtMC45ODAyOS0wLjg5OTctMS41Mjg2LTEuMDEzNy0xLjUyOTMtMC4zNzA0NS0wLjAwMjUtMC43MTU4OCAwLjU4MDA0LTAuOTE2MDIgMS41NDY5LTAuMjMwNTYgMS4xMTM4LTAuNjM2NzUgMC45MjcwOC0wLjk2NjgtMC40NDUzMS0wLjE5MDE5LTAuNzkwODUtMC4wOTEwNi0xLjg1NiAwLjI2MzY3LTIuODUzNSAwLjE2MTM3LTAuNDUzNzYgMC4yOTI5Ny0wLjg3MzczIDAuMjkyOTctMC45MzE2NHMtMC4yNTczMS0wLjU0MzQ4LTAuNTcyMjctMS4wODAxYy0wLjMxNS0wLjUzNy0wLjY4NTEtMS4yOTctMC44MjItMS42OS0wLjMzMjYtMC45NTQtMC40OTA1LTEuMjMyLTEuMTU4Mi0yLjA0My0wLjY4NzktMC44MzQ2LTAuNzUzLTEuMjIwMy0wLjIwNTEtMS4yMTY2IDAuNDI1NTQgMC4wMDI4MSAxLjExMjMgMC4yODk0NCAxLjgwMjcgMC43NTM5MSAwLjQzNzEgMC4yOTQwNCAwLjU4NTIzIDAuMzMzOTggMS4yODcxIDAuMzMzOTggMC44ODE0MiAwIDEuMDcwOSAwLjA3MjIgMi4yOTMgMC44NzY5NSAxLjI0NDUgMC44MTk1OCAyLjE3MjIgMS41ODEzIDIuODE0NSAyLjMxMjUgMC41NzA0IDAuNjQ5MzcgMC44ODIwMSAxLjIxMzggMi41NjA1IDQuNjU2MiAwLjY0NDMzIDEuMzIxNCAxLjIxNTggMS45NTkzIDIuMDAzOSAyLjIzMjQgMS4yMTczIDAuNDIxODUgMS42MzE3IDAuNjEzMTQgMi4xNjggMC45OTgwNWwwLjU2NjQxIDAuNDA2MjUtMC4zODA4NiAwLjA3NDIyYy0wLjIxMDMgMC4wNDAzMy0wLjY2ODQ3IDAuMTA2MTYtMS4wMTc2IDAuMTQ2NDgtMC43Mjc0MSAwLjA4NC0xLjIwMzEgMC4zODU3My0xLjIwMzEgMC43NjM2NyAwIDAuNDI1OTIgMS40NTEzIDEuNjQ1MyAyLjkwNjIgMi40NDE0IDAuNjk5MDMgMC4zODI0NyAxLjM3MTYgMC43NTkyNyAxLjQ5NDEgMC44Mzc4OSAwLjMyNTk4IDAuMjA5MjIgMC40MTQyNCAwLjE4Mzg5IDAuMzMwMDgtMC4wOTE4LTAuMTc2MjQtMC41NzczOC0wLjc3Mjc5LTEuMTM5OC0yLjQyOTctMi4yOTQ5LTAuOTcxOTctMC42Nzc2LTAuOTgxOTktMC42NTI0NCAwLjMxNjQxLTAuNzgxMjUgMC45MjUtMC4wOTEgMS4zOTItMC4yNDkgMS4zOTItMC40NzIgMC0wLjEwMi0wLjQ3LTAuNjQ0LTEuMDQ1LTEuMjAzLTAuOS0wLjg3Ni0xLjIwNC0xLjA5NC0yLjE5NS0xLjU3Ny0xLjM1LTAuNjU2LTEuODQyLTEuMTc3LTIuMTUzLTIuMjgzLTAuNDY0LTEuNjQ5LTEuNzEyLTMuNTg3LTMuMzcxLTUuMjMtMS43MTItMS42OTYtMy4zNDctMi42MzQ0LTQuODQ1LTIuNzgxNC0wLjYwOS0wLjA1OTgtMC45MjQtMC4xNTIyLTEuMjM5LTAuMzY1My0wLjUzMzItMC4zNjExLTEuNzcxNy0wLjc2ODQtMi4zNzY2LTAuNzgxMnptMi45NjI5IDMuMDAyYy0wLjEyMjY2LTAuMDA3OS0wLjIyOTQ1IDAuMDA4NS0wLjMwMjczIDAuMDU4NTktMC4yNzM0MSAwLjE4Njk5LTAuMjQwOTkgMC40MTUwNCAwLjA4MDA4IDAuNTU2NjQgMC4xNTA5MiAwLjA2NjU2IDAuMzY1MDEgMC4zMDE0NyAwLjQ3NjU2IDAuNTIxNDggMC4zNzUxIDAuNzM5NzggMC45NDk4NSAwLjI0NDUgMC42OTMzNi0wLjU5NzY2LTAuMDgwODUtMC4yNjU0Ni0wLjU3OTMtMC41MTU0Ny0wLjk0NzI3LTAuNTM5MDZ6Ii8+CiA8cGF0aCBmaWxsPSIjZmZmIiBkPSJtOC4wMjU0IDdjLTAuNzgyNS0wLjAxNjYtMS4xNDk0IDAuNTI0NC0wLjk4ODMgMS40NTcgMC4wNTIgMC4zMDA2IDAuMzE1MiAwLjczMDIgMC44ODI4IDEuNDQxNCAwLjYzMTIgMC43OTA2IDAuODg1MiAxLjIyMjYgMS4xNjAyIDEuOTcwNiAwLjQzMzYgMS4xNzkgMC42MzQgMS41NzUgMC45ODU5IDEuOTQzIDAuMjc0IDAuMjg3IDAuMjc0IDAuMjg4IDAuMDkgMC44NzItMC4yODQ4IDAuOTA1LTAuMzQzOCAyLjcyLTAuMTE1IDMuNTc0IDAuMzQyIDEuMjc3IDAuNzY0IDEuODU3IDEuMzUyIDEuODU3IDAuNDE5IDAgMC43NjMtMC4zNTEgMC44ODYtMC45MDQgMC4wNDMtMC4xOTIgMC4xMjMtMC40NjYgMC4xNzgtMC42MDkgMC4wOTUtMC4yNDggMC4xMjEtMC4yMjkgMC40OTQgMC4zOCAwLjIxNiAwLjM1MyAwLjYyOSAwLjg3OSAwLjkxNiAxLjE2OCAwLjY2NCAwLjY2OSAxLjU3NSAxLjQyMiAxLjY0MSAxLjM1OCAwLjAyOC0wLjAyNy0wLjIzOC0wLjQyMi0wLjU5LTAuODc5cy0xLjAxNS0xLjUxOS0xLjQ3NS0yLjM1OWMtMC41MzYtMC45ODEtMC44OTktMS41MjktMS4wMTMtMS41My0wLjM3MS0wLjAwMi0wLjcxNiAwLjU4LTAuOTE2IDEuNTQ3LTAuMjMxIDEuMTE0LTAuNjM3IDAuOTI3LTAuOTY3LTAuNDQ1LTAuMTktMC43OTEtMC4wOTEtMS44NTYgMC4yNjQtMi44NTQgMC4xNjEtMC40NTMgMC4yOTMtMC44NzMgMC4yOTMtMC45MzFzLTAuMjU4LTAuNTQ0LTAuNTczLTEuMDhjLTAuMzE1LTAuNTM3LTAuNjg1MS0xLjI5Ny0wLjgyMi0xLjY5LTAuMzMyNi0wLjk1NC0wLjQ5MDUtMS4yMzItMS4xNTgyLTIuMDQyOS0wLjY4NzktMC44MzQ4LTAuNzUzLTEuMjIwNC0wLjIwNTEtMS4yMTY4IDAuNDI1NSAwLjAwMjkgMS4xMTIzIDAuMjg5NSAxLjgwMjMgMC43NTM5IDAuNDM4IDAuMjk0MSAwLjU4NiAwLjMzNCAxLjI4OCAwLjMzNCAwLjg4MSAwIDEuMDcgMC4wNzIyIDIuMjkzIDAuODc3IDEuMjQ0IDAuODE5OCAyLjE3MiAxLjU4MTggMi44MTQgMi4zMTI4IDAuNTcgMC42NDkgMC44ODIgMS4yMTQgMi41NjEgNC42NTYgMC42NDQgMS4zMjEgMS4yMTUgMS45NTkgMi4wMDMgMi4yMzIgMS4yMTggMC40MjIgMS42MzIgMC42MTMgMi4xNjggMC45OThsMC41NjcgMC40MDctMC4zODEgMC4wNzRjLTAuMjEgMC4wNC0wLjY2OSAwLjEwNi0xLjAxOCAwLjE0Ni0wLjcyNyAwLjA4NC0xLjIwMyAwLjM4Ni0xLjIwMyAwLjc2NCAwIDAuNDI2IDEuNDUxIDEuNjQ1IDIuOTA2IDIuNDQxIDAuNyAwLjM4MyAxLjM3MiAwLjc2IDEuNDk1IDAuODM4IDAuMzI2IDAuMjEgMC40MTQgMC4xODQgMC4zMy0wLjA5MS0wLjE3Ny0wLjU3OC0wLjc3My0xLjE0LTIuNDMtMi4yOTUtMC45NzItMC42NzgtMC45ODItMC42NTMgMC4zMTYtMC43ODIgMC45MjYtMC4wOTIgMS4zOTMtMC4yNSAxLjM5My0wLjQ3MiAwLTAuMTAyLTAuNDctMC42NDQtMS4wNDUtMS4yMDMtMC45LTAuODc3LTEuMjA0LTEuMDk0LTIuMTk1LTEuNTc3LTEuMzUtMC42NTYtMS44NDItMS4xNzctMi4xNTMtMi4yODMtMC40NjQtMS42NS0xLjcxMi0zLjU4Ny0zLjM3MS01LjIzLTEuNzEyLTEuNjk2NS0zLjM0Ny0yLjYzNDUtNC44NDUtMi43ODE1LTAuNjA5LTAuMDU5OC0wLjkyNC0wLjE1MjItMS4yMzktMC4zNjUzLTAuNTMzMi0wLjM2MTEtMS43NzE3LTAuNzY4NC0yLjM3NjYtMC43ODEyem0yLjk2MjYgMy4wMDJjLTAuMTIyLTAuMDA3OS0wLjIyOSAwLjAwOC0wLjMwMiAwLjA1OS0wLjI3NCAwLjE4Ny0wLjI0MSAwLjQxNSAwLjA4IDAuNTU2IDAuMTUxIDAuMDY3IDAuMzY1IDAuMzAyIDAuNDc2IDAuNTIyIDAuMzc1IDAuNzM5IDAuOTUgMC4yNDQgMC42OTQtMC41OTgtMC4wODEtMC4yNjUtMC41OC0wLjUxNS0wLjk0OC0wLjUzOXoiLz4KIDxwYXRoIGZpbGw9IiNmZmYiIG9wYWNpdHk9Ii4xIiBkPSJtMy40MDA0IDJjLTAuNzc1NiAwLTEuNDAwNCAwLjYyNDgtMS40MDA0IDEuNDAwNHYxYzAtMC43NzU2IDAuNjI0OC0xLjQwMDQgMS40MDA0LTEuNDAwNGgyNS4yYzAuNzc1IDAgMS40IDAuNjI0OCAxLjQgMS40MDA0di0xYzAtMC43NzU2LTAuNjI1LTEuNDAwNC0xLjQtMS40MDA0aC0yNS4yeiIvPgogPHBhdGggb3BhY2l0eT0iLjIiIGQ9Im0yIDI4LjZ2MWMwIDAuNzc1IDAuNjI0OCAxLjQgMS40MDA0IDEuNGgyNS4yYzAuNzc1IDAgMS40LTAuNjI1IDEuNC0xLjR2LTFjMCAwLjc3NS0wLjYyNSAxLjQtMS40IDEuNGgtMjUuMmMtMC43NzUyIDAtMS40LTAuNjI1LTEuNC0xLjR6Ii8+Cjwvc3ZnPgo=" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "SQL" + camel.apache.org/kamelet.namespace: "Database" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "MySQL Sink" + description: |- + Send data to a MySQL Database. + + In your KameletBinding file, you must explicitly declare the SQL Server driver dependency in spec->integration->dependencies. + + - "mvn:mysql:mysql-connector-java:" + + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + Here is example input for the example query: + + '{ "username":"oscerd", "city":"Rome"}' + required: + - serverName + - username + - password + - query + - databaseName + type: object + properties: + serverName: + title: Server Name + description: The server name for the data source. + type: string + example: localhost + serverPort: + title: Server Port + description: The server port for the data source. + type: string + default: 3306 + username: + title: Username + description: The username to access a secured MySQL Database. + type: string + x-descriptors: + - urn:camel:group:credentials + password: + title: Password + description: The password to access a secured MySQL Database. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + query: + 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 name of the MySQL Database. + type: string + types: + in: + mediaType: application/json + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" + template: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:mysql://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'com.mysql.cj.jdbc.Driver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" diff --git a/postgresql-sink.kamelet.yaml b/kamelets/postgresql-sink.kamelet.yaml similarity index 82% rename from postgresql-sink.kamelet.yaml rename to kamelets/postgresql-sink.kamelet.yaml index 932d56590..de4f2b57c 100644 --- a/postgresql-sink.kamelet.yaml +++ b/kamelets/postgresql-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: postgresql-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+UG9zdGdyZVNRTCBpY29uPC90aXRsZT48cGF0aCBkPSJNMTcuMTI4IDBhMTAuMTM0IDEwLjEzNCAwIDAgMC0yLjc1NS40MDNsLS4wNjMuMDJBMTAuOTIyIDEwLjkyMiAwIDAgMCAxMi42LjI1OEMxMS40MjIuMjM4IDEwLjQxLjUyNCA5LjU5NCAxIDguNzkuNzIxIDcuMTIyLjI0IDUuMzY0LjMzNiA0LjE0LjQwMyAyLjgwNC43NzUgMS44MTQgMS44Mi44MjcgMi44NjUuMzA1IDQuNDgyLjQxNSA2LjY4MmMuMDMuNjA3LjIwMyAxLjU5Ny40OSAyLjg3OXMuNjkgMi43ODMgMS4xOTMgNC4xNTJjLjUwMyAxLjM3IDEuMDU0IDIuNiAxLjkxNSAzLjQzNi40My40MTkgMS4wMjIuNzcxIDEuNzIuNzQyLjQ5LS4wMi45MzMtLjIzNSAxLjMxNS0uNTUyLjE4Ni4yNDUuMzg1LjM1Mi41NjYuNDUxLjIyOC4xMjUuNDUuMjEuNjguMjY2LjQxMy4xMDMgMS4xMi4yNDEgMS45NDguMS4yODItLjA0Ny41NzktLjEzOS44NzUtLjI3LjAxMS4zMy4wMjQuNjUzLjAzNy45OC4wNDEgMS4wMzYuMDY3IDEuOTkzLjM3OCAyLjgzMi4wNS4xMzcuMTg3Ljg0My43MjcgMS40NjYuNTQuNjI0IDEuNTk4IDEuMDEzIDIuODAzLjc1NS44NS0uMTgyIDEuOTMxLS41MSAyLjY0OS0xLjUzMi43MS0xLjAxIDEuMDMtMi40NTkgMS4wOTMtNC44MDkuMDE2LS4xMjcuMDM1LS4yMzUuMDU1LS4zMzZsLjE2OS4wMTVoLjAyYy45MDcuMDQxIDEuODkxLS4wODggMi43MTMtLjQ3LjcyOC0uMzM3IDEuMjc5LS42NzggMS42OC0xLjI4My4xLS4xNS4yMS0uMzMxLjI0LS42NDNzLS4xNDktLjgtLjQ0Ni0xLjAyNWMtLjU5NS0uNDUyLS45NjktLjI4LTEuMzctLjE5N2E2LjI3IDYuMjcgMCAwIDEtMS4yMDIuMTQ2YzEuMTU2LTEuOTQ3IDEuOTg1LTQuMDE1IDIuNDU4LTUuODQ1LjI4LTEuMDguNDM3LTIuMDc2LjQ1LTIuOTQ3LjAxMy0uODcxLS4wNTgtMS42NDItLjU4LTIuMzA5QzIxLjM2LjYgMTkuMDY3LjAyNCAxNy4yOTMuMDA0Yy0uMDU1LS4wMDEtLjExLS4wMDItLjE2NS0uMDAxem0tLjA0Ny42NGMxLjY3OC0uMDE2IDMuODIyLjQ1NSA1LjM2MSAyLjQyMi4zNDYuNDQyLjQ0OSAxLjA4OC40MzcgMS44ODQtLjAxMy43OTUtLjE2IDEuNzQ3LS40MjkgMi43OS0uNTIyIDIuMDItMS41MDggNC4zNzUtMi44OTcgNi40ODhhLjc1Ni43NTYgMCAwIDAgLjE1OC4wODZjLjI5LjEyLjk1MS4yMjMgMi4yNy0uMDQ4LjMzMi0uMDcuNTc1LS4xMTcuODI3LjA3NWEuNTIuNTIgMCAwIDEgLjE4My40MjUuNzA0LjcwNCAwIDAgMS0uMTMuMzM2Yy0uMjU1LjM4My0uNzU4Ljc0Ni0xLjQwMyAxLjA0NS0uNTcxLjI2Ni0xLjM5LjQwNS0yLjExNi40MTMtLjM2NC4wMDQtLjctLjAyNC0uOTg1LS4xMTNsLS4wMTgtLjAwN2MtLjExIDEuMDYtLjM2MyAzLjE1My0uNTI4IDQuMTA4LS4xMzIuNzctLjM2MyAxLjM4Mi0uODA0IDEuODQtLjQ0LjQ1OC0xLjA2My43MzQtMS45MDEuOTE0LTEuMDM4LjIyMy0xLjc5NS0uMDE3LTIuMjgzLS40MjgtLjQ4Ny0uNDEtLjcxLS45NTQtLjg0NC0xLjI4Ny0uMDkyLS4yMy0uMTQtLjUyOC0uMTg2LS45MjYtLjA0Ni0uMzk4LS4wOC0uODg1LS4xMDMtMS40MzRhNTEuNDI2IDUxLjQyNiAwIDAgMS0uMDMtMi41MjMgMy4wNjEgMy4wNjEgMCAwIDEtMS41NTIuNzZjLS42ODkuMTE3LTEuMzA0LjAwMi0xLjY3MS0uMDlhMi4yNzYgMi4yNzYgMCAwIDEtLjUyLS4yMDFjLS4xNy0uMDkxLS4zMzItLjE5NC0uNDQtLjM5N2EuNTYuNTYgMCAwIDEtLjA1Ny0uMzgxLjYxLjYxIDAgMCAxIC4yMTgtLjMzMWMuMTk4LS4xNjEuNDYtLjI1MS44NTUtLjMzMy43MTktLjE0OC45Ny0uMjQ5IDEuMTIzLS4zNy4xMy0uMTA0LjI3Ny0uMzE0LjUzNy0uNjIyYTEuMTYgMS4xNiAwIDAgMS0uMDAzLS4wNDEgMi45NiAyLjk2IDAgMCAxLTEuMzMtLjM1OGMtLjE1LjE1OC0uOTE2Ljk2OC0xLjg1IDIuMDkyLS4zOTMuNDctLjgyNy43NC0xLjI4NS43NTktLjQ1OC4wMi0uODcyLS4yMTEtMS4yMjQtLjU1Mi0uNzAzLS42ODMtMS4yNjQtMS44NTgtMS43NTMtMy4xODYtLjQ4OC0xLjMyOC0uODg1LTIuODA3LTEuMTY3LTQuMDY3LS4yODMtMS4yNi0uNDUtMi4yNzYtLjQ3NC0yLjc2Ni0uMTA1LTIuMDgyLjM4Mi0zLjQ4NSAxLjIxNy00LjM3LjgzNi0uODg1IDEuOTgyLTEuMjIgMy4wOTktMS4yODQgMi4wMDUtLjExNSAzLjkwOS41ODQgNC4yOTQuNzM0Ljc0Mi0uNTA0IDEuNjk4LS44MTggMi44OTItLjc5OGE3LjM5IDcuMzkgMCAwIDEgMS42ODEuMjE4bC4wMi0uMDA5YTYuODU0IDYuODU0IDAgMCAxIC43MzktLjIxNEE5LjYyNiA5LjYyNiAwIDAgMSAxNy4wOC42NDJ6bS4xNTIuNjdoLS4xNDZhOC43NCA4Ljc0IDAgMCAwLTEuNzA0LjE5MmMxLjI0Ni41NTIgMi4xODcgMS40MDIgMi44NSAyLjI1YTguNDQgOC40NCAwIDAgMSAxLjEzMiAxLjkyYy4xMS4yNjQuMTg0LjQ4Ny4yMjYuNjYuMDIxLjA4Ny4wMzUuMTYuMDQuMjM2LjAwMi4wMzguMDA0LjA3Ny0uMDEyLjE0NCAwIC4wMDMtLjAwNS4wMS0uMDA2LjAxMy4wMy44NzYtLjE4NyAxLjQ3LS4yMTMgMi4zMDYtLjAyLjYwNi4xMzUgMS4zMTguMTczIDIuMDk1LjAzNi43My0uMDUyIDEuNTMyLS41MjYgMi4zMTkuMDQuMDQ4LjA3Ni4wOTYuMTE0LjE0NCAxLjI1NC0xLjk3NSAyLjE1OC00LjE2IDIuNjQtNi4wMjMuMjU4LTEuMDAzLjM5NS0xLjkxMi40MDctMi42MzIuMDEtLjcyLS4xMjQtMS4yNDItLjI5NS0xLjQ2LTEuMzQyLTEuNzE2LTMuMTU4LTIuMTUzLTQuNjgtMi4xNjV6bS00Ljc5LjI1NmMtMS4xODIuMDAzLTIuMDMuMzYtMi42NzMuODk1LS42NjMuNTUzLTEuMTA4IDEuMzEtMS40IDIuMDg1LS4zNDcuOTItLjQ2NiAxLjgxLS41MTMgMi40MTRsLjAxMy0uMDA4Yy4zNTctLjIuODI2LS40IDEuMzI4LS41MTYuNTAyLS4xMTUgMS4wNDMtLjE1MSAxLjUzMy4wMzlzLjg5NS42MzcgMS4wNDIgMS4zMTVjLjcwNCAzLjI1Ny0uMjE5IDQuNDY4LS41NTkgNS4zODJhOS42MSA5LjYxIDAgMCAwLS4zMzEgMS4wMTNjLjA0My0uMDEuMDg2LS4wMjIuMTI5LS4wMjYuMjQtLjAyLjQyOC4wNi41NC4xMDguMzQyLjE0Mi41NzcuNDQuNzA0Ljc4LjAzMy4wODkuMDU3LjE4NS4wNzEuMjg0YS4zMzYuMzM2IDAgMCAxIC4wMi4xMjcgNTUuMTQgNTUuMTQgMCAwIDAgLjAxMyAzLjczOGMuMDIzLjUzOC4wNTcgMS4wMTIuMSAxLjM4Ni4wNDMuMzczLjEwNC42NTcuMTQzLjc1My4xMjguMzIuMzE1LjczOS42NTMgMS4wMjQuMzM4LjI4NC44MjMuNDc0IDEuNzA5LjI4NC43NjgtLjE2NSAxLjI0Mi0uMzk0IDEuNTU5LS43MjMuMzE2LS4zMjkuNTA1LS43ODcuNjI2LTEuNDg4LjE4MS0xLjA1LjU0NS00LjA5NS41ODktNC42NjgtLjAyLS40MzIuMDQ0LS43NjQuMTgyLTEuMDE3LjE0Mi0uMjYuMzYyLS40MTkuNTUyLS41MDUuMDk1LS4wNDMuMTg0LS4wNzIuMjU3LS4wOTNhNS45NTYgNS45NTYgMCAwIDAtLjI0My0uMzI1IDQuNDU2IDQuNDU2IDAgMCAxLS42NjYtMS4wOTkgOC4yOTYgOC4yOTYgMCAwIDAtLjI1Ny0uNDgzYy0uMTMzLS4yNC0uMzAxLS41NC0uNDc3LS44NzctLjM1Mi0uNjc1LS43MzUtMS40OTMtLjkzNC0yLjI5LS4xOTgtLjc5Ni0uMjI3LTEuNjIuMjgxLTIuMjAxLjQ1LS41MTYgMS4yNC0uNzMgMi40MjYtLjYxLS4wMzUtLjEwNS0uMDU2LS4xOTItLjExNS0uMzMyYTcuODE3IDcuODE3IDAgMCAwLTEuMDQxLTEuNzY0Yy0xLjAwNS0xLjI4NS0yLjYzMi0yLjU1OS01LjE0Ni0yLjZoLS4xMTV6bS02LjY0Mi4wNTJjLS4xMjcgMC0uMjU0LjAwNC0uMzguMDExLTEuMDEuMDU4LTEuOTY1LjM1MS0yLjY0OCAxLjA3NS0uNjg0LjcyNC0xLjEzNCAxLjkxMS0xLjAzNiAzLjg3Ni4wMTkuMzcyLjE4MSAxLjQxNC40NTkgMi42NTIuMjc3IDEuMjM4LjY3IDIuNjk1IDEuMTQyIDMuOTgyLjQ3MyAxLjI4NyAxLjA0NiAyLjQwNyAxLjU5IDIuOTM3LjI3NC4yNjUuNTEyLjM3Mi43MjguMzYzLjIxNy0uMDEuNDc4LS4xMzUuNzk3LS41MThhNDMuMjQ0IDQzLjI0NCAwIDAgMSAxLjgxLTIuMDQ4IDMuNDk3IDMuNDk3IDAgMCAxLTEuMTY3LTMuMTVjLjEwMy0uNzM5LjExNy0xLjQzLjEwNS0xLjk3Ni0uMDEyLS41MzItLjA1LS44ODYtLjA1LTEuMTA3YS4zMzYuMzM2IDAgMCAxIDAtLjAxOXYtLjAwNWwtLjAwMS0uMDA2di0uMDAxYTkuODkzIDkuODkzIDAgMCAxIC41OTItMy4zNzZjLjI4LS43NDQuNjk3LTEuNSAxLjMyMi0yLjExMi0uNjE0LS4yMDItMS43MDQtLjUxLTIuODg0LS41NjhhNy42MDMgNy42MDMgMCAwIDAtLjM4LS4wMXpNMTguMTk5IDYuOWMtLjY3OS4wMDktMS4wNi4xODQtMS4yNi40MTMtLjI4My4zMjUtLjMxLjg5NS0uMTM0IDEuNTk3LjE3NS43MDMuNTM3IDEuNDg5Ljg3NyAyLjE0Mi4xNy4zMjcuMzM1LjYyMS40NjguODYuMTM0LjI0LjIzMi40MS4yOTIuNTU1LjA1NS4xMzQuMTE2LjI1Mi4xNzguMzYyLjI2My0uNTU1LjMxLTEuMS4yODMtMS42NjgtLjAzNS0uNzAzLS4xOTgtMS40MjItLjE3NC0yLjE1LjAyNy0uODUxLjE5NS0xLjQwNS4yMS0yLjA2M2E1Ljc5MyA1Ljc5MyAwIDAgMC0uNzQtLjA0OHptLTguMjM0LjExNWEyLjgyIDIuODIgMCAwIDAtLjYxNi4wNzQgNC42NjUgNC42NjUgMCAwIDAtMS4xNTMuNDQ5IDIuNDE3IDIuNDE3IDAgMCAwLS4zNDkuMjI4bC0uMDIyLjAyYy4wMDYuMTQ2LjAzNS41LjA0NyAxLjAyMS4wMTIuNTctLjAwMiAxLjI5Ny0uMTEyIDIuMDg0LS4yMzkgMS43MSAxLjAwMiAzLjEyNiAyLjQ2IDMuMTI4LjA4NS0uMzUxLjIyNS0uNzA3LjM2NS0xLjA4Mi40MDYtMS4wOTQgMS4yMDUtMS44OTIuNTMyLTUuMDA2LS4xMS0uNTEtLjMyOC0uNzE2LS42MjgtLjgzMmExLjQ3NCAxLjQ3NCAwIDAgMC0uNTI0LS4wODR6bTcuOTE3LjIwNGguMDVjLjA2Ni4wMDIuMTI3LjAwOS4xOC4wMjIuMDU0LjAxMi4xLjAzLjEzOC4wNTVhLjE2NC4xNjQgMCAwIDEgLjA3NS4xMWwtLjAwMS4wMDhoLjAwMS0uMDAxYS4yNC4yNCAwIDAgMS0uMDM1LjEzNS42NjguNjY4IDAgMCAxLS4xMS4xNS42NzcuNjc3IDAgMCAxLS4zODYuMjEyLjU5LjU5IDAgMCAxLS40MS0uMTAzLjYwOC42MDggMCAwIDEtLjEzLS4xMTguMjYuMjYgMCAwIDEtLjA2My0uMTI3LjE3LjE3IDAgMCAxIC4wNDItLjEyOC4zODQuMzg0IDAgMCAxIC4xMTctLjA5Yy4wOTYtLjA1NC4yMjYtLjA5NC4zNzMtLjExNi4wNTUtLjAwOC4xMDktLjAxMi4xNi0uMDEzem0tNy44Mi4xNjhjLjA1MyAwIC4xMDkuMDA1LjE2Ni4wMTMuMTUzLjAyMS4yODkuMDYyLjM5My4xMjJhLjQ0Ni40NDYgMCAwIDEgLjEzMy4xMDYuMjIzLjIyMyAwIDAgMSAuMDU0LjE3LjMwMi4zMDIgMCAwIDEtLjA3NS4xNTQuNjQ5LjY0OSAwIDAgMS0uMTQzLjEzLjY0LjY0IDAgMCAxLS40NDguMTEzLjcyOC43MjggMCAwIDEtLjQyLS4yMjguNzEuNzEgMCAwIDEtLjExOC0uMTY0LjI4LjI4IDAgMCAxLS4wNDEtLjE3N2MuMDE1LS4xMDguMTA0LS4xNjQuMTkxLS4xOTVhLjg2Ni44NjYgMCAwIDEgLjMwNy0uMDR6bTkuMDYgNy4zNDNsLS4wMDMuMDAxYy0uMTQ3LjA1My0uMjY4LjA3NS0uMzcuMTJhLjQ1Mi40NTIgMCAwIDAtLjIzOS4yMTRjLS4wNjMuMTE1LS4xMTcuMzE5LS4xMDEuNjY2YS41MS41MSAwIDAgMCAuMTQ4LjA3Yy4xNzEuMDUyLjQ1OC4wODYuNzc4LjA4MS42MzgtLjAwNyAxLjQyMy0uMTU2IDEuODQtLjM1YTMuOTUgMy45NSAwIDAgMCAuOTQzLS42MTVoLS4wMDFjLTEuMzkzLjI4OC0yLjE4LjIxMS0yLjY2My4wMTJhMS4zMTUgMS4zMTUgMCAwIDEtLjMzMi0uMnptLTguMDMxLjA5NGgtLjAyMWMtLjA1My4wMDUtLjEzLjAyMy0uMjc5LjE4OC0uMzQ4LjM5LS40Ny42MzUtLjc1Ny44NjQtLjI4Ny4yMjgtLjY2LjM1LTEuNDA1LjUwMy0uMjM2LjA0OC0uMzcxLjEwMS0uNDYxLjE0NC4wMjkuMDI0LjAyNi4wMy4wNy4wNTMuMTA5LjA2LjI0OS4xMTMuMzYyLjE0Mi4zMi4wOC44NDYuMTczIDEuMzk1LjA4LjU0OS0uMDk0IDEuMTItLjM1NyAxLjYwNy0xLjA0LjA4NC0uMTE4LjA5My0uMjkyLjAyNC0uNDc5LS4wNy0uMTg3LS4yMjMtLjM0OC0uMzMxLS4zOTNhLjY1My42NTMgMCAwIDAtLjIwNC0uMDZ6Ii8+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "SQL" + camel.apache.org/kamelet.namespace: "Database" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -15,11 +33,11 @@ spec: 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: + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet needs to receive as input something like: + Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' required: @@ -32,21 +50,23 @@ spec: properties: serverName: title: Server Name - description: Server Name for the data source + description: The server name for the data source. type: string example: localhost serverPort: title: Server Port - description: Server Port for the data source + description: The server port for the data source. type: string default: 5432 username: title: Username - description: The username to use for accessing a secured PostgreSQL Database + description: The username to access a secured PostgreSQL Database. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured PostgreSQL Database + description: The password to access a secured PostgreSQL Database. type: string format: password x-descriptors: @@ -54,12 +74,12 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the PostgreSQL Database + 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 + description: The name of the PostgreSQL Database. type: string types: in: @@ -68,21 +88,17 @@ spec: - "camel:jackson" - "camel:kamelet" - "camel:sql" - - "mvn:org.postgresql:postgresql:42.5.1" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" + - "mvn:org.postgresql:postgresql:42.6.0" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" template: 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}}:{{serverPort}}/{{databaseName}}' - - key: driverClassName - value: 'org.postgresql.Driver' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:postgresql://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'org.postgresql.Driver' from: uri: "kamelet:source" steps: diff --git a/kamelets/predicate-filter-action.kamelet.yaml b/kamelets/predicate-filter-action.kamelet.yaml new file mode 100644 index 000000000..b4fd4c9bb --- /dev/null +++ b/kamelets/predicate-filter-action.kamelet.yaml @@ -0,0 +1,54 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: predicate-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" +spec: + definition: + title: "Predicate Filter Action" + description: "Filter based on a JsonPath Expression. 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." + 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/' + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + - "camel:jsonpath" + template: + from: + uri: kamelet:source + steps: + - filter: + jsonpath: "$[?(!({{expression}}))]" + steps: + - stop: {} diff --git a/kamelets/protobuf-deserialize-action.kamelet.yaml b/kamelets/protobuf-deserialize-action.kamelet.yaml new file mode 100644 index 000000000..accf0432f --- /dev/null +++ b/kamelets/protobuf-deserialize-action.kamelet.yaml @@ -0,0 +1,62 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: protobuf-deserialize-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Protobuf Deserialize Action" + description: "Deserialize payload to Protobuf" + type: object + 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: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-protobuf" + template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.converter.protobuf.ProtobufSchemaResolver" + property: + - key: schema + value: '{{schema:}}' + from: + uri: kamelet:source + steps: + - unmarshal: + protobuf: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#bean:{{schemaResolver}}" + - remove-header: + name: "Content-Type" diff --git a/kamelets/protobuf-serialize-action.kamelet.yaml b/kamelets/protobuf-serialize-action.kamelet.yaml new file mode 100644 index 000000000..91f6819c4 --- /dev/null +++ b/kamelets/protobuf-serialize-action.kamelet.yaml @@ -0,0 +1,63 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: protobuf-serialize-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Protobuf Serialize Action" + description: "Serialize payload to Protobuf" + type: object + 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: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-protobuf" + template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.converter.protobuf.ProtobufSchemaResolver" + property: + - key: schema + value: '{{schema:}}' + from: + uri: kamelet:source + steps: + - marshal: + protobuf: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#bean:{{schemaResolver}}" + - set-header: + name: "Content-Type" + constant: "application/protobuf" diff --git a/kamelets/regex-router-action.kamelet.yaml b/kamelets/regex-router-action.kamelet.yaml new file mode 100644 index 000000000..8a65953bc --- /dev/null +++ b/kamelets/regex-router-action.kamelet.yaml @@ -0,0 +1,61 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: regex-router-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" +spec: + definition: + title: "Regex Router Action" + description: "Update the destination using the configured regular expression and replacement string" + required: + - regex + - replacement + properties: + regex: + title: Regex + description: Regular Expression for destination + type: string + replacement: + title: Replacement + description: Replacement when matching + type: string + type: object + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + template: + from: + uri: kamelet:source + steps: + - set-property: + name: "regex" + constant: "{{regex}}" + - set-property: + name: "replacement" + constant: "{{replacement}}" + - bean: "org.apache.camel.kamelets.utils.transform.RegexRouter" diff --git a/replace-field-action.kamelet.yaml b/kamelets/replace-field-action.kamelet.yaml similarity index 72% rename from replace-field-action.kamelet.yaml rename to kamelets/replace-field-action.kamelet.yaml index 15ed7d54a..ddaaad2f3 100644 --- a/replace-field-action.kamelet.yaml +++ b/kamelets/replace-field-action.kamelet.yaml @@ -1,18 +1,47 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: replace-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" spec: definition: title: "Replace Field Action" - description: "Replace field with a different key in the message in transit" + description: |- + Replace field with a different key in the message in transit. + + The required parameter 'renames' is a comma-separated list of colon-delimited renaming pairs like for example 'foo:bar,abc:xyz' and it represents the field rename mappings. + + The optional parameter 'enabled' represents the fields to include. If specified, only the named fields will be included in the resulting message. + + The optional parameter 'disabled' represents the fields to exclude. If specified, the listed fields will be excluded from the resulting message. This takes precedence over the 'enabled' parameter. + + The default value of 'enabled' parameter is 'all', so all the fields of the payload will be included. + + The default value of 'disabled' parameter is 'none', so no fields of the payload will be excluded. required: - renames properties: @@ -32,8 +61,11 @@ spec: type: string example: "foo:bar,c1:c2" type: object + types: + in: + mediaType: application/json dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:core" - "camel:jackson" - "camel:kamelet" @@ -49,7 +81,7 @@ spec: name: deserialized constant: "true" - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -67,7 +99,7 @@ spec: - simple: "${exchangeProperty[deserialized]} == 'true'" steps: - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/kamelets/resolve-pojo-schema-action.kamelet.yaml b/kamelets/resolve-pojo-schema-action.kamelet.yaml new file mode 100644 index 000000000..f5b67ea34 --- /dev/null +++ b/kamelets/resolve-pojo-schema-action.kamelet.yaml @@ -0,0 +1,76 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: resolve-pojo-schema-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Resolve Schema Action" + description: "Resolves schema from given mime type and payload. Sets the resolved schema, the schema type and its content class as properties for later reference." + type: object + properties: + mimeType: + title: Mime Type + description: The mime type to determine the schema resolver implementation that should perform the operation. + type: string + default: "application/json" + example: "application/json" + schema: + title: Schema + description: Optional schema content (as single-line, using JSON format). + type: string + contentClass: + title: Content Class + description: Type information of the content object. Fully qualified class name. + type: string + example: "org.apache.camel.content.Foo" + targetMimeType: + title: Target Mime Type + description: Additional mime type information used to determine the schema resolver. Usually only used in combination with mime type "application/x-java-object" + type: string + example: "application/json" + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-avro" + - "camel:jackson-protobuf" + template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.schema.DelegatingSchemaResolver" + properties: + mimeType: '{{mimeType}}' + schema: '{{schema:}}' + contentClass: '{{contentClass:}}' + targetMimeType: '{{targetMimeType:}}' + from: + uri: "kamelet:source" + steps: + - process: + ref: "{{schemaResolver}}" diff --git a/kamelets/salesforce-composite-upsert-sink.kamelet.yaml b/kamelets/salesforce-composite-upsert-sink.kamelet.yaml new file mode 100644 index 000000000..f34c616d9 --- /dev/null +++ b/kamelets/salesforce-composite-upsert-sink.kamelet.yaml @@ -0,0 +1,123 @@ +#--------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: salesforce-composite-upsert-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Salesforce composite upsert Sink" + description: |- + Upsert Composite List of sObjects in Salesforce. + + The body received must contain List of JSON SObjects to insert/update inside the records attribute, for example: + + `{"records" : ["attributes" : {"type" : "KameletSinkSObject__c"},"ExtId__c" : "1","Name__c": "Ziauddin", "City__c": "Bhopal"], ["attributes" : {"type" : "KameletSinkSObject__c"},"ExtId__c" : "2","Name__c": "Shaikh", "City__c": "Bhopal"] }` + + required: + - sObjectName + - sObjectIdName + - clientId + - clientSecret + - userName + - password + type: object + properties: + sObjectName: + title: Object Name + description: The type of the Salesforce object. Required if using a key-value pair. + type: string + example: Contact + sObjectIdName: + title: Object Id Name + description: The Field Name of the External ID of the Salesforce object. Required if using a key-value pair. + type: string + loginUrl: + title: Login URL + description: The Salesforce instance login URL. + type: string + default: https://login.salesforce.com + clientId: + title: Consumer Key + description: The Salesforce application consumer key. + type: string + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Consumer Secret + description: The Salesforce application consumer secret. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + userName: + title: Username + description: The Salesforce username. + type: string + x-descriptors: + - urn:camel:group:credentials + password: + title: Password + description: The Salesforce user password. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + types: + in: + mediaType: application/json + dependencies: + - "camel:core" + - "camel:jsonpath" + - "camel:jackson" + - "camel:salesforce" + - "camel:kamelet" + template: + beans: + - name: salesforce + type: "#class:org.apache.camel.component.salesforce.SalesforceComponent" + properties: + sObjectName: "{{sObjectName}}" + sObjectIdName: "{{sObjectIdName}}" + clientId: "{{clientId}}" + clientSecret: "{{clientSecret}}" + userName: "{{userName}}" + password: "{{password}}" + loginUrl: "{{loginUrl}}" + from: + uri: kamelet:source + steps: + - transform: + jsonpath: "$['records']" + - to: + uri: "{{salesforce}}:compositeUpsertSObjectCollections" + parameters: + sObjectName: "{{sObjectName}}" + sObjectIdName: "{{sObjectIdName}}" + rawPayload: "true" + allOrNone: "false" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml b/kamelets/salesforce-create-sink.kamelet.yaml similarity index 88% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml rename to kamelets/salesforce-create-sink.kamelet.yaml index 6718d804d..0e7dc2478 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml +++ b/kamelets/salesforce-create-sink.kamelet.yaml @@ -1,22 +1,39 @@ -apiVersion: camel.apache.org/v1alpha1 +#--------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: salesforce-create-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Salesforce Create Sink" description: |- - Creates an object in Salesforce. The body of the message must contain - the JSON of the salesforce object. - - Example body: { "Phone": "555", "Name": "Antonia", "LastName": "Garcia" } + Create an object in Salesforce. + + The body of the message must contain the JSON of the Salesforce object, for example: `{ "Phone": "555", "Name": "Antonia", "LastName": "Garcia" }`. required: - clientId - clientSecret @@ -26,23 +43,23 @@ spec: properties: sObjectName: title: Object Name - description: Type of the object + description: The type of the object. type: string example: Contact loginUrl: title: Login URL - description: The Salesforce instance login URL + description: The Salesforce instance login URL. type: string default: https://login.salesforce.com clientId: title: Consumer Key - description: The Salesforce application consumer key + description: The Salesforce application consumer key. type: string x-descriptors: - urn:camel:group:credentials clientSecret: title: Consumer Secret - description: The Salesforce application consumer secret + description: The Salesforce application consumer secret. type: string format: password x-descriptors: @@ -50,13 +67,13 @@ spec: - urn:camel:group:credentials userName: title: Username - description: The Salesforce username + description: The Salesforce username. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The Salesforce user password + description: The Salesforce user password. type: string format: password x-descriptors: @@ -85,3 +102,4 @@ spec: uri: "{{local-salesforce}}:createSObject" parameters: sObjectName: "{{sObjectName}}" + rawPayload: "true" diff --git a/salesforce-delete-sink.kamelet.yaml b/kamelets/salesforce-delete-sink.kamelet.yaml similarity index 88% rename from salesforce-delete-sink.kamelet.yaml rename to kamelets/salesforce-delete-sink.kamelet.yaml index 2db4148e4..8f0a54ac9 100644 --- a/salesforce-delete-sink.kamelet.yaml +++ b/kamelets/salesforce-delete-sink.kamelet.yaml @@ -1,22 +1,40 @@ -apiVersion: camel.apache.org/v1alpha1 +#--------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: salesforce-delete-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Salesforce Delete Sink" description: |- - Removes an object from Salesforce. The body received must be a json - containing two keys: sObjectId and sObjectName. - - Example body: { "sObjectId": "XXXXX0", "sObjectName": "Contact" } + Remove an object from Salesforce. + + The data body must be JSON-formatted and it must + contain two keys: `sObjectId` and `sObjectName`. For example: `{ "sObjectId": "XXXXX0", "sObjectName": "Contact" }` required: - clientId - clientSecret @@ -26,18 +44,18 @@ spec: properties: loginUrl: title: Login URL - description: The Salesforce instance login URL + description: The Salesforce instance login URL. type: string default: https://login.salesforce.com clientId: title: Consumer Key - description: The Salesforce application consumer key + description: The Salesforce application consumer key. type: string x-descriptors: - urn:camel:group:credentials clientSecret: title: Consumer Secret - description: The Salesforce application consumer secret + description: The Salesforce application consumer secret. type: string format: password x-descriptors: @@ -45,13 +63,13 @@ spec: - urn:camel:group:credentials userName: title: Username - description: The Salesforce username + description: The Salesforce username. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The Salesforce user password + description: The Salesforce user password. type: string format: password x-descriptors: diff --git a/salesforce-source.kamelet.yaml b/kamelets/salesforce-source.kamelet.yaml similarity index 84% rename from salesforce-source.kamelet.yaml rename to kamelets/salesforce-source.kamelet.yaml index a7cb38adf..b2ed0f2bc 100644 --- a/salesforce-source.kamelet.yaml +++ b/kamelets/salesforce-source.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: salesforce-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" labels: - camel.apache.org/kamelet.type: "source" + camel.apache.org/kamelet.type: "source" spec: definition: title: "Salesforce Source" @@ -25,33 +43,34 @@ spec: properties: query: title: Query - description: The query to execute on Salesforce + description: The query to execute on Salesforce. type: string example: SELECT Id, Name, Email, Phone FROM Contact topicName: title: Topic Name - description: The name of the topic/channel to use + description: The name of the topic or channel. type: string example: ContactTopic loginUrl: title: Login URL - description: The Salesforce instance login URL + description: The Salesforce instance login URL. type: string default: https://login.salesforce.com notifyForFields: title: Notify For Fields - description: Notify for fields, options are ALL, REFERENCED, SELECT, WHERE. + description: Notify for fields. type: string default: ALL + enum: [ "ALL", "REFERENCED", "SELECT", "WHERE"] clientId: title: Consumer Key - description: The Salesforce application consumer key + description: The Salesforce application consumer key. type: string x-descriptors: - urn:camel:group:credentials clientSecret: title: Consumer Secret - description: The Salesforce application consumer secret + description: The Salesforce application consumer secret. type: string format: password x-descriptors: @@ -59,13 +78,13 @@ spec: - urn:camel:group:credentials userName: title: Username - description: The Salesforce username + description: The Salesforce username. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The Salesforce user password + description: The Salesforce user password. type: string format: password x-descriptors: @@ -99,6 +118,11 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + operation: + title: Operation + description: The operation to use + type: string + default: subscribe types: out: mediaType: application/json @@ -106,27 +130,28 @@ spec: - "camel:jackson" - "camel:salesforce" - "camel:kamelet" - template: - beans: - - name: local-salesforce - properties: - clientId: '{{clientId}}' - clientSecret: '{{clientSecret}}' - loginUrl: '{{loginUrl}}' - password: '{{password}}' - userName: '{{userName}}' - type: '#class:org.apache.camel.component.salesforce.SalesforceComponent' - from: - parameters: - notifyForFields: '{{notifyForFields}}' + template: + beans: + - name: local-salesforce + type: "#class:org.apache.camel.component.salesforce.SalesforceComponent" + properties: + clientId: "{{clientId}}" + clientSecret: "{{clientSecret}}" + userName: "{{userName}}" + password: "{{password}}" + loginUrl: "{{loginUrl}}" + from: + uri: "{{local-salesforce}}:{{topicName}}" + parameters: + notifyForFields: "{{notifyForFields}}" + updateTopic: "true" notifyForOperationCreate: "{{notifyForOperationCreate}}" notifyForOperationUpdate: "{{notifyForOperationUpdate}}" notifyForOperationDelete: "{{notifyForOperationDelete}}" notifyForOperationUndelete: "{{notifyForOperationUndelete}}" - sObjectQuery: '{{query}}' - updateTopic: "true" - steps: - - marshal: - json: {} - - to: kamelet:sink - uri: '{{local-salesforce}}:{{topicName}}' + sObjectQuery: "{{query}}" + operationName: "{{operation}}" + steps: + - marshal: + json: {} + - to: "kamelet:sink" diff --git a/salesforce-update-sink.kamelet.yaml b/kamelets/salesforce-update-sink.kamelet.yaml similarity index 83% rename from salesforce-update-sink.kamelet.yaml rename to kamelets/salesforce-update-sink.kamelet.yaml index 7ceae4adc..448414375 100644 --- a/salesforce-update-sink.kamelet.yaml +++ b/kamelets/salesforce-update-sink.kamelet.yaml @@ -1,55 +1,67 @@ -apiVersion: camel.apache.org/v1alpha1 +#--------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: salesforce-update-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Salesforce Update Sink" description: |- - Updates an object in Salesforce. The body received must contain a - JSON key-value pair for each property to update and sObjectName and - sObjectId must be provided as parameters. + Update an object in Salesforce. + + The body received must contain a JSON key-value pair for each property to update inside the payload attribute, for example: + + `{ "payload": { "Phone": "1234567890", "Name": "Antonia" } }` + + The body received must include the `sObjectName` and `sObjectId` properties, for example: - Example of key-value pair: { "Phone": "1234567890", "Name": "Antonia" } + `{ "payload": { "Phone": "1234567890", "Name": "Antonia" }, "sObjectId": "sObjectId", "sObjectName": "sObjectName" }` + required: - - sObjectName - - sObjectId - clientId - clientSecret - userName - password type: object properties: - sObjectName: - title: Object Name - description: Type of the object. Only required if using key-value pair. - type: string - example: Contact - sObjectId: - title: Object Id - description: Id of the object. Only required if using key-value pair. - type: string loginUrl: title: Login URL - description: The Salesforce instance login URL + description: The Salesforce instance login URL. type: string default: https://login.salesforce.com clientId: title: Consumer Key - description: The Salesforce application consumer key + description: The Salesforce application consumer key. type: string x-descriptors: - urn:camel:group:credentials clientSecret: title: Consumer Secret - description: The Salesforce application consumer secret + description: The Salesforce application consumer secret. type: string format: password x-descriptors: @@ -57,13 +69,13 @@ spec: - urn:camel:group:credentials userName: title: Username - description: The Salesforce username + description: The Salesforce username. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The Salesforce user password + description: The Salesforce user password. type: string format: password x-descriptors: @@ -73,6 +85,9 @@ spec: in: mediaType: application/json dependencies: + - "camel:core" + - "camel:jsonpath" + - "camel:jackson" - "camel:salesforce" - "camel:kamelet" template: @@ -88,8 +103,14 @@ spec: from: uri: kamelet:source steps: - - to: - uri: "{{local-salesforce}}:updateSObject" - parameters: - sObjectId: "{{sObjectId}}" - sObjectName: "{{sObjectName}}" + - set-property: + name: sObjectId + jsonpath: "$['sObjectId']" + - set-property: + name: sObjectName + jsonpath: "$['sObjectName']" + - transform: + jsonpath: "$['payload']" + - marshal: + json: {} + - toD: "{{local-salesforce}}:updateSObject?sObjectId=${exchangeProperty.sObjectId}&sObjectName=${exchangeProperty.sObjectName}&rawPayload=true" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-sink.kamelet.yaml b/kamelets/sftp-sink.kamelet.yaml similarity index 69% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-sink.kamelet.yaml rename to kamelets/sftp-sink.kamelet.yaml index 8089377a0..08158d215 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-sink.kamelet.yaml +++ b/kamelets/sftp-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: sftp-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "FTP" + camel.apache.org/kamelet.namespace: "File" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -15,35 +33,33 @@ spec: description: |- Send data to an SFTP Server. - The Kamelet expects the following headers to be set: + In the header, you can set the `file` / `ce-file` property to specify the filename to upload. - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. + If you do not set the property in the header, the Kamelet uses the exchange ID for the filename. required: - connectionHost - connectionPort - - username - - password - directoryName type: object properties: connectionHost: title: Connection Host - description: Hostname of the FTP server + description: The hostname of the FTP server type: string connectionPort: title: Connection Port - description: Port of the FTP server + description: The port of the FTP server type: string default: 22 username: title: Username - description: The username to access the FTP server + description: The username to access the FTP server. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to access the FTP server + description: The password to access the FTP server. type: string format: password x-descriptors: @@ -51,20 +67,60 @@ spec: - urn:camel:group:credentials directoryName: title: Directory Name - description: The starting directory + description: The starting directory. type: string passiveMode: title: Passive Mode - description: Sets passive mode connection + description: Specifies to use passive mode connection. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' fileExist: title: File Existence - description: How to behave in case of file already existent. There are 4 enums and the value can be one of Override, Append, Fail or Ignore + description: How to behave in case of file already existent. type: string default: Override + enum: ["Override", "Append", "Fail", "Ignore"] + binary: + title: Binary + description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + privateKeyFile: + title: Private Key File + description: Set the private key file so that the SFTP endpoint can do private key verification. + type: string + privateKeyPassphrase: + title: Private Key Passphrase + description: Set the private key file passphrase so that the SFTP endpoint can do private key verification. + type: string + privateKeyUri: + title: Private Key URI + description: Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification. + type: string + pattern: "^(http|https|file|classpath)://.*" + strictHostKeyChecking: + title: Strict Host Checking + description: Sets whether to use strict host key checking. + type: string + default: no + useUserKnownHostsFile: + title: Use User Known Hosts File + description: If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreate: + title: Autocreate Missing Directories + description: Automatically create the directory the files should be written to. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "camel:ftp" - "camel:core" @@ -86,8 +142,16 @@ spec: name: CamelFileName simple: "${header[ce-file]}" - to: - uri: "sftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}" + uri: "sftp:{{connectionHost}}:{{connectionPort}}/{{directoryName}}" parameters: - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + privateKeyFile: "{{?privateKeyFile}}" + privateKeyPassphrase: "{{?privateKeyPassphrase}}" + privateKeyUri: "{{?privateKeyUri}}" + strictHostKeyChecking: "{{?strictHostKeyChecking}}" + useUserKnownHostsFile: "{{?useUserKnownHostsFile}}" passiveMode: "{{passiveMode}}" fileExist: "{{fileExist}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml b/kamelets/sftp-source.kamelet.yaml similarity index 65% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml rename to kamelets/sftp-source.kamelet.yaml index da378e27c..2004a4bbe 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml +++ b/kamelets/sftp-source.kamelet.yaml @@ -1,43 +1,61 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: sftp-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "FTP" + camel.apache.org/kamelet.namespace: "File" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "SFTP Source" description: |- - Receive data from an SFTP Server. + Receive data from an SFTP server. required: - connectionHost - connectionPort - - username - - password - directoryName type: object properties: connectionHost: title: Connection Host - description: Hostname of the SFTP server + description: The hostname of the SFTP server. type: string connectionPort: title: Connection Port - description: Port of the FTP server + description: The port of the FTP server. type: string default: 22 username: title: Username - description: The username to access the SFTP server + description: The username to access the SFTP server. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to access the SFTP server + description: The password to access the SFTP server. type: string format: password x-descriptors: @@ -45,48 +63,111 @@ spec: - urn:camel:group:credentials directoryName: title: Directory Name - description: The starting directory + description: The starting directory. type: string passiveMode: title: Passive Mode - description: Sets passive mode connection + description: Sets the passive mode connection. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' recursive: title: Recursive - description: If a directory, will look for files in all the sub-directories as well. + description: If a directory, look for files in all sub-directories as well. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' idempotent: title: Idempotency - description: Skip already processed files. + description: Skip already-processed files. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + ignoreFileNotFoundOrPermissionError: + title: Ignore File Not Found Or Permission Error + description: Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + binary: + title: Binary + description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + privateKeyFile: + title: Private Key File + description: Set the private key file so that the SFTP endpoint can do private key verification. + type: string + privateKeyPassphrase: + title: Private Key Passphrase + description: Set the private key file passphrase so that the SFTP endpoint can do private key verification. + type: string + privateKeyUri: + title: Private Key URI + description: Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification. + type: string + pattern: "^(http|https|file|classpath)://.*" + strictHostKeyChecking: + title: Strict Host Checking + description: Sets whether to use strict host key checking. + type: string + default: no + useUserKnownHostsFile: + title: Use User Known Hosts File + description: If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts. type: boolean default: true x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreate: + title: Autocreate Missing Directories + description: Automatically create starting directory. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + delete: + title: Delete + description: If true, the file will be deleted after it is processed successfully. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "camel:ftp" - "camel:core" - "camel:kamelet" template: from: - uri: "sftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}" + uri: "sftp:{{connectionHost}}:{{connectionPort}}/{{directoryName}}" parameters: - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + privateKeyFile: "{{?privateKeyFile}}" + privateKeyPassphrase: "{{?privateKeyPassphrase}}" + privateKeyUri: "{{?privateKeyUri}}" + strictHostKeyChecking: "{{?strictHostKeyChecking}}" + useUserKnownHostsFile: "{{?useUserKnownHostsFile}}" passiveMode: "{{passiveMode}}" recursive: "{{recursive}}" idempotent: "{{idempotent}}" + ignoreFileNotFoundOrPermissionError: "{{ignoreFileNotFoundOrPermissionError}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" + delete: "{{delete}}" steps: + - set-body: + simple: "${body.getBody()}" - set-header: name: file simple: "${header[CamelFileName]}" - set-header: name: ce-file simple: "${header[CamelFileName]}" - - convert-body-to: - type: "java.io.InputStream" - to: "kamelet:sink" diff --git a/simple-filter-action.kamelet.yaml b/kamelets/simple-filter-action.kamelet.yaml similarity index 95% rename from simple-filter-action.kamelet.yaml rename to kamelets/simple-filter-action.kamelet.yaml index 808e73115..21d4a9bab 100644 --- a/simple-filter-action.kamelet.yaml +++ b/kamelets/simple-filter-action.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -14,17 +14,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: simple-filter-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "EIP" spec: definition: title: "Simple Filter Action" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml b/kamelets/slack-source.kamelet.yaml similarity index 68% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml rename to kamelets/slack-source.kamelet.yaml index bd5915c22..c6f7699d8 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml +++ b/kamelets/slack-source.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: slack-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMyNUQzNjY7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQoJLnN0MntmaWxsOiNGRjAwMDA7fQoJLnN0M3tmaWxsOiMzRDVBOTg7fQoJLnN0NHtmaWxsOnVybCgjU1ZHSURfMV8pO30KCS5zdDV7ZmlsbDp1cmwoI1NWR0lEXzJfKTt9Cgkuc3Q2e2ZpbGw6IzU1QURFRTt9Cgkuc3Q3e2ZpbGw6IzFFOTZDODt9Cgkuc3Q4e2ZpbGw6I0E5QzlERDt9Cgkuc3Q5e2ZpbGw6I0M4REFFQTt9Cgkuc3QxMHtmaWxsOm5vbmU7fQoJLnN0MTF7ZmlsbDojNDc4N0YzO30KCS5zdDEye2ZpbGw6I0RDNDgzQzt9Cgkuc3QxM3tmaWxsOiNGRkNFNDM7fQoJLnN0MTR7ZmlsbDojMTQ5RjVDO30KCS5zdDE1e2ZpbGw6I0NFMUU1Qjt9Cgkuc3QxNntmaWxsOiM3MkM1Q0Q7fQoJLnN0MTd7ZmlsbDojREZBMjJGO30KCS5zdDE4e2ZpbGw6IzNDQjE4Nzt9Cgkuc3QxOXtmaWxsOiMyNDhDNzM7fQoJLnN0MjB7ZmlsbDojMzkyNTM4O30KCS5zdDIxe2ZpbGw6I0JCMjQyQTt9Cgkuc3QyMntmaWxsOm5vbmU7c3Ryb2tlOiMzQ0IxODc7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0MjN7ZmlsbDojMDA5QTU3O30KCS5zdDI0e2ZpbGw6I0ZDQ0QzNzt9Cgkuc3QyNXtmaWxsOiMyNzcxRjA7fQo8L3N0eWxlPjxnPjxwYXRoIGNsYXNzPSJzdDE1IiBkPSJNNTAxLjgsMjc0TDUwMS44LDI3NGMtNy42LTIzLjMtMzIuNi0zNi4xLTU2LTI4LjVMOTYuMiwzNTkuMWMtMjMuMyw3LjYtMzYuMSwzMi42LTI4LjUsNTZsMCwwICAgYzcuNiwyMy4zLDMyLjYsMzYuMSw1NiwyOC41bDM0OS42LTExMy42QzQ5Ni42LDMyMi40LDUwOS40LDI5Ny4zLDUwMS44LDI3NHoiLz48cGF0aCBjbGFzcz0ic3QxNiIgZD0iTTQ0My41LDk3LjdsLTAuMi0wLjVjLTcuNi0yMy4zLTMyLjYtMzYuMS01Ni0yOC41TDM4LjcsMTgyLjFjLTIzLjMsNy42LTM2LjEsMzIuNi0yOC41LDU2bDAuMiwwLjUgICBjNy42LDIzLjMsMzIuNiwzNi4xLDU2LDI4LjVsMzQ4LjYtMTEzLjNDNDM4LjMsMTQ2LjEsNDUxLDEyMS4xLDQ0My41LDk3Ljd6Ii8+PHBhdGggY2xhc3M9InN0MTciIGQ9Ik00NDMuNiwzODguM0wzMjkuOSwzOC43Yy03LjYtMjMuMy0zMi42LTM2LjEtNTYtMjguNXYwYy0yMy4zLDcuNi0zNi4xLDMyLjYtMjguNSw1NmwxMTMuNiwzNDkuNiAgIGM3LjYsMjMuMywzMi42LDM2LjEsNTYsMjguNWgwQzQzOC40LDQzNi43LDQ1MS4yLDQxMS42LDQ0My42LDM4OC4zeiIvPjxwYXRoIGNsYXNzPSJzdDE4IiBkPSJNMjY3LDQ0NS43TDE1My43LDk3LjFjLTcuNi0yMy4zLTMyLjYtMzYuMS01Ni0yOC41bC0wLjUsMC4yYy0yMy4zLDcuNi0zNi4xLDMyLjYtMjguNSw1NmwxMTMuMywzNDguNiAgIGM3LjYsMjMuMywzMi42LDM2LjEsNTYsMjguNWwwLjUtMC4yQzI2MS45LDQ5NC4xLDI3NC42LDQ2OSwyNjcsNDQ1Ljd6Ii8+PHJlY3QgY2xhc3M9InN0MTkiIGhlaWdodD0iODkuNCIgdHJhbnNmb3JtPSJtYXRyaXgoLTAuOTUxIDAuMzA5MSAtMC4zMDkxIC0wLjk1MSAzMzEuOTg5NiAzNDAuMjQ1KSIgd2lkdGg9Ijg5LjQiIHg9Ijk0LjQiIHk9IjE1MS43Ii8+PHJlY3QgY2xhc3M9InN0MjAiIGhlaWdodD0iODguOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC45NTEgLTAuMzA5MSAwLjMwOTEgMC45NTEgLTEwNS43NDk4IDc5LjAzMDEpIiB3aWR0aD0iODkuNCIgeD0iMTUxLjgiIHk9IjMyOC44Ii8+PHJlY3QgY2xhc3M9InN0MjEiIGhlaWdodD0iODguOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC45NTEgLTAuMzA5MSAwLjMwOTEgMC45NTEgLTc5LjMyNSAxMzAuODY4OSkiIHdpZHRoPSI4OC44IiB4PSIzMjguOSIgeT0iMjcxLjMiLz48L2c+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Slack" + camel.apache.org/kamelet.namespace: "Social" labels: camel.apache.org/kamelet.type: "source" spec: @@ -21,30 +39,38 @@ spec: properties: channel: title: Channel - description: The Slack channel to receive messages from + description: The Slack channel to receive messages from. type: string example: "#myroom" token: title: Token - description: The token to access Slack. A Slack app is needed. This app needs to have channels:history and channels:read permissions. The Bot User OAuth Access Token is the kind of token needed. + description: "The Bot User OAuth Access Token to access Slack. A Slack app that has the following permissions is required: `channels:history`, `groups:history`, `im:history`, `mpim:history`, `channels:read`, `groups:read`, `im:read`, and `mpim:read`." type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + delay: + title: Delay + description: The delay between polls. If no unit provided, miliseconds is the default. + type: string + default: "60000" + example: "60s or 6000 or 1m" types: out: mediaType: application/json dependencies: - - "camel:kamelet" + - "camel:gson" - "camel:slack" - - "camel:jackson" + - "camel:kamelet" template: from: uri: "slack:{{channel}}" parameters: token: "{{token}}" + delay: "{{delay}}" steps: - marshal: - json: {} + json: + library: "Gson" - to: "kamelet:sink" diff --git a/sqlserver-sink.kamelet.yaml b/kamelets/sqlserver-sink.kamelet.yaml similarity index 73% rename from sqlserver-sink.kamelet.yaml rename to kamelets/sqlserver-sink.kamelet.yaml index ed42c3a5c..599c0da3d 100644 --- a/sqlserver-sink.kamelet.yaml +++ b/kamelets/sqlserver-sink.kamelet.yaml @@ -1,13 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: sqlserver-sink annotations: - camel.apache.org/kamelet.support.level: "Preview" - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-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: "Red Hat" camel.apache.org/kamelet.group: "SQL" + camel.apache.org/kamelet.namespace: "Database" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -16,11 +33,15 @@ spec: description: |- Send data to a Microsoft SQL Server 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: + In your KameletBinding file, you must explicitly declare the SQL Server driver dependency in spec->integration->dependencies + + - "mvn:com.microsoft.sqlserver:mssql-jdbc:" + + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet needs to receive as input something like: + Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' required: @@ -33,21 +54,23 @@ spec: properties: serverName: title: Server Name - description: Server Name for the data source + description: The server name for the data source. type: string example: localhost serverPort: title: Server Port - description: Server Port for the data source + description: The server port for the data source. type: string default: 1433 username: title: Username - description: The username to use for accessing a secured SQL Server Database + description: The username to access a secured SQL Server Database. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured SQL Server Database + description: The password to access a secured SQL Server Database. type: string format: password x-descriptors: @@ -55,13 +78,27 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the SQL Server Database + 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 + description: The name of the SQL Server Database. type: string + encrypt: + title: Encrypt Connection + description: Encrypt the connection to SQL Server. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + trustServerCertificate: + title: Trust Server Certificate + description: Trust Server Certificate + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true types: in: mediaType: application/json @@ -69,21 +106,16 @@ spec: - "camel:jackson" - "camel:kamelet" - "camel:sql" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" - - "mvn:com.microsoft.sqlserver:mssql-jdbc:9.2.1.jre11" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" template: 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}}:{{serverPort}};databaseName={{databaseName}}' - - key: driverClassName - value: 'com.microsoft.sqlserver.jdbc.SQLServerDriver' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:sqlserver://{{serverName}}:{{serverPort}};databaseName={{databaseName}};encrypt={{encrypt}};trustServerCertificate={{trustServerCertificate}};' + driverClassName: 'com.microsoft.sqlserver.jdbc.SQLServerDriver' from: uri: "kamelet:source" steps: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml b/kamelets/telegram-source.kamelet.yaml similarity index 62% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml rename to kamelets/telegram-source.kamelet.yaml index 94e13065f..f7750bb3e 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml +++ b/kamelets/telegram-source.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: telegram-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIuNjY3IiB4Mj0iLjQxNyIgeTE9Ii4xNjciIHkyPSIuNzUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzM3YWVlMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFlOTZjOCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iLjY2IiB4Mj0iLjg1MSIgeTE9Ii40MzciIHkyPSIuODAyIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNlZmY3ZmMiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjEyMCIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGZpbGw9IiNjOGRhZWEiIGQ9Ik05OCAxNzVjLTMuODg4IDAtMy4yMjctMS40NjgtNC41NjgtNS4xN0w4MiAxMzIuMjA3IDE3MCA4MCIvPjxwYXRoIGZpbGw9IiNhOWM5ZGQiIGQ9Ik05OCAxNzVjMyAwIDQuMzI1LTEuMzcyIDYtM2wxNi0xNS41NTgtMTkuOTU4LTEyLjAzNSIvPjxwYXRoIGZpbGw9InVybCgjYikiIGQ9Ik0xMDAuMDQgMTQ0LjQxbDQ4LjM2IDM1LjcyOWM1LjUxOSAzLjA0NSA5LjUwMSAxLjQ2OCAxMC44NzYtNS4xMjNsMTkuNjg1LTkyLjc2M2MyLjAxNS04LjA4LTMuMDgtMTEuNzQ2LTguMzYtOS4zNDlsLTExNS41OSA0NC41NzFjLTcuODkgMy4xNjUtNy44NDMgNy41NjctMS40MzggOS41MjhsMjkuNjYzIDkuMjU5IDY4LjY3My00My4zMjVjMy4yNDItMS45NjYgNi4yMTgtLjkxIDMuNzc2IDEuMjU4Ii8+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Telegram" + camel.apache.org/kamelet.namespace: "Social" labels: camel.apache.org/kamelet.type: "source" spec: @@ -15,11 +33,11 @@ spec: description: |- Receive all messages that people send to your Telegram bot. - To create a bot, contact the @botfather account using the Telegram app. + To create a bot, contact the @botfather account by using the Telegram app. - The source attaches the following headers to the messages: + The source attaches the following header to the messages: - - `chat-id` / `ce-chatid`: the ID of the chat where the message comes from + - `chat-id` / `ce-chatid`: The ID of the chat where the message comes from. required: - authorizationToken @@ -27,7 +45,7 @@ spec: properties: authorizationToken: title: Token - description: The token to access your bot on Telegram. You you can obtain it from the Telegram @botfather. + description: "The token to access your bot on Telegram. You can obtain it from the Telegram @botfather." type: string format: password x-descriptors: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml b/kamelets/timer-source.kamelet.yaml similarity index 89% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml rename to kamelets/timer-source.kamelet.yaml index e6dbb9ec4..cdd8fe2de 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml +++ b/kamelets/timer-source.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -15,38 +15,41 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: timer-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPG1ldGFkYXRhPiBTdmcgVmVjdG9yIEljb25zIDogaHR0cDovL3d3dy5vbmxpbmV3ZWJmb250cy5jb20vaWNvbiA8L21ldGFkYXRhPg0KPGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsNTExLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSI+PHBhdGggZD0iTTM4ODguMSw0Nzc0Ljl2LTIzNS4xaDQxMS40aDQxNC4zbC04LjgtMzI5LjFsLTguOC0zMzJsLTExNy41LTguOGMtMjI5LjItMTQuNy02MjAtOTkuOS05MjUuNi0xOTYuOUMyMjU3LjQsMzIyMC42LDExNjcuMiwyMDY1LjgsODAyLjksNjQ5LjZjLTUxMS4zLTE5ODYuMywzODQuOS00MDAyLDIyMDYuNy00OTY1LjhjMzAyLjYtMTYxLjYsNzU4LjEtMzIwLjIsMTE1NC44LTQwNS41YzQyNi4xLTkxLjEsMTI1MS43LTkxLjEsMTY4MC43LDBjMTc2OC45LDM4MiwzMDQ0LjEsMTY1Ny4yLDM0MjYuMSwzNDI2LjFjOTEuMSw0MjYuMSw5MS4xLDEyNTQuNiwwLDE2NzcuOGMtNDIwLjIsMTk0Mi4yLTE5MzYuNCwzMzAyLjYtMzg5MC4zLDM0OTYuNmwtMTk5LjgsMjAuNnYzMjAuM3YzMjAuM2g0MTEuNGg0MTEuNHYyMzUuMVY1MDEwSDQ5NDUuOUgzODg4LjFWNDc3NC45eiBNNTc1My45LDMzNDkuOWM3NzguNy0xNjEuNiwxNDE5LjItNTA4LjMsMTk4My40LTEwNzIuNWM1NjQuMi01NjEuMiw4ODcuNC0xMTU3LjcsMTA2MC43LTE5NDIuMmM5OS45LTQzNy44LDk5LjktMTE0MywzLTE1ODAuOEM4NTYzLTIzMDYuNCw3OTY2LjUtMzE1OC41LDcwNDMuOS0zNzUyYy0zMzUtMjE0LjUtNzg3LjUtMzk2LjctMTI0OC44LTQ5OS41Yy00MzcuOC05Ny0xMTQzLTk3LTE1ODAuOCwyLjljLTc4NC41LDE3My4zLTEzODEsNDk2LjYtMTk0Mi4yLDEwNjAuN2MtNTcwLDU2Ny4xLTkwNy45LDExOTguOC0xMDc4LjQsMTk5OC4xYy03My41LDM0Ni43LTczLjUsMTEyMi40LDAsMTQ2OS4yYzE3MC40LDc5OS4yLDUwOC4zLDE0MzEsMTA3OC40LDE5OThDMjg5NSwyOTAwLjMsMzYzOC40LDMyNzMuNSw0NDkzLjQsMzM5MUM0Nzc4LjQsMzQzMi4xLDU0NzQuOCwzNDA4LjYsNTc1My45LDMzNDkuOXoiLz48cGF0aCBkPSJNNDcxMC44LDEzNzUuM1YyMDUuOUw0NTUyLjIsNjcuOGMtMzE3LjMtMjc5LjEtMzQwLjgtNjc4LjctNTUuOC05OTMuMWMyODcuOS0zMjAuMyw2OTMuNC0zMTcuMywxMDEzLjcsNS45bDE3MC40LDE3MC40aDEwNDMuMWgxMDQzLjFWLTUxNFYtMjc5SDY3MjkuNUg1NjkyLjJsLTQ5LjksMTE0LjZjLTU4LjgsMTMyLjItMjUyLjcsMzE3LjMtMzc2LjEsMzYxLjRsLTg1LjIsMjkuNHYxMTU3Ljd2MTE1Ny43aC0yMzUuMWgtMjM1LjFWMTM3NS4zeiBNNTE2Ni4zLTI5My42YzE0Ni45LTE0NCw0NC4xLTM5Ni43LTE2MS42LTM5Ni43Yy01NS44LDAtMTE3LjUsMjYuNC0xNjEuNiw3My40Yy00Nyw0NC4xLTczLjUsMTA1LjgtNzMuNSwxNjEuNnMyNi40LDExNy41LDczLjUsMTYxLjZjNDQuMSw0NywxMDUuOCw3My41LDE2MS42LDczLjVDNTA2MC41LTIyMC4yLDUxMjIuMi0yNDYuNyw1MTY2LjMtMjkzLjZ6Ii8+PC9nPjwvZz4NCjwvc3ZnPg== camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Timer" + camel.apache.org/kamelet.namespace: "Scheduling" labels: camel.apache.org/kamelet.type: source + camel.apache.org/kamelet.verified: "true" spec: definition: title: Timer Source - description: Produces periodic events with a custom payload. + description: Produces periodic messages with a custom payload. required: - message type: object properties: period: title: Period - description: The interval between two events in milliseconds + description: "The interval (in milliseconds) to wait between producing the next message." type: integer default: 1000 message: title: Message - description: The message to generate + description: The message to generate. type: string example: hello world contentType: title: Content Type - description: The content type of the message being generated + description: The content type of the generated message. type: string default: text/plain repeatCount: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml b/kamelets/timestamp-router-action.kamelet.yaml similarity index 81% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml rename to kamelets/timestamp-router-action.kamelet.yaml index 2e256c505..323345397 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml +++ b/kamelets/timestamp-router-action.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: timestamp-router-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Timestamp Router Action" @@ -31,7 +49,7 @@ spec: default: "kafka.TIMESTAMP" type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:kamelet" - "camel:core" template: diff --git a/kamelets/topic-name-matches-filter-action.kamelet.yaml b/kamelets/topic-name-matches-filter-action.kamelet.yaml new file mode 100644 index 000000000..845472824 --- /dev/null +++ b/kamelets/topic-name-matches-filter-action.kamelet.yaml @@ -0,0 +1,52 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: topic-name-matches-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" +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" + template: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[kafka.TOPIC]} !regex '{{regex}}'" + steps: + - stop: {} diff --git a/kamelets/twitter-directmessage-source.kamelet.yaml b/kamelets/twitter-directmessage-source.kamelet.yaml new file mode 100644 index 000000000..b890e18a1 --- /dev/null +++ b/kamelets/twitter-directmessage-source.kamelet.yaml @@ -0,0 +1,101 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: twitter-directmessage-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMjI1LjgzNDE1NiwzMy43MjAyMzMzIEMyMzYuNjc4NTAzLDI3LjIxOTgwNTMgMjQ1LjAwNTgzLDE2LjkyNjk5MjkgMjQ4LjkyNzQzNyw0LjY2MzA3Njg1IEMyMzguNzc5NzY1LDEwLjY4MTI2MzMgMjI3LjUzOTMyNSwxNS4wNTIzMzc2IDIxNS41NzU5OSwxNy40MDgyOTggQzIwNS45OTQ4MzUsNy4yMDA2OTcxIDE5Mi4zNDUwNiwwLjgyMiAxNzcuMjM5MTk3LDAuODIyIEMxNDguMjMyNjA1LDAuODIyIDEyNC43MTYwNzYsMjQuMzM3NTkzMSAxMjQuNzE2MDc2LDUzLjM0MjMxMTYgQzEyNC43MTYwNzYsNTcuNDU4Njg3NSAxMjUuMTgxNDYyLDYxLjQ2NzM3ODQgMTI2LjA3NjY1Miw2NS4zMTEyNjQ0IEM4Mi40MjU4Mzg1LDYzLjEyMTA0NTMgNDMuNzI1NzI1Miw0Mi4yMTE0MjkgMTcuODIxMzk4LDEwLjQzNTkyODggQzEzLjMwMDUwMTEsMTguMTkyOTkzOCAxMC43MTA0NDMsMjcuMjE1MTIzNCAxMC43MTA0NDMsMzYuODQwMjg4OSBDMTAuNzEwNDQzLDU1LjA2MTUyNiAxOS45ODM1MjU0LDcxLjEzNzQ5MDcgMzQuMDc2MjEzNSw4MC41NTU3MTM3IEMyNS40NjYwOTYxLDgwLjI4MzIyMzkgMTcuMzY4MTg0Niw3Ny45MjA3MDg4IDEwLjI4NjI1NzcsNzMuOTg2OTI5MiBDMTAuMjgyNTEyMiw3NC4yMDYwNDQ4IDEwLjI4MjUxMjIsNzQuNDI2MDk2NyAxMC4yODI1MTIyLDc0LjY0NzA4NSBDMTAuMjgyNTEyMiwxMDAuMDk0NDUzIDI4LjM4NjcwMDMsMTIxLjMyMjQ0MyA1Mi40MTM1NjMsMTI2LjE0NjczIEM0OC4wMDU5Njk1LDEyNy4zNDcxODQgNDMuMzY2MTUwOSwxMjcuOTg4NjEyIDM4LjU3NTU3MzQsMTI3Ljk4ODYxMiBDMzUuMTkxNDU1NCwxMjcuOTg4NjEyIDMxLjkwMDk3NjYsMTI3LjY1OTkzOCAyOC42OTQ3NzMsMTI3LjA0NjYwMiBDMzUuMzc3Nzk3MywxNDcuOTEzMTQ1IDU0Ljc3NDIwNTMsMTYzLjA5NzY2NSA3Ny43NTY5OTE4LDE2My41MjE4NSBDNTkuNzgyMDI1NywxNzcuNjA3OTgzIDM3LjEzNTQwMzYsMTg2LjAwNDYwNCAxMi41Mjg5MTQ3LDE4Ni4wMDQ2MDQgQzguMjg5ODcxNjEsMTg2LjAwNDYwNCA0LjEwODg4NDc0LDE4NS43NTY0NiAwLDE4NS4yNzE0MDkgQzIzLjI0MzEwMzMsMjAwLjE3MzEzOSA1MC44NTA3MjYxLDIwOC44Njc1MzIgODAuNTEwOTE4NSwyMDguODY3NTMyIEMxNzcuMTE2NTI5LDIwOC44Njc1MzIgMjI5Ljk0Mzk3NywxMjguODM2OTgyIDIyOS45NDM5NzcsNTkuNDMyNjAwMiBDMjI5Ljk0Mzk3Nyw1Ny4xNTUyOTY4IDIyOS44OTM0MTIsNTQuODkwMTY2NCAyMjkuNzkyMjgyLDUyLjYzODE0NTQgQzI0MC4wNTMyNTcsNDUuMjMzMTYzNSAyNDguOTU4MzM4LDM1Ljk4MjU1NDUgMjU2LDI1LjQ1MDAyNTkiIGZpbGw9IiM1NWFjZWUiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Twitter" + camel.apache.org/kamelet.namespace: "Social" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Twitter Direct Message Source" + description: |- + Allows to get all direct messages for your Twitter account. + + It requires tokens that can be obtained by creating an application + in the Twitter developer portal: https://developer.twitter.com/. + required: + - user + - apiKey + - apiKeySecret + - accessToken + - accessTokenSecret + type: object + properties: + user: + title: User + description: The user we want to read the direct messages + type: string + example: "ApacheCamel" + apiKey: + title: API Key + description: The API Key from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + apiKeySecret: + title: API Key Secret + description: The API Key Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessToken: + title: Access Token + description: The Access Token from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessTokenSecret: + title: Access Token Secret + description: The Access Token Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + types: + out: + mediaType: application/json + dependencies: + - "camel:jackson" + - "camel:twitter" + - "camel:kamelet" + template: + from: + uri: "twitter-directmessage:{{user}}" + parameters: + accessToken: "{{accessToken}}" + accessTokenSecret: "{{accessTokenSecret}}" + consumerKey: "{{apiKey}}" + consumerSecret: "{{apiKeySecret}}" + steps: + - marshal: + json: {} + - to: "kamelet:sink" diff --git a/kamelets/twitter-search-source.kamelet.yaml b/kamelets/twitter-search-source.kamelet.yaml new file mode 100644 index 000000000..70c7afd34 --- /dev/null +++ b/kamelets/twitter-search-source.kamelet.yaml @@ -0,0 +1,101 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: twitter-search-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMjI1LjgzNDE1NiwzMy43MjAyMzMzIEMyMzYuNjc4NTAzLDI3LjIxOTgwNTMgMjQ1LjAwNTgzLDE2LjkyNjk5MjkgMjQ4LjkyNzQzNyw0LjY2MzA3Njg1IEMyMzguNzc5NzY1LDEwLjY4MTI2MzMgMjI3LjUzOTMyNSwxNS4wNTIzMzc2IDIxNS41NzU5OSwxNy40MDgyOTggQzIwNS45OTQ4MzUsNy4yMDA2OTcxIDE5Mi4zNDUwNiwwLjgyMiAxNzcuMjM5MTk3LDAuODIyIEMxNDguMjMyNjA1LDAuODIyIDEyNC43MTYwNzYsMjQuMzM3NTkzMSAxMjQuNzE2MDc2LDUzLjM0MjMxMTYgQzEyNC43MTYwNzYsNTcuNDU4Njg3NSAxMjUuMTgxNDYyLDYxLjQ2NzM3ODQgMTI2LjA3NjY1Miw2NS4zMTEyNjQ0IEM4Mi40MjU4Mzg1LDYzLjEyMTA0NTMgNDMuNzI1NzI1Miw0Mi4yMTE0MjkgMTcuODIxMzk4LDEwLjQzNTkyODggQzEzLjMwMDUwMTEsMTguMTkyOTkzOCAxMC43MTA0NDMsMjcuMjE1MTIzNCAxMC43MTA0NDMsMzYuODQwMjg4OSBDMTAuNzEwNDQzLDU1LjA2MTUyNiAxOS45ODM1MjU0LDcxLjEzNzQ5MDcgMzQuMDc2MjEzNSw4MC41NTU3MTM3IEMyNS40NjYwOTYxLDgwLjI4MzIyMzkgMTcuMzY4MTg0Niw3Ny45MjA3MDg4IDEwLjI4NjI1NzcsNzMuOTg2OTI5MiBDMTAuMjgyNTEyMiw3NC4yMDYwNDQ4IDEwLjI4MjUxMjIsNzQuNDI2MDk2NyAxMC4yODI1MTIyLDc0LjY0NzA4NSBDMTAuMjgyNTEyMiwxMDAuMDk0NDUzIDI4LjM4NjcwMDMsMTIxLjMyMjQ0MyA1Mi40MTM1NjMsMTI2LjE0NjczIEM0OC4wMDU5Njk1LDEyNy4zNDcxODQgNDMuMzY2MTUwOSwxMjcuOTg4NjEyIDM4LjU3NTU3MzQsMTI3Ljk4ODYxMiBDMzUuMTkxNDU1NCwxMjcuOTg4NjEyIDMxLjkwMDk3NjYsMTI3LjY1OTkzOCAyOC42OTQ3NzMsMTI3LjA0NjYwMiBDMzUuMzc3Nzk3MywxNDcuOTEzMTQ1IDU0Ljc3NDIwNTMsMTYzLjA5NzY2NSA3Ny43NTY5OTE4LDE2My41MjE4NSBDNTkuNzgyMDI1NywxNzcuNjA3OTgzIDM3LjEzNTQwMzYsMTg2LjAwNDYwNCAxMi41Mjg5MTQ3LDE4Ni4wMDQ2MDQgQzguMjg5ODcxNjEsMTg2LjAwNDYwNCA0LjEwODg4NDc0LDE4NS43NTY0NiAwLDE4NS4yNzE0MDkgQzIzLjI0MzEwMzMsMjAwLjE3MzEzOSA1MC44NTA3MjYxLDIwOC44Njc1MzIgODAuNTEwOTE4NSwyMDguODY3NTMyIEMxNzcuMTE2NTI5LDIwOC44Njc1MzIgMjI5Ljk0Mzk3NywxMjguODM2OTgyIDIyOS45NDM5NzcsNTkuNDMyNjAwMiBDMjI5Ljk0Mzk3Nyw1Ny4xNTUyOTY4IDIyOS44OTM0MTIsNTQuODkwMTY2NCAyMjkuNzkyMjgyLDUyLjYzODE0NTQgQzI0MC4wNTMyNTcsNDUuMjMzMTYzNSAyNDguOTU4MzM4LDM1Ljk4MjU1NDUgMjU2LDI1LjQ1MDAyNTkiIGZpbGw9IiM1NWFjZWUiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Twitter" + camel.apache.org/kamelet.namespace: "Social" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Twitter Search Source" + description: |- + Allows to get all tweets on particular keywords from Twitter. + + It requires tokens that can be obtained by creating an application + in the Twitter developer portal: https://developer.twitter.com/. + required: + - keywords + - apiKey + - apiKeySecret + - accessToken + - accessTokenSecret + type: object + properties: + keywords: + title: Keywords + description: The keywords to use in the Twitter search (Supports Twitter standard operators) + type: string + example: "Apache Camel" + apiKey: + title: API Key + description: The API Key from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + apiKeySecret: + title: API Key Secret + description: The API Key Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessToken: + title: Access Token + description: The Access Token from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessTokenSecret: + title: Access Token Secret + description: The Access Token Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + types: + out: + mediaType: application/json + dependencies: + - "camel:jackson" + - "camel:twitter" + - "camel:kamelet" + template: + from: + uri: "twitter-search:{{keywords}}" + parameters: + accessToken: "{{accessToken}}" + accessTokenSecret: "{{accessTokenSecret}}" + consumerKey: "{{apiKey}}" + consumerSecret: "{{apiKeySecret}}" + steps: + - marshal: + json: {} + - to: "kamelet:sink" diff --git a/kamelets/twitter-timeline-source.kamelet.yaml b/kamelets/twitter-timeline-source.kamelet.yaml new file mode 100644 index 000000000..8d4ec4226 --- /dev/null +++ b/kamelets/twitter-timeline-source.kamelet.yaml @@ -0,0 +1,102 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: twitter-timeline-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMjI1LjgzNDE1NiwzMy43MjAyMzMzIEMyMzYuNjc4NTAzLDI3LjIxOTgwNTMgMjQ1LjAwNTgzLDE2LjkyNjk5MjkgMjQ4LjkyNzQzNyw0LjY2MzA3Njg1IEMyMzguNzc5NzY1LDEwLjY4MTI2MzMgMjI3LjUzOTMyNSwxNS4wNTIzMzc2IDIxNS41NzU5OSwxNy40MDgyOTggQzIwNS45OTQ4MzUsNy4yMDA2OTcxIDE5Mi4zNDUwNiwwLjgyMiAxNzcuMjM5MTk3LDAuODIyIEMxNDguMjMyNjA1LDAuODIyIDEyNC43MTYwNzYsMjQuMzM3NTkzMSAxMjQuNzE2MDc2LDUzLjM0MjMxMTYgQzEyNC43MTYwNzYsNTcuNDU4Njg3NSAxMjUuMTgxNDYyLDYxLjQ2NzM3ODQgMTI2LjA3NjY1Miw2NS4zMTEyNjQ0IEM4Mi40MjU4Mzg1LDYzLjEyMTA0NTMgNDMuNzI1NzI1Miw0Mi4yMTE0MjkgMTcuODIxMzk4LDEwLjQzNTkyODggQzEzLjMwMDUwMTEsMTguMTkyOTkzOCAxMC43MTA0NDMsMjcuMjE1MTIzNCAxMC43MTA0NDMsMzYuODQwMjg4OSBDMTAuNzEwNDQzLDU1LjA2MTUyNiAxOS45ODM1MjU0LDcxLjEzNzQ5MDcgMzQuMDc2MjEzNSw4MC41NTU3MTM3IEMyNS40NjYwOTYxLDgwLjI4MzIyMzkgMTcuMzY4MTg0Niw3Ny45MjA3MDg4IDEwLjI4NjI1NzcsNzMuOTg2OTI5MiBDMTAuMjgyNTEyMiw3NC4yMDYwNDQ4IDEwLjI4MjUxMjIsNzQuNDI2MDk2NyAxMC4yODI1MTIyLDc0LjY0NzA4NSBDMTAuMjgyNTEyMiwxMDAuMDk0NDUzIDI4LjM4NjcwMDMsMTIxLjMyMjQ0MyA1Mi40MTM1NjMsMTI2LjE0NjczIEM0OC4wMDU5Njk1LDEyNy4zNDcxODQgNDMuMzY2MTUwOSwxMjcuOTg4NjEyIDM4LjU3NTU3MzQsMTI3Ljk4ODYxMiBDMzUuMTkxNDU1NCwxMjcuOTg4NjEyIDMxLjkwMDk3NjYsMTI3LjY1OTkzOCAyOC42OTQ3NzMsMTI3LjA0NjYwMiBDMzUuMzc3Nzk3MywxNDcuOTEzMTQ1IDU0Ljc3NDIwNTMsMTYzLjA5NzY2NSA3Ny43NTY5OTE4LDE2My41MjE4NSBDNTkuNzgyMDI1NywxNzcuNjA3OTgzIDM3LjEzNTQwMzYsMTg2LjAwNDYwNCAxMi41Mjg5MTQ3LDE4Ni4wMDQ2MDQgQzguMjg5ODcxNjEsMTg2LjAwNDYwNCA0LjEwODg4NDc0LDE4NS43NTY0NiAwLDE4NS4yNzE0MDkgQzIzLjI0MzEwMzMsMjAwLjE3MzEzOSA1MC44NTA3MjYxLDIwOC44Njc1MzIgODAuNTEwOTE4NSwyMDguODY3NTMyIEMxNzcuMTE2NTI5LDIwOC44Njc1MzIgMjI5Ljk0Mzk3NywxMjguODM2OTgyIDIyOS45NDM5NzcsNTkuNDMyNjAwMiBDMjI5Ljk0Mzk3Nyw1Ny4xNTUyOTY4IDIyOS44OTM0MTIsNTQuODkwMTY2NCAyMjkuNzkyMjgyLDUyLjYzODE0NTQgQzI0MC4wNTMyNTcsNDUuMjMzMTYzNSAyNDguOTU4MzM4LDM1Ljk4MjU1NDUgMjU2LDI1LjQ1MDAyNTkiIGZpbGw9IiM1NWFjZWUiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Twitter" + camel.apache.org/kamelet.namespace: "Social" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Twitter Timeline Source" + description: |- + Allows to get tweets from the timeline of a specific user from Twitter. + + It requires tokens that can be obtained by creating an application + in the Twitter developer portal: https://developer.twitter.com/. + required: + - user + - apiKey + - apiKeySecret + - accessToken + - accessTokenSecret + type: object + properties: + user: + title: User + description: The user we want to read the timeline + type: string + example: "ApacheCamel" + apiKey: + title: API Key + description: The API Key from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + apiKeySecret: + title: API Key Secret + description: The API Key Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessToken: + title: Access Token + description: The Access Token from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessTokenSecret: + title: Access Token Secret + description: The Access Token Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + types: + out: + mediaType: application/json + dependencies: + - "camel:jackson" + - "camel:twitter" + - "camel:kamelet" + template: + from: + uri: "twitter-timeline:user" + parameters: + user: "{{user}}" + accessToken: "{{accessToken}}" + accessTokenSecret: "{{accessTokenSecret}}" + consumerKey: "{{apiKey}}" + consumerSecret: "{{apiKeySecret}}" + steps: + - marshal: + json: {} + - to: "kamelet:sink" diff --git a/value-to-key-action.kamelet.yaml b/kamelets/value-to-key-action.kamelet.yaml similarity index 80% rename from value-to-key-action.kamelet.yaml rename to kamelets/value-to-key-action.kamelet.yaml index af5f49262..9fcfa87ff 100644 --- a/value-to-key-action.kamelet.yaml +++ b/kamelets/value-to-key-action.kamelet.yaml @@ -1,18 +1,36 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: value-to-key-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Value to Key Action" - description: "Replace the Kafka record key with a new key formed from a subset of fields in the body" + description: "Replace the Kafka record key with a new key formed from a fields subset coming from the message body" required: - fields properties: @@ -22,7 +40,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:core" - "camel:jackson" - "camel:kamelet" @@ -38,7 +56,7 @@ spec: name: deserialized constant: "true" - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -50,7 +68,7 @@ spec: - simple: "${exchangeProperty[deserialized]} == 'true'" steps: - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/library/camel-kamelets-bom/pom.xml b/library/camel-kamelets-bom/pom.xml index 490066a21..139c996da 100644 --- a/library/camel-kamelets-bom/pom.xml +++ b/library/camel-kamelets-bom/pom.xml @@ -23,7 +23,7 @@ org.apache.camel.kamelets camel-kamelets-parent - 2.2.0 + 2.2.0-SNAPSHOT ../../pom.xml @@ -33,7 +33,7 @@ Camel Kamelets BOM Camel Kamelets BOM - + diff --git a/library/camel-kamelets-catalog/pom.xml b/library/camel-kamelets-catalog/pom.xml index 2080fe6c2..308711a7c 100644 --- a/library/camel-kamelets-catalog/pom.xml +++ b/library/camel-kamelets-catalog/pom.xml @@ -24,7 +24,7 @@ org.apache.camel.kamelets camel-kamelets-parent - 2.2.0 + 2.2.0-SNAPSHOT ../../pom.xml @@ -35,94 +35,73 @@ Camel Kamelets Catalog - + + org.apache.camel.kamelets + camel-kamelets + ${project.version} + com.fasterxml.jackson.dataformat jackson-dataformat-yaml - ${jackson.version} + ${jackson2-version} - io.fabric8 - camel-k-model-v1alpha1 - ${camel.k.extension.version} + org.apache.camel.k + camel-k-crds + ${camel.k.crd.version} com.fasterxml.jackson.datatype jackson-datatype-jsr310 - ${jackson.version} + ${jackson2-version} + + + io.github.classgraph + classgraph + ${classgraph-version} - commons-io - commons-io - ${commons.io.version} + org.apache.camel + camel-tooling-model + ${camel.version} + + + org.apache.camel + camel-catalog + ${camel.version} org.apache.logging.log4j log4j-api - ${log4j.version} + ${log4j2-version} + test org.apache.logging.log4j log4j-core - ${log4j.version} + ${log4j2-version} + test org.apache.logging.log4j - log4j-slf4j-impl - ${log4j.version} + log4j-slf4j2-impl + ${log4j2-version} + test org.junit.jupiter junit-jupiter-api test - ${junit.jupiter.version} + ${junit-jupiter-version} org.junit.jupiter junit-jupiter-engine test - ${junit.jupiter.version} - - - io.github.classgraph - classgraph - ${classgraph.version} + ${junit-jupiter-version} - - - - - - - maven-resources-plugin - 3.1.0 - - - copy-resource-one - validate - - copy-resources - - - - true - ${project.basedir}/src/main/resources/kamelets - - - ./../../ - - *.kamelet.yaml - - - - - - - - - diff --git a/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java index b14bd8fd3..6adbb37aa 100644 --- a/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java +++ b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/KameletsCatalog.java @@ -18,6 +18,7 @@ import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; @@ -29,13 +30,19 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import io.fabric8.camelk.v1alpha1.Kamelet; -import io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaProps; import io.github.classgraph.ClassGraph; import io.github.classgraph.Resource; import io.github.classgraph.ScanResult; +import org.apache.camel.catalog.DefaultCamelCatalog; import org.apache.camel.kamelets.catalog.model.KameletAnnotationsNames; import org.apache.camel.kamelets.catalog.model.KameletLabelNames; +import org.apache.camel.kamelets.catalog.model.KameletPrefixSchemeEnum; +import org.apache.camel.kamelets.catalog.model.KameletTypeEnum; +import org.apache.camel.tooling.model.ComponentModel; +import org.apache.camel.util.ObjectHelper; +import org.apache.camel.v1.Kamelet; +import org.apache.camel.v1.kameletspec.Definition; +import org.apache.camel.v1.kameletspec.Template; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,6 +55,7 @@ public class KameletsCatalog { private final Map kameletModels; private final List kameletNames; + private final DefaultCamelCatalog cc = new DefaultCamelCatalog(); public KameletsCatalog() { kameletModels = initCatalog(); @@ -65,9 +73,9 @@ private static Map initCatalog() { Kamelet kamelet = MAPPER.readValue(is, Kamelet.class); LOG.debug("Loading kamelet from: {}, path: {}, name: {}", - resource.getClasspathElementFile(), - resource.getPath(), - name); + resource.getClasspathElementFile(), + resource.getPath(), + name); kameletModels.put(name, kamelet); } catch (IOException e) { @@ -112,18 +120,29 @@ public List getKameletsByType(String type) { return collect; } + public List getKameletsByNamespace(String namespace) { + List collect = kameletModels.entrySet().stream() + .peek(x -> LOG.info("getKameletsByNamespace - kamelet: " + x.getKey())) + .filter(x -> x.getValue().getMetadata().getAnnotations().containsKey(KameletAnnotationsNames.KAMELET_ANNOTATION_NAMESPACE)) + .filter(x -> x.getValue().getMetadata().getAnnotations().get(KameletAnnotationsNames.KAMELET_ANNOTATION_NAMESPACE).contains(namespace)) + .map(Map.Entry::getValue) + .collect(Collectors.toList()); + return collect; + } + public List getKameletsByGroups(String group) { List collect = kameletModels.entrySet().stream() + .filter(x -> x.getValue().getMetadata().getAnnotations().containsKey(KameletAnnotationsNames.KAMELET_ANNOTATION_GROUP)) .filter(x -> x.getValue().getMetadata().getAnnotations().get(KameletAnnotationsNames.KAMELET_ANNOTATION_GROUP).contains(group)) .map(Map.Entry::getValue) .collect(Collectors.toList()); return collect; } - public JSONSchemaProps getKameletDefinition(String name) { + public Definition getKameletDefinition(String name) { Kamelet kamelet = kameletModels.get(name); if (kamelet != null) { - return kamelet.getSpec().getDefinition(); + return kamelet.getSpec().getDefinition(); } else { return null; } @@ -131,6 +150,7 @@ public JSONSchemaProps getKameletDefinition(String name) { public List getKameletByProvider(String provider) { List collect = kameletModels.entrySet().stream() + .filter(x -> x.getValue().getMetadata().getAnnotations().containsKey(KameletAnnotationsNames.KAMELET_ANNOTATION_PROVIDER)) .filter(x -> x.getValue().getMetadata().getAnnotations().get(KameletAnnotationsNames.KAMELET_ANNOTATION_PROVIDER).equalsIgnoreCase(provider)) .map(Map.Entry::getValue) .collect(Collectors.toList()); @@ -161,19 +181,19 @@ public List getKameletDependencies(String name) { public void getAllKameletDependencies() { Map treeMap = new TreeMap<>(kameletModels); - for (Map.Entry entry: treeMap.entrySet()) { + for (Map.Entry entry : treeMap.entrySet()) { StringBuilder builder = new StringBuilder(); - for (String dep: entry.getValue().getSpec().getDependencies()) { + for (String dep : entry.getValue().getSpec().getDependencies()) { builder.append(dep + System.lineSeparator()); } - System.out.println(entry.getKey()); - System.out.println("---------------------------------------------------------------------------------------------------"); - System.out.println(builder.toString()); + LOG.debug(entry.getKey()); + LOG.debug("---------------------------------------------------------------------------------------------------"); + LOG.debug(builder.toString()); builder.append(System.lineSeparator()); } } - public Map getKameletTemplate(String name) { + public Template getKameletTemplate(String name) { Kamelet kamelet = kameletModels.get(name); if (kamelet != null) { return kamelet.getSpec().getTemplate(); @@ -181,4 +201,49 @@ public Map getKameletTemplate(String name) { return null; } } + + public List getKameletSupportedHeaders(String name) { + List resultingHeaders = new ArrayList<>(); + Kamelet local = kameletModels.get(name); + if (ObjectHelper.isNotEmpty(local)) { + String camelType = determineCamelType(local); + String kameletName = local.getMetadata().getName(); + int lastIndex = kameletName.lastIndexOf("-"); + String prefixName = local.getMetadata().getName().substring(0, lastIndex); + String schemeName = enumValue(prefixName); + if (schemeName != null) { + if (ObjectHelper.isNotEmpty(cc.componentModel(schemeName).getEndpointHeaders())) { + List headers = cc.componentModel(schemeName).getEndpointHeaders(); + for (ComponentModel.EndpointHeaderModel e : headers) { + if (ObjectHelper.isEmpty(e.getLabel()) || e.getLabel().equalsIgnoreCase(camelType)) { + resultingHeaders.add(e); + } + } + } + } + } + return resultingHeaders; + } + + public String getKameletScheme(String prefix) { + return enumValue(prefix); + } + + private String enumValue(String prefix) { + for (KameletPrefixSchemeEnum c : KameletPrefixSchemeEnum.values()) { + if (c.name.equals(prefix)) return c.scheme; + } + return null; + } + + private String determineCamelType(Kamelet local) { + String camelType; + String kameletType = local.getMetadata().getLabels().get(KameletLabelNames.KAMELET_LABEL_TYPE); + if (kameletType.equalsIgnoreCase(KameletTypeEnum.SINK.type())) { + camelType = "producer"; + } else { + camelType = "consumer"; + } + return camelType; + } } diff --git a/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletAnnotationsNames.java b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletAnnotationsNames.java index 8ace82d67..fda813032 100644 --- a/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletAnnotationsNames.java +++ b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletAnnotationsNames.java @@ -21,4 +21,5 @@ public interface KameletAnnotationsNames { String KAMELET_ANNOTATION_ICON = "camel.apache.org/kamelet.icon"; String KAMELET_ANNOTATION_PROVIDER = "camel.apache.org/provider"; String KAMELET_ANNOTATION_GROUP = "camel.apache.org/kamelet.group"; + String KAMELET_ANNOTATION_NAMESPACE = "camel.apache.org/kamelet.namespace"; } diff --git a/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletPrefixSchemeEnum.java b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletPrefixSchemeEnum.java new file mode 100644 index 000000000..863c83806 --- /dev/null +++ b/library/camel-kamelets-catalog/src/main/java/org/apache/camel/kamelets/catalog/model/KameletPrefixSchemeEnum.java @@ -0,0 +1,127 @@ +/* + * 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.catalog.model; + +public enum KameletPrefixSchemeEnum { + aws_cloudtrail("aws-cloudtrail","aws-cloudtrail"), + aws_cloudwatch("aws-cloudwatch","aws2-cw"), + aws_ddb("aws-ddb","aws2-ddb"), + aws_ddb_streams("aws-ddb","aws2-ddbstream"), + aws_ec2("aws-ec2","aws2-ec2"), + aws_eventbridge("aws-eventbridge","aws2-eventbridge"), + aws_lambda("aws-lambda","aws2-lambda"), + aws_redshift("aws-redshift","sql"), + aws_s3("aws-s3","aws2-s3"), + aws_secrets_manager("aws-secrets-manager","aws-secrets-manager"), + aws_ses("aws-ses","aws2-ses"), + aws_sns("aws-sns","aws2-sns"), + aws_sns_fifo("aws-sns-fifo","aws2-sns"), + aws_sqs("aws-sqs","aws2-sqs"), + aws_sqs_batch("aws-sqs-batch","aws2-sqs"), + aws_sqs_fifo("aws-sqs-fifo","aws2-sqs"), + azure_eventhubs("azure-eventhubs","azure-eventhubs"), + azure_functions("azure-functions","vertx-http"), + azure_servicebus("azure-servicebus","azure-servicebus"), + azure_storage_blob("azure-storage-blob","azure-storage-blob"), + azure_storage_blob_changefeed("azure-storage-blob-changefeed","azure-storage-blob"), + azure_storage_queue("azure-storage-queue","azure-storage-queue"), + beer("beer", "http"), + bitcoin("bitcoin", "xchange"), + cassandra("cassandra", "cql"), + ceph("ceph", "aws2-s3"), + chuck_norris("chuck-norris", "http"), + couchbase("couchbase", "couchbase"), + dropbox("dropbox", "dropbox"), + elasticsearch_rest_index("elasticsearch-index", "elasticsearch"), + elasticsearch_rest_search("elasticsearch-search", "elasticsearch"), + exec("exec", "exec"), + fhir("fhir", "fhir"), + file_watch("file-watch", "file-watch"), + ftp("ftp", "ftp"), + ftps("ftps", "ftps"), + github_commit("github-commit", "github"), + github_event("github-event", "github"), + github_pr_comments("github-pullrequest-comment", "github"), + github_pr("github-pullrequest", "github"), + github_tag("github-tag", "github"), + google_bigquery("google-bigquery", "google-bigquery"), + google_calendar("google-calendar", "google-calendar-stream"), + google_functions("google-functions", "google-functions"), + google_mail("google-mail", "google-mail-stream"), + google_pubsub("google-pubsub", "google-pubsub"), + google_sheets("google-sheets", "google-sheets-stream"), + google_storage("google-storage", "google-storage"), + http("http", "http"), + http_secured("http-secured", "http"), + infinispan("infinispan", "infinispan"), + jira_add_comment("jira-add-comment", "jira"), + jira_add_issue("jira-add-issue", "jira"), + jira_oauth("jira-oauth", "jira"), + jira("jira", "jira"), + jira_transition_issue("jira-transition-issue", "jira"), + jira_update_issue("jira-update-issue", "jira"), + jms_amqp_10("jms-amqp-10", "jms"), + jms_apache_artemis("jms-apache-artemis", "jms"), + jms_ibm_mq("jms-ibm-mq", "jms"), + kafka("kafka", "kafka"), + kafka_not_secured("kafka-not-secured", "kafka"), + kafka_ssl("kafka-ssl", "kafka"), + kubernetes_namespaces("kubernetes-namespaces", "kubernetes-namespaces"), + kubernetes_nodes("kubernetes-nodes", "kubernetes-nodes"), + kubernetes_pods("kubernetes-pods", "kubernetes-pods"), + log("log", "log"), + mail("mail", "imaps"), + mariadb("mariadb", "sql"), + minio("minio", "minio"), + mongodb_changes_stream("mongodb-changes-stream", "mongodb"), + mongodb("mongodb", "mongodb"), + mqtt("mqtt", "paho"), + mqtt5("mqtt5", "paho-mqtt5"), + mysql("mysql", "sql"), + nats("nats", "nats"), + oracle_database("oracle-database", "sql"), + postgresql("postgresql", "sql"), + pulsar("pulsar", "pulsar"), + redis("redis", "spring-redis"), + rest_openapi("rest-openapi", "rest-openapi"), + salesforce_create("salesforce-create", "salesforce"), + salesforce_delete("salesforce-delete", "salesforce"), + salesforce_update("salesforce-update", "salesforce"), + salesforce("salesforce", "salesforce"), + scp("scp", "scp"), + sftp("sftp", "sftp"), + slack("slack", "slack"), + splunk_hec("splunk-hec", "splunk-hec"), + splunk("splunk", "splunk"), + sqlserver("sqlserver", "sql"), + ssh("ssh", "ssh"), + telegram("telegram", "telegram"), + timer("timer", "timer"), + twitter_directmessage("twitter-directmessage", "twitter-directmessage"), + twitter_timeline("twitter-timeline", "twitter-timeline"), + twitter_search("twitter-search", "twitter-search"), + webhook("webhook", "platform-http"), + wttrin("wttrin", "https"); + + public final String name; + public final String scheme; + + private KameletPrefixSchemeEnum(String name, String scheme) { + this.name = name; + this.scheme = scheme; + } +} diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-cloudwatch-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-cloudwatch-sink.kamelet.yaml deleted file mode 100644 index 66189e076..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-cloudwatch-sink.kamelet.yaml +++ /dev/null @@ -1,151 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-cloudwatch-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIwNyIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDI5MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTI1NiAxOTkuMzA1bC0xMjcuOTU3LTE4Ljc5N0wwIDE5OS4zMjlsMTI4LjAxIDQ3LjQzOUwyNTYgMTk5LjMwNSIgZmlsbD0iI0I3Q0E5RCIvPjxwYXRoIGQ9Ik0yNS42MjEgMTk3LjExM2wyMS42MyA2Ljc2MSAxLjk3MS0yLjIzOFY1MC4yODRsLTEuOTcxLTIuNTg1LTIxLjYzIDguMjc0djE0MS4xNCIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIGQ9Ik0xMjMuODMyIDE5MC40MjNsLTc2LjU4MSAxMy40NTFWNDcuNzAzbDc2LjU4MSAxNy4yMjJ2MTI1LjQ5OCIgZmlsbD0iIzc1OUMzRSIvPjxwYXRoIGQ9Ik04OS42ODYgMjE2Ljg4OWwtMjkuODQ4LTkuMjAxVjE0LjkyOEw4OS42ODYuMDA0bDIuNjEyIDIuODQ1djIxMC44NThsLTIuNjEyIDMuMTgyIiBmaWxsPSIjNEI2MTJDIi8+PHBhdGggZD0iTTE5MS45NjcgMTkyLjg5NEw4OS42ODYgMjE2Ljg4OVYwbDEwMi4yODEgMzkuODY2djE1My4wMjgiIGZpbGw9IiM3NTlDM0UiLz48cGF0aCBkPSJNMTI3Ljk2NSAyNDQuNzE0TDAgMTk5LjMyOXYyNi4zMjRsMTI3Ljk2NSA2My45ODN2LTQ0LjkyMiIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIGQ9Ik0yNTYgMjI1LjYyMmwtMTI4LjAzNSA2NC4wMTR2LTQ0LjkyMkwyNTYgMTk5LjMwNXYyNi4zMTciIGZpbGw9IiM3NTlDM0UiLz48cGF0aCBkPSJNMjIwLjAzOSAxNTUuNjkyaC0zMS4wMjZsLTg4LjQ0NSA2LjAyNkwxMjggMTY2Ljc3NWw5Mi4wMzktMTEuMDgzIiBmaWxsPSIjQjdDQTlEIi8+PHBhdGggZD0iTTEwMC41NjggMjE5LjkwNmwyNy40MiA4LjIyNi43ODktLjg0OS0uMDIzLTYxLjg0OS0uNzg5LS43NTgtMjcuMzk3LTIuOTU4djU4LjE4OCIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIGQ9Ik0yMjAuMDM5IDE1NS42OTJsLTkyLjA3NCA4Ljk4LjAyMyA2My40NiA5Mi4wNTEtMjcuNzExdi00NC43MjkiIGZpbGw9IiM3NTlDM0UiLz48L3N2Zz4K" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS Cloudwatch" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "AWS CloudWatch Metrics Sink" - description: |- - Send messages to AWS CloudWatch metrics. - - There are several properties you can set in the headers, such as: - - `metric-name` / `ce-metricname` for the metric name. - `metric-value` / `ce-metricvalue` for the metric value. - `metric-unit` / `ce-metricunit` for the metric unit. - `metric-timestamp` / `ce-metrictimestamp` for the metric timestamp. - `metric-dimension-name` / `ce-metricdimensionname` for the dimension name. - `metric-dimension-value` / `ce-metricdimensionvalue` for the dimension value. - required: - - cw_namespace - - accessKey - - secretKey - - region - type: object - properties: - cw_namespace: - title: Cloud Watch Namespace - description: The cloud watch metric namespace. - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to. - type: string - example: eu-west-1 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - camel:core - - "camel:aws2-cw" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - choice: - when: - - simple: "${header[metric-name]}" - steps: - - set-header: - name: CamelAwsCwMetricName - simple: "${header[metric-name]}" - - simple: "${header[ce-metricname]}" - steps: - - set-header: - name: CamelAwsCwMetricName - simple: "${header[ce-metricname]}" - - choice: - when: - - simple: "${header[metric-value]}" - steps: - - set-header: - name: CamelAwsCwMetricValue - simple: "${header[metric-value]}" - - simple: "${header[ce-metricvalue]}" - steps: - - set-header: - name: CamelAwsCwMetricValue - simple: "${header[ce-metricvalue]}" - - choice: - when: - - simple: "${header[metric-unit]}" - steps: - - set-header: - name: CamelAwsCwMetricUnit - simple: "${header[metric-unit]}" - - simple: "${header[ce-metricunit]}" - steps: - - set-header: - name: CamelAwsCwMetricUnit - simple: "${header[ce-metricunit]}" - - choice: - when: - - simple: "${header[metric-timestamp]}" - steps: - - set-header: - name: CamelAwsCwMetricTimestamp - simple: "${header[metric-timestamp]}" - - simple: "${header[ce-metrictimestamp]}" - steps: - - set-header: - name: CamelAwsCwMetricTimestamp - simple: "${header[ce-metrictimestamp]}" - - choice: - when: - - simple: "${header[metric-dimension-name]}" - steps: - - set-header: - name: CamelAwsCwMetricDimensionName - simple: "${header[metric-dimension-name]}" - - simple: "${header[ce-metricdimensionname]}" - steps: - - set-header: - name: CamelAwsCwMetricDimensionName - simple: "${header[ce-metricdimensionname]}" - - choice: - when: - - simple: "${header[metric-dimension-value]}" - steps: - - set-header: - name: CamelAwsCwMetricDimensionValue - simple: "${header[metric-dimension-value]}" - - simple: "${header[ce-metricdimensionvalue]}" - steps: - - set-header: - name: CamelAwsCwMetricDimensionValue - simple: "${header[ce-metricdimensionvalue]}" - - to: - uri: "aws2-cw:{{cw_namespace}}" - parameters: - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml deleted file mode 100644 index 031e3ec06..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-streams-source.kamelet.yaml +++ /dev/null @@ -1,101 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-ddb-streams-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNMzkuNTA2IDEzLjY2N2gyMC4zMjF2NzEuOTk5SDM5LjUwNnpNNzQuMTMxIDY3LjU2NFY3OC41Mmw3LjQ4LTguNzY0di03LjYwMmwtNy40MzcgNS4zOTd6TTc0LjEzMSA2Mi45MzZsLjA0My0uMDEgNy40MzctNHYtNy42NDlsLTcuNDguNjg4ek03NC4xNzQgMzYuNDI5bC0uMDQzLS4wMVY0Ny4zNWw3LjQ4LjY5OXYtNy42NDV6Ii8+PHBhdGggZmlsbD0iIzFBNDc2RiIgZD0iTTgxLjYxMSA0OC4wNDlsLTcuNDgtLjY5OS0xNC4zMDMtLjU3MkgzOS41MDZsLTE0LjMwMy41NzJWMzYuNDQzbC0uMDE1LjAwOC4wMTUtLjAzMiAxNC4zMDMtMy4zMTRINTkuODI4bDE0LjMwMyAzLjMxNCA1LjI1OCAyLjc5NXYtMS43OTdsMi4yMjItLjI0My03LjQ4LTUuNDEtMTQuMzAzLTQuNDMySDM5LjUwNmwtMTQuMzAzIDQuNDMyVjIwLjgwN2wtNy40OCA4Ljc2M3Y3LjY1M2wuMDU4LS4wNDIgMi4xNjQuMjM2djEuODM0bC0yLjIyMiAxLjE4OXY3LjYxNWwuMDU4LS4wMDYgMi4xNjQuMDMydjMuMTk2bC0xLjg2Ny4wMjgtLjM1NS0uMDM0djcuNjE4bDIuMjIyIDEuMTk1djEuODU1bC0yLjEyOS4yMzUtLjA5My0uMDd2Ny42NTJsNy40OCA4Ljc2NFY2Ny41NjRsMTQuMzAzIDQuNDMySDU5LjgyOGwxNC4zNDUtNC40NDUgNy40MzgtNS4zNjctMi4yMjItLjI0NXYtMS44MThsLTUuMjE2IDIuODA1LTE0LjM0NSAzLjI5NXYuMDA0SDM5LjUwNnYtLjAwNGwtMTQuMzQ4LTMuMjk1LS4wMjUtLjA1MS4wNy4wMzdWNTEuOTY1bDE0LjMwMy41N3YuMDE0SDU5LjgyOHYtLjAxNGwxNC4zMDMtLjU3IDcuNDgtLjY1Ni0yLjIyMi0uMDMydi0zLjE5NnoiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS DynamoDB Streams" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "AWS DynamoDB Streams Source" - description: |- - Receive events from Amazon DynamoDB Streams. - The basic authentication method for the AWS DynamoDB Streams service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. - If you use the default credentials provider, the DynamoDB Streams client loads the credentials through this provider and doesn't use the basic authentication method. - required: - - table - - region - type: object - properties: - table: - title: Table - description: The name of the DynamoDB table. - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to access. - type: string - example: eu-west-1 - enum: ["af-south-1", "ap-east-1", "ap-northeast-1", "ap-northeast-2", "ap-northeast-3", "ap-south-1", "ap-southeast-1", "ap-southeast-2", "ap-southeast-3", "ca-central-1", "eu-central-1", "eu-north-1", "eu-south-1", "eu-west-1", "eu-west-2", "eu-west-3", "fips-us-east-1", "fips-us-east-2", "fips-us-west-1", "fips-us-west-2", "me-south-1", "sa-east-1", "us-east-1", "us-east-2", "us-west-1", "us-west-2", "cn-north-1", "cn-northwest-1", "us-gov-east-1", "us-gov-west-1", "us-iso-east-1", "us-iso-west-1", "us-isob-east-1"] - streamIteratorType: - title: Stream Iterator Type - description: Defines where in the DynamoDB stream to start getting records. There are two enums and the value can be one of FROM_LATEST and FROM_START. Note that using FROM_START can cause a significant delay before the stream has caught up to real-time. - type: string - default: FROM_LATEST - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - uriEndpointOverride: - title: Overwrite Endpoint URI - description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. - type: string - overrideEndpoint: - title: Endpoint Overwrite - description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - delay: - title: Delay - description: The number of milliseconds before the next poll from the database. - type: integer - default: 500 - types: - out: - mediaType: application/json - dependencies: - - "camel:gson" - - "camel:aws2-ddb" - - "camel:kamelet" - template: - from: - uri: "aws2-ddbstream:{{table}}" - parameters: - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - streamIteratorType: "{{streamIteratorType}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - uriEndpointOverride: "{{?uriEndpointOverride}}" - overrideEndpoint: "{{overrideEndpoint}}" - delay: "{{delay}}" - steps: - - marshal: - json: - library: Gson - - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml deleted file mode 100644 index 35cd3cfbd..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-firehose-sink.kamelet.yaml +++ /dev/null @@ -1,69 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-kinesis-firehose-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODUgODUiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjIuNSIgeT0iMi41Ii8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTEzLjc2NiAzLjEyaDUyLjQ2OGMzLjY1MSAwIDcuMTUyIDEuMzYzIDkuNzM0IDMuNzg4UzgwIDEyLjYyNCA4MCAxNi4wNTR2MjEuNjk4Yy0yLjcxNy0xLjMxOS04LjY2NC0yLjcyMy0xNy40NjQtMi43MjMtMy4zNy0uMDEzLTYuNzM3LjIyNC0xMC4wNjguNzA5LTUuOTMyLjkyMi05LjA1NyAyLjUxLTkuMDU3IDMuNDg5djM2Ljg3M2MwIC42MS44OTEgMS40MTggMi41ODEgMi4yMTJIMTMuNzY2QzYuMTYzIDc4LjMxMyAwIDcyLjUyMiAwIDY1LjM3OVYxNi4wNTRDMCA4LjkxMSA2LjE2MyAzLjEyIDEzLjc2NiAzLjEyeiIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMy43NjYgMGg1Mi40NjhjMy42NTEgMCA3LjE1MiAxLjM2MyA5LjczNCAzLjc4OFM4MCA5LjUwNCA4MCAxMi45MzR2MjEuNjdjLTIuNzE3LTEuMzE5LTguNjY0LTIuNzIzLTE3LjQ2NC0yLjcyM2E2Ny45NCA2Ny45NCAwIDAgMC0xMC4wNjguNzA5Yy01LjkzMi45MjItOS4wNTcgMi41MS05LjA1NyAzLjQ4OXYzNi44MTZjMCAuNjEuODkxIDEuNDE4IDIuNTgxIDIuMjEySDEzLjc2NmMtMy42NTEgMC03LjE1Mi0xLjM2My05LjczNC0zLjc4OFMwIDY1LjYwNCAwIDYyLjE3NHYtNDkuMjRDMCA1Ljc5MSA2LjE2MyAwIDEzLjc2NiAweiIgZmlsbD0iI2Y1ODUzNCIvPjxwYXRoIGQ9Ik02My45MjQgNDEuODA4YTU3LjAzIDU3LjAzIDAgMCAwLTguNDUzLjU5NiAyNi40NCAyNi40NCAwIDAgMS03LjU0Ny0uNjI0djMuNTQ2YzAgLjgyMyAyLjY0MSAyLjE1NiA3LjU0NyAyLjkwN2E1NC40NyA1NC40NyAwIDAgMCA4LjQ1My41OTZDNzQuMzM5IDQ4LjgyOCA4MCA0Ni41MTcgODAgNDUuMzI2VjQxLjc4em0tMTYuMzc3IDEwLjQxdjI0LjI1MWMwIDEuMjIgNC41MjggMy41MTcgMTUuMzIxIDMuNTE3YTUxLjY4IDUxLjY4IDAgMCAwIDEzLjI2OC0xLjQxOGMyLjE0My0uNjUyIDMuNjY4LTEuNDE4IDMuODM0LTEuOTQzVjUyLjUxNmMtMy4xNCAxLjgyOS05LjYxNSAyLjgzNi0xNi4wNDUgMi44MzZoLTIuNjcxbC0xLjYzLS4yN2gtLjgxNWwtMS4yNjgtLjA5OS0uNjc5LS4wOTktMS4zNTgtLjE3YTIyLjQ5IDIyLjQ5IDAgMCAxLTcuOTU1LTIuNDk2eiIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik02My45MjQgMzguMjc3YTU3LjAxIDU3LjAxIDAgMCAwLTguNDUzLjU5NmMtNC45ODEuNzgtNy41NDcgMi4xMTMtNy41NDcgMi45MjJzMi42NDEgMi4xNTYgNy41NDcgMi45MDdhNTQuNDYgNTQuNDYgMCAwIDAgOC40NTMuNTk2Qzc0LjMzOSA0NS4yOTggODAgNDIuOTg2IDgwIDQxLjc5NXMtNS42Ni0zLjUxNy0xNi4wNzYtMy41MTd6TTQ3LjU0NyA0OC42NzN2MjQuMjIzYzAgMS4yMzQgNC41MjggMy41MDMgMTUuMjc1IDMuNTAzYTUxLjY4IDUxLjY4IDAgMCAwIDEzLjI2OC0xLjQxOGMyLjE0My0uNjUyIDMuNjY4LTEuNDE4IDMuODM0LTEuOTQzdi0yNC4xMWMtMy4xNCAxLjgzLTkuNjE1IDIuODM2LTE2LjA0NSAyLjgzNmgtMi42NzJsLTEuNTg1LS4yMjdoLS44MTVsLTEuMjY4LS4wOTktLjY3OS0uMDk5LTEuMzU4LS4xN2EyMi40OSAyMi40OSAwIDAgMS03Ljk1NS0yLjQ5NnoiIGZpbGw9IiNmNTg1MzQiLz48cGF0aCBkPSJNMTMuNzY2IDc1LjE2NWgzMi4xOTZ2My4xMkgxMy43NjZDNi4xNjMgNzguMjg1IDAgNzIuNDk0IDAgNjUuMzUxdi0zLjEyYzAgNy4xNDMgNi4xNjMgMTIuOTM0IDEzLjc2NiAxMi45MzR6IiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTY1LjE3NyAxNi4xNjhMNTMuMTAyIDQuODIydjUuNjczSDM0LjI0OVYzMC4zNWgxOC44MjN2Mi4xODRsNC4yNTYtLjQ0TDY5LjcyIDIwLjQyMnptLTU3LjU2OS0uMDAxdjE0LjE4MmgyMC44M1YxMC40NTJINy42MDh2NS43MTV6bTUuODExIDMzLjUxMnYxNC4xODJoMjAuODNWNDMuOTY0aC0yMC44M3Y1LjcxNXoiLz48L2c+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS Kinesis Firehose" - labels: - camel.apache.org/kamelet.type: sink -spec: - definition: - title: AWS Kinesis Firehose Sink - description: |- - Send message to an AWS Kinesis Firehose Stream - required: - - streamName - - accessKey - - secretKey - - region - type: object - properties: - streamName: - title: Stream name - description: The name of the stream we want to send to data to - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the KinesisFirehose client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - "camel:kamelet" - - "camel:aws2-kinesis" - template: - from: - uri: kamelet:source - steps: - - to: - uri: "aws2-kinesis-firehose:{{streamName}}" - parameters: - accessKey: "{{?accessKey}}" - secretKey: "{{?secretKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" 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 deleted file mode 100644 index ca3e7a7eb..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-kinesis-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTS4wNTksMjE3LjU1OWwxMjguMTYyLDkwLjY3NUwyNTYsMjE3LjU1OSwxMjcuOTQ1LDE5OC45MjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDYsMTU0LjAxN2g2Ny41NzdWNTcuODM2TDE3NS45OSw0OS45NDMsMTI4LjE0Niw2My44OThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTE3NS45OSwxNTQuMDE3aDUyLjIzM1Y5MS42MzJsLTE0Ljk0LTQuNDgxLTM3LjI5Myw2LjMzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0yMTMuMjgyLDgyLjI2djcxLjc1N2g0Mi4yMjRMMjU2LDgxLjk0MWwtMTIuODI2LTUuMTI0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMjguMTQ3LDBWMTU0LjAxN2gyNS41VjEyLjc1MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTk1LjcyNCw1Ny44MzZsLTE5LjczMy03Ljg5NFYxNTQuMDE3aDE5LjczMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjI4LjIyNCw5MS42MzJsLTE0Ljk0MS00LjQ4djY2Ljg2NWgxNC45NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjQzLjE3NCwxNTQuMDE3SDI1NlY4MS45NDFsLTEyLjgyNi01LjEyNFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTI3Ljc1NCwxODQuODYzdjQ2LjAzM2wxMjcuNzUyLTMxLjg0NFYxNzIuMDg3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iI2Y2ODUzNCIvPjxwYXRoIGQ9Ik0xMjcuNzU0LDI2Mi43ODF2NDUuNDUzTDI1NiwyNDQuMTE0VjIxNy41NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNLjA1OSwyNDQuMzlsMTI3LjY5NSw2My44NDRWMjYyLjQ0OEwuMDU4LDIxNy41NThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTAsMTk5LjA1MWwxMjcuNzU0LDMxLjg0NVYxODQuODYyTDAsMTcyLjA4NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiM5ZDUwMjUiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS Kinesis" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "AWS Kinesis Source" - description: |- - Receive data from AWS Kinesis. - required: - - stream - - accessKey - - secretKey - - region - type: object - properties: - stream: - title: Stream Name - description: The Kinesis stream that you want to access (needs to be created in advance) - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - types: - out: - mediaType: application/json - dependencies: - - "camel:gson" - - "camel:kamelet" - - "camel:aws2-kinesis" - template: - from: - uri: aws2-kinesis:{{stream}} - parameters: - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - steps: - - marshal: - json: - library: Gson - - to: "kamelet:sink" 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 deleted file mode 100644 index ccd583ee6..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml +++ /dev/null @@ -1,101 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-s3-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS S3" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "AWS S3 Sink" - description: |- - Upload data to AWS S3. - - The Kamelet expects the following headers to be set: - - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. - required: - - bucketNameOrArn - - accessKey - - secretKey - - region - 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - 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 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - camel:core - - "camel:aws2-s3" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - choice: - when: - - simple: "${header[file]}" - steps: - - set-header: - name: CamelAwsS3Key - simple: "${header[file]}" - - simple: "${header[ce-file]}" - steps: - - set-header: - name: CamelAwsS3Key - simple: "${header[ce-file]}" - otherwise: - steps: - - set-header: - name: CamelAwsS3Key - simple: "${exchangeId}" - - to: - uri: "aws2-s3:{{bucketNameOrArn}}" - parameters: - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - autoCreateBucket: "{{autoCreateBucket}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml deleted file mode 100644 index 0538d0e2d..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-source.kamelet.yaml +++ /dev/null @@ -1,84 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-s3-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS S3" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "AWS S3 Source" - description: |- - Receive data from AWS S3. - required: - - bucketNameOrArn - - accessKey - - secretKey - - region - type: object - properties: - bucketNameOrArn: - title: Bucket Name - description: The S3 Bucket name or ARN - type: string - deleteAfterRead: - title: Auto-delete Objects - description: Delete objects after consuming them - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: true - accessKey: - title: Access Key - description: The access key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - 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 - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - "camel:kamelet" - - "camel:aws2-s3" - template: - from: - uri: "aws2-s3:{{bucketNameOrArn}}" - parameters: - autoCreateBucket: "{{autoCreateBucket}}" - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - deleteAfterRead: "{{deleteAfterRead}}" - steps: - - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml deleted file mode 100644 index 4df0cce14..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml +++ /dev/null @@ -1,123 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-sqs-fifo-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIGhlaWdodD0iMTAwcHgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDBweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGcgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCI+PGc+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAyMy45ODcsMzYuMjAxIDU0LjQ2Miw0MC40OTQgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIwLjE3OSwzNy4zNDQgNTAuMDAzLDI4LjM5OSA1MC4wMDMsMTQgMjAuMTc5LDI4LjkwOCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMjAuMTksNjIuNjU0IDQ5Ljk5OSw3MS42IDQ5Ljk5Nyw4NiAyMC4xOSw3MS4wOTQgICAiLz48cG9seWdvbiBmaWxsPSIjRDlBNzQxIiBwb2ludHM9Ijc5LjgyMywzNy4zNSA1MC4wMDMsMjguMzk5IDUwLjAwMywxNCA3OS44MjUsMjguOTE0ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDYsNjIuNjYgNDkuOTk5LDcxLjYgNDkuOTk3LDg2IDc5LjgwNiw3MS4wOTkgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2IDIwLjE3OSwyOC45MDggMjMuOTg5LDI3LjAwNCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgNTAuMDAxLDQwLjgzMiAzOS4wMTksNDIuMjI5ICAgIi8+PHBvbHlnb24gZmlsbD0iIzg3NjkyOSIgcG9pbnRzPSIyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAzNS4wODMsNDIuNzI5IDI3Ljk1NCw0My42MzcgICAiLz48cG9seWdvbiBmaWxsPSIjNjI0QTFFIiBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTAuMDAzLDI4LjM5OSA3OS44MjMsMzcuMzUgNTQuNDgxLDQwLjQ5NiAgICIvPjxwb2x5Z29uIGZpbGw9IiNGQUQ3OTEiIHBvaW50cz0iMjMuOTg1LDYzLjc5MyA0OS45OTksNzEuNiA3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiA1MC4wMDEsNDAuODMyIDc5LjgwOCw0NC42MjkgICAiLz48L2c+PC9nPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS SQS" - labels: - camel.apache.org/kamelet.type: sink - camel.apache.org/requires.runtime: "camel-quarkus" -spec: - definition: - title: AWS SQS FIFO Sink - description: Send message to an AWS SQS FIFO Queue - required: - - queueNameOrArn - - accessKey - - secretKey - - region - type: object - properties: - queueNameOrArn: - title: Queue Name - description: The SQS Queue 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - contentBasedDeduplication: - title: Content-Based Deduplication - description: Use content-based deduplication (should be enabled in the SQS FIFO queue first) - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - autoCreateQueue: - title: Autocreate Queue - description: Setting the autocreation of the SQS queue. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - "camel:aws2-sqs" - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - set-property: - name: contentBasedDeduplication - constant: "{{contentBasedDeduplication}}" - - choice: - when: - - simple: "${header[group]}" - steps: - - set-property: - name: CamelAwsMessageGroupId - simple: "${header[group]}" - - simple: "${header[ce-group]}" - steps: - - set-property: - name: CamelAwsMessageGroupId - simple: "${header[ce-group]}" - otherwise: - steps: - - set-property: - name: CamelAwsMessageGroupId - simple: "${exchangeId}" - - choice: - when: - - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'" - steps: - - to: - uri: "aws2-sqs:{{queueNameOrArn}}" - parameters: - autoCreateQueue: "{{autoCreateQueue}}" - accessKey: "{{?accessKey}}" - secretKey: "{{?secretKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - messageGroupIdStrategy: "usePropertyValue" - messageDeduplicationIdStrategy: "useContentBasedDeduplication" - otherwise: - steps: - - to: - uri: "aws2-sqs:{{queueNameOrArn}}" - parameters: - autoCreateQueue: "{{autoCreateQueue}}" - accessKey: "{{?accessKey}}" - secretKey: "{{?secretKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - messageGroupIdStrategy: "usePropertyValue" - messageDeduplicationIdStrategy: "useExchangeId" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml deleted file mode 100644 index c160ca025..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml +++ /dev/null @@ -1,78 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-sqs-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIGhlaWdodD0iMTAwcHgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDBweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGcgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCI+PGc+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAyMy45ODcsMzYuMjAxIDU0LjQ2Miw0MC40OTQgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIwLjE3OSwzNy4zNDQgNTAuMDAzLDI4LjM5OSA1MC4wMDMsMTQgMjAuMTc5LDI4LjkwOCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMjAuMTksNjIuNjU0IDQ5Ljk5OSw3MS42IDQ5Ljk5Nyw4NiAyMC4xOSw3MS4wOTQgICAiLz48cG9seWdvbiBmaWxsPSIjRDlBNzQxIiBwb2ludHM9Ijc5LjgyMywzNy4zNSA1MC4wMDMsMjguMzk5IDUwLjAwMywxNCA3OS44MjUsMjguOTE0ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDYsNjIuNjYgNDkuOTk5LDcxLjYgNDkuOTk3LDg2IDc5LjgwNiw3MS4wOTkgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2IDIwLjE3OSwyOC45MDggMjMuOTg5LDI3LjAwNCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgNTAuMDAxLDQwLjgzMiAzOS4wMTksNDIuMjI5ICAgIi8+PHBvbHlnb24gZmlsbD0iIzg3NjkyOSIgcG9pbnRzPSIyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAzNS4wODMsNDIuNzI5IDI3Ljk1NCw0My42MzcgICAiLz48cG9seWdvbiBmaWxsPSIjNjI0QTFFIiBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTAuMDAzLDI4LjM5OSA3OS44MjMsMzcuMzUgNTQuNDgxLDQwLjQ5NiAgICIvPjxwb2x5Z29uIGZpbGw9IiNGQUQ3OTEiIHBvaW50cz0iMjMuOTg1LDYzLjc5MyA0OS45OTksNzEuNiA3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiA1MC4wMDEsNDAuODMyIDc5LjgwOCw0NC42MjkgICAiLz48L2c+PC9nPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS SQS" - labels: - camel.apache.org/kamelet.type: sink -spec: - definition: - title: AWS SQS Sink - description: |- - Send message to an AWS SQS Queue - required: - - queueNameOrArn - - accessKey - - secretKey - - region - type: object - properties: - queueNameOrArn: - title: Queue Name - description: The SQS Queue 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 - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - autoCreateQueue: - title: Autocreate Queue - description: Setting the autocreation of the SQS queue. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - dependencies: - - "camel:aws2-sqs" - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - to: - uri: "aws2-sqs:{{queueNameOrArn}}" - parameters: - autoCreateQueue: "{{autoCreateQueue}}" - accessKey: "{{?accessKey}}" - secretKey: "{{?secretKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml deleted file mode 100644 index 151e7a283..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml +++ /dev/null @@ -1,91 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: aws-sqs-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIGhlaWdodD0iMTAwcHgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDBweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGcgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCI+PGc+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAyMy45ODcsMzYuMjAxIDU0LjQ2Miw0MC40OTQgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIwLjE3OSwzNy4zNDQgNTAuMDAzLDI4LjM5OSA1MC4wMDMsMTQgMjAuMTc5LDI4LjkwOCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMjAuMTksNjIuNjU0IDQ5Ljk5OSw3MS42IDQ5Ljk5Nyw4NiAyMC4xOSw3MS4wOTQgICAiLz48cG9seWdvbiBmaWxsPSIjRDlBNzQxIiBwb2ludHM9Ijc5LjgyMywzNy4zNSA1MC4wMDMsMjguMzk5IDUwLjAwMywxNCA3OS44MjUsMjguOTE0ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDYsNjIuNjYgNDkuOTk5LDcxLjYgNDkuOTk3LDg2IDc5LjgwNiw3MS4wOTkgICAiLz48cG9seWdvbiBmaWxsPSIjODc2OTI5IiBwb2ludHM9IjIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2IDIwLjE3OSwyOC45MDggMjMuOTg5LDI3LjAwNCAgICIvPjxwb2x5Z29uIGZpbGw9IiM4NzY5MjkiIHBvaW50cz0iMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgNTAuMDAxLDQwLjgzMiAzOS4wMTksNDIuMjI5ICAgIi8+PHBvbHlnb24gZmlsbD0iIzg3NjkyOSIgcG9pbnRzPSIyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAzNS4wODMsNDIuNzI5IDI3Ljk1NCw0My42MzcgICAiLz48cG9seWdvbiBmaWxsPSIjNjI0QTFFIiBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTAuMDAzLDI4LjM5OSA3OS44MjMsMzcuMzUgNTQuNDgxLDQwLjQ5NiAgICIvPjxwb2x5Z29uIGZpbGw9IiNGQUQ3OTEiIHBvaW50cz0iMjMuOTg1LDYzLjc5MyA0OS45OTksNzEuNiA3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2ICAgIi8+PHBvbHlnb24gZmlsbD0iI0Q5QTc0MSIgcG9pbnRzPSI3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiA1MC4wMDEsNDAuODMyIDc5LjgwOCw0NC42MjkgICAiLz48L2c+PC9nPjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "AWS SQS" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "AWS SQS Source" - description: |- - Receive data from AWS SQS. - required: - - queueNameOrArn - - accessKey - - secretKey - - region - type: object - properties: - queueNameOrArn: - title: Queue Name - description: The SQS Queue name or ARN - type: string - deleteAfterRead: - title: Auto-delete Messages - description: Delete messages after consuming them - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: true - accessKey: - title: Access Key - description: The access key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - secretKey: - title: Secret Key - description: The secret key obtained from AWS - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - region: - title: AWS Region - description: The AWS region to connect to - type: string - example: eu-west-1 - autoCreateQueue: - title: Autocreate Queue - description: Setting the autocreation of the SQS queue. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - useDefaultCredentialsProvider: - title: Default Credentials Provider - description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - types: - out: - mediaType: application/json - dependencies: - - "camel:aws2-sqs" - - "camel:core" - - "camel:kamelet" - - "camel:jackson" - template: - from: - uri: "aws2-sqs:{{queueNameOrArn}}" - parameters: - autoCreateQueue: "{{autoCreateQueue}}" - secretKey: "{{?secretKey}}" - accessKey: "{{?accessKey}}" - region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" - deleteAfterRead: "{{deleteAfterRead}}" - steps: - - marshal: - json: {} - - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-servicebus-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-servicebus-sink.kamelet.yaml deleted file mode 100644 index a0ce3a0e5..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-servicebus-sink.kamelet.yaml +++ /dev/null @@ -1,67 +0,0 @@ -# --------------------------------------------------------------------------- -# 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. -# --------------------------------------------------------------------------- - -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: azure-servicebus-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMzMgMS4zMzMgMS4zMzNoOGMuOCAwIDEuMzMzLS41MzMgMS4zMzMtMS4zMzN2LTYuNjY2aDU4LjY2N3Y2LjY2N2MwIC44LjUzMyAxLjMzMyAxLjYgMS4zMzNoNy43MzNjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzdi04LThDODAgLjUzMyA3OS40NjcgMCA3OC42NjcgMGgwSDEuMzMzem03Ny4zMzQgODBjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzVjYyLjkzNGMwLS44LS41MzMtMS4zMzMtMS4zMzMtMS4zMzNoLTcuNzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjMzM3Y2LjRIMTAuNjY3di02LjY2N2MwLS44LS41MzMtMS4zMzMtMS42LTEuMzMzSDEuMzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjZ2MTUuNzMzQzAgNzkuNDY3LjUzMyA4MCAxLjMzMyA4MGg3Ny4zMzR6IiBmaWxsPSIjMDA3MmM2IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMjkuNTE5IDM2LjQ0N2wzLjQ1Mi0zLjQ1MiAyLjU1NiAyLjU1Ni0zLjQ1MiAzLjQ1MXptNS4wMDctNS4wMDhsMy40NTYtMy40NTYgMi41NiAyLjU2TDM3LjA4NiAzNHptNy41Ny0yLjQ2M2wtMi41Ni0yLjU0NCAzLjQyNC0zLjQyNCAyLjU2IDIuNTQ0ek0zOS41MzUgNTIuNWwyLjU2MS0yLjU2IDMuNDI0IDMuNDI2LTIuNTYxIDIuNTZ6bS0xLjU1MS0xLjU3MmwtMy40NTYtMy40NTYgMi41Ni0yLjU0NCAzLjQ1NiAzLjQ1NnptLTUuMDA4LTUuMDA4bC0zLjQ1Ni0zLjQ1NiAyLjU2LTIuNTQ0IDMuNDQgMy40NHoiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI2I4ZDQzMiIvPjxwYXRoIGQ9Ik01Ny44MSAyNC4zOTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFYxOC4zNDJsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDA5YTMuNTQgMy41NCAwIDAgMCAyLjUyMy0xLjA0NWw2LjY5LTYuNjl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY5YTMuNTQgMy41NCAwIDAgMCAyLjUyMiAxLjA0NXptMy4xNjEgMzEuMTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFY0OS45MDFsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDFhMy41NCAzLjU0IDAgMCAwIDIuNTIzLTEuMDQ1bDYuNjktNi42ODl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY4OWEzLjU0IDMuNTQgMCAwIDAgMi41MjIgMS4wNDV6TTE5LjcxOCA0MC41OTljLTEuMzQ0IDEuMzQ0LTMuMTMzIDIuMDg1LTUuMDM1IDIuMDg1cy0zLjY5LS43NDEtNS4wMzUtMi4wODVMMCAzMC45NDl2MTkuNjEzaDI5LjM2NlYzMC45NDlsLTkuNjQ4IDkuNjV6bS01LjAzNS42NTJhNS42NSA1LjY1IDAgMCAwIDQuMDIyLTEuNjY2bDEwLjY2MS0xMC42NjF2LS41NjVIMHYuNTY2bDEwLjY2MSAxMC42NjFhNS42NiA1LjY2IDAgMCAwIDQuMDIyIDEuNjY0eiIgc3Ryb2tlPSJub25lIiBmaWxsPSIjNTliNGQ5Ii8+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Azure Servicebus" - camel.apache.org/kamelet.namespace: "Azure" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Azure Servicebus Sink" - description: |- - Send Messages to Azure Servicebus. - required: - - topicOrQueueName - - connectionString - type: object - properties: - topicOrQueueName: - title: Topic Or Queue Name - description: Topic Or Queue Name for the Azure Servicebus instance - type: string - connectionString: - title: Connection String - description: Connection String for Azure Servicebus instance - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - types: - in: - mediaType: application/octet-stream - dependencies: - - "camel:azure-servicebus" - - "camel:kamelet" - - "camel:core" - template: - from: - uri: kamelet:source - steps: - - to: - uri: "azure-servicebus:{{topicOrQueueName}}" - parameters: - connectionString: "{{connectionString}}" - producerOperation: "sendMessages" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-servicebus-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-servicebus-source.kamelet.yaml deleted file mode 100644 index 82a5d9596..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-servicebus-source.kamelet.yaml +++ /dev/null @@ -1,82 +0,0 @@ -# --------------------------------------------------------------------------- -# 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. -# --------------------------------------------------------------------------- - -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: azure-servicebus-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMzMgMS4zMzMgMS4zMzNoOGMuOCAwIDEuMzMzLS41MzMgMS4zMzMtMS4zMzN2LTYuNjY2aDU4LjY2N3Y2LjY2N2MwIC44LjUzMyAxLjMzMyAxLjYgMS4zMzNoNy43MzNjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzdi04LThDODAgLjUzMyA3OS40NjcgMCA3OC42NjcgMGgwSDEuMzMzem03Ny4zMzQgODBjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzVjYyLjkzNGMwLS44LS41MzMtMS4zMzMtMS4zMzMtMS4zMzNoLTcuNzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjMzM3Y2LjRIMTAuNjY3di02LjY2N2MwLS44LS41MzMtMS4zMzMtMS42LTEuMzMzSDEuMzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjZ2MTUuNzMzQzAgNzkuNDY3LjUzMyA4MCAxLjMzMyA4MGg3Ny4zMzR6IiBmaWxsPSIjMDA3MmM2IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMjkuNTE5IDM2LjQ0N2wzLjQ1Mi0zLjQ1MiAyLjU1NiAyLjU1Ni0zLjQ1MiAzLjQ1MXptNS4wMDctNS4wMDhsMy40NTYtMy40NTYgMi41NiAyLjU2TDM3LjA4NiAzNHptNy41Ny0yLjQ2M2wtMi41Ni0yLjU0NCAzLjQyNC0zLjQyNCAyLjU2IDIuNTQ0ek0zOS41MzUgNTIuNWwyLjU2MS0yLjU2IDMuNDI0IDMuNDI2LTIuNTYxIDIuNTZ6bS0xLjU1MS0xLjU3MmwtMy40NTYtMy40NTYgMi41Ni0yLjU0NCAzLjQ1NiAzLjQ1NnptLTUuMDA4LTUuMDA4bC0zLjQ1Ni0zLjQ1NiAyLjU2LTIuNTQ0IDMuNDQgMy40NHoiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI2I4ZDQzMiIvPjxwYXRoIGQ9Ik01Ny44MSAyNC4zOTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFYxOC4zNDJsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDA5YTMuNTQgMy41NCAwIDAgMCAyLjUyMy0xLjA0NWw2LjY5LTYuNjl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY5YTMuNTQgMy41NCAwIDAgMCAyLjUyMiAxLjA0NXptMy4xNjEgMzEuMTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFY0OS45MDFsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDFhMy41NCAzLjU0IDAgMCAwIDIuNTIzLTEuMDQ1bDYuNjktNi42ODl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY4OWEzLjU0IDMuNTQgMCAwIDAgMi41MjIgMS4wNDV6TTE5LjcxOCA0MC41OTljLTEuMzQ0IDEuMzQ0LTMuMTMzIDIuMDg1LTUuMDM1IDIuMDg1cy0zLjY5LS43NDEtNS4wMzUtMi4wODVMMCAzMC45NDl2MTkuNjEzaDI5LjM2NlYzMC45NDlsLTkuNjQ4IDkuNjV6bS01LjAzNS42NTJhNS42NSA1LjY1IDAgMCAwIDQuMDIyLTEuNjY2bDEwLjY2MS0xMC42NjF2LS41NjVIMHYuNTY2bDEwLjY2MSAxMC42NjFhNS42NiA1LjY2IDAgMCAwIDQuMDIyIDEuNjY0eiIgc3Ryb2tlPSJub25lIiBmaWxsPSIjNTliNGQ5Ii8+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Azure Servicebus" - camel.apache.org/kamelet.namespace: "Azure" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "Azure Servicebus Source" - description: |- - Consume Messages from Azure Servicebus. - - The subscribtion name parameter needs to be populated in case of consuming from a Topic. - required: - - topicOrQueueName - - connectionString - type: object - properties: - topicOrQueueName: - title: Topic Or Queue Name - description: Topic Or Queue Name for the Azure Servicebus instance - type: string - connectionString: - title: Connection String - description: Connection String for Azure Servicebus instance - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - serviceBusReceiveMode: - title: Servicebus Receive Mode - description: Sets the receive mode for the receiver - type: string - default: PEEK_LOCK - enum: ["PEEK_LOCK", "RECEIVE_AND_DELETE"] - subscriptionName: - title: Subscription Name - description: Sets the name of the subscription in the topic to listen to. This parameter is mandatory in case of topic. - type: string - types: - out: - mediaType: application/octet-stream - dependencies: - - "camel:azure-servicebus" - - "camel:kamelet" - - "camel:core" - template: - from: - uri: "azure-servicebus:{{topicOrQueueName}}" - parameters: - connectionString: "{{connectionString}}" - serviceBusReceiveMode: "{{serviceBusReceiveMode}}" - subscriptionName: "{{?subscriptionName}}" - steps: - - set-body: - simple: "${body.toBytes()}" - - to: "kamelet:sink" - diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml deleted file mode 100644 index 587dd9065..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml +++ /dev/null @@ -1,85 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: azure-storage-blob-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Azure Storage Blob" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Azure Storage Blob Sink" - description: |- - Upload data to Azure Storage Blob. - - The Kamelet expects the following headers to be set: - - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. - required: - - accountName - - containerName - - accessKey - type: object - properties: - accountName: - title: Account Name - description: The Azure Storage Blob account name. - type: string - containerName: - title: Container Name - description: The Azure Storage Blob container name. - type: string - accessKey: - title: Access Key - description: The Azure Storage Blob access Key. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - operation: - title: Operation Name - description: The operation to perform. - type: string - default: uploadBlockBlob - credentialType: - title: Credential Type - description: Determines the credential strategy to adopt. Possible values are SHARED_ACCOUNT_KEY, SHARED_KEY_CREDENTIAL and AZURE_IDENTITY - type: string - default: SHARED_ACCOUNT_KEY - dependencies: - - camel:core - - "camel:azure-storage-blob" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - choice: - when: - - simple: "${header[file]}" - steps: - - set-header: - name: CamelAzureStorageBlobBlobName - simple: "${header[file]}" - - simple: "${header[ce-file]}" - steps: - - set-header: - name: CamelAzureStorageBlobBlobName - simple: "${header[ce-file]}" - otherwise: - steps: - - set-header: - name: CamelAzureStorageBlobBlobName - simple: "${exchangeId}" - - to: - uri: "azure-storage-blob://{{accountName}}/{{containerName}}" - parameters: - accessKey: "{{accessKey}}" - operation: "{{operation}}" - credentialType: "{{credentialType}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-sink.kamelet.yaml deleted file mode 100644 index 702e8b4eb..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-sink.kamelet.yaml +++ /dev/null @@ -1,93 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: ftps-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "FTP" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "FTPS Sink" - description: |- - Send data to an FTPS Server. - - The Kamelet expects the following headers to be set: - - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. - required: - - connectionHost - - connectionPort - - username - - password - - directoryName - type: object - properties: - connectionHost: - title: Connection Host - description: Hostname of the FTP server - type: string - connectionPort: - title: Connection Port - description: Port of the FTP server - type: string - default: 21 - username: - title: Username - description: The username to access the FTP server - type: string - password: - title: Password - description: The password to access the FTP server - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - directoryName: - title: Directory Name - description: The starting directory - type: string - passiveMode: - title: Passive Mode - description: Sets passive mode connection - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - fileExist: - title: File Existence - description: How to behave in case of file already existent. There are 4 enums and the value can be one of Override, Append, Fail or Ignore - type: string - default: Override - dependencies: - - "camel:ftp" - - "camel:core" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - choice: - when: - - simple: "${header[file]}" - steps: - - set-header: - name: CamelFileName - simple: "${header[file]}" - - simple: "${header[ce-file]}" - steps: - - set-header: - name: CamelFileName - simple: "${header[ce-file]}" - - to: - uri: "ftps:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}" - parameters: - password: "{{password}}" - passiveMode: "{{passiveMode}}" - fileExist: "{{fileExist}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml deleted file mode 100644 index e4b00d1fb..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftps-source.kamelet.yaml +++ /dev/null @@ -1,92 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: ftps-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "FTP" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "FTPS Source" - description: |- - Receive data from an FTPS Server. - required: - - connectionHost - - connectionPort - - username - - password - - directoryName - type: object - properties: - connectionHost: - title: Connection Host - description: Hostname of the FTPS server - type: string - connectionPort: - title: Connection Port - description: Port of the FTPS server - type: string - default: 21 - username: - title: Username - description: The username to access the FTPS server - type: string - password: - title: Password - description: The password to access the FTPS server - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - directoryName: - title: Directory Name - description: The starting directory - type: string - passiveMode: - title: Passive Mode - description: Sets passive mode connection - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - recursive: - title: Recursive - description: If a directory, will look for files in all the sub-directories as well. - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - idempotent: - title: Idempotency - description: Skip already processed files. - type: boolean - default: true - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - dependencies: - - "camel:ftp" - - "camel:core" - - "camel:kamelet" - template: - from: - uri: "ftps:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}" - parameters: - password: "{{password}}" - passiveMode: "{{passiveMode}}" - recursive: "{{recursive}}" - idempotent: "{{idempotent}}" - steps: - - set-header: - name: file - simple: "${header[CamelFileName]}" - - set-header: - name: ce-file - simple: "${header[CamelFileName]}" - - convert-body-to: - type: "java.io.InputStream" - - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml deleted file mode 100644 index 75caacfd4..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/http-sink.kamelet.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: http-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "HTTP" - labels: - camel.apache.org/kamelet.type: sink -spec: - definition: - title: HTTP Sink - description: Forwards an event to a HTTP endpoint - required: - - url - type: object - properties: - url: - title: URL - description: The URL to send data to - type: string - example: "https://my-service/path" - pattern: "^(http|https)://.*" - method: - title: Method - description: The HTTP method to use - type: string - default: POST - dependencies: - - "camel:http" - - "camel:kamelet" - - "camel:core" - template: - from: - uri: kamelet:source - steps: - - remove-header: - name: CamelHttpUri - - set-header: - name: CamelHttpMethod - constant: "{{method}}" - - to: "{{url}}" 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 deleted file mode 100644 index 8a66ec97f..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-header-action.kamelet.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: insert-header-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Insert Header Action" - description: "Adds an header with a constant value to the message in transit" - required: - - name - - value - properties: - name: - title: Name - description: The name of the header to be added. For Knative only, the name of the header requires a CloudEvent (ce-) prefix. - type: string - value: - title: Value - description: The value of the header - type: string - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - set-header: - name: "{{name}}" - simple: "{{value}}" 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 deleted file mode 100644 index 15eb800ae..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: is-tombstone-filter-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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" - template: - from: - uri: kamelet:source - steps: - - filter: - simple: "${body} == null || ${body} == ''" - steps: - - stop: {} diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-ibm-mq-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-ibm-mq-sink.kamelet.yaml deleted file mode 100644 index 899022b1f..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-ibm-mq-sink.kamelet.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: jms-ibm-mq-sink - annotations: - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTczLjA4IDU3Ni45NyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiM1YTc3YjU7fS5jbHMtM3tmaWxsOiNhZmJlZTA7fS5jbHMtNHtjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgpO30uY2xzLTV7Y2xpcC1wYXRoOnVybCgjY2xpcC1wYXRoLTIpO308L3N0eWxlPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNjQuNSw1MTAuODhWNDU3aDQuMDh2NTMuOTFabTQ3Ljc4LTI3LjcxYTEzLjE0LDEzLjE0LDAsMCwxLDkuMjMsMTNjMCw5LjYyLTYuMjgsMTQuNjktMTUuODIsMTQuNjlIMTg1LjI0VjQ1N2gxOS44NGM4Ljk0LDAsMTUuNiw1LjE1LDE1LjYsMTQuMDhhMTIuMzgsMTIuMzgsMCwwLDEtOC40LDEyLjEyWm0tMjIuOTUsMjQuMDhoMTUuOWM3LjM1LDAsMTIuMTktNC4xNywxMi4xOS0xMS4wNnMtNC44NC0xMS4wNS0xMi4xOS0xMS4wNWgtMTUuOXYyMi4xMVptMTUuMy00Ni42NWgtMTUuM3YyMC45aDE1LjNjNi41MSwwLDEyLTMsMTItMTAuNDVzLTUuNDUtMTAuNDUtMTItMTAuNDVabTcyLjYxLDUwLjI4VjQ2Ni40M2wtMTYuMzUsMzYuODhIMjU2LjhsLTE2LjY2LTM2Ljg4djQ0LjQ1aC00LjA5VjQ1N2g0LjA5bDE4Ljc4LDQxLjU3TDI3Ny4yNCw0NTdoNC4wOXY1My45MVoiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTIiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM0OS43LDUxMC44NFY0NzcuMjhoLS4xOGwtMTAuOTEsMjUuODRIMzMybC0xMC45MS0yNS44NEgzMjF2MzMuNTZoLTcuOVY0NTdoNy40NGwxNSwzNS4wN0wzNTAuMTMsNDU3aDcuNDZ2NTMuODFabTU0LjItMTAsNi44OCw1LjY1LTQuNjksNS42MS02LjU4LTUuNDRxLTQuNjIsNC41MS0xMi4zLDQuNjZhMTcuODksMTcuODksMCwwLDEtMTAuMjUtMy4xLDE3LjcsMTcuNywwLDAsMS02LjA4LTYuNTdjLS4zOC0uODEtLjczLTEuNTktMS0yLjMyYTE1LjQ1LDE1LjQ1LDAsMCwxLS43Mi0yLjg4LDE0NS4yOSwxNDUuMjksMCwwLDEsMC0yNSwxNS4zOCwxNS4zOCwwLDAsMSwxLjc1LTUuMTMsMTguMzMsMTguMzMsMCwwLDEsNi4wOC02LjY0LDE3LjQ3LDE3LjQ3LDAsMCwxLDEwLjI1LTMsMTcuNzYsMTcuNzYsMCwwLDEsMTAuMzYsMywxOCwxOCwwLDAsMSw1Ljk0LDYuNjQsMTIuNzksMTIuNzksMCwwLDEsMS44Miw1LjEzLDEwNy4yMywxMDcuMjMsMCwwLDEsLjQ2LDEyLjU1cTAsOC4zOC0uMzYsMTEuN2ExNC41MSwxNC41MSwwLDAsMS0xLjUzLDUuMTdabS02LjU0LTI3LjcxYTExLjI2LDExLjI2LDAsMCwwLTUuMjYtNy4yNCwxMS4xOCwxMS4xOCwwLDAsMC00LjkxLTEuMTUsMTAuNjMsMTAuNjMsMCwwLDAtNC44LDEuMTUsMTAuMDksMTAuMDksMCwwLDAtMy4yOSwyLjc3LDksOSwwLDAsMC0yLDQuNDgsNjYuNyw2Ni43LDAsMCwwLS41NywxMC44Myw2NS40Nyw2NS40NywwLDAsMCwuNTcsMTAuNzcsOSw5LDAsMCwwLDIsNC41NCw5LjQ3LDkuNDcsMCwwLDAsMy4yOSwyLjcxLDkuMTEsOS4xMSwwLDAsMCw0LjgsMS4yMiw4LjYyLDguNjIsMCwwLDAsNS44NC0xLjg5bC02LjY2LTUuNDcsNC42OS01LjU5LDYuMDksNXEuNzUtMi43My43NS0xMS4yOGE3MC42LDcwLjYsMCwwLDAtLjU0LTEwLjg0WiIvPjwvY2xpcFBhdGg+PC9kZWZzPjx0aXRsZT5JQk0gSVE8L3RpdGxlPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMjg3LjY0IiBjeT0iMjg3LjIiIHI9IjI3OC41Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9IjQ1OC4xNyA0MjYuNjcgMTE3LjExIDQyNi42NyAxMTcuMTEgMTUzLjU1IDcwLjkxIDE1My41NSA3MC45MSAxMzEuNTUgMTM5LjExIDEzMS41NSAxMzkuMTEgNDA0LjY3IDQzNi4xNyA0MDQuNjcgNDM2LjE3IDEzMS41NSA1MDQuMzcgMTMxLjU1IDUwNC4zNyAxNTMuNTUgNDU4LjE3IDE1My41NSA0NTguMTcgNDI2LjY3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjQyMC4yNiAyNTMuMTIgNDIwLjI2IDI0MS43NyAxNTUuMDIgMjQxLjc3IDE1NS4wMiAyNTIuODUgMjg3Ljg4IDMyOS40OSA0MjAuMjYgMjUzLjEyIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjI4Ny44OCAzMzkuNzUgMTU1LjAyIDI2My4xMSAxNTUuMDIgMzg4Ljg0IDQyMC4yNiAzODguODQgNDIwLjI2IDI2My4zOCAyODcuODggMzM5Ljc1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY0LjUsNTEwLjg4VjQ1N2g0LjA4djUzLjkxWm00Ny43OC0yNy43MWExMy4xNCwxMy4xNCwwLDAsMSw5LjIzLDEzYzAsOS42Mi02LjI4LDE0LjY5LTE1LjgyLDE0LjY5SDE4NS4yNFY0NTdoMTkuODRjOC45NCwwLDE1LjYsNS4xNSwxNS42LDE0LjA4YTEyLjM4LDEyLjM4LDAsMCwxLTguNCwxMi4xMlptLTIyLjk1LDI0LjA4aDE1LjljNy4zNSwwLDEyLjE5LTQuMTcsMTIuMTktMTEuMDZzLTQuODQtMTEuMDUtMTIuMTktMTEuMDVoLTE1Ljl2MjIuMTFabTE1LjMtNDYuNjVoLTE1LjN2MjAuOWgxNS4zYzYuNTEsMCwxMi0zLDEyLTEwLjQ1cy01LjQ1LTEwLjQ1LTEyLTEwLjQ1Wm03Mi42MSw1MC4yOFY0NjYuNDNsLTE2LjM1LDM2Ljg4SDI1Ni44bC0xNi42Ni0zNi44OHY0NC40NWgtNC4wOVY0NTdoNC4wOWwxOC43OCw0MS41N0wyNzcuMjQsNDU3aDQuMDl2NTMuOTFaIi8+PGcgY2xhc3M9ImNscy00Ij48aW1hZ2Ugd2lkdGg9IjEwNzUiIGhlaWdodD0iMTA4NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi42NyAxNi42Nykgc2NhbGUoMC41MykiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCRFFBQUFRK0NBSUFBQUN2Ri9oTEFBQUFDWEJJV1hNQUFCVVJBQUFWRVFGZVBUWjRBQUFYRTBsRVFWUjRYdTNaMFkzQ1FCUUVRUmFSbDUyWlEzOFh3a29JY0V0WDlUMEp0R2JOekFNQUFPQjI0Z1FBQUxqZGRWM1AzUVlBQU9BWHhBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBMHpzNXNBQUFCODEzRWNuaE1BQU9CKzUzbUtFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpEdzJnMkFENXVaM1FTNjFscTdDUUM4eVhNQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSU9HMUd3QWZ0dGJhVFFBQS9pUFBDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUXNHWm10d0VBQVBpNlA3REpHbXpiZ0JrUUFBQUFBRWxGVGtTdVFtQ0MiLz48L2c+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMzQ5LjcsNTEwLjg0VjQ3Ny4yOGgtLjE4bC0xMC45MSwyNS44NEgzMzJsLTEwLjkxLTI1Ljg0SDMyMXYzMy41NmgtNy45VjQ1N2g3LjQ0bDE1LDM1LjA3TDM1MC4xMyw0NTdoNy40NnY1My44MVptNTQuMi0xMCw2Ljg4LDUuNjUtNC42OSw1LjYxLTYuNTgtNS40NHEtNC42Miw0LjUxLTEyLjMsNC42NmExNy44OSwxNy44OSwwLDAsMS0xMC4yNS0zLjEsMTcuNywxNy43LDAsMCwxLTYuMDgtNi41N2MtLjM4LS44MS0uNzMtMS41OS0xLTIuMzJhMTUuNDUsMTUuNDUsMCwwLDEtLjcyLTIuODgsMTQ1LjI5LDE0NS4yOSwwLDAsMSwwLTI1LDE1LjM4LDE1LjM4LDAsMCwxLDEuNzUtNS4xMywxOC4zMywxOC4zMywwLDAsMSw2LjA4LTYuNjQsMTcuNDcsMTcuNDcsMCwwLDEsMTAuMjUtMywxNy43NiwxNy43NiwwLDAsMSwxMC4zNiwzLDE4LDE4LDAsMCwxLDUuOTQsNi42NCwxMi43OSwxMi43OSwwLDAsMSwxLjgyLDUuMTMsMTA3LjIzLDEwNy4yMywwLDAsMSwuNDYsMTIuNTVxMCw4LjM4LS4zNiwxMS43YTE0LjUxLDE0LjUxLDAsMCwxLTEuNTMsNS4xN1ptLTYuNTQtMjcuNzFhMTEuMjYsMTEuMjYsMCwwLDAtNS4yNi03LjI0LDExLjE4LDExLjE4LDAsMCwwLTQuOTEtMS4xNSwxMC42MywxMC42MywwLDAsMC00LjgsMS4xNSwxMC4wOSwxMC4wOSwwLDAsMC0zLjI5LDIuNzcsOSw5LDAsMCwwLTIsNC40OCw2Ni43LDY2LjcsMCwwLDAtLjU3LDEwLjgzLDY1LjQ3LDY1LjQ3LDAsMCwwLC41NywxMC43Nyw5LDksMCwwLDAsMiw0LjU0LDkuNDcsOS40NywwLDAsMCwzLjI5LDIuNzEsOS4xMSw5LjExLDAsMCwwLDQuOCwxLjIyLDguNjIsOC42MiwwLDAsMCw1Ljg0LTEuODlsLTYuNjYtNS40Nyw0LjY5LTUuNTksNi4wOSw1cS43NS0yLjczLjc1LTExLjI4YTcwLjYsNzAuNiwwLDAsMC0uNTQtMTAuODRaIi8+PGcgY2xhc3M9ImNscy01Ij48aW1hZ2Ugd2lkdGg9IjEwNzUiIGhlaWdodD0iMTA4NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi42NyAxNi42Nykgc2NhbGUoMC41MykiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCRFFBQUFRK0NBSUFBQUN2Ri9oTEFBQUFDWEJJV1hNQUFCVVJBQUFWRVFGZVBUWjRBQUFYRWtsRVFWUjRYdTNad1cyRVFCUkV3WjBWZVVGbWhQNGR3c2dIekxOVWRlNEVubnJOekFjQUFPQjE0Z1FBQUhqZGZkL2YzUVlBQU9BdmlCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCcG1aamNCQUFCNDFubWVuaE1BQU9COTEzV0pFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVNqdDBBQUxwbVpqZUIzMWxyN1NiQVV6d25BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0RoMkEwQW9HdXR0WnNBOEc5NFRnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVEQ21wbmRCZ0FBNEhFLzZiWWFiTE5wV0pvQUFBQUFTVVZPUks1Q1lJST0iLz48L2c+PC9zdmc+" - camel.apache.org/kamelet.support.level: "Preview" - camel.apache.org/provider: "Red Hat" - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.group: "JMS" - labels: - camel.apache.org/kamelet.type: "sink" - camel.apache.org/requires.runtime: camel-k -spec: - definition: - title: "JMS - IBM MQ Kamelet Sink" - description: |- - A Kamelet that can produce events to an IBM MQ message queue using JMS. - required: - - serverName - - serverPort - - destinationName - - queueManager - - channel - - username - - password - type: object - properties: - serverName: - title: "IBM MQ Server name" - description: "IBM MQ Server name or address" - type: string - serverPort: - title: "IBM MQ Server Port" - description: "IBM MQ Server port" - type: integer - default: 1414 - destinationType: - title: "Destination Type" - description: "The JMS destination type (queue or topic)" - type: string - default: queue - destinationName: - title: "Destination Name" - description: "The destination name" - type: string - queueManager: - title: "IBM MQ Queue Manager" - description: "Name of the IBM MQ Queue Manager" - type: string - channel: - title: "IBM MQ Channel" - description: "Name of the IBM MQ Channel" - type: string - clientId: - title: "IBM MQ Client ID" - description: "Name of the IBM MQ Client ID" - type: string - username: - title: "Username" - description: "Username to authenticate to IBM MQ server" - type: string - password: - title: "Password" - description: "Password to authenticate to IBM MQ server" - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - dependencies: - - "camel:jms" - - "camel:kamelet" - - "mvn:com.ibm.mq:com.ibm.mq.allclient:9.2.5.0" - template: - beans: - - name: wmqConnectionFactory - type: "#class:com.ibm.mq.jms.MQConnectionFactory" - property: - - key: XMSC_WMQ_HOST_NAME - value: '{{serverName}}' - - key: XMSC_WMQ_PORT - value: '{{serverPort}}' - - key: XMSC_WMQ_CHANNEL - value: '{{channel}}' - - key: XMSC_WMQ_QUEUE_MANAGER - value: '{{queueManager}}' - - key: XMSC_WMQ_CONNECTION_MODE - value: 1 - - key: XMSC_USERID - value: '{{username}}' - - key: XMSC_PASSWORD - value: '{{password}}' - - key: XMSC_CLIENT_ID - value: '{{?clientId}}' - from: - uri: "kamelet:source" - steps: - - to: - uri: "jms:{{destinationType}}:{{destinationName}}" - parameters: - connectionFactory: "#bean:{{wmqConnectionFactory}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-ibm-mq-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-ibm-mq-source.kamelet.yaml deleted file mode 100644 index cccb6e687..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-ibm-mq-source.kamelet.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: jms-ibm-mq-source - annotations: - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTczLjA4IDU3Ni45NyI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmZmY7fS5jbHMtMntmaWxsOiM1YTc3YjU7fS5jbHMtM3tmaWxsOiNhZmJlZTA7fS5jbHMtNHtjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgpO30uY2xzLTV7Y2xpcC1wYXRoOnVybCgjY2xpcC1wYXRoLTIpO308L3N0eWxlPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNjQuNSw1MTAuODhWNDU3aDQuMDh2NTMuOTFabTQ3Ljc4LTI3LjcxYTEzLjE0LDEzLjE0LDAsMCwxLDkuMjMsMTNjMCw5LjYyLTYuMjgsMTQuNjktMTUuODIsMTQuNjlIMTg1LjI0VjQ1N2gxOS44NGM4Ljk0LDAsMTUuNiw1LjE1LDE1LjYsMTQuMDhhMTIuMzgsMTIuMzgsMCwwLDEtOC40LDEyLjEyWm0tMjIuOTUsMjQuMDhoMTUuOWM3LjM1LDAsMTIuMTktNC4xNywxMi4xOS0xMS4wNnMtNC44NC0xMS4wNS0xMi4xOS0xMS4wNWgtMTUuOXYyMi4xMVptMTUuMy00Ni42NWgtMTUuM3YyMC45aDE1LjNjNi41MSwwLDEyLTMsMTItMTAuNDVzLTUuNDUtMTAuNDUtMTItMTAuNDVabTcyLjYxLDUwLjI4VjQ2Ni40M2wtMTYuMzUsMzYuODhIMjU2LjhsLTE2LjY2LTM2Ljg4djQ0LjQ1aC00LjA5VjQ1N2g0LjA5bDE4Ljc4LDQxLjU3TDI3Ny4yNCw0NTdoNC4wOXY1My45MVoiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTIiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM0OS43LDUxMC44NFY0NzcuMjhoLS4xOGwtMTAuOTEsMjUuODRIMzMybC0xMC45MS0yNS44NEgzMjF2MzMuNTZoLTcuOVY0NTdoNy40NGwxNSwzNS4wN0wzNTAuMTMsNDU3aDcuNDZ2NTMuODFabTU0LjItMTAsNi44OCw1LjY1LTQuNjksNS42MS02LjU4LTUuNDRxLTQuNjIsNC41MS0xMi4zLDQuNjZhMTcuODksMTcuODksMCwwLDEtMTAuMjUtMy4xLDE3LjcsMTcuNywwLDAsMS02LjA4LTYuNTdjLS4zOC0uODEtLjczLTEuNTktMS0yLjMyYTE1LjQ1LDE1LjQ1LDAsMCwxLS43Mi0yLjg4LDE0NS4yOSwxNDUuMjksMCwwLDEsMC0yNSwxNS4zOCwxNS4zOCwwLDAsMSwxLjc1LTUuMTMsMTguMzMsMTguMzMsMCwwLDEsNi4wOC02LjY0LDE3LjQ3LDE3LjQ3LDAsMCwxLDEwLjI1LTMsMTcuNzYsMTcuNzYsMCwwLDEsMTAuMzYsMywxOCwxOCwwLDAsMSw1Ljk0LDYuNjQsMTIuNzksMTIuNzksMCwwLDEsMS44Miw1LjEzLDEwNy4yMywxMDcuMjMsMCwwLDEsLjQ2LDEyLjU1cTAsOC4zOC0uMzYsMTEuN2ExNC41MSwxNC41MSwwLDAsMS0xLjUzLDUuMTdabS02LjU0LTI3LjcxYTExLjI2LDExLjI2LDAsMCwwLTUuMjYtNy4yNCwxMS4xOCwxMS4xOCwwLDAsMC00LjkxLTEuMTUsMTAuNjMsMTAuNjMsMCwwLDAtNC44LDEuMTUsMTAuMDksMTAuMDksMCwwLDAtMy4yOSwyLjc3LDksOSwwLDAsMC0yLDQuNDgsNjYuNyw2Ni43LDAsMCwwLS41NywxMC44Myw2NS40Nyw2NS40NywwLDAsMCwuNTcsMTAuNzcsOSw5LDAsMCwwLDIsNC41NCw5LjQ3LDkuNDcsMCwwLDAsMy4yOSwyLjcxLDkuMTEsOS4xMSwwLDAsMCw0LjgsMS4yMiw4LjYyLDguNjIsMCwwLDAsNS44NC0xLjg5bC02LjY2LTUuNDcsNC42OS01LjU5LDYuMDksNXEuNzUtMi43My43NS0xMS4yOGE3MC42LDcwLjYsMCwwLDAtLjU0LTEwLjg0WiIvPjwvY2xpcFBhdGg+PC9kZWZzPjx0aXRsZT5JQk0gSVE8L3RpdGxlPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMjg3LjY0IiBjeT0iMjg3LjIiIHI9IjI3OC41Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9IjQ1OC4xNyA0MjYuNjcgMTE3LjExIDQyNi42NyAxMTcuMTEgMTUzLjU1IDcwLjkxIDE1My41NSA3MC45MSAxMzEuNTUgMTM5LjExIDEzMS41NSAxMzkuMTEgNDA0LjY3IDQzNi4xNyA0MDQuNjcgNDM2LjE3IDEzMS41NSA1MDQuMzcgMTMxLjU1IDUwNC4zNyAxNTMuNTUgNDU4LjE3IDE1My41NSA0NTguMTcgNDI2LjY3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjQyMC4yNiAyNTMuMTIgNDIwLjI2IDI0MS43NyAxNTUuMDIgMjQxLjc3IDE1NS4wMiAyNTIuODUgMjg3Ljg4IDMyOS40OSA0MjAuMjYgMjUzLjEyIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjI4Ny44OCAzMzkuNzUgMTU1LjAyIDI2My4xMSAxNTUuMDIgMzg4Ljg0IDQyMC4yNiAzODguODQgNDIwLjI2IDI2My4zOCAyODcuODggMzM5Ljc1Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY0LjUsNTEwLjg4VjQ1N2g0LjA4djUzLjkxWm00Ny43OC0yNy43MWExMy4xNCwxMy4xNCwwLDAsMSw5LjIzLDEzYzAsOS42Mi02LjI4LDE0LjY5LTE1LjgyLDE0LjY5SDE4NS4yNFY0NTdoMTkuODRjOC45NCwwLDE1LjYsNS4xNSwxNS42LDE0LjA4YTEyLjM4LDEyLjM4LDAsMCwxLTguNCwxMi4xMlptLTIyLjk1LDI0LjA4aDE1LjljNy4zNSwwLDEyLjE5LTQuMTcsMTIuMTktMTEuMDZzLTQuODQtMTEuMDUtMTIuMTktMTEuMDVoLTE1Ljl2MjIuMTFabTE1LjMtNDYuNjVoLTE1LjN2MjAuOWgxNS4zYzYuNTEsMCwxMi0zLDEyLTEwLjQ1cy01LjQ1LTEwLjQ1LTEyLTEwLjQ1Wm03Mi42MSw1MC4yOFY0NjYuNDNsLTE2LjM1LDM2Ljg4SDI1Ni44bC0xNi42Ni0zNi44OHY0NC40NWgtNC4wOVY0NTdoNC4wOWwxOC43OCw0MS41N0wyNzcuMjQsNDU3aDQuMDl2NTMuOTFaIi8+PGcgY2xhc3M9ImNscy00Ij48aW1hZ2Ugd2lkdGg9IjEwNzUiIGhlaWdodD0iMTA4NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi42NyAxNi42Nykgc2NhbGUoMC41MykiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCRFFBQUFRK0NBSUFBQUN2Ri9oTEFBQUFDWEJJV1hNQUFCVVJBQUFWRVFGZVBUWjRBQUFYRTBsRVFWUjRYdTNaMFkzQ1FCUUVRUmFSbDUyWlEzOFh3a29JY0V0WDlUMEp0R2JOekFNQUFPQjI0Z1FBQUxqZGRWM1AzUVlBQU9BWHhBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBMHpzNXNBQUFCODEzRWNuaE1BQU9CKzUzbUtFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpEdzJnMkFENXVaM1FTNjFscTdDUUM4eVhNQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSU9HMUd3QWZ0dGJhVFFBQS9pUFBDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUXNHWm10d0VBQVBpNlA3REpHbXpiZ0JrUUFBQUFBRWxGVGtTdVFtQ0MiLz48L2c+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMzQ5LjcsNTEwLjg0VjQ3Ny4yOGgtLjE4bC0xMC45MSwyNS44NEgzMzJsLTEwLjkxLTI1Ljg0SDMyMXYzMy41NmgtNy45VjQ1N2g3LjQ0bDE1LDM1LjA3TDM1MC4xMyw0NTdoNy40NnY1My44MVptNTQuMi0xMCw2Ljg4LDUuNjUtNC42OSw1LjYxLTYuNTgtNS40NHEtNC42Miw0LjUxLTEyLjMsNC42NmExNy44OSwxNy44OSwwLDAsMS0xMC4yNS0zLjEsMTcuNywxNy43LDAsMCwxLTYuMDgtNi41N2MtLjM4LS44MS0uNzMtMS41OS0xLTIuMzJhMTUuNDUsMTUuNDUsMCwwLDEtLjcyLTIuODgsMTQ1LjI5LDE0NS4yOSwwLDAsMSwwLTI1LDE1LjM4LDE1LjM4LDAsMCwxLDEuNzUtNS4xMywxOC4zMywxOC4zMywwLDAsMSw2LjA4LTYuNjQsMTcuNDcsMTcuNDcsMCwwLDEsMTAuMjUtMywxNy43NiwxNy43NiwwLDAsMSwxMC4zNiwzLDE4LDE4LDAsMCwxLDUuOTQsNi42NCwxMi43OSwxMi43OSwwLDAsMSwxLjgyLDUuMTMsMTA3LjIzLDEwNy4yMywwLDAsMSwuNDYsMTIuNTVxMCw4LjM4LS4zNiwxMS43YTE0LjUxLDE0LjUxLDAsMCwxLTEuNTMsNS4xN1ptLTYuNTQtMjcuNzFhMTEuMjYsMTEuMjYsMCwwLDAtNS4yNi03LjI0LDExLjE4LDExLjE4LDAsMCwwLTQuOTEtMS4xNSwxMC42MywxMC42MywwLDAsMC00LjgsMS4xNSwxMC4wOSwxMC4wOSwwLDAsMC0zLjI5LDIuNzcsOSw5LDAsMCwwLTIsNC40OCw2Ni43LDY2LjcsMCwwLDAtLjU3LDEwLjgzLDY1LjQ3LDY1LjQ3LDAsMCwwLC41NywxMC43Nyw5LDksMCwwLDAsMiw0LjU0LDkuNDcsOS40NywwLDAsMCwzLjI5LDIuNzEsOS4xMSw5LjExLDAsMCwwLDQuOCwxLjIyLDguNjIsOC42MiwwLDAsMCw1Ljg0LTEuODlsLTYuNjYtNS40Nyw0LjY5LTUuNTksNi4wOSw1cS43NS0yLjczLjc1LTExLjI4YTcwLjYsNzAuNiwwLDAsMC0uNTQtMTAuODRaIi8+PGcgY2xhc3M9ImNscy01Ij48aW1hZ2Ugd2lkdGg9IjEwNzUiIGhlaWdodD0iMTA4NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi42NyAxNi42Nykgc2NhbGUoMC41MykiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCRFFBQUFRK0NBSUFBQUN2Ri9oTEFBQUFDWEJJV1hNQUFCVVJBQUFWRVFGZVBUWjRBQUFYRWtsRVFWUjRYdTNad1cyRVFCUkV3WjBWZVVGbWhQNGR3c2dIekxOVWRlNEVubnJOekFjQUFPQjE0Z1FBQUhqZGZkL2YzUVlBQU9BdmlCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCcG1aamNCQUFCNDFubWVuaE1BQU9COTEzV0pFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVNqdDBBQUxwbVpqZUIzMWxyN1NiQVV6d25BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0RoMkEwQW9HdXR0WnNBOEc5NFRnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVDQ09BRUFBQkxFQ1FBQWtDQk9BQUNBQkhFQ0FBQWtpQk1BQUNCQm5BQUFBQW5pQkFBQVNCQW5BQUJBZ2pnQkFBQVN4QWtBQUpBZ1RnQUFnQVJ4QWdBQUpJZ1RBQUFnUVp3QUFBQUo0Z1FBQUVnUUp3QUFRSUk0QVFBQUVzUUpBQUNRSUU0QUFJQUVjUUlBQUNTSUV3QUFJRUdjQUFBQUNlSUVBQUJJRUNjQUFFQ0NPQUVBQUJMRUNRQUFrQ0JPQUFDQUJIRUNBQUFraUJNQUFDQkJuQUFBQUFuaUJBQUFTQkFuQUFCQWdqZ0JBQUFTeEFrQUFKQWdUZ0FBZ0FSeEFnQUFKSWdUQUFBZ1Fad0FBQUFKNGdRQUFFZ1FKd0FBUUlJNEFRQUFFc1FKQUFDUUlFNEFBSUFFY1FJQUFDU0lFd0FBSUVHY0FBQUFDZUlFQUFCSUVDY0FBRUNDT0FFQUFCTEVDUUFBa0NCT0FBQ0FCSEVDQUFBa2lCTUFBQ0JCbkFBQUFBbmlCQUFBU0JBbkFBQkFnamdCQUFBU3hBa0FBSkFnVGdBQWdBUnhBZ0FBSklnVEFBQWdRWndBQUFBSjRnUUFBRWdRSndBQVFJSTRBUUFBRXNRSkFBQ1FJRTRBQUlBRWNRSUFBQ1NJRXdBQUlFR2NBQUFBQ2VJRUFBQklFQ2NBQUVEQ21wbmRCZ0FBNEhFLzZiWWFiTE5wV0pvQUFBQUFTVVZPUks1Q1lJST0iLz48L2c+PC9zdmc+" - camel.apache.org/kamelet.support.level: "Preview" - camel.apache.org/provider: "Red Hat" - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.group: "JMS" - labels: - camel.apache.org/kamelet.type: "source" - camel.apache.org/requires.runtime: camel-k -spec: - definition: - title: "JMS - IBM MQ Kamelet Source" - description: |- - A Kamelet that can read events from an IBM MQ message queue using JMS. - required: - - serverName - - serverPort - - destinationName - - queueManager - - channel - - username - - password - type: object - properties: - serverName: - title: "IBM MQ Server name" - description: "IBM MQ Server name or address" - type: string - serverPort: - title: "IBM MQ Server Port" - description: "IBM MQ Server port" - type: integer - default: 1414 - destinationType: - title: "Destination Type" - description: "The JMS destination type (queue or topic)" - type: string - default: queue - destinationName: - title: "Destination Name" - description: "The destination name" - type: string - queueManager: - title: "IBM MQ Queue Manager" - description: "Name of the IBM MQ Queue Manager" - type: string - channel: - title: "IBM MQ Channel" - description: "Name of the IBM MQ Channel" - type: string - clientId: - title: "IBM MQ Client ID" - description: "Name of the IBM MQ Client ID" - type: string - username: - title: "Username" - description: "Username to authenticate to IBM MQ server" - type: string - password: - title: "Password" - description: "Password to authenticate to IBM MQ server" - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - dependencies: - - "camel:jms" - - "camel:kamelet" - - "mvn:com.ibm.mq:com.ibm.mq.allclient:9.2.5.0" - template: - beans: - - name: wmqConnectionFactory - type: "#class:com.ibm.mq.jms.MQConnectionFactory" - property: - - key: XMSC_WMQ_HOST_NAME - value: '{{serverName}}' - - key: XMSC_WMQ_PORT - value: '{{serverPort}}' - - key: XMSC_WMQ_CHANNEL - value: '{{channel}}' - - key: XMSC_WMQ_QUEUE_MANAGER - value: '{{queueManager}}' - - key: XMSC_WMQ_CONNECTION_MODE - value: 1 - - key: XMSC_USERID - value: '{{username}}' - - key: XMSC_PASSWORD - value: '{{password}}' - - key: XMSC_CLIENT_ID - value: '{{?clientId}}' - from: - uri: "jms:{{destinationType}}:{{destinationName}}" - parameters: - connectionFactory: "#bean:{{wmqConnectionFactory}}" - steps: - - to: - uri: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jslt-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/jslt-action.kamelet.yaml deleted file mode 100644 index 78e708d49..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jslt-action.kamelet.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: jslt-action - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" - labels: - camel.apache.org/kamelet.type: "action" -spec: - definition: - title: "JSLT Action" - description: |- - Apply a JSLT query or transformation on JSON. - required: - - template - type: object - properties: - template: - title: Template - description: The inline template for JSLT Transformation - type: string - example: "file://template.json" - pattern: "^(http|https|file|classpath)://.*" - dependencies: - - "camel:jslt" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - to: - uri: "jslt:" - parameters: - resourceUri: "{{template}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/json-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/json-deserialize-action.kamelet.yaml deleted file mode 100644 index aef4959cc..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/json-deserialize-action.kamelet.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: json-deserialize-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Json Deserialize Action" - description: "Deserialize payload to JSON" - type: object - dependencies: - - "camel:kamelet" - - "camel:core" - - "camel:jackson" - template: - from: - uri: kamelet:source - steps: - - unmarshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - remove-header: - name: "Content-Type" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/json-serialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/json-serialize-action.kamelet.yaml deleted file mode 100644 index c529cb5ce..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/json-serialize-action.kamelet.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: json-serialize-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Json Serialize Action" - description: "Serialize payload to JSON" - type: object - dependencies: - - "camel:kamelet" - - "camel:core" - - "camel:jackson" - template: - from: - uri: kamelet:source - steps: - - marshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - set-header: - name: "Content-Type" - constant: "application/json" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-manual-commit-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-manual-commit-action.kamelet.yaml deleted file mode 100644 index d52730c07..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-manual-commit-action.kamelet.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: kafka-manual-commit-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Kafka Manual Commit Action" - description: "Manually commit Kafka Offset" - type: object - dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - bean: "org.apache.camel.kamelets.utils.transform.kafka.ManualCommit" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/log-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/log-sink.kamelet.yaml deleted file mode 100644 index 845249820..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/log-sink.kamelet.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: log-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Logging" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Log Sink" - description: |- - A sink that logs all data that it receives, useful for debugging purposes. - type: object - properties: - showHeaders: - title: Show Headers - description: Show the headers received - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - showStreams: - title: Show Streams - description: Show the stream bodies (they may not be available in following steps) - type: boolean - default: true - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - dependencies: - - "camel:kamelet" - - "camel:log" - template: - from: - uri: "kamelet:source" - steps: - - to: - uri: "log:info" - parameters: - showHeaders: "{{?showHeaders}}" - showStreams: "{{?showStreams}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-source.kamelet.yaml deleted file mode 100644 index 3a8ea0c69..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-source.kamelet.yaml +++ /dev/null @@ -1,85 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: mongodb-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "MongoDB" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "MongoDB Source" - description: |- - Consume documents from MongoDB. - - If the persistentTailTracking option will be enabled, the consumer will keep track of the last consumed message and on the next restart, the consumption will restart from that message. In case of persistentTailTracking enabled, the tailTrackIncreasingField must be provided (by default it is optional). - - If the persistentTailTracking option won't be enabled, the consumer will consume the whole collection and wait in idle for new documents to consume. - required: - - hosts - - collection - - password - - username - - database - type: object - properties: - hosts: - title: MongoDB Hosts - description: Comma separated list of MongoDB Host Addresses in host:port format. - type: string - collection: - title: MongoDB Collection - description: Sets the name of the MongoDB collection to bind to this endpoint. - type: string - password: - title: MongoDB Password - description: User password for accessing MongoDB. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - username: - title: MongoDB Username - description: Username for accessing MongoDB. The username must be present in the MongoDB's authentication database (authenticationDatabase). By default, the MongoDB authenticationDatabase is 'admin'. - type: string - database: - title: MongoDB Database - description: Sets the name of the MongoDB database to target. - type: string - persistentTailTracking: - title: MongoDB Persistent Tail Tracking - description: Enable persistent tail tracking, which is a mechanism to keep track of the last consumed message across system restarts. The next time the system is up, the endpoint will recover the cursor from the point where it last stopped slurping records. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - tailTrackIncreasingField: - title: MongoDB Tail Track Increasing Field - description: Correlation field in the incoming record which is of increasing nature and will be used to position the tailing cursor every time it is generated. - type: string - dependencies: - - "camel:kamelet" - - "camel:mongodb" - - "camel:jackson" - template: - beans: - - name: local-mongodb - type: "#class:org.apache.camel.component.mongodb.MongoDbComponent" - from: - uri: "{{local-mongodb}}:test" - parameters: - hosts: "{{hosts}}" - collection: "{{collection}}" - password: "{{password}}" - username: "{{username}}" - database: "{{database}}" - persistentTailTracking: "{{persistentTailTracking}}" - tailTrackIncreasingField: "{{?tailTrackIncreasingField}}" - steps: - - marshal: - json: {} - - to: kamelet:sink 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 deleted file mode 100644 index 461202602..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml +++ /dev/null @@ -1,95 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: mysql-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmVyc2lvbj0iMSI+CiA8cmVjdCBmaWxsPSIjMjY1NTdjIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHg9Ii0zMCIgeT0iLTMwIiByeD0iMS40IiByeT0iMS40IiB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLC0xLDAsMCwwKSIvPgogPHBhdGggb3BhY2l0eT0iLjIiIGQ9Im04LjAyNTQgOC4wMDAxYy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43Mjk5IDAuODgyOCAxLjQ0MTkgMC42MzEyMiAwLjc5MDkgMC44ODUxNCAxLjIyMjcgMS4xNjAyIDEuOTcwNyAwLjQzMzYgMS4xNzkzIDAuNjM0MDMgMS41NzQ4IDAuOTg2MzMgMS45NDM0IDAuMjczNjYgMC4yODYzIDAuMjczNjkgMC4yODcxMiAwLjA4OTg0IDAuODcxMDktMC4yODUwNyAwLjkwNTU2LTAuMzQ0MDcgMi43MjA3LTAuMTE1MjMgMy41NzQyIDAuMzQyNDggMS4yNzc0IDAuNzY0MDIgMS44NTc0IDEuMzUxNiAxLjg1NzQgMC40MTk2OCAwIDAuNzYzNjQtMC4zNTA5MiAwLjg4NjcyLTAuOTA0MyAwLjA0MjY4LTAuMTkxODYgMC4xMjI0OS0wLjQ2NjA3IDAuMTc3NzMtMC42MDkzOCAwLjA5NTM1LTAuMjQ3MjggMC4xMjA5My0wLjIyODE4IDAuNDk0MTQgMC4zODA4NiAwLjIxNjI4IDAuMzUyOTYgMC42Mjg2NiAwLjg3ODYxIDAuOTE2MDIgMS4xNjggMC42NjM4IDAuNjY4NDUgMS41NzQ5IDEuNDIxNyAxLjY0MDYgMS4zNTc0IDAuMDI3NzUtMC4wMjcxMy0wLjIzOC0wLjQyMTc3LTAuNTg5ODQtMC44Nzg5MXMtMS4wMTUxLTEuNTE4OS0xLjQ3NDYtMi4zNTk0Yy0wLjUzNTkzLTAuOTgwMjktMC44OTk3LTEuNTI4Ni0xLjAxMzctMS41MjkzLTAuMzcwNDUtMC4wMDI1LTAuNzE1ODggMC41ODAwNC0wLjkxNjAyIDEuNTQ2OS0wLjIzMDU2IDEuMTEzOC0wLjYzNjc1IDAuOTI3MDgtMC45NjY4LTAuNDQ1MzEtMC4xOTAxOS0wLjc5MDg1LTAuMDkxMDYtMS44NTYgMC4yNjM2Ny0yLjg1MzUgMC4xNjEzNy0wLjQ1Mzc2IDAuMjkyOTctMC44NzM3MyAwLjI5Mjk3LTAuOTMxNjRzLTAuMjU3MzEtMC41NDM0OC0wLjU3MjI3LTEuMDgwMWMtMC4zMTUtMC41MzctMC42ODUxLTEuMjk3LTAuODIyLTEuNjktMC4zMzI2LTAuOTU0LTAuNDkwNS0xLjIzMi0xLjE1ODItMi4wNDMtMC42ODc5LTAuODM0Ni0wLjc1My0xLjIyMDMtMC4yMDUxLTEuMjE2NiAwLjQyNTU0IDAuMDAyODEgMS4xMTIzIDAuMjg5NDQgMS44MDI3IDAuNzUzOTEgMC40MzcxIDAuMjk0MDQgMC41ODUyMyAwLjMzMzk4IDEuMjg3MSAwLjMzMzk4IDAuODgxNDIgMCAxLjA3MDkgMC4wNzIyIDIuMjkzIDAuODc2OTUgMS4yNDQ1IDAuODE5NTggMi4xNzIyIDEuNTgxMyAyLjgxNDUgMi4zMTI1IDAuNTcwNCAwLjY0OTM3IDAuODgyMDEgMS4yMTM4IDIuNTYwNSA0LjY1NjIgMC42NDQzMyAxLjMyMTQgMS4yMTU4IDEuOTU5MyAyLjAwMzkgMi4yMzI0IDEuMjE3MyAwLjQyMTg1IDEuNjMxNyAwLjYxMzE0IDIuMTY4IDAuOTk4MDVsMC41NjY0MSAwLjQwNjI1LTAuMzgwODYgMC4wNzQyMmMtMC4yMTAzIDAuMDQwMzMtMC42Njg0NyAwLjEwNjE2LTEuMDE3NiAwLjE0NjQ4LTAuNzI3NDEgMC4wODQtMS4yMDMxIDAuMzg1NzMtMS4yMDMxIDAuNzYzNjcgMCAwLjQyNTkyIDEuNDUxMyAxLjY0NTMgMi45MDYyIDIuNDQxNCAwLjY5OTAzIDAuMzgyNDcgMS4zNzE2IDAuNzU5MjcgMS40OTQxIDAuODM3ODkgMC4zMjU5OCAwLjIwOTIyIDAuNDE0MjQgMC4xODM4OSAwLjMzMDA4LTAuMDkxOC0wLjE3NjI0LTAuNTc3MzgtMC43NzI3OS0xLjEzOTgtMi40Mjk3LTIuMjk0OS0wLjk3MTk3LTAuNjc3Ni0wLjk4MTk5LTAuNjUyNDQgMC4zMTY0MS0wLjc4MTI1IDAuOTI1LTAuMDkxIDEuMzkyLTAuMjQ5IDEuMzkyLTAuNDcyIDAtMC4xMDItMC40Ny0wLjY0NC0xLjA0NS0xLjIwMy0wLjktMC44NzYtMS4yMDQtMS4wOTQtMi4xOTUtMS41NzctMS4zNS0wLjY1Ni0xLjg0Mi0xLjE3Ny0yLjE1My0yLjI4My0wLjQ2NC0xLjY0OS0xLjcxMi0zLjU4Ny0zLjM3MS01LjIzLTEuNzEyLTEuNjk2LTMuMzQ3LTIuNjM0NC00Ljg0NS0yLjc4MTQtMC42MDktMC4wNTk4LTAuOTI0LTAuMTUyMi0xLjIzOS0wLjM2NTMtMC41MzMyLTAuMzYxMS0xLjc3MTctMC43Njg0LTIuMzc2Ni0wLjc4MTJ6bTIuOTYyOSAzLjAwMmMtMC4xMjI2Ni0wLjAwNzktMC4yMjk0NSAwLjAwODUtMC4zMDI3MyAwLjA1ODU5LTAuMjczNDEgMC4xODY5OS0wLjI0MDk5IDAuNDE1MDQgMC4wODAwOCAwLjU1NjY0IDAuMTUwOTIgMC4wNjY1NiAwLjM2NTAxIDAuMzAxNDcgMC40NzY1NiAwLjUyMTQ4IDAuMzc1MSAwLjczOTc4IDAuOTQ5ODUgMC4yNDQ1IDAuNjkzMzYtMC41OTc2Ni0wLjA4MDg1LTAuMjY1NDYtMC41NzkzLTAuNTE1NDctMC45NDcyNy0wLjUzOTA2eiIvPgogPHBhdGggZmlsbD0iI2ZmZiIgZD0ibTguMDI1NCA3Yy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43MzAyIDAuODgyOCAxLjQ0MTQgMC42MzEyIDAuNzkwNiAwLjg4NTIgMS4yMjI2IDEuMTYwMiAxLjk3MDYgMC40MzM2IDEuMTc5IDAuNjM0IDEuNTc1IDAuOTg1OSAxLjk0MyAwLjI3NCAwLjI4NyAwLjI3NCAwLjI4OCAwLjA5IDAuODcyLTAuMjg0OCAwLjkwNS0wLjM0MzggMi43Mi0wLjExNSAzLjU3NCAwLjM0MiAxLjI3NyAwLjc2NCAxLjg1NyAxLjM1MiAxLjg1NyAwLjQxOSAwIDAuNzYzLTAuMzUxIDAuODg2LTAuOTA0IDAuMDQzLTAuMTkyIDAuMTIzLTAuNDY2IDAuMTc4LTAuNjA5IDAuMDk1LTAuMjQ4IDAuMTIxLTAuMjI5IDAuNDk0IDAuMzggMC4yMTYgMC4zNTMgMC42MjkgMC44NzkgMC45MTYgMS4xNjggMC42NjQgMC42NjkgMS41NzUgMS40MjIgMS42NDEgMS4zNTggMC4wMjgtMC4wMjctMC4yMzgtMC40MjItMC41OS0wLjg3OXMtMS4wMTUtMS41MTktMS40NzUtMi4zNTljLTAuNTM2LTAuOTgxLTAuODk5LTEuNTI5LTEuMDEzLTEuNTMtMC4zNzEtMC4wMDItMC43MTYgMC41OC0wLjkxNiAxLjU0Ny0wLjIzMSAxLjExNC0wLjYzNyAwLjkyNy0wLjk2Ny0wLjQ0NS0wLjE5LTAuNzkxLTAuMDkxLTEuODU2IDAuMjY0LTIuODU0IDAuMTYxLTAuNDUzIDAuMjkzLTAuODczIDAuMjkzLTAuOTMxcy0wLjI1OC0wLjU0NC0wLjU3My0xLjA4Yy0wLjMxNS0wLjUzNy0wLjY4NTEtMS4yOTctMC44MjItMS42OS0wLjMzMjYtMC45NTQtMC40OTA1LTEuMjMyLTEuMTU4Mi0yLjA0MjktMC42ODc5LTAuODM0OC0wLjc1My0xLjIyMDQtMC4yMDUxLTEuMjE2OCAwLjQyNTUgMC4wMDI5IDEuMTEyMyAwLjI4OTUgMS44MDIzIDAuNzUzOSAwLjQzOCAwLjI5NDEgMC41ODYgMC4zMzQgMS4yODggMC4zMzQgMC44ODEgMCAxLjA3IDAuMDcyMiAyLjI5MyAwLjg3NyAxLjI0NCAwLjgxOTggMi4xNzIgMS41ODE4IDIuODE0IDIuMzEyOCAwLjU3IDAuNjQ5IDAuODgyIDEuMjE0IDIuNTYxIDQuNjU2IDAuNjQ0IDEuMzIxIDEuMjE1IDEuOTU5IDIuMDAzIDIuMjMyIDEuMjE4IDAuNDIyIDEuNjMyIDAuNjEzIDIuMTY4IDAuOTk4bDAuNTY3IDAuNDA3LTAuMzgxIDAuMDc0Yy0wLjIxIDAuMDQtMC42NjkgMC4xMDYtMS4wMTggMC4xNDYtMC43MjcgMC4wODQtMS4yMDMgMC4zODYtMS4yMDMgMC43NjQgMCAwLjQyNiAxLjQ1MSAxLjY0NSAyLjkwNiAyLjQ0MSAwLjcgMC4zODMgMS4zNzIgMC43NiAxLjQ5NSAwLjgzOCAwLjMyNiAwLjIxIDAuNDE0IDAuMTg0IDAuMzMtMC4wOTEtMC4xNzctMC41NzgtMC43NzMtMS4xNC0yLjQzLTIuMjk1LTAuOTcyLTAuNjc4LTAuOTgyLTAuNjUzIDAuMzE2LTAuNzgyIDAuOTI2LTAuMDkyIDEuMzkzLTAuMjUgMS4zOTMtMC40NzIgMC0wLjEwMi0wLjQ3LTAuNjQ0LTEuMDQ1LTEuMjAzLTAuOS0wLjg3Ny0xLjIwNC0xLjA5NC0yLjE5NS0xLjU3Ny0xLjM1LTAuNjU2LTEuODQyLTEuMTc3LTIuMTUzLTIuMjgzLTAuNDY0LTEuNjUtMS43MTItMy41ODctMy4zNzEtNS4yMy0xLjcxMi0xLjY5NjUtMy4zNDctMi42MzQ1LTQuODQ1LTIuNzgxNS0wLjYwOS0wLjA1OTgtMC45MjQtMC4xNTIyLTEuMjM5LTAuMzY1My0wLjUzMzItMC4zNjExLTEuNzcxNy0wLjc2ODQtMi4zNzY2LTAuNzgxMnptMi45NjI2IDMuMDAyYy0wLjEyMi0wLjAwNzktMC4yMjkgMC4wMDgtMC4zMDIgMC4wNTktMC4yNzQgMC4xODctMC4yNDEgMC40MTUgMC4wOCAwLjU1NiAwLjE1MSAwLjA2NyAwLjM2NSAwLjMwMiAwLjQ3NiAwLjUyMiAwLjM3NSAwLjczOSAwLjk1IDAuMjQ0IDAuNjk0LTAuNTk4LTAuMDgxLTAuMjY1LTAuNTgtMC41MTUtMC45NDgtMC41Mzl6Ii8+CiA8cGF0aCBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuMSIgZD0ibTMuNDAwNCAyYy0wLjc3NTYgMC0xLjQwMDQgMC42MjQ4LTEuNDAwNCAxLjQwMDR2MWMwLTAuNzc1NiAwLjYyNDgtMS40MDA0IDEuNDAwNC0xLjQwMDRoMjUuMmMwLjc3NSAwIDEuNCAwLjYyNDggMS40IDEuNDAwNHYtMWMwLTAuNzc1Ni0wLjYyNS0xLjQwMDQtMS40LTEuNDAwNGgtMjUuMnoiLz4KIDxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJtMiAyOC42djFjMCAwLjc3NSAwLjYyNDggMS40IDEuNDAwNCAxLjRoMjUuMmMwLjc3NSAwIDEuNC0wLjYyNSAxLjQtMS40di0xYzAgMC43NzUtMC42MjUgMS40LTEuNCAxLjRoLTI1LjJjLTAuNzc1MiAwLTEuNC0wLjYyNS0xLjQtMS40eiIvPgo8L3N2Zz4K" - camel.apache.org/provider: "Red Hat" - 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. - - 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: - title: Server Name - description: Server Name for the data source - type: string - example: localhost - serverPort: - title: Server Port - description: Server Port for the data source - type: string - default: 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 - - urn:camel:group:credentials - query: - 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 - type: string - types: - in: - mediaType: application/json - dependencies: - - "camel:jackson" - - "camel:kamelet" - - "camel:sql" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" - - "mvn:mysql:mysql-connector-java" - template: - 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}}:{{serverPort}}/{{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}}" 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 deleted file mode 100644 index 67f7381bf..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: predicate-filter-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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/' - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - - "camel:jsonpath" - template: - from: - uri: kamelet:source - steps: - - filter: - jsonpath: "$[?(!({{expression}}))]" - steps: - - stop: {} 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 deleted file mode 100644 index 3d6bedc5e..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: protobuf-deserialize-action - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" - - "camel:kamelet" - - "camel:core" - - "camel:jackson-protobuf" - template: - from: - uri: kamelet:source - steps: - - set-property: - name: schema - constant: "{{schema}}" - - unmarshal: - protobuf: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" - - remove-property: - name: schema - - remove-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 deleted file mode 100644 index 8320fccd6..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml +++ /dev/null @@ -1,46 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: protobuf-serialize-action - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" - - "camel:kamelet" - - "camel:core" - - "camel:jackson-protobuf" - template: - from: - uri: kamelet:source - steps: - - set-property: - name: schema - constant: "{{schema}}" - - marshal: - protobuf: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" - - remove-property: - name: schema - - set-header: - name: "Content-Type" - constant: "application/protobuf" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/regex-router-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/regex-router-action.kamelet.yaml deleted file mode 100644 index 14e80b7e4..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/regex-router-action.kamelet.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: regex-router-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Regex Router Action" - description: "Update the destination using the configured regular expression and replacement string" - required: - - regex - - replacement - properties: - regex: - title: Regex - description: Regular Expression for destination - type: string - replacement: - title: Replacement - description: Replacement when matching - type: string - type: object - dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" - - "camel:kamelet" - - "camel:core" - template: - from: - uri: kamelet:source - steps: - - set-property: - name: "regex" - constant: "{{regex}}" - - set-property: - name: "replacement" - constant: "{{replacement}}" - - bean: "org.apache.camel.kamelets.utils.transform.RegexRouter" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-hec-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-hec-sink.kamelet.yaml deleted file mode 100644 index a54360918..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-hec-sink.kamelet.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: splunk-hec-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3BsdW5rIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMy4zNDggMTEuOTExbC0yLjI0MS0xLjA5MXYtLjY1TDI0IDExLjYyMXYuNTkzbC0yLjg5MyAxLjQzOHYtLjYzNnptLTUuMzk3IDEuODQxaC0uOTYxdi01LjMxaC45NjF2My4xMTZoLjEwMmwxLjI4LTEuNDgxLjcyMy4zMS0xLjIzIDEuMzE2IDEuNDUzIDEuODA5LS44ODguMzExLTEuNDQtMS45OTZ6bS0yLjU3Ny0uMDAydi0yLjA2OGEyLjY4NSAyLjY4NSAwIDAgMC0uMDI2LS40Mi43OTEuNzkxIDAgMCAwLS4wOS0uMjZjLS4xMTMtLjIwMi0uMzA4LS4zMDQtLjU5LS4zMDRhLjg4OC44ODggMCAwIDAtLjQ2MS4xMTMuNjczLjY3MyAwIDAgMC0uMjg2LjMzIDEuMDEyIDEuMDEyIDAgMCAwLS4wNy4yNjNjLS4wMTIuMTMtLjAxOS4yNjItLjAxNy4zOTV2MS45NWgtLjk2MXYtMy42MTRoLjk2MWwuMDAyLjQ4NWMuMTg1LS4yLjM3My0uMzQ4LjU2Ni0uNDM3LjE5Mi0uMDg5LjQxOC0uMTM0LjY3My0uMTM0LjI4NiAwIC41MjcuMDU4LjcyMS4xNzdhMS4wMTYgMS4wMTYgMCAwIDEgLjQ3NS42NjUgMS45NzIgMS45NzIgMCAwIDEgLjA1NC40NDhjLjAwMi4xLjAwNC4yMi4wMDQuMzU4djIuMDUzem0tNC4xMTUuMDAybC0uMDAyLS40ODVhMS43ODMgMS43ODMgMCAwIDEtLjU2NS40MzcgMS41OTcgMS41OTcgMCAwIDEtLjY3NC4xMzVjLS4yODUgMC0uNTI0LS4wNTctLjcyLS4xN2EuOTcyLjk3MiAwIDAgMS0uNDI1LS41MDQuNzUuNzUgMCAwIDEtLjA1NC0uMTY3IDEuOTE4IDEuOTE4IDAgMCAxLS4wMzMtLjE5OSAyLjAzMyAyLjAzMyAwIDAgMS0uMDE3LS4yNTggMTUuNTE2IDE1LjUxNiAwIDAgMS0uMDA1LS4zNTVWMTAuMTNoLjk1NnYyLjA3Yy0uMDAzLjE0MS4wMDYuMjgyLjAyNi40Mi4wMTUuMDkyLjA0NS4xOC4wOS4yNi4xMTMuMjA0LjMwOC4zMDYuNTkuMzA2LjM2IDAgLjYwNi0uMTUuNzQtLjQ0OS4wMzUtLjA4Mi4wNi0uMTY4LjA3NC0uMjU3LjAxNy0uMTM0LjAyNC0uMjY5LjAyMi0uNDAzdi0xLjk1aC45NTV2My42MjR6TTcuMTg0IDguNDRoLjk1NXY1LjMxaC0uOTU1ek01Ljc1OSAxMS45YzAtLjM5Ni0uMDgtLjcwOC0uMjQtLjkzN2EuNzU5Ljc1OSAwIDAgMC0uNjU3LS4zNDUuODA0LjgwNCAwIDAgMC0uNjkzLjM2NmMtLjE3MS4yNDUtLjI1Ni41NzQtLjI1My45OSAwIC40MDUuMDg0LjcyMy4yNS45NTdhLjc5Ni43OTYgMCAwIDAgLjY5LjM0Ny42ODUuNjg1IDAgMCAwIC40MzMtLjEzNS45ODUuOTg1IDAgMCAwIC4yNzctLjM0Yy4wNzEtLjE0LjEyMS0uMjkyLjE0Ny0uNDQ4LjAzLS4xNTEuMDQzLS4zLjA0Ni0uNDU1bTEuMDEtLjAzNmMuMDAzLjI2Ni0uMDQuNTMyLS4xMjkuNzg2LS4wODIuMjMtLjIwNC40NDEtLjM2NC42MjYtLjMxLjM2MS0uNzY0LjU2Ny0xLjI0LjU2M2ExLjY3IDEuNjcgMCAwIDEtLjMxMy0uMDI4IDEuMDQxIDEuMDQxIDAgMCAxLS4yNzUtLjA5OCAxLjMzIDEuMzMgMCAwIDEtLjI1Ny0uMTc4IDIuMzc5IDIuMzc5IDAgMCAxLS4yNjUtLjI2OHYyLjI5M2gtLjkyOXYtNS40MjVoLjkzbC4wMDQuNTI5Yy4xNjktLjIxMi4zNTMtLjM2OC41NS0uNDY4LjE5Ny0uMS40MjYtLjE1LjY4OC0uMTQ3YTEuNTA5IDEuNTA5IDAgMCAxIDEuMTU2LjUwN2MuMTQ4LjE2Ni4yNTkuMzYxLjMzLjU3MS4wOC4yMzYuMTIuNDg1LjExNS43MzdtLTQuMjEuODlhLjk0Ni45NDYgMCAwIDEtLjEwMi40NDEgMS4wMDcgMS4wMDcgMCAwIDEtLjI4Mi4zNDVjLS4xMy4xLS4yNzUuMTczLS40My4yMmExLjggMS44IDAgMCAxLS41NDYuMDggMS45ODUgMS45ODUgMCAwIDEtLjYzNy0uMDk3IDEuOTY0IDEuOTY0IDAgMCAxLS41NjMtLjMybC4zMTItLjUwNWMuMTUuMTI2LjI4NC4yMTcuNDA1LjI3NS4xMTUuMDU3LjI0LjA4Ny4zNjguMDg3YS41NTcuNTU3IDAgMCAwIC4zNzMtLjEyLjM5Ni4zOTYgMCAwIDAgLjE0LS4zMjIuNDc1LjQ3NSAwIDAgMC0uMTItLjMxOCAxLjMwNiAxLjMwNiAwIDAgMC0uMTg3LS4xNzMgOS4yMzEgOS4yMzEgMCAwIDAtLjMwOC0uMjMyIDYuNzg3IDYuNzg3IDAgMCAxLS4yODEtLjIxIDIuMTEgMi4xMSAwIDAgMS0uMjUyLS4yMzIgMS4wMzkgMS4wMzkgMCAwIDEtLjE4LS4yNzUuODI2LjgyNiAwIDAgMS0uMDY5LS4zNDcuODkzLjg5MyAwIDAgMSAuMDk0LS40MDkuOTM1LjkzNSAwIDAgMSAuMjU1LS4zMTQgMS4yMiAxLjIyIDAgMCAxIC4zOS0uMjAzYy4xNi0uMDUuMzI3LS4wNzQuNDk0LS4wNzIuMTg0IDAgLjM2OC4wMjYuNTQ1LjA3Ni4xNzQuMDUuMzM4LjEyMy40ODguMjE5bC0uMjgyLjQ1NGExLjA1IDEuMDUgMCAwIDAtLjYwOC0uMjAxLjUwNC41MDQgMCAwIDAtLjMyMy4xMDIuMzA3LjMwNyAwIDAgMC0uMTI2LjI1M2MwIC4wOTguMDQxLjE5My4xMTMuMjYuMDc0LjA3OC4yMDMuMTg2LjM4NS4zMjUuMTg1LjEzNi4zMzYuMjUzLjQ1Ny4zNTUuMTA0LjA4NS4yMDIuMTgyLjI4Ni4yODYuMDY1LjA4LjExNS4xNzMuMTQ1LjI3M2EuODA4LjgwOCAwIDAgMSAuMDQ2LjI5OVoiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "SPLUNK" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Splunk HEC Sink" - description: |- - The Splunk HEC sink allows to send data to Splunk using the https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector[HTTP Event Collector]. - - required: - - splunkUrl - - token - type: object - properties: - splunkUrl: - title: Splunk URL - description: The URL of your Splunk server. No need to set the protocol prefix. - type: string - example: my_server.splunkcloud.com:8088 - token: - title: Token - description: The Token of the HEC. Note it is not the user's authentication token. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - hostPayload: - title: Host of the Event - description: The host field set in the data sent to Splunk, it is not related to the Splunk URL or the connection to Splunk server. - type: string - bodyOnly: - title: Body Only - description: Send to Splunk only data contained in the body. - type: boolean - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:checkbox - default: false - headersOnly: - title: Headers Only - description: Send to Splunk only data contained in the headers. - type: boolean - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:checkbox - default: false - index: - title: Index - description: Splunk index to write to. - type: string - source: - title: Source - description: The source named field of the data. - type: string - sourceType: - title: Source Type - description: The source named field of the data. - type: string - skipTlsVerify: - title: Skip TLS Verification - description: Skip TLS verification. - type: boolean - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:checkbox - default: false - https: - title: Secure - description: Use a secure HTTPS connection. - type: boolean - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:checkbox - default: true - time: - title: Time - description: Time this even occurred. By default, the time will be when this event hits the splunk server. - type: string - types: - in: - mediaType: application/json - dependencies: - - "camel:core" - - "camel:splunk-hec" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - to: - uri: "splunk-hec:{{splunkUrl}}/{{token}}" - parameters: - host: "{{?hostPayload}}" - bodyOnly: "{{?bodyOnly}}" - headersOnly: "{{?headersOnly}}" - index: "{{?index}}" - source: "{{?source}}" - sourceType: "{{?sourceType}}" - skipTlsVerify: "{{?skipTlsVerify}}" - https: "{{?https}}" - time: "{{?time}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-sink.kamelet.yaml deleted file mode 100644 index 5ab21cba5..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-sink.kamelet.yaml +++ /dev/null @@ -1,105 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: splunk-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3BsdW5rIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMy4zNDggMTEuOTExbC0yLjI0MS0xLjA5MXYtLjY1TDI0IDExLjYyMXYuNTkzbC0yLjg5MyAxLjQzOHYtLjYzNnptLTUuMzk3IDEuODQxaC0uOTYxdi01LjMxaC45NjF2My4xMTZoLjEwMmwxLjI4LTEuNDgxLjcyMy4zMS0xLjIzIDEuMzE2IDEuNDUzIDEuODA5LS44ODguMzExLTEuNDQtMS45OTZ6bS0yLjU3Ny0uMDAydi0yLjA2OGEyLjY4NSAyLjY4NSAwIDAgMC0uMDI2LS40Mi43OTEuNzkxIDAgMCAwLS4wOS0uMjZjLS4xMTMtLjIwMi0uMzA4LS4zMDQtLjU5LS4zMDRhLjg4OC44ODggMCAwIDAtLjQ2MS4xMTMuNjczLjY3MyAwIDAgMC0uMjg2LjMzIDEuMDEyIDEuMDEyIDAgMCAwLS4wNy4yNjNjLS4wMTIuMTMtLjAxOS4yNjItLjAxNy4zOTV2MS45NWgtLjk2MXYtMy42MTRoLjk2MWwuMDAyLjQ4NWMuMTg1LS4yLjM3My0uMzQ4LjU2Ni0uNDM3LjE5Mi0uMDg5LjQxOC0uMTM0LjY3My0uMTM0LjI4NiAwIC41MjcuMDU4LjcyMS4xNzdhMS4wMTYgMS4wMTYgMCAwIDEgLjQ3NS42NjUgMS45NzIgMS45NzIgMCAwIDEgLjA1NC40NDhjLjAwMi4xLjAwNC4yMi4wMDQuMzU4djIuMDUzem0tNC4xMTUuMDAybC0uMDAyLS40ODVhMS43ODMgMS43ODMgMCAwIDEtLjU2NS40MzcgMS41OTcgMS41OTcgMCAwIDEtLjY3NC4xMzVjLS4yODUgMC0uNTI0LS4wNTctLjcyLS4xN2EuOTcyLjk3MiAwIDAgMS0uNDI1LS41MDQuNzUuNzUgMCAwIDEtLjA1NC0uMTY3IDEuOTE4IDEuOTE4IDAgMCAxLS4wMzMtLjE5OSAyLjAzMyAyLjAzMyAwIDAgMS0uMDE3LS4yNTggMTUuNTE2IDE1LjUxNiAwIDAgMS0uMDA1LS4zNTVWMTAuMTNoLjk1NnYyLjA3Yy0uMDAzLjE0MS4wMDYuMjgyLjAyNi40Mi4wMTUuMDkyLjA0NS4xOC4wOS4yNi4xMTMuMjA0LjMwOC4zMDYuNTkuMzA2LjM2IDAgLjYwNi0uMTUuNzQtLjQ0OS4wMzUtLjA4Mi4wNi0uMTY4LjA3NC0uMjU3LjAxNy0uMTM0LjAyNC0uMjY5LjAyMi0uNDAzdi0xLjk1aC45NTV2My42MjR6TTcuMTg0IDguNDRoLjk1NXY1LjMxaC0uOTU1ek01Ljc1OSAxMS45YzAtLjM5Ni0uMDgtLjcwOC0uMjQtLjkzN2EuNzU5Ljc1OSAwIDAgMC0uNjU3LS4zNDUuODA0LjgwNCAwIDAgMC0uNjkzLjM2NmMtLjE3MS4yNDUtLjI1Ni41NzQtLjI1My45OSAwIC40MDUuMDg0LjcyMy4yNS45NTdhLjc5Ni43OTYgMCAwIDAgLjY5LjM0Ny42ODUuNjg1IDAgMCAwIC40MzMtLjEzNS45ODUuOTg1IDAgMCAwIC4yNzctLjM0Yy4wNzEtLjE0LjEyMS0uMjkyLjE0Ny0uNDQ4LjAzLS4xNTEuMDQzLS4zLjA0Ni0uNDU1bTEuMDEtLjAzNmMuMDAzLjI2Ni0uMDQuNTMyLS4xMjkuNzg2LS4wODIuMjMtLjIwNC40NDEtLjM2NC42MjYtLjMxLjM2MS0uNzY0LjU2Ny0xLjI0LjU2M2ExLjY3IDEuNjcgMCAwIDEtLjMxMy0uMDI4IDEuMDQxIDEuMDQxIDAgMCAxLS4yNzUtLjA5OCAxLjMzIDEuMzMgMCAwIDEtLjI1Ny0uMTc4IDIuMzc5IDIuMzc5IDAgMCAxLS4yNjUtLjI2OHYyLjI5M2gtLjkyOXYtNS40MjVoLjkzbC4wMDQuNTI5Yy4xNjktLjIxMi4zNTMtLjM2OC41NS0uNDY4LjE5Ny0uMS40MjYtLjE1LjY4OC0uMTQ3YTEuNTA5IDEuNTA5IDAgMCAxIDEuMTU2LjUwN2MuMTQ4LjE2Ni4yNTkuMzYxLjMzLjU3MS4wOC4yMzYuMTIuNDg1LjExNS43MzdtLTQuMjEuODlhLjk0Ni45NDYgMCAwIDEtLjEwMi40NDEgMS4wMDcgMS4wMDcgMCAwIDEtLjI4Mi4zNDVjLS4xMy4xLS4yNzUuMTczLS40My4yMmExLjggMS44IDAgMCAxLS41NDYuMDggMS45ODUgMS45ODUgMCAwIDEtLjYzNy0uMDk3IDEuOTY0IDEuOTY0IDAgMCAxLS41NjMtLjMybC4zMTItLjUwNWMuMTUuMTI2LjI4NC4yMTcuNDA1LjI3NS4xMTUuMDU3LjI0LjA4Ny4zNjguMDg3YS41NTcuNTU3IDAgMCAwIC4zNzMtLjEyLjM5Ni4zOTYgMCAwIDAgLjE0LS4zMjIuNDc1LjQ3NSAwIDAgMC0uMTItLjMxOCAxLjMwNiAxLjMwNiAwIDAgMC0uMTg3LS4xNzMgOS4yMzEgOS4yMzEgMCAwIDAtLjMwOC0uMjMyIDYuNzg3IDYuNzg3IDAgMCAxLS4yODEtLjIxIDIuMTEgMi4xMSAwIDAgMS0uMjUyLS4yMzIgMS4wMzkgMS4wMzkgMCAwIDEtLjE4LS4yNzUuODI2LjgyNiAwIDAgMS0uMDY5LS4zNDcuODkzLjg5MyAwIDAgMSAuMDk0LS40MDkuOTM1LjkzNSAwIDAgMSAuMjU1LS4zMTQgMS4yMiAxLjIyIDAgMCAxIC4zOS0uMjAzYy4xNi0uMDUuMzI3LS4wNzQuNDk0LS4wNzIuMTg0IDAgLjM2OC4wMjYuNTQ1LjA3Ni4xNzQuMDUuMzM4LjEyMy40ODguMjE5bC0uMjgyLjQ1NGExLjA1IDEuMDUgMCAwIDAtLjYwOC0uMjAxLjUwNC41MDQgMCAwIDAtLjMyMy4xMDIuMzA3LjMwNyAwIDAgMC0uMTI2LjI1M2MwIC4wOTguMDQxLjE5My4xMTMuMjYuMDc0LjA3OC4yMDMuMTg2LjM4NS4zMjUuMTg1LjEzNi4zMzYuMjUzLjQ1Ny4zNTUuMTA0LjA4NS4yMDIuMTgyLjI4Ni4yODYuMDY1LjA4LjExNS4xNzMuMTQ1LjI3M2EuODA4LjgwOCAwIDAgMSAuMDQ2LjI5OVoiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "SPLUNK" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Splunk Sink" - description: |- - Send data to Splunk either by using "submit" or "stream" mode. - - The payload MUST be in json format. - - required: - - serverHostname - - username - - password - type: object - properties: - serverHostname: - title: Splunk Server Address - description: The address of your Splunk server. - type: string - example: my_server_splunk.com - serverPort: - title: Splunk Server Port - description: The address of your Splunk server. - type: integer - default: 8089 - username: - title: Username - description: The username to authenticate to Splunk Server. - type: string - password: - title: Password - description: The password to authenticate to Splunk Server. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - index: - title: Index - description: Splunk index to write to. - type: string - protocol: - title: Protocol - description: Connection Protocol to Splunk server. - type: string - default: https - enum: ["http", "https"] - source: - title: Source - description: The source named field of the data. - type: string - sourceType: - title: Source Type - description: The source named field of the data. - type: string - app: - title: Splunk App - description: The app name in Splunk. - type: string - connectionTimeout: - title: Connection Timeout - description: Timeout in milliseconds when connecting to Splunk server - type: integer - default: 5000 - mode: - title: Mode - description: The mode to publish events to Splunk. - type: string - default: stream - enum: ["submit", "stream"] - types: - in: - mediaType: application/json - dependencies: - - "camel:core" - - "camel:splunk" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - to: - uri: "splunk:{{mode}}" - parameters: - host: "{{serverHostname}}" - port: "{{serverPort}}" - username: "{{username}}" - password: "{{password}}" - source: "{{?source}}" - sourceType: "{{?sourceType}}" - scheme: "{{?protocol}}" - index: "{{?index}}" - app: "{{?app}}" - connectionTimeout: "{{?connectionTimeout}}" - raw: true diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-source.kamelet.yaml deleted file mode 100644 index 8dfd15cef..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/splunk-source.kamelet.yaml +++ /dev/null @@ -1,143 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: splunk-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3BsdW5rIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMy4zNDggMTEuOTExbC0yLjI0MS0xLjA5MXYtLjY1TDI0IDExLjYyMXYuNTkzbC0yLjg5MyAxLjQzOHYtLjYzNnptLTUuMzk3IDEuODQxaC0uOTYxdi01LjMxaC45NjF2My4xMTZoLjEwMmwxLjI4LTEuNDgxLjcyMy4zMS0xLjIzIDEuMzE2IDEuNDUzIDEuODA5LS44ODguMzExLTEuNDQtMS45OTZ6bS0yLjU3Ny0uMDAydi0yLjA2OGEyLjY4NSAyLjY4NSAwIDAgMC0uMDI2LS40Mi43OTEuNzkxIDAgMCAwLS4wOS0uMjZjLS4xMTMtLjIwMi0uMzA4LS4zMDQtLjU5LS4zMDRhLjg4OC44ODggMCAwIDAtLjQ2MS4xMTMuNjczLjY3MyAwIDAgMC0uMjg2LjMzIDEuMDEyIDEuMDEyIDAgMCAwLS4wNy4yNjNjLS4wMTIuMTMtLjAxOS4yNjItLjAxNy4zOTV2MS45NWgtLjk2MXYtMy42MTRoLjk2MWwuMDAyLjQ4NWMuMTg1LS4yLjM3My0uMzQ4LjU2Ni0uNDM3LjE5Mi0uMDg5LjQxOC0uMTM0LjY3My0uMTM0LjI4NiAwIC41MjcuMDU4LjcyMS4xNzdhMS4wMTYgMS4wMTYgMCAwIDEgLjQ3NS42NjUgMS45NzIgMS45NzIgMCAwIDEgLjA1NC40NDhjLjAwMi4xLjAwNC4yMi4wMDQuMzU4djIuMDUzem0tNC4xMTUuMDAybC0uMDAyLS40ODVhMS43ODMgMS43ODMgMCAwIDEtLjU2NS40MzcgMS41OTcgMS41OTcgMCAwIDEtLjY3NC4xMzVjLS4yODUgMC0uNTI0LS4wNTctLjcyLS4xN2EuOTcyLjk3MiAwIDAgMS0uNDI1LS41MDQuNzUuNzUgMCAwIDEtLjA1NC0uMTY3IDEuOTE4IDEuOTE4IDAgMCAxLS4wMzMtLjE5OSAyLjAzMyAyLjAzMyAwIDAgMS0uMDE3LS4yNTggMTUuNTE2IDE1LjUxNiAwIDAgMS0uMDA1LS4zNTVWMTAuMTNoLjk1NnYyLjA3Yy0uMDAzLjE0MS4wMDYuMjgyLjAyNi40Mi4wMTUuMDkyLjA0NS4xOC4wOS4yNi4xMTMuMjA0LjMwOC4zMDYuNTkuMzA2LjM2IDAgLjYwNi0uMTUuNzQtLjQ0OS4wMzUtLjA4Mi4wNi0uMTY4LjA3NC0uMjU3LjAxNy0uMTM0LjAyNC0uMjY5LjAyMi0uNDAzdi0xLjk1aC45NTV2My42MjR6TTcuMTg0IDguNDRoLjk1NXY1LjMxaC0uOTU1ek01Ljc1OSAxMS45YzAtLjM5Ni0uMDgtLjcwOC0uMjQtLjkzN2EuNzU5Ljc1OSAwIDAgMC0uNjU3LS4zNDUuODA0LjgwNCAwIDAgMC0uNjkzLjM2NmMtLjE3MS4yNDUtLjI1Ni41NzQtLjI1My45OSAwIC40MDUuMDg0LjcyMy4yNS45NTdhLjc5Ni43OTYgMCAwIDAgLjY5LjM0Ny42ODUuNjg1IDAgMCAwIC40MzMtLjEzNS45ODUuOTg1IDAgMCAwIC4yNzctLjM0Yy4wNzEtLjE0LjEyMS0uMjkyLjE0Ny0uNDQ4LjAzLS4xNTEuMDQzLS4zLjA0Ni0uNDU1bTEuMDEtLjAzNmMuMDAzLjI2Ni0uMDQuNTMyLS4xMjkuNzg2LS4wODIuMjMtLjIwNC40NDEtLjM2NC42MjYtLjMxLjM2MS0uNzY0LjU2Ny0xLjI0LjU2M2ExLjY3IDEuNjcgMCAwIDEtLjMxMy0uMDI4IDEuMDQxIDEuMDQxIDAgMCAxLS4yNzUtLjA5OCAxLjMzIDEuMzMgMCAwIDEtLjI1Ny0uMTc4IDIuMzc5IDIuMzc5IDAgMCAxLS4yNjUtLjI2OHYyLjI5M2gtLjkyOXYtNS40MjVoLjkzbC4wMDQuNTI5Yy4xNjktLjIxMi4zNTMtLjM2OC41NS0uNDY4LjE5Ny0uMS40MjYtLjE1LjY4OC0uMTQ3YTEuNTA5IDEuNTA5IDAgMCAxIDEuMTU2LjUwN2MuMTQ4LjE2Ni4yNTkuMzYxLjMzLjU3MS4wOC4yMzYuMTIuNDg1LjExNS43MzdtLTQuMjEuODlhLjk0Ni45NDYgMCAwIDEtLjEwMi40NDEgMS4wMDcgMS4wMDcgMCAwIDEtLjI4Mi4zNDVjLS4xMy4xLS4yNzUuMTczLS40My4yMmExLjggMS44IDAgMCAxLS41NDYuMDggMS45ODUgMS45ODUgMCAwIDEtLjYzNy0uMDk3IDEuOTY0IDEuOTY0IDAgMCAxLS41NjMtLjMybC4zMTItLjUwNWMuMTUuMTI2LjI4NC4yMTcuNDA1LjI3NS4xMTUuMDU3LjI0LjA4Ny4zNjguMDg3YS41NTcuNTU3IDAgMCAwIC4zNzMtLjEyLjM5Ni4zOTYgMCAwIDAgLjE0LS4zMjIuNDc1LjQ3NSAwIDAgMC0uMTItLjMxOCAxLjMwNiAxLjMwNiAwIDAgMC0uMTg3LS4xNzMgOS4yMzEgOS4yMzEgMCAwIDAtLjMwOC0uMjMyIDYuNzg3IDYuNzg3IDAgMCAxLS4yODEtLjIxIDIuMTEgMi4xMSAwIDAgMS0uMjUyLS4yMzIgMS4wMzkgMS4wMzkgMCAwIDEtLjE4LS4yNzUuODI2LjgyNiAwIDAgMS0uMDY5LS4zNDcuODkzLjg5MyAwIDAgMSAuMDk0LS40MDkuOTM1LjkzNSAwIDAgMSAuMjU1LS4zMTQgMS4yMiAxLjIyIDAgMCAxIC4zOS0uMjAzYy4xNi0uMDUuMzI3LS4wNzQuNDk0LS4wNzIuMTg0IDAgLjM2OC4wMjYuNTQ1LjA3Ni4xNzQuMDUuMzM4LjEyMy40ODguMjE5bC0uMjgyLjQ1NGExLjA1IDEuMDUgMCAwIDAtLjYwOC0uMjAxLjUwNC41MDQgMCAwIDAtLjMyMy4xMDIuMzA3LjMwNyAwIDAgMC0uMTI2LjI1M2MwIC4wOTguMDQxLjE5My4xMTMuMjYuMDc0LjA3OC4yMDMuMTg2LjM4NS4zMjUuMTg1LjEzNi4zMzYuMjUzLjQ1Ny4zNTUuMTA0LjA4NS4yMDIuMTgyLjI4Ni4yODYuMDY1LjA4LjExNS4xNzMuMTQ1LjI3M2EuODA4LjgwOCAwIDAgMSAuMDQ2LjI5OVoiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "SPLUNK" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "Splunk Source" - description: |- - Retrieve data from Splunk and outputs in json format. - - For the fields accepting time specifiers like `earliestTime`, it accepts a wide variety of formats, please check https://docs.splunk.com/Documentation/Splunk/9.0.0/Search/Specifytimemodifiersinyoursearch[Splunk documentation] for more information. - - required: - - serverHostname - - username - - password - - query - - initEarliestTime - type: object - properties: - serverHostname: - title: Splunk Server Address - description: The address of your Splunk server. - type: string - example: my_server_splunk.com - serverPort: - title: Splunk Server Port - description: The address of your Splunk server. - type: integer - default: 8089 - username: - title: Username - description: The username to authenticate to Splunk Server. - type: string - password: - title: Password - description: The password to authenticate to Splunk Server. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - index: - title: Index - description: Splunk index to write to. - type: string - protocol: - title: Protocol - description: Connection Protocol to Splunk server. - type: string - default: https - enum: ["http", "https"] - source: - title: Source - description: The source named field of the data. - type: string - sourceType: - title: Source Type - description: The source named field of the data. - type: string - app: - title: Splunk App - description: The app name in Splunk. - type: string - connectionTimeout: - title: Connection Timeout - description: Timeout in milliseconds when connecting to Splunk server - type: integer - count: - title: Count - description: The maximum number of entities to return. - type: integer - repeat: - title: Repeat - description: The maximum number of fires. - type: integer - delay: - title: Delay - description: Milliseconds before the next poll. - type: integer - query: - title: Query - description: The Splunk query to run. - type: string - earliestTime: - title: Earliest Time - description: Earliest time of the search time window. - type: string - example: "05/17/22 08:35:46:456" - initEarliestTime: - title: Init Earliest Time - description: Initial start offset of the first search. - type: string - example: "05/17/22 08:35:46:456" - latestTime: - title: Latest Time - description: Latest time of the search time window. - type: string - example: "05/17/22 08:35:46:456" - types: - out: - mediaType: application/json - dependencies: - - "camel:jackson" - - "camel:core" - - "camel:splunk" - - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" - template: - from: - uri: "splunk:normal" - parameters: - host: "{{serverHostname}}" - port: "{{serverPort}}" - username: "{{username}}" - password: "{{password}}" - index: "{{?index}}" - scheme: "{{?protocol}}" - source: "{{?source}}" - sourceType: "{{?sourceType}}" - app: "{{?app}}" - connectionTimeout: "{{?connectionTimeout}}" - count: "{{?count}}" - repeatCount: "{{?repeat}}" - delay: "{{?delay}}" - search: "{{?query}}" - earliestTime: "{{?earliestTime}}" - initEarliestTime: "{{initEarliestTime}}" - latestTime: "{{?latestTime}}" - raw: true - steps: - - marshal: - json: - library: Jackson - module-class-names: com.fasterxml.jackson.datatype.joda.JodaModule - - to: "kamelet:sink" 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 deleted file mode 100644 index 96da7f9e8..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml +++ /dev/null @@ -1,34 +0,0 @@ -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/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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" - template: - from: - uri: kamelet:source - steps: - - filter: - simple: "${header[kafka.TOPIC]} !regex '{{regex}}'" - steps: - - stop: {} diff --git a/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java b/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java index e8f8a05c7..e61066fe4 100644 --- a/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java +++ b/library/camel-kamelets-catalog/src/test/java/org/apache/camel/kamelets/catalog/KameletsCatalogTest.java @@ -16,21 +16,20 @@ */ package org.apache.camel.kamelets.catalog; -import io.fabric8.camelk.v1alpha1.Kamelet; -import io.fabric8.kubernetes.api.model.apiextensions.v1.JSONSchemaProps; -import io.github.classgraph.ClassGraph; +import java.util.List; +import java.util.Map; + +import io.github.classgraph.ClassGraph; import org.apache.camel.kamelets.catalog.model.KameletTypeEnum; +import org.apache.camel.tooling.model.ComponentModel; +import org.apache.camel.v1.Kamelet; +import org.apache.camel.v1.kameletspec.Definition; +import org.apache.camel.v1.kameletspec.Template; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.util.List; -import java.util.Map; +import static org.junit.jupiter.api.Assertions.*; public class KameletsCatalogTest { static KameletsCatalog catalog; @@ -43,39 +42,39 @@ public static void createKameletsCatalog() { @Test void testGetKameletsName() throws Exception { List names = catalog.getKameletsName(); - assertTrue(!names.isEmpty()); + assertFalse(names.isEmpty()); } @Test void testGetKamelets() throws Exception { Map kamelets = catalog.getKamelets(); - assertTrue(!kamelets.isEmpty()); + assertFalse(kamelets.isEmpty()); } @Test void testGetKameletsDefinition() throws Exception { - JSONSchemaProps props = catalog.getKameletDefinition("aws-sqs-source"); - assertEquals(7, props.getProperties().keySet().size()); - assertTrue(props.getProperties().keySet().contains("queueNameOrArn")); + Definition props = catalog.getKameletDefinition("aws-sqs-source"); + assertEquals(14, props.getProperties().keySet().size()); + assertTrue(props.getProperties().containsKey("queueNameOrArn")); } @Test - void testGetKameletsRequiredProperties() throws Exception { + void testGetKameletsRequiredProperties() { List props = catalog.getKameletRequiredProperties("aws-sqs-source"); - assertEquals(4, props.size()); + assertEquals(2, props.size()); assertTrue(props.contains("queueNameOrArn")); } @Test void testGetKameletsDefinitionNotExists() throws Exception { - JSONSchemaProps props = catalog.getKameletDefinition("word"); + Definition props = catalog.getKameletDefinition("word"); assertNull(props); } @Test void testGetKameletsByProvider() throws Exception { List c = catalog.getKameletByProvider("Red Hat"); - assertTrue(!c.isEmpty()); + assertFalse(c.isEmpty()); c = catalog.getKameletByProvider("Eclipse"); assertTrue(c.isEmpty()); } @@ -83,19 +82,28 @@ void testGetKameletsByProvider() throws Exception { @Test void testGetKameletsByType() throws Exception { List c = catalog.getKameletsByType(KameletTypeEnum.SOURCE.type()); - assertTrue(!c.isEmpty()); + assertFalse(c.isEmpty()); c = catalog.getKameletsByType(KameletTypeEnum.SINK.type()); - assertTrue(!c.isEmpty()); + assertFalse(c.isEmpty()); c = catalog.getKameletsByType(KameletTypeEnum.ACTION.type()); - assertTrue(!c.isEmpty()); + assertFalse(c.isEmpty()); } @Test void testGetKameletsByGroup() throws Exception { List c = catalog.getKameletsByGroups("AWS S3"); - assertTrue(!c.isEmpty()); + assertFalse(c.isEmpty()); c = catalog.getKameletsByGroups("AWS SQS"); - assertTrue(!c.isEmpty()); + assertFalse(c.isEmpty()); + c = catalog.getKameletsByGroups("Not-existing-group"); + assertTrue(c.isEmpty()); + } + + @Test + void testGetKameletsByNamespace() throws Exception { + List c = catalog.getKameletsByNamespace("AWS"); + assertFalse(c.isEmpty()); + assertEquals(25, c.size()); c = catalog.getKameletsByGroups("Not-existing-group"); assertTrue(c.isEmpty()); } @@ -106,11 +114,12 @@ void testGetKameletsDependencies() throws Exception { assertEquals(4, deps.size()); deps = catalog.getKameletDependencies("cassandra-sink"); assertEquals(3, deps.size()); + assertEquals("camel:jackson", deps.get(0)); } @Test void testGetKameletsTemplate() throws Exception { - Map template = catalog.getKameletTemplate("aws-sqs-source"); + Template template = catalog.getKameletTemplate("aws-sqs-source"); assertNotNull(template); } @@ -124,4 +133,137 @@ void testAllKameletFilesLoaded() throws Exception { void testAllKameletDependencies() throws Exception { catalog.getAllKameletDependencies(); } + + @Test + void testSupportedHeaders() throws Exception { + verifyHeaders("aws-s3-source", 20); + verifyHeaders("aws-s3-sink", 27); + verifyHeaders("aws-cloudtrail-source", 0); + verifyHeaders("aws-redshift-source", 0); + verifyHeaders("aws-not-exists", 0); + verifyHeaders("azure-eventhubs-sink", 2); + verifyHeaders("azure-functions-sink", 8); + verifyHeaders("azure-servicebus-source", 22); + verifyHeaders("azure-storage-blob-source", 34); + verifyHeaders("azure-storage-blob-sink", 33); + verifyHeaders("azure-storage-blob-changefeed-source", 34); + verifyHeaders("azure-storage-queue-source", 6); + verifyHeaders("azure-storage-queue-sink", 16); + verifyHeaders("cassandra-sink", 1); + verifyHeaders("cassandra-source", 1); + verifyHeaders("couchbase-sink", 2); + verifyHeaders("dropbox-source", 0); + verifyHeaders("dropbox-source", 0); + verifyHeaders("elasticsearch-index-sink", 10); + verifyHeaders("elasticsearch-search-source", 10); + verifyHeaders("exec-sink", 0); + verifyHeaders("fhir-source", 0); + verifyHeaders("file-watch-source", 10); + verifyHeaders("ftp-source", 10); + verifyHeaders("ftp-sink", 8); + verifyHeaders("ftps-source", 10); + verifyHeaders("ftps-sink", 8); + verifyHeaders("github-commit-source", 7); + verifyHeaders("github-event-source", 7); + verifyHeaders("github-pullrequest-comment-source", 7); + verifyHeaders("github-pullrequest-source", 7); + verifyHeaders("github-tag-source", 7); + verifyHeaders("google-bigquery-sink", 4); + verifyHeaders("google-calendar-source", 1); + verifyHeaders("google-functions-sink", 5); + verifyHeaders("google-mail-source", 6); + verifyHeaders("google-pubsub-sink", 3); + verifyHeaders("google-pubsub-source", 4); + verifyHeaders("google-sheets-source", 6); + verifyHeaders("google-storage-source", 20); + verifyHeaders("google-storage-sink", 13); + verifyHeaders("http-source", 5); + verifyHeaders("http-sink", 14); + verifyHeaders("http-secured-source", 5); + verifyHeaders("http-secured-sink", 14); + verifyHeaders("infinispan-source", 6); + verifyHeaders("infinispan-sink", 14); + verifyHeaders("jira-add-comment-sink", 17); + verifyHeaders("jira-add-issue-sink", 17); + verifyHeaders("jira-source", 3); + verifyHeaders("jira-oauth-source", 3); + verifyHeaders("jms-amqp-10-source", 14); + verifyHeaders("jms-amqp-10-sink", 17); + verifyHeaders("jms-apache-artemis-source", 14); + verifyHeaders("jms-apache-artemis-sink", 17); + verifyHeaders("jms-ibm-mq-source", 14); + verifyHeaders("jms-ibm-mq-sink", 17); + verifyHeaders("kafka-source", 9); + verifyHeaders("kafka-sink", 5); + verifyHeaders("kafka-ssl-source", 9); + verifyHeaders("kafka-ssl-sink", 5); + verifyHeaders("kafka-not-secured-source", 9); + verifyHeaders("kafka-not-secured-sink", 5); + verifyHeaders("kubernetes-namespaces-source", 2); + verifyHeaders("kubernetes-nodes-source", 2); + verifyHeaders("kubernetes-pods-source", 2); + verifyHeaders("log-sink", 0); + verifyHeaders("mail-source", 0); + verifyHeaders("mail-sink", 8); + verifyHeaders("mariadb-source", 0); + verifyHeaders("mariadb-sink", 8); + verifyHeaders("minio-source", 14); + verifyHeaders("minio-sink", 22); + verifyHeaders("mongodb-changes-stream-source", 3); + verifyHeaders("mongodb-sink", 12); + verifyHeaders("mongodb-source", 3); + verifyHeaders("mqtt-sink", 3); + verifyHeaders("mqtt-source", 2); + verifyHeaders("mqtt5-sink", 3); + verifyHeaders("mqtt5-source", 2); + verifyHeaders("mysql-sink", 8); + verifyHeaders("mysql-source", 0); + verifyHeaders("nats-sink", 5); + verifyHeaders("nats-source", 5); + verifyHeaders("oracle-database-sink", 8); + verifyHeaders("oracle-database-source", 0); + verifyHeaders("postgresql-sink", 8); + verifyHeaders("postgresql-source", 0); + verifyHeaders("pulsar-sink", 4); + verifyHeaders("pulsar-source", 11); + verifyHeaders("redis-sink", 29); + verifyHeaders("redis-source", 28); + verifyHeaders("rest-openapi-sink", 0); + verifyHeaders("salesforce-create-sink", 1); + verifyHeaders("salesforce-delete-sink", 1); + verifyHeaders("salesforce-update-sink", 1); + verifyHeaders("salesforce-source", 19); + verifyHeaders("scp-sink", 0); + verifyHeaders("sftp-sink", 8); + verifyHeaders("sftp-source", 10); + verifyHeaders("slack-sink", 0); + verifyHeaders("slack-source", 0); + verifyHeaders("splunk-hec-sink", 1); + verifyHeaders("splunk-sink", 0); + verifyHeaders("splunk-source", 0); + verifyHeaders("sqlserver-sink", 8); + verifyHeaders("sqlserver-source", 0); + verifyHeaders("ssh-sink", 4); + verifyHeaders("ssh-source", 4); + verifyHeaders("telegram-sink", 6); + verifyHeaders("telegram-source", 5); + verifyHeaders("timer-source", 2); + verifyHeaders("twitter-directmessage-source", 2); + verifyHeaders("twitter-timeline-source", 1); + verifyHeaders("twitter-search-source", 7); + verifyHeaders("webhook-source", 0); + verifyHeaders("wttrin-source", 5); + } + + void verifyHeaders(String name, int expected) { + List headers = catalog.getKameletSupportedHeaders(name); + assertEquals(expected, headers.size()); + } + + @Test + void testGetKameletScheme() throws Exception { + assertEquals("aws2-s3", catalog.getKameletScheme("aws-s3")); + assertEquals("aws2-sqs", catalog.getKameletScheme("aws-sqs")); + assertNull(catalog.getKameletScheme("not-known")); + } } diff --git a/library/camel-kamelets-catalog/src/test/resources/log4j2-test.xml b/library/camel-kamelets-catalog/src/test/resources/log4j2-test.xml new file mode 100644 index 000000000..5b99f8cea --- /dev/null +++ b/library/camel-kamelets-catalog/src/test/resources/log4j2-test.xml @@ -0,0 +1,19 @@ + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%t] %c{1} - %msg%n + + + + + + + + + \ No newline at end of file diff --git a/library/camel-kamelets-utils/pom.xml b/library/camel-kamelets-utils/pom.xml index de10e9022..747ac69ce 100644 --- a/library/camel-kamelets-utils/pom.xml +++ b/library/camel-kamelets-utils/pom.xml @@ -24,7 +24,7 @@ org.apache.camel.kamelets camel-kamelets-parent - 2.2.0 + 2.2.0-SNAPSHOT ../../pom.xml @@ -34,10 +34,6 @@ Camel Kamelets Utils Camel Kamelets Utilities - - 2.13.1 - - @@ -47,6 +43,13 @@ pom import + + ${quarkus-platform-group} + quarkus-camel-bom + ${quarkus-platform-version} + pom + import + @@ -59,66 +62,74 @@ org.apache.camel.quarkus camel-quarkus-jackson-protobuf - ${camel-quarkus-version} org.apache.camel.quarkus camel-quarkus-jackson - ${camel-quarkus-version} org.apache.camel.quarkus camel-quarkus-jackson-avro - ${camel-quarkus-version} org.apache.camel.quarkus camel-quarkus-kafka - ${camel-quarkus-version} - + org.apache.camel camel-aws2-ddb provided + + org.apache.camel + camel-aws2-s3 + provided + + + + + org.apache.camel + camel-mongodb + provided + org.junit.jupiter junit-jupiter-api test - ${junit.jupiter.version} + ${junit-jupiter-version} org.junit.jupiter junit-jupiter-engine test - ${junit.jupiter.version} + ${junit-jupiter-version} org.apache.logging.log4j log4j-api - ${log4j.version} + ${log4j2-version} test org.apache.logging.log4j log4j-core - ${log4j.version} + ${log4j2-version} test org.apache.logging.log4j log4j-slf4j-impl - ${log4j.version} + ${log4j2-version} test diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/MimeType.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/MimeType.java new file mode 100644 index 000000000..7c2054395 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/MimeType.java @@ -0,0 +1,53 @@ +/* + * 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.format; + +import java.util.Objects; + +public enum MimeType { + JSON("application/json"), + PROTOBUF("application/protobuf"), + AVRO("application/avro"), + AVRO_BINARY("avro/binary"), + AVRO_STRUCT("avro/x-struct"), + BINARY("application/octet-stream"), + TEXT("text/plain"), + JAVA_OBJECT("application/x-java-object"), + STRUCT("application/x-struct"); + + private static final MimeType[] VALUES = values(); + private final String type; + + MimeType(String type) { + this.type = type; + } + + public String type() { + return type; + } + + public static MimeType of(String type) { + for (MimeType mt : VALUES) { + if (Objects.equals(type, mt.type)) { + return mt; + } + } + + throw new IllegalArgumentException("Unsupported type: " + type); + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/SchemaType.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/SchemaType.java new file mode 100644 index 000000000..10fa2c58f --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/SchemaType.java @@ -0,0 +1,49 @@ +/* + * 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.format; + +import java.util.Arrays; +import java.util.Objects; + +/** + * Supported schema type for Java object serialization/deserialization + */ +public enum SchemaType { + PROTOBUF("protobuf"), + AVRO("avsc"), + JSON("json"); + + private static final SchemaType[] VALUES = values(); + + private final String schemaType; + + SchemaType(String type) { + this.schemaType = type; + } + + public String type() { + return schemaType; + } + + public static SchemaType of(String type) { + return Arrays.stream(VALUES) + .filter(s -> Objects.equals(s.schemaType, type)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException(String.format("Unsupported schema type '%s'", type))); + } +} 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/format/converter/avro/Avro.java similarity index 52% rename from library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightAvroSchemaResolver.java rename to library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/Avro.java index a75df4d12..cfadf972b 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/format/converter/avro/Avro.java @@ -14,24 +14,16 @@ * 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; -import com.fasterxml.jackson.dataformat.avro.AvroSchema; +package org.apache.camel.kamelets.utils.format.converter.avro; -import org.apache.avro.Schema; -import org.apache.camel.Exchange; -import org.apache.camel.component.jackson.SchemaResolver; +import com.fasterxml.jackson.dataformat.avro.AvroMapper; -public class InflightAvroSchemaResolver implements SchemaResolver { +public final class Avro { - @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; - } + public static final AvroMapper MAPPER = new AvroMapper(); + private Avro() { + // prevent instantiation of utility class + } } diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroBinaryDataType.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroBinaryDataType.java new file mode 100644 index 000000000..de468e1b4 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroBinaryDataType.java @@ -0,0 +1,83 @@ +/* + * 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.format.converter.avro; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.dataformat.avro.AvroSchema; +import org.apache.camel.CamelExecutionException; +import org.apache.camel.Exchange; +import org.apache.camel.InvalidPayloadException; +import org.apache.camel.Message; +import org.apache.camel.kamelets.utils.format.MimeType; +import org.apache.camel.kamelets.utils.format.converter.utils.SchemaHelper; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.DataTypeTransformer; +import org.apache.camel.spi.Transformer; + +/** + * Data type uses Jackson Avro data format to marshal given JsonNode in Exchange body to a binary (byte array) representation. + * Uses given Avro schema from the Exchange properties when marshalling the payload (usually already resolved via schema + * resolver Kamelet action). + */ +@DataTypeTransformer(name = "avro-binary") +public class AvroBinaryDataType extends Transformer { + + @Override + public void transform(Message message, DataType fromType, DataType toType) { + AvroSchema schema = message.getExchange().getProperty(SchemaHelper.CONTENT_SCHEMA, AvroSchema.class); + + if (schema == null) { + throw new CamelExecutionException("Missing proper avro schema for data type processing", message.getExchange()); + } + + try { + byte[] marshalled = Avro.MAPPER.writer().forType(JsonNode.class).with(schema) + .writeValueAsBytes(getBodyAsJsonNode(message, schema)); + message.setBody(marshalled); + + message.setHeader(Exchange.CONTENT_TYPE, MimeType.AVRO_BINARY.type()); + message.setHeader(SchemaHelper.CONTENT_SCHEMA, + message.getExchange().getProperty(SchemaHelper.CONTENT_SCHEMA, "", String.class)); + } catch (InvalidPayloadException | IOException e) { + throw new CamelExecutionException("Failed to apply Avro binary data type on exchange", message.getExchange(), e); + } + } + + private JsonNode getBodyAsJsonNode(Message message, AvroSchema schema) throws InvalidPayloadException, IOException { + if (message.getBody() instanceof JsonNode) { + return (JsonNode) message.getBody(); + } + + return Avro.MAPPER.reader().forType(JsonNode.class).with(schema) + .readValue(getBodyAsStream(message)); + } + + private InputStream getBodyAsStream(Message message) throws InvalidPayloadException { + InputStream bodyStream = message.getBody(InputStream.class); + + if (bodyStream == null) { + bodyStream = new ByteArrayInputStream(message.getMandatoryBody(byte[].class)); + } + + return bodyStream; + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroSchemaResolver.java new file mode 100644 index 000000000..e6a71ad0c --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroSchemaResolver.java @@ -0,0 +1,160 @@ +/* + * 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.format.converter.avro; + +import java.io.InputStream; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +import com.fasterxml.jackson.core.FormatSchema; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.dataformat.avro.AvroSchema; +import org.apache.avro.Schema; +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.apache.camel.component.jackson.SchemaResolver; +import org.apache.camel.kamelets.utils.format.SchemaType; +import org.apache.camel.kamelets.utils.format.converter.utils.SchemaHelper; +import org.apache.camel.spi.Resource; +import org.apache.camel.support.PluginHelper; +import org.apache.camel.util.ObjectHelper; + +public class AvroSchemaResolver implements SchemaResolver, Processor { + private final ConcurrentMap schemes; + + private AvroSchema schema; + private String contentClass; + + private boolean validate = true; + + public AvroSchemaResolver() { + this.schemes = new ConcurrentHashMap<>(); + } + + public String getSchema() { + if (this.schema != null) { + return this.schema.getAvroSchema().toString(); + } + + return null; + } + + public void setSchema(String schema) { + if (ObjectHelper.isNotEmpty(schema)) { + this.schema = new AvroSchema(new Schema.Parser().setValidate(validate).parse(schema)); + } else { + this.schema = null; + } + } + + public boolean isValidate() { + return validate; + } + + public void setValidate(boolean validate) { + this.validate = validate; + } + + public String getContentClass() { + return contentClass; + } + + public void setContentClass(String contentClass) { + if (ObjectHelper.isNotEmpty(contentClass)) { + this.contentClass = contentClass; + } else { + this.contentClass = null; + } + } + + @Override + public void process(Exchange exchange) throws Exception { + Object payload = exchange.getMessage().getBody(); + if (payload == null) { + return; + } + + AvroSchema answer = computeIfAbsent(exchange); + + if (answer != null) { + exchange.setProperty(SchemaHelper.CONTENT_SCHEMA, answer); + exchange.setProperty(SchemaHelper.CONTENT_SCHEMA_TYPE, SchemaType.AVRO.type()); + exchange.setProperty(SchemaHelper.CONTENT_CLASS, SchemaHelper.resolveContentClass(exchange, this.contentClass)); + } + } + + @Override + public FormatSchema resolve(Exchange exchange) { + AvroSchema answer = exchange.getProperty(SchemaHelper.CONTENT_SCHEMA, AvroSchema.class); + if (answer == null) { + answer = computeIfAbsent(exchange); + } + + return answer; + } + + private AvroSchema computeIfAbsent(Exchange exchange) { + if (this.schema != null) { + return this.schema; + } + + AvroSchema answer = exchange.getProperty(SchemaHelper.CONTENT_SCHEMA, AvroSchema.class); + + if (answer == null && exchange.getProperties().containsKey(SchemaHelper.SCHEMA)) { + String schemaJson = exchange.getProperty(SchemaHelper.SCHEMA, String.class); + Schema raw = new Schema.Parser().setValidate(validate).parse(schemaJson); + answer = new AvroSchema(raw); + } + + if (answer == null) { + String contentClass = SchemaHelper.resolveContentClass(exchange, this.contentClass); + if (contentClass != null) { + answer = this.schemes.computeIfAbsent(contentClass, t -> { + Resource res = PluginHelper.getResourceLoader(exchange.getContext()) + .resolveResource("classpath:schemas/" + SchemaType.AVRO.type() + "/" + t + "." + SchemaType.AVRO.type()); + + try { + if (res.exists()) { + try (InputStream is = res.getInputStream()) { + if (is != null) { + return Avro.MAPPER.schemaFrom(is); + } + } + } + } catch (Exception e) { + throw new RuntimeException( + "Unable to load Avro schema for type: " + t + ", resource: " + res.getLocation(), e); + } + + try { + return Avro.MAPPER.schemaFor(Class.forName(contentClass)); + } catch (JsonMappingException | ClassNotFoundException e) { + throw new RuntimeException( + "Unable to compute Avro schema for type: " + t, e); + } + }); + } + } + + if (answer != null) { + this.schema = answer; + } + + return answer; + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroStructDataType.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroStructDataType.java new file mode 100644 index 000000000..4186d8c16 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/avro/AvroStructDataType.java @@ -0,0 +1,72 @@ +/* + * 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.format.converter.avro; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.dataformat.avro.AvroSchema; +import org.apache.camel.CamelExecutionException; +import org.apache.camel.Exchange; +import org.apache.camel.InvalidPayloadException; +import org.apache.camel.Message; +import org.apache.camel.kamelets.utils.format.MimeType; +import org.apache.camel.kamelets.utils.format.converter.utils.SchemaHelper; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.DataTypeTransformer; +import org.apache.camel.spi.Transformer; + +/** + * Data type uses Avro Jackson data format to unmarshal Exchange body to generic JsonNode. + * Uses given Avro schema from the Exchange properties when unmarshalling the payload (usually already resolved via schema + * resolver Kamelet action). + */ +@DataTypeTransformer(name = "avro-x-struct") +public class AvroStructDataType extends Transformer { + + @Override + public void transform(Message message, DataType fromType, DataType toType) { + AvroSchema schema = message.getExchange().getProperty(SchemaHelper.CONTENT_SCHEMA, AvroSchema.class); + + if (schema == null) { + throw new CamelExecutionException("Missing proper avro schema for data type processing", message.getExchange()); + } + + try { + Object unmarshalled = Avro.MAPPER.reader().forType(JsonNode.class).with(schema) + .readValue(getBodyAsStream(message)); + message.setBody(unmarshalled); + + message.setHeader(Exchange.CONTENT_TYPE, MimeType.STRUCT.type()); + } catch (InvalidPayloadException | IOException e) { + throw new CamelExecutionException("Failed to apply Avro x-struct data type on exchange", message.getExchange(), e); + } + } + + private InputStream getBodyAsStream(Message message) throws InvalidPayloadException { + InputStream bodyStream = message.getBody(InputStream.class); + + if (bodyStream == null) { + bodyStream = new ByteArrayInputStream(message.getMandatoryBody(byte[].class)); + } + + return bodyStream; + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverter.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/aws2/ddb/Ddb2JsonInputType.java similarity index 58% rename from library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverter.java rename to library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/aws2/ddb/Ddb2JsonInputType.java index c5098c1c6..b9b20f3fd 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverter.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/aws2/ddb/Ddb2JsonInputType.java @@ -14,22 +14,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.kamelets.utils.transform.aws.ddb; +package org.apache.camel.kamelets.utils.format.converter.aws2.ddb; + +import java.io.InputStream; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.camel.Exchange; -import org.apache.camel.ExchangeProperty; -import org.apache.camel.InvalidPayloadException; +import org.apache.camel.CamelExecutionException; +import org.apache.camel.Message; import org.apache.camel.component.aws2.ddb.Ddb2Constants; import org.apache.camel.component.aws2.ddb.Ddb2Operations; +import org.apache.camel.component.jackson.JacksonDataFormat; +import org.apache.camel.kamelets.utils.format.converter.json.Json; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.DataTypeTransformer; +import org.apache.camel.spi.Transformer; import software.amazon.awssdk.services.dynamodb.model.AttributeAction; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate; @@ -40,55 +46,78 @@ * * Json property names map to attribute keys and Json property values map to attribute values. * - * During mapping the Json property types resolve to the respective attribute types ({@code String, StringSet, Boolean, Number, NumberSet, Map, Null}). - * Primitive typed arrays in Json get mapped to {@code StringSet} or {@code NumberSet} attribute values. + * During mapping the Json property types resolve to the respective attribute types + * ({@code String, StringSet, Boolean, Number, NumberSet, Map, Null}). Primitive typed arrays in Json get mapped to + * {@code StringSet} or {@code NumberSet} attribute values. + * + * The input type supports the operations: PutItem, UpdateItem, DeleteItem * * For PutItem operation the Json body defines all item attributes. * * For DeleteItem operation the Json body defines only the primary key attributes that identify the item to delete. * - * For UpdateItem operation the Json body defines both key attributes to identify the item to be updated and all item attributes tht get updated on the item. + * For UpdateItem operation the Json body defines both key attributes to identify the item to be updated and all item + * attributes tht get updated on the item. + * + * The given Json body can use "operation", "key" and "item" as top level properties. Both define a Json object that + * will be mapped to respective attribute value maps: * - * The given Json body can use "key" and "item" as top level properties. - * Both define a Json object that will be mapped to respective attribute value maps: - *
{@code
+ * 
+ * {@code
  * {
+ *   "operation": "PutItem"
  *   "key": {},
  *   "item": {}
  * }
  * }
  * 
- * The converter will extract the objects and set respective attribute value maps as header entries. - * This is a comfortable way to define different key and item attribute value maps e.g. on UpdateItem operation. * - * In case key and item attribute value maps are identical you can omit the special top level properties completely. - * The converter will map the whole Json body as is then and use it as source for the attribute value map. + * The converter will extract the objects and set respective attribute value maps as header entries. This is a + * comfortable way to define different key and item attribute value maps e.g. on UpdateItem operation. + * + * In case key and item attribute value maps are identical you can omit the special top level properties completely. The + * converter will map the whole Json body as is then and use it as source for the attribute value map. */ -public class JsonToDdbModelConverter { +@DataTypeTransformer(name = "aws2-ddb:application-json") +public class Ddb2JsonInputType extends Transformer { + + private final JacksonDataFormat dataFormat = new JacksonDataFormat(Json.MAPPER, JsonNode.class); - public String process(@ExchangeProperty("operation") String operation, Exchange exchange) throws InvalidPayloadException { - if (exchange.getMessage().getHeaders().containsKey(Ddb2Constants.ITEM) || - exchange.getMessage().getHeaders().containsKey(Ddb2Constants.KEY)) { - return ""; + @Override + public void transform(Message message, DataType fromType, DataType toType) { + if (message.getHeaders().containsKey(Ddb2Constants.ITEM) || + message.getHeaders().containsKey(Ddb2Constants.KEY)) { + return; } - ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonBody = getBodyAsJsonNode(message); + + String operation + = Optional.ofNullable(jsonBody.get("operation")).map(JsonNode::asText).orElse(Ddb2Operations.PutItem.name()); + if (message.getExchange().hasProperties() && message.getExchange().getProperty("operation", String.class) != null) { + operation = message.getExchange().getProperty("operation", String.class); + } - JsonNode jsonBody = exchange.getMessage().getMandatoryBody(JsonNode.class); + if (message.getHeaders().containsKey(Ddb2Constants.OPERATION)) { + operation = message.getHeader(Ddb2Constants.OPERATION, Ddb2Operations.class).name(); + } JsonNode key = jsonBody.get("key"); JsonNode item = jsonBody.get("item"); Map keyProps; if (key != null) { - keyProps = mapper.convertValue(key, new TypeReference>(){}); + keyProps = dataFormat.getObjectMapper().convertValue(key, new TypeReference<>() { + }); } else { - keyProps = mapper.convertValue(jsonBody, new TypeReference>(){}); + keyProps = dataFormat.getObjectMapper().convertValue(jsonBody, new TypeReference<>() { + }); } Map itemProps; if (item != null) { - itemProps = mapper.convertValue(item, new TypeReference>(){}); + itemProps = dataFormat.getObjectMapper().convertValue(item, new TypeReference<>() { + }); } else { itemProps = keyProps; } @@ -97,30 +126,40 @@ public String process(@ExchangeProperty("operation") String operation, Exchange switch (Ddb2Operations.valueOf(operation)) { case PutItem: - exchange.getMessage().setHeader(Ddb2Constants.OPERATION, Ddb2Operations.PutItem); - exchange.getMessage().setHeader(Ddb2Constants.ITEM, getAttributeValueMap(itemProps)); - setHeaderIfNotPresent(Ddb2Constants.RETURN_VALUES, ReturnValue.ALL_OLD.toString(), exchange); + message.setHeader(Ddb2Constants.OPERATION, Ddb2Operations.PutItem); + message.setHeader(Ddb2Constants.ITEM, getAttributeValueMap(itemProps)); + setHeaderIfNotPresent(Ddb2Constants.RETURN_VALUES, ReturnValue.ALL_OLD.toString(), message); break; case UpdateItem: - exchange.getMessage().setHeader(Ddb2Constants.OPERATION, Ddb2Operations.UpdateItem); - exchange.getMessage().setHeader(Ddb2Constants.KEY, keyMap); - exchange.getMessage().setHeader(Ddb2Constants.UPDATE_VALUES, getAttributeValueUpdateMap(itemProps)); - setHeaderIfNotPresent(Ddb2Constants.RETURN_VALUES, ReturnValue.ALL_NEW.toString(), exchange); + message.setHeader(Ddb2Constants.OPERATION, Ddb2Operations.UpdateItem); + message.setHeader(Ddb2Constants.KEY, keyMap); + message.setHeader(Ddb2Constants.UPDATE_VALUES, getAttributeValueUpdateMap(itemProps)); + setHeaderIfNotPresent(Ddb2Constants.RETURN_VALUES, ReturnValue.ALL_NEW.toString(), message); break; case DeleteItem: - exchange.getMessage().setHeader(Ddb2Constants.OPERATION, Ddb2Operations.DeleteItem); - exchange.getMessage().setHeader(Ddb2Constants.KEY, keyMap); - setHeaderIfNotPresent(Ddb2Constants.RETURN_VALUES, ReturnValue.ALL_OLD.toString(), exchange); + message.setHeader(Ddb2Constants.OPERATION, Ddb2Operations.DeleteItem); + message.setHeader(Ddb2Constants.KEY, keyMap); + setHeaderIfNotPresent(Ddb2Constants.RETURN_VALUES, ReturnValue.ALL_OLD.toString(), message); break; default: throw new UnsupportedOperationException(String.format("Unsupported operation '%s'", operation)); } + } - return ""; + private JsonNode getBodyAsJsonNode(Message message) { + try { + if (message.getBody() instanceof JsonNode) { + return message.getMandatoryBody(JsonNode.class); + } + + return (JsonNode) dataFormat.unmarshal(message.getExchange(), message.getMandatoryBody(InputStream.class)); + } catch (Exception e) { + throw new CamelExecutionException("Failed to get mandatory Json node from message body", message.getExchange(), e); + } } - private void setHeaderIfNotPresent(String headerName, Object value, Exchange exchange) { - exchange.getMessage().setHeader(headerName, value); + private void setHeaderIfNotPresent(String headerName, Object value, Message message) { + message.setHeader(headerName, value); } private Map getAttributeValueMap(Map body) { @@ -165,11 +204,12 @@ private static AttributeValue getAttributeValue(Object value) { } if (value instanceof int[]) { - return AttributeValue.builder().ns(Stream.of((int[]) value).map(Object::toString).collect(Collectors.toList())).build(); + return AttributeValue.builder().ns(Stream.of((int[]) value).map(Object::toString).collect(Collectors.toList())) + .build(); } if (value instanceof List) { - List values = ((List) value); + List values = (List) value; if (values.isEmpty()) { return AttributeValue.builder().ss().build(); diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/aws2/s3/AWS2S3CloudEventOutputType.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/aws2/s3/AWS2S3CloudEventOutputType.java new file mode 100644 index 000000000..0dee160f9 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/aws2/s3/AWS2S3CloudEventOutputType.java @@ -0,0 +1,46 @@ +/* + * 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.format.converter.aws2.s3; + +import java.util.Map; + +import org.apache.camel.Message; +import org.apache.camel.component.aws2.s3.AWS2S3Constants; +import org.apache.camel.kamelets.utils.format.converter.utils.CloudEvents; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.DataTypeTransformer; +import org.apache.camel.spi.Transformer; + +/** + * Output data type represents AWS S3 get object response as CloudEvent V1. The data type sets Camel specific + * CloudEvent headers on the exchange. + */ +@DataTypeTransformer(name = "aws2-s3:application-cloudevents") +public class AWS2S3CloudEventOutputType extends Transformer { + + @Override + public void transform(Message message, DataType fromType, DataType toType) { + final Map headers = message.getHeaders(); + + headers.put(CloudEvents.CAMEL_CLOUD_EVENT_ID, message.getExchange().getExchangeId()); + headers.put(CloudEvents.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event.aws.s3.getObject"); + headers.put(CloudEvents.CAMEL_CLOUD_EVENT_SOURCE, "aws.s3.bucket." + message.getHeader(AWS2S3Constants.BUCKET_NAME, String.class)); + headers.put(CloudEvents.CAMEL_CLOUD_EVENT_SUBJECT, message.getHeader(AWS2S3Constants.KEY, String.class)); + headers.put(CloudEvents.CAMEL_CLOUD_EVENT_TIME, CloudEvents.getEventTime(message.getExchange())); + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/http/HttpCloudEventOutputType.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/http/HttpCloudEventOutputType.java new file mode 100644 index 000000000..7c1ee17c7 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/http/HttpCloudEventOutputType.java @@ -0,0 +1,54 @@ +/* + * 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.format.converter.http; + +import java.util.Map; + +import org.apache.camel.Exchange; +import org.apache.camel.Message; +import org.apache.camel.kamelets.utils.format.converter.utils.CloudEvents; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.DataTypeTransformer; +import org.apache.camel.spi.Transformer; + +/** + * Output data type represents the CloudEvent V1 Http binding. The data type reads Camel specific + * CloudEvent headers and transforms these to Http headers according to the CloudEvents Http binding specification. + * + * By default, sets the Http content type header to application/json when not set explicitly. + */ +@DataTypeTransformer(name = "http:application-cloudevents") +public class HttpCloudEventOutputType extends Transformer { + + @Override + public void transform(Message message, DataType fromType, DataType toType) { + final Map headers = message.getHeaders(); + + headers.put("ce-id", message.getExchange().getExchangeId()); + headers.put("ce-specversion", headers.getOrDefault(CloudEvents.CAMEL_CLOUD_EVENT_VERSION, "1.0")); + headers.put("ce-type", headers.getOrDefault(CloudEvents.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event")); + headers.put("ce-source", headers.getOrDefault(CloudEvents.CAMEL_CLOUD_EVENT_SOURCE, "org.apache.camel")); + + if (headers.containsKey(CloudEvents.CAMEL_CLOUD_EVENT_SUBJECT)) { + headers.put("ce-subject", headers.get(CloudEvents.CAMEL_CLOUD_EVENT_SUBJECT)); + } + + headers.put("ce-time", headers.getOrDefault(CloudEvents.CAMEL_CLOUD_EVENT_TIME, CloudEvents.getEventTime(message.getExchange()))); + headers.put(Exchange.CONTENT_TYPE, headers.getOrDefault(CloudEvents.CAMEL_CLOUD_EVENT_CONTENT_TYPE, "application/json")); + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/Json.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/Json.java new file mode 100644 index 000000000..cbcbe57c9 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/Json.java @@ -0,0 +1,29 @@ +/* + * 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.format.converter.json; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public final class Json { + + public static final ObjectMapper MAPPER = new ObjectMapper(); + + private Json() { + // prevent instantiation of utility class + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonDataType.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonDataType.java new file mode 100644 index 000000000..188af51e7 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonDataType.java @@ -0,0 +1,51 @@ +/* + * 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.format.converter.json; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import org.apache.camel.CamelExecutionException; +import org.apache.camel.Exchange; +import org.apache.camel.Message; +import org.apache.camel.kamelets.utils.format.MimeType; +import org.apache.camel.kamelets.utils.format.converter.utils.SchemaHelper; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.DataTypeTransformer; +import org.apache.camel.spi.Transformer; + +/** + * Data type uses Jackson data format to marshal given Exchange payload to a Json (binary byte array representation). + * Requires Exchange payload as JsonNode representation. + */ +@DataTypeTransformer(name = "application-json") +public class JsonDataType extends Transformer { + + @Override + public void transform(Message message, DataType fromType, DataType toType) { + try { + byte[] marshalled = Json.MAPPER.writer().forType(JsonNode.class).writeValueAsBytes(message.getBody()); + message.setBody(marshalled); + + message.setHeader(Exchange.CONTENT_TYPE, MimeType.JSON.type()); + message.setHeader(SchemaHelper.CONTENT_SCHEMA, + message.getExchange().getProperty(SchemaHelper.CONTENT_SCHEMA, "", String.class)); + } catch (JsonProcessingException e) { + throw new CamelExecutionException("Failed to apply Json output data type on exchange", message.getExchange(), e); + } + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonFormatSchema.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonFormatSchema.java new file mode 100644 index 000000000..cea76aa6b --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonFormatSchema.java @@ -0,0 +1,22 @@ +package org.apache.camel.kamelets.utils.format.converter.json; + +import com.fasterxml.jackson.core.FormatSchema; +import com.fasterxml.jackson.databind.JsonNode; +import org.apache.camel.kamelets.utils.format.SchemaType; + +public class JsonFormatSchema implements FormatSchema { + private final JsonNode schema; + + public JsonFormatSchema(JsonNode schema) { + this.schema = schema; + } + + @Override + public String getSchemaType() { + return SchemaType.JSON.type(); + } + + public JsonNode getSchema() { + return schema; + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonSchemaResolver.java new file mode 100644 index 000000000..74a42a33e --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonSchemaResolver.java @@ -0,0 +1,155 @@ +/* + * 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.format.converter.json; + +import java.io.InputStream; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +import com.fasterxml.jackson.core.FormatSchema; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.apache.camel.component.jackson.SchemaResolver; +import org.apache.camel.kamelets.utils.format.SchemaType; +import org.apache.camel.kamelets.utils.format.converter.utils.SchemaHelper; +import org.apache.camel.spi.Resource; +import org.apache.camel.support.PluginHelper; +import org.apache.camel.util.ObjectHelper; + +public class JsonSchemaResolver implements SchemaResolver, Processor { + private final ConcurrentMap schemes; + + private JsonNode schema; + private String contentClass; + + public JsonSchemaResolver() { + this.schemes = new ConcurrentHashMap<>(); + } + + public String getSchema() { + if (this.schema != null) { + try { + return Json.MAPPER.writeValueAsString(this.schema); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + return null; + } + + public void setSchema(String schema) { + if (ObjectHelper.isNotEmpty(schema)) { + try { + this.schema = Json.MAPPER.readTree(schema); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } else { + this.schema = null; + } + } + + public String getContentClass() { + return contentClass; + } + + public void setContentClass(String contentClass) { + if (ObjectHelper.isNotEmpty(contentClass)) { + this.contentClass = contentClass; + } else { + this.contentClass = null; + } + } + + @Override + public void process(Exchange exchange) throws Exception { + Object payload = exchange.getMessage().getBody(); + if (payload == null) { + return; + } + + JsonNode answer = computeIfAbsent(exchange); + + if (answer != null) { + exchange.setProperty(SchemaHelper.CONTENT_SCHEMA, answer); + exchange.setProperty(SchemaHelper.CONTENT_SCHEMA_TYPE, SchemaType.JSON.type()); + exchange.setProperty(SchemaHelper.CONTENT_CLASS, SchemaHelper.resolveContentClass(exchange, this.contentClass)); + } + } + + private JsonNode computeIfAbsent(Exchange exchange) { + if (this.schema != null) { + return this.schema; + } + + JsonNode answer = exchange.getProperty(SchemaHelper.CONTENT_SCHEMA, JsonNode.class); + + if (answer == null && exchange.getProperties().containsKey(SchemaHelper.SCHEMA)) { + String schemaJson = exchange.getProperty(SchemaHelper.SCHEMA, String.class); + try { + answer = Json.MAPPER.readTree(schemaJson); + } catch (JsonProcessingException e) { + throw new RuntimeException("Unable to load Json schema", e); + } + } + + if (answer == null) { + String contentClass = SchemaHelper.resolveContentClass(exchange, this.contentClass); + if (contentClass != null) { + answer = this.schemes.computeIfAbsent(contentClass, t -> { + Resource res = PluginHelper.getResourceLoader(exchange.getContext()) + .resolveResource("classpath:schemas/" + SchemaType.JSON.type() + "/" + t + "." + SchemaType.JSON.type()); + + try { + if (res.exists()) { + try (InputStream is = res.getInputStream()) { + if (is != null) { + return Json.MAPPER.readTree(is); + } + } + } + } catch (Exception e) { + throw new RuntimeException( + "Unable to load Json schema for type: " + t + ", resource: " + res.getLocation(), e); + } + + return null; + }); + } + } + + if (answer != null) { + this.schema = answer; + } + + return answer; + } + + @Override + public FormatSchema resolve(Exchange exchange) { + JsonNode answer = exchange.getProperty(SchemaHelper.CONTENT_SCHEMA, JsonNode.class); + if (answer == null) { + answer = computeIfAbsent(exchange); + } + + return new JsonFormatSchema(answer); + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonStructDataType.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonStructDataType.java new file mode 100644 index 000000000..403ab381b --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/json/JsonStructDataType.java @@ -0,0 +1,61 @@ +/* + * 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.format.converter.json; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +import com.fasterxml.jackson.databind.JsonNode; +import org.apache.camel.CamelExecutionException; +import org.apache.camel.Exchange; +import org.apache.camel.InvalidPayloadException; +import org.apache.camel.Message; +import org.apache.camel.kamelets.utils.format.MimeType; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.DataTypeTransformer; +import org.apache.camel.spi.Transformer; + +/** + * Data type uses Jackson data format to unmarshal Exchange body to generic JsonNode representation. + */ +@DataTypeTransformer(name = "application-x-struct") +public class JsonStructDataType extends Transformer { + + @Override + public void transform(Message message, DataType fromType, DataType toType) { + try { + Object unmarshalled = Json.MAPPER.reader().forType(JsonNode.class).readValue(getBodyAsStream(message)); + message.setBody(unmarshalled); + + message.setHeader(Exchange.CONTENT_TYPE, MimeType.STRUCT.type()); + } catch (InvalidPayloadException | IOException e) { + throw new CamelExecutionException("Failed to apply Json input data type on exchange", message.getExchange(), e); + } + } + + private InputStream getBodyAsStream(Message message) throws InvalidPayloadException { + InputStream bodyStream = message.getBody(InputStream.class); + + if (bodyStream == null) { + bodyStream = new ByteArrayInputStream(message.getMandatoryBody(byte[].class)); + } + + return bodyStream; + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/pojo/JavaObjectDataType.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/pojo/JavaObjectDataType.java new file mode 100644 index 000000000..80de04727 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/pojo/JavaObjectDataType.java @@ -0,0 +1,108 @@ +/* + * 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.format.converter.pojo; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +import com.fasterxml.jackson.core.FormatSchema; +import org.apache.camel.CamelContext; +import org.apache.camel.CamelContextAware; +import org.apache.camel.CamelExecutionException; +import org.apache.camel.Exchange; +import org.apache.camel.InvalidPayloadException; +import org.apache.camel.Message; +import org.apache.camel.kamelets.utils.format.MimeType; +import org.apache.camel.kamelets.utils.format.SchemaType; +import org.apache.camel.kamelets.utils.format.converter.avro.Avro; +import org.apache.camel.kamelets.utils.format.converter.json.Json; +import org.apache.camel.kamelets.utils.format.converter.utils.SchemaHelper; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.DataTypeTransformer; +import org.apache.camel.spi.Transformer; +import org.apache.camel.util.ObjectHelper; + +/** + * Data type able to unmarshal Exchange body to Java object. Supports both Avro and Json schema types and uses respective + * Jackson implementation for the unmarshal operation. + * Requires proper setting of content schema, class and schema type in Exchange properties + * (usually resolved via Avro or Json schema resolver Kamelet action). + */ +@DataTypeTransformer(name = "application-x-java-object") +public class JavaObjectDataType extends Transformer implements CamelContextAware { + + private CamelContext camelContext; + + @Override + public void transform(Message message, DataType fromType, DataType toType) { + ObjectHelper.notNull(camelContext, "camelContext"); + + FormatSchema schema = message.getExchange().getProperty(SchemaHelper.CONTENT_SCHEMA, FormatSchema.class); + if (schema == null) { + throw new CamelExecutionException("Missing proper schema for Java object data type processing", message.getExchange()); + } + + String contentClass = SchemaHelper.resolveContentClass(message.getExchange(), null); + if (contentClass == null) { + throw new CamelExecutionException("Missing content class information for Java object data type processing", + message.getExchange()); + } + + SchemaType schemaType = SchemaType.of(message.getExchange().getProperty(SchemaHelper.CONTENT_SCHEMA_TYPE, SchemaType.JSON.type(), String.class)); + + try { + Class contentType = camelContext.getClassResolver().resolveMandatoryClass(contentClass); + Object unmarshalled; + + if (schemaType == SchemaType.AVRO) { + unmarshalled = Avro.MAPPER.reader().forType(contentType).with(schema).readValue(getBodyAsStream(message)); + } else if (schemaType == SchemaType.JSON) { + unmarshalled = Json.MAPPER.reader().forType(contentType).with(schema).readValue(getBodyAsStream(message)); + } else { + throw new CamelExecutionException(String.format("Unsupported schema type '%s'", schemaType), message.getExchange()); + } + + message.setBody(unmarshalled); + + message.setHeader(Exchange.CONTENT_TYPE, MimeType.STRUCT.type()); + } catch (InvalidPayloadException | IOException | ClassNotFoundException e) { + throw new CamelExecutionException("Failed to apply Java object data type on exchange", message.getExchange(), e); + } + } + + private InputStream getBodyAsStream(Message message) throws InvalidPayloadException { + InputStream bodyStream = message.getBody(InputStream.class); + + if (bodyStream == null) { + bodyStream = new ByteArrayInputStream(message.getMandatoryBody(byte[].class)); + } + + return bodyStream; + } + + @Override + public CamelContext getCamelContext() { + return camelContext; + } + + @Override + public void setCamelContext(CamelContext camelContext) { + this.camelContext = camelContext; + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/protobuf/Protobuf.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/protobuf/Protobuf.java new file mode 100644 index 000000000..1bb5d1c18 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/protobuf/Protobuf.java @@ -0,0 +1,29 @@ +/* + * 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.format.converter.protobuf; + +import com.fasterxml.jackson.dataformat.protobuf.ProtobufMapper; + +public final class Protobuf { + + public static final ProtobufMapper MAPPER = new ProtobufMapper(); + + private Protobuf() { + // prevent instantiation of utility class + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/protobuf/ProtobufSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/protobuf/ProtobufSchemaResolver.java new file mode 100644 index 000000000..9fba10912 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/protobuf/ProtobufSchemaResolver.java @@ -0,0 +1,159 @@ +/* + * 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.format.converter.protobuf; + +import java.io.IOException; +import java.io.InputStream; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +import com.fasterxml.jackson.core.FormatSchema; +import com.fasterxml.jackson.databind.JsonMappingException; +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.Processor; +import org.apache.camel.RuntimeCamelException; +import org.apache.camel.component.jackson.SchemaResolver; +import org.apache.camel.kamelets.utils.format.SchemaType; +import org.apache.camel.kamelets.utils.format.converter.utils.SchemaHelper; +import org.apache.camel.spi.Resource; +import org.apache.camel.support.PluginHelper; +import org.apache.camel.util.ObjectHelper; + +public class ProtobufSchemaResolver implements SchemaResolver, Processor { + private final ConcurrentMap schemes; + + private ProtobufSchema schema; + private String contentClass; + + public ProtobufSchemaResolver() { + this.schemes = new ConcurrentHashMap<>(); + } + + public String getSchema() { + if (this.schema != null) { + return this.schema.getSource().toString(); + } + + return null; + } + + public void setSchema(String schema) { + if (ObjectHelper.isNotEmpty(schema)) { + try { + this.schema = ProtobufSchemaLoader.std.parse(schema); + } catch (IOException e) { + throw new RuntimeCamelException("Cannot parse protobuf schema", e); + } + } else { + this.schema = null; + } + } + + public String getContentClass() { + return contentClass; + } + + public void setContentClass(String contentClass) { + if (ObjectHelper.isNotEmpty(contentClass)) { + this.contentClass = contentClass; + } else { + this.contentClass = null; + } + } + + @Override + public void process(Exchange exchange) throws Exception { + Object payload = exchange.getMessage().getBody(); + if (payload == null) { + return; + } + + ProtobufSchema answer = computeIfAbsent(exchange); + + if (answer != null) { + exchange.setProperty(SchemaHelper.CONTENT_SCHEMA, answer); + exchange.setProperty(SchemaHelper.CONTENT_SCHEMA_TYPE, SchemaType.PROTOBUF.type()); + exchange.setProperty(SchemaHelper.CONTENT_CLASS, SchemaHelper.resolveContentClass(exchange, this.contentClass)); + } + } + + @Override + public FormatSchema resolve(Exchange exchange) { + ProtobufSchema answer = exchange.getProperty(SchemaHelper.CONTENT_SCHEMA, ProtobufSchema.class); + if (answer == null) { + answer = computeIfAbsent(exchange); + } + + return answer; + } + + private ProtobufSchema computeIfAbsent(Exchange exchange) { + if (this.schema != null) { + return this.schema; + } + + ProtobufSchema answer = exchange.getProperty(SchemaHelper.CONTENT_SCHEMA, ProtobufSchema.class); + + if (answer == null && exchange.getProperties().containsKey(SchemaHelper.SCHEMA)) { + String schemaJson = exchange.getProperty(SchemaHelper.SCHEMA, String.class); + try { + answer = ProtobufSchemaLoader.std.parse(schemaJson); + } catch (IOException e) { + throw new RuntimeException("Unable to parse Protobuf schema", e); + } + } + + if (answer == null) { + String contentClass = SchemaHelper.resolveContentClass(exchange, this.contentClass); + if (contentClass != null) { + answer = this.schemes.computeIfAbsent(contentClass, t -> { + Resource res = PluginHelper.getResourceLoader(exchange.getContext()) + .resolveResource("classpath:schemas/" + SchemaType.AVRO.type() + "/" + t + "." + SchemaType.AVRO.type()); + + try { + if (res.exists()) { + try (InputStream is = res.getInputStream()) { + if (is != null) { + return Protobuf.MAPPER.schemaLoader().load(is); + } + } + } + } catch (Exception e) { + throw new RuntimeException( + "Unable to load Protobuf schema for type: " + t + ", resource: " + res.getLocation(), e); + } + + try { + return Protobuf.MAPPER.generateSchemaFor(Class.forName(contentClass)); + } catch (JsonMappingException | ClassNotFoundException e) { + throw new RuntimeException( + "Unable to compute Protobuf schema for type: " + t, e); + } + }); + } + } + + if (answer != null) { + this.schema = answer; + } + + return answer; + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/CloudEvents.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/CloudEvents.java new file mode 100644 index 000000000..d88ef661f --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/CloudEvents.java @@ -0,0 +1,45 @@ +/* + * 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.format.converter.utils; + +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; + +import org.apache.camel.Exchange; + +/** + * Helper class to manage CloudEvents specific Camel message headers and other utilities. + */ +public class CloudEvents { + + public static final String CAMEL_CLOUD_EVENT_ID = "CamelCloudEventID"; + public static final String CAMEL_CLOUD_EVENT_VERSION = "CamelCloudEventVersion"; + public static final String CAMEL_CLOUD_EVENT_TYPE = "CamelCloudEventType"; + public static final String CAMEL_CLOUD_EVENT_SOURCE = "CamelCloudEventSource"; + public static final String CAMEL_CLOUD_EVENT_SUBJECT = "CamelCloudEventSubject"; + public static final String CAMEL_CLOUD_EVENT_TIME = "CamelCloudEventTime"; + public static final String CAMEL_CLOUD_EVENT_CONTENT_TYPE = Exchange.CONTENT_TYPE; + + public static String getEventTime(Exchange exchange) { + final ZonedDateTime created + = ZonedDateTime.ofInstant(Instant.ofEpochMilli(exchange.getCreated()), ZoneId.systemDefault()); + return DateTimeFormatter.ISO_INSTANT.format(created); + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/PojoHelper.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/PojoHelper.java new file mode 100644 index 000000000..17f222801 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/PojoHelper.java @@ -0,0 +1,89 @@ +/* + * 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.format.converter.utils; + +import java.util.Objects; + +import org.apache.camel.Exchange; + +public final class PojoHelper { + private PojoHelper() { + } + + public static boolean isString(Class type) { + return String.class.isAssignableFrom(type); + } + + public static boolean isNumber(Class type) { + return Number.class.isAssignableFrom(type) + || int.class.isAssignableFrom(type) + || long.class.isAssignableFrom(type) + || short.class.isAssignableFrom(type) + || char.class.isAssignableFrom(type) + || float.class.isAssignableFrom(type) + || double.class.isAssignableFrom(type); + } + + public static boolean isPrimitive(Class type) { + return type.isPrimitive() + || (type.isArray() && type.getComponentType().isPrimitive()) + || char.class.isAssignableFrom(type) || Character.class.isAssignableFrom(type) + || byte.class.isAssignableFrom(type) || Byte.class.isAssignableFrom(type) + || boolean.class.isAssignableFrom(type) || Boolean.class.isAssignableFrom(type); + } + + public static boolean isPojo(Class type) { + Package pkg = type.getPackage(); + if (pkg != null) { + if (pkg.getName().startsWith("java") + || pkg.getName().startsWith("javax") + || pkg.getName().startsWith("com.sun") + || pkg.getName().startsWith("com.oracle")) { + return false; + } + } + + if (isNumber(type)) { + return false; + } + if (isPrimitive(type)) { + return false; + } + if (isString(type)) { + return false; + } + + return true; + } + + public static boolean hasProperty(Exchange exchange, String name) { + return exchange.getProperties().containsKey(name); + } + + public static boolean hasProperty(Exchange exchange, String name, Object value) { + return Objects.equals( + value, + exchange.getProperty(name, value.getClass())); + } + + public static boolean hasHeader(Exchange exchange, String name, Object value) { + return Objects.equals( + value, + exchange.getMessage().getHeader(name, value.getClass())); + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/SchemaHelper.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/SchemaHelper.java new file mode 100644 index 000000000..87dea3f69 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/converter/utils/SchemaHelper.java @@ -0,0 +1,34 @@ +package org.apache.camel.kamelets.utils.format.converter.utils; + +import org.apache.camel.Exchange; + +public class SchemaHelper { + + public static final String SCHEMA = "schema"; + public static final String VALIDATE = "validate"; + public static final String CONTENT_SCHEMA = "X-Content-Schema"; + public static final String CONTENT_SCHEMA_TYPE = "X-Content-Schema-Type"; + public static final String CONTENT_CLASS = "X-Content-Class"; + + private SchemaHelper() { + } + + /** + * Helper resolves content class from exchange properties and as a fallback tries to retrieve the content class + * from the payload body type. + * @param exchange the Camel exchange eventually holding content class information in its properties. + * @param fallback the fallback content class information when no exchange property is set. + * @return the content class as String representation. + */ + public static String resolveContentClass(Exchange exchange, String fallback) { + String contentClass = exchange.getProperty(CONTENT_CLASS, fallback, String.class); + if (contentClass == null) { + Object payload = exchange.getMessage().getBody(); + if (payload != null && PojoHelper.isPojo(payload.getClass())) { + contentClass = payload.getClass().getName(); + } + } + + return contentClass; + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/schema/DelegatingSchemaResolver.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/schema/DelegatingSchemaResolver.java new file mode 100644 index 000000000..26b541ee8 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/schema/DelegatingSchemaResolver.java @@ -0,0 +1,119 @@ +/* + * 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.format.schema; + +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.apache.camel.kamelets.utils.format.MimeType; +import org.apache.camel.kamelets.utils.format.converter.avro.AvroSchemaResolver; +import org.apache.camel.kamelets.utils.format.converter.json.JsonSchemaResolver; +import org.apache.camel.kamelets.utils.format.converter.protobuf.ProtobufSchemaResolver; +import org.apache.camel.util.ObjectHelper; + +/** + * Schema resolver processor delegates to either Avro or Json schema resolver based on the given mimetype property. + * When mimetype is of type application/x-java-object uses additional target mimetype (usually the produces mimetype) to + * determine the schema resolver (Avro or Json). + * Delegates to schema resolver and sets proper content class and schema properties on the delegate. + */ +public class DelegatingSchemaResolver implements Processor { + private String mimeType; + private String targetMimeType; + + private String schema; + private String contentClass; + + @Override + public void process(Exchange exchange) throws Exception { + if (ObjectHelper.isEmpty(mimeType)) { + return; + } + + MimeType mimeType = MimeType.of(this.mimeType); + Processor resolver; + if (mimeType.equals(MimeType.JAVA_OBJECT)) { + if (ObjectHelper.isEmpty(targetMimeType)) { + return; + } + resolver = fromMimeType(MimeType.of(targetMimeType)); + } else { + resolver = fromMimeType(mimeType); + } + + if (resolver != null) { + resolver.process(exchange); + } + } + + private Processor fromMimeType(MimeType mimeType) { + switch (mimeType) { + case PROTOBUF: + ProtobufSchemaResolver protobufSchemaResolver = new ProtobufSchemaResolver(); + protobufSchemaResolver.setSchema(this.schema); + protobufSchemaResolver.setContentClass(this.contentClass); + return protobufSchemaResolver; + case AVRO: + case AVRO_BINARY: + case AVRO_STRUCT: + AvroSchemaResolver avroSchemaResolver = new AvroSchemaResolver(); + avroSchemaResolver.setSchema(this.schema); + avroSchemaResolver.setContentClass(this.contentClass); + return avroSchemaResolver; + case JSON: + case STRUCT: + JsonSchemaResolver jsonSchemaResolver = new JsonSchemaResolver(); + jsonSchemaResolver.setSchema(this.schema); + jsonSchemaResolver.setContentClass(this.contentClass); + return jsonSchemaResolver; + default: + return null; + } + } + + public String getMimeType() { + return mimeType; + } + + public void setMimeType(String mimeType) { + this.mimeType = mimeType; + } + + public String getSchema() { + return schema; + } + + public void setSchema(String schema) { + this.schema = schema; + } + + public String getContentClass() { + return contentClass; + } + + public void setContentClass(String contentClass) { + this.contentClass = contentClass; + } + + public String getTargetMimeType() { + return targetMimeType; + } + + public void setTargetMimeType(String targetMimeType) { + this.targetMimeType = targetMimeType; + } +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/headers/DeDuplicateNamingHeaders.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/headers/DeDuplicateNamingHeaders.java new file mode 100644 index 000000000..f7f53ca2a --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/headers/DeDuplicateNamingHeaders.java @@ -0,0 +1,108 @@ +/* + * 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.headers; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.apache.camel.Exchange; +import org.apache.camel.InvalidPayloadException; +import org.apache.camel.Processor; + +public class DeDuplicateNamingHeaders implements Processor { + + String prefix; + String renamingPrefix; + String selectedHeaders; + String mode = "all"; + + /** + * Default constructor. + */ + public DeDuplicateNamingHeaders() { + } + + /** + * Constructor using fields. + * + * @param prefix a prefix to find all the headers to rename. + * @param renamingPrefix the renaming prefix to use on all the matching headers + */ + public DeDuplicateNamingHeaders(String prefix, String renamingPrefix, String selectedHeaders, String mode) { + this.prefix = prefix; + this.renamingPrefix = renamingPrefix; + this.selectedHeaders = selectedHeaders; + this.mode = mode; + } + + public void process(Exchange ex) throws InvalidPayloadException { + Map originalHeaders = ex.getMessage().getHeaders(); + Map newHeaders = new HashMap<>(); + Iterator> iterator = originalHeaders.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + String key = entry.getKey(); + Object val = entry.getValue(); + if (prefix != null && mode.equalsIgnoreCase("all")) { + if (key.startsWith(prefix)) { + String newKey = key.replaceFirst(prefix, renamingPrefix); + String subKey = newKey.substring(renamingPrefix.length()); + String suffix = subKey.toUpperCase(); + newHeaders.put(renamingPrefix + suffix, val); + iterator.remove(); + } + } else { + if (selectedHeaders != null && mode.equalsIgnoreCase("filtering")) { + List headerList = Arrays.asList(selectedHeaders.split(",")); + for (Iterator iteratorHeader = headerList.iterator(); iteratorHeader.hasNext();) { + String header = iteratorHeader.next(); + if (key.equalsIgnoreCase(header)) { + String newKey = key.replaceFirst(prefix, renamingPrefix); + String subKey = newKey.substring(renamingPrefix.length()); + String suffix = subKey.toUpperCase(); + newHeaders.put(renamingPrefix + suffix, val); + iterator.remove(); + } + } + + } + } + } + originalHeaders.putAll(newHeaders); + ex.getMessage().setHeaders(originalHeaders); + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public void setRenamingPrefix(String renamingPrefix) { + this.renamingPrefix = renamingPrefix; + } + + public void setSelectedHeaders(String selectedHeaders) { + this.selectedHeaders = selectedHeaders; + } + + public void setMode(String mode) { + this.mode = mode; + } + +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/headers/DuplicateNamingHeaders.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/headers/DuplicateNamingHeaders.java new file mode 100644 index 000000000..853236449 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/headers/DuplicateNamingHeaders.java @@ -0,0 +1,108 @@ +/* + * 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.headers; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.apache.camel.Exchange; +import org.apache.camel.InvalidPayloadException; +import org.apache.camel.Processor; + +public class DuplicateNamingHeaders implements Processor { + + String prefix; + String renamingPrefix; + String selectedHeaders; + String mode = "all"; + + /** + * Default constructor. + */ + public DuplicateNamingHeaders() { + } + + /** + * Constructor using fields. + * + * @param prefix a prefix to find all the headers to rename. + * @param renamingPrefix the renaming prefix to use on all the matching headers + */ + public DuplicateNamingHeaders(String prefix, String renamingPrefix, String selectedHeaders, String mode) { + this.prefix = prefix; + this.renamingPrefix = renamingPrefix; + this.selectedHeaders = selectedHeaders; + this.mode = mode; + } + + public void process(Exchange ex) throws InvalidPayloadException { + Map originalHeaders = ex.getMessage().getHeaders(); + Map newHeaders = new HashMap<>(); + for (Map.Entry entry : originalHeaders.entrySet()) { + String key = entry.getKey(); + Object val = entry.getValue(); + if (prefix != null && mode.equalsIgnoreCase("all")) { + if (key.startsWith(prefix)) { + String newKey = key.replaceFirst(prefix, renamingPrefix); + String subKey = newKey.substring(renamingPrefix.length()); + String suffix = subKey.replaceAll(String.format("%s|%s|%s", "(?<=[A-Z])(?=[A-Z][a-z])", + "(?<=[^A-Z])(?=[A-Z])", "(?<=[A-Za-z])(?=[^A-Za-z])"), ".").toLowerCase(); + newHeaders.put(renamingPrefix + suffix, val); + } + } else { + if (selectedHeaders != null && mode.equalsIgnoreCase("filtering")) { + List headerList = Arrays.asList(selectedHeaders.split(",")); + for (Iterator iterator = headerList.iterator(); iterator.hasNext();) { + String header = iterator.next(); + if (key.equalsIgnoreCase(header)) { + String newKey = key.replaceFirst(prefix, renamingPrefix); + String subKey = newKey.substring(renamingPrefix.length()); + String suffix = subKey + .replaceAll(String.format("%s|%s|%s", "(?<=[A-Z])(?=[A-Z][a-z])", + "(?<=[^A-Z])(?=[A-Z])", "(?<=[A-Za-z])(?=[^A-Za-z])"), ".") + .toLowerCase(); + newHeaders.put(renamingPrefix + suffix, val); + } + } + + } + } + } + originalHeaders.putAll(newHeaders); + ex.getMessage().setHeaders(originalHeaders); + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public void setRenamingPrefix(String renamingPrefix) { + this.renamingPrefix = renamingPrefix; + } + + public void setSelectedHeaders(String selectedHeaders) { + this.selectedHeaders = selectedHeaders; + } + + public void setMode(String mode) { + this.mode = mode; + } + +} diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/mongodb/SslAwareMongoClient.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/mongodb/SslAwareMongoClient.java new file mode 100644 index 000000000..e85ba4487 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/mongodb/SslAwareMongoClient.java @@ -0,0 +1,245 @@ +/* + * 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.mongodb; + +import com.mongodb.ClientSessionOptions; +import com.mongodb.ConnectionString; +import com.mongodb.MongoClientSettings; +import com.mongodb.client.ChangeStreamIterable; +import com.mongodb.client.ClientSession; +import com.mongodb.client.ListDatabasesIterable; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.MongoIterable; +import com.mongodb.connection.ClusterDescription; +import org.apache.camel.util.function.Suppliers; +import org.bson.Document; +import org.bson.conversions.Bson; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.List; +import java.util.function.Supplier; + +public class SslAwareMongoClient implements MongoClient { + private static final Logger LOG = LoggerFactory.getLogger(SslAwareMongoClient.class); + private static final TrustManager[] trustAllCerts = new TrustManager[] { + new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; + } + + @Override + public void checkClientTrusted(X509Certificate[] arg0, String arg1) + throws CertificateException { + } + + @Override + public void checkServerTrusted(X509Certificate[] arg0, String arg1) + throws CertificateException { + } + } + }; + private final Supplier wrappedMongoClient = Suppliers.memorize(new Supplier() { + @Override + public MongoClient get() { + String credentials = username == null ? "" : username; + + if (!credentials.equals("")) { + credentials += password == null ? "@" : ":" + password + "@"; + } + + MongoClientSettings settings = MongoClientSettings.builder() + .applyToSslSettings(builder -> { + builder.enabled(ssl); + if (!sslValidationEnabled) { + builder.invalidHostNameAllowed(true); + SSLContext sc = null; + try { + sc = SSLContext.getInstance("SSL"); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException("Error instantiating trust all SSL context.", e); + } + try { + sc.init(null, trustAllCerts, new java.security.SecureRandom()); + } catch (KeyManagementException e) { + throw new RuntimeException("Error instantiating trust all SSL context.", e); + } + builder.context(sc); + } + }) + .applyConnectionString(new ConnectionString(String.format("mongodb://%s%s", credentials, hosts))) + .build(); + LOG.info("Connection created using provided credentials"); + return MongoClients.create(settings); + } + }); + private String hosts = null; + private String username = null; + private String password = null; + private boolean ssl = true; + + private boolean sslValidationEnabled = true; + + public MongoClient getWrappedMongoClient() { + return wrappedMongoClient.get(); + } + + @Override + public MongoDatabase getDatabase(String s) { + return getWrappedMongoClient().getDatabase(s); + } + + @Override + public ClientSession startSession() { + return getWrappedMongoClient().startSession(); + } + + @Override + public ClientSession startSession(ClientSessionOptions clientSessionOptions) { + return getWrappedMongoClient().startSession(clientSessionOptions); + } + + @Override + public void close() { + getWrappedMongoClient().close(); + } + + @Override + public MongoIterable listDatabaseNames() { + return getWrappedMongoClient().listDatabaseNames(); + } + + @Override + public MongoIterable listDatabaseNames(ClientSession clientSession) { + return getWrappedMongoClient().listDatabaseNames(clientSession); + } + + @Override + public ListDatabasesIterable listDatabases() { + return getWrappedMongoClient().listDatabases(); + } + + @Override + public ListDatabasesIterable listDatabases(ClientSession clientSession) { + return getWrappedMongoClient().listDatabases(clientSession); + } + + @Override + public ListDatabasesIterable listDatabases(Class aClass) { + return getWrappedMongoClient().listDatabases(aClass); + } + + @Override + public ListDatabasesIterable listDatabases(ClientSession clientSession, Class aClass) { + return getWrappedMongoClient().listDatabases(clientSession, aClass); + } + + @Override + public ChangeStreamIterable watch() { + return getWrappedMongoClient().watch(); + } + + @Override + public ChangeStreamIterable watch(Class aClass) { + return getWrappedMongoClient().watch(aClass); + } + + @Override + public ChangeStreamIterable watch(List list) { + return getWrappedMongoClient().watch(list); + } + + @Override + public ChangeStreamIterable watch(List list, Class aClass) { + return getWrappedMongoClient().watch(list, aClass); + } + + @Override + public ChangeStreamIterable watch(ClientSession clientSession) { + return getWrappedMongoClient().watch(clientSession); + } + + @Override + public ChangeStreamIterable watch(ClientSession clientSession, Class aClass) { + return getWrappedMongoClient().watch(clientSession, aClass); + } + + @Override + public ChangeStreamIterable watch(ClientSession clientSession, List list) { + return getWrappedMongoClient().watch(clientSession, list); + } + + @Override + public ChangeStreamIterable watch(ClientSession clientSession, List list, + Class aClass) { + return getWrappedMongoClient().watch(clientSession, list, aClass); + } + + @Override + public ClusterDescription getClusterDescription() { + return getWrappedMongoClient().getClusterDescription(); + } + + public String getHosts() { + return hosts; + } + + public void setHosts(String hosts) { + this.hosts = hosts; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public boolean isSsl() { + return ssl; + } + + public void setSsl(boolean ssl) { + this.ssl = ssl; + } + + public boolean isSslValidationEnabled() { + return sslValidationEnabled; + } + + public void setSslValidationEnabled(boolean sslValidationEnabled) { + this.sslValidationEnabled = sslValidationEnabled; + } +} 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 deleted file mode 100644 index 4d09f9d5e..000000000 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/InflightProtobufSchemaResolver.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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; - -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/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/kafka/KafkaHeaderDeserializer.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/kafka/KafkaHeaderDeserializer.java index 515033e7f..3fc24cc8f 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/kafka/KafkaHeaderDeserializer.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/serialization/kafka/KafkaHeaderDeserializer.java @@ -23,6 +23,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.TypeConverter; +import org.apache.camel.component.kafka.KafkaConstants; import org.apache.camel.support.SimpleTypeConverter; /** @@ -32,17 +33,27 @@ */ public class KafkaHeaderDeserializer implements Processor { + boolean enabled = false; + + private final SimpleTypeConverter defaultTypeConverter = new SimpleTypeConverter(true, KafkaHeaderDeserializer::convert); + @Override public void process(Exchange exchange) throws Exception { + if (!enabled) { + return; + } + Map headers = exchange.getMessage().getHeaders(); TypeConverter typeConverter = exchange.getContext().getTypeConverter(); if (typeConverter == null) { - typeConverter = new SimpleTypeConverter(true, this::convert); + typeConverter = defaultTypeConverter; } for (Map.Entry header : headers.entrySet()) { - header.setValue(typeConverter.convertTo(String.class, header.getValue())); + if (shouldDeserialize(header)) { + header.setValue(typeConverter.convertTo(String.class, header.getValue())); + } } } @@ -54,7 +65,7 @@ public void process(Exchange exchange) throws Exception { * @param value the current value to convert. * @return String representation of given value or null if value itself is null. */ - private Object convert(Class type, Exchange exchange, Object value) { + private static Object convert(Class type, Exchange exchange, Object value) { if (value == null) { return null; } @@ -69,4 +80,17 @@ private Object convert(Class type, Exchange exchange, Object value) { return value.toString(); } + + /** + * Exclude special Kafka headers from auto deserialization. + * @param entry + * @return + */ + private boolean shouldDeserialize(Map.Entry entry) { + return !entry.getKey().equals(KafkaConstants.HEADERS) && !entry.getKey().equals(KafkaConstants.MANUAL_COMMIT); + } + + public void setEnabled(String enabled) { + this.enabled = Boolean.parseBoolean(enabled); + } } diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ExtractField.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ExtractField.java index a0a396e48..bdb636b5b 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ExtractField.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ExtractField.java @@ -16,22 +16,95 @@ */ package org.apache.camel.kamelets.utils.transform; +import java.util.Map; + import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; -import org.apache.camel.ExchangeProperty; import org.apache.camel.InvalidPayloadException; +import org.apache.camel.Processor; -import java.util.Map; +public class ExtractField implements Processor { + + String field; + String headerOutputName; + boolean headerOutput; + boolean strictHeaderCheck; + boolean trimField; + + static final String EXTRACTED_FIELD_HEADER = "CamelKameletsExtractFieldName"; + + /** + * Default constructor + */ + public ExtractField() { + } -public class ExtractField { + /** + * Constructor using field member. + * @param field the field name to extract. + */ + public ExtractField(String field) { + this.field = field; + } - public void process(@ExchangeProperty("field") String field, Exchange ex) { + @Override + public void process(Exchange ex) throws InvalidPayloadException { ObjectMapper mapper = new ObjectMapper(); JsonNode jsonNodeBody = ex.getMessage().getBody(JsonNode.class); + + if (jsonNodeBody == null) { + throw new InvalidPayloadException(ex, JsonNode.class); + + } + Map body = mapper.convertValue(jsonNodeBody, new TypeReference>(){}); - ex.getMessage().setBody(body.get(field)); + if (!headerOutput || (strictHeaderCheck && checkHeaderExistence(ex))) { + ex.getMessage().setBody(body.get(field)); + } else { + extractToHeader(ex, body); + } + if (trimField) { + ex.setProperty("trimField", "true"); + } else { + ex.setProperty("trimField", "false"); + } + } + + private void extractToHeader(Exchange ex, Map body) { + if (headerOutputName == null || headerOutputName.isEmpty() || "none".equalsIgnoreCase(headerOutputName)) { + ex.getMessage().setHeader(EXTRACTED_FIELD_HEADER, body.get(field)); + } else { + ex.getMessage().setHeader(headerOutputName, body.get(field)); + } + } + + private boolean checkHeaderExistence(Exchange exchange) { + if (headerOutputName == null || headerOutputName.isEmpty() || "none".equalsIgnoreCase(headerOutputName)) { + return exchange.getMessage().getHeaders().containsKey(EXTRACTED_FIELD_HEADER); + } else { + return exchange.getMessage().getHeaders().containsKey(headerOutputName); + } + } + + public void setField(String field) { + this.field = field; + } + + public void setHeaderOutput(boolean headerOutput) { + this.headerOutput = headerOutput; + } + + public void setHeaderOutputName(String headerOutputName) { + this.headerOutputName = headerOutputName; } + public void setStrictHeaderCheck(boolean strictHeaderCheck) { + this.strictHeaderCheck = strictHeaderCheck; + } + + public void setTrimField(boolean trimField) { + this.trimField = trimField; + } } diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/HoistField.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/HoistField.java index 614940003..f92720427 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/HoistField.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/HoistField.java @@ -16,7 +16,6 @@ */ package org.apache.camel.kamelets.utils.transform; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/InsertField.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/InsertField.java index 60d3e3ba8..20b250855 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/InsertField.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/InsertField.java @@ -20,13 +20,37 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.Exchange; -import org.apache.camel.ExchangeProperty; import org.apache.camel.InvalidPayloadException; +import org.apache.camel.Processor; -public class InsertField { +public class InsertField implements Processor { - public JsonNode process(@ExchangeProperty("field") String field, @ExchangeProperty("value") String value, Exchange ex) throws InvalidPayloadException { + String field; + String value; + + /** + * Default constructor. + */ + public InsertField() { + } + + /** + * Constructor using fields. + * @param field the field name to insert. + * @param value the value of the new field. + */ + public InsertField(String field, String value) { + this.field = field; + this.value = value; + } + + public void process(Exchange ex) throws InvalidPayloadException { JsonNode body = ex.getMessage().getBody(JsonNode.class); + + if (body == null) { + throw new InvalidPayloadException(ex, JsonNode.class); + } + switch (body.getNodeType()) { case ARRAY: ((ArrayNode) body).add(value); @@ -38,7 +62,15 @@ public JsonNode process(@ExchangeProperty("field") String field, @ExchangeProper ((ObjectNode) body).put(field, value); break; } - return body; + + ex.getMessage().setBody(body); } + public void setField(String field) { + this.field = field; + } + + public void setValue(String value) { + this.value = value; + } } diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/MaskField.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/MaskField.java index 1997daa5d..00adb6cb6 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/MaskField.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/MaskField.java @@ -75,7 +75,7 @@ public JsonNode process(@ExchangeProperty("fields") String fields, @ExchangeProp } Map updatedBody = new HashMap<>(); - for (Map.Entry entry: + for (Map.Entry entry: body.entrySet()) { final String fieldName = (String) entry.getKey(); final Object origFieldValue = entry.getValue(); diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/MessageTimestampRouter.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/MessageTimestampRouter.java index b299b51b6..55c818295 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/MessageTimestampRouter.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/MessageTimestampRouter.java @@ -26,7 +26,6 @@ import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ReplaceField.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ReplaceField.java index 7640ddcb6..a9b011663 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ReplaceField.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/ReplaceField.java @@ -54,7 +54,7 @@ public JsonNode process(@ExchangeProperty("enabled") String enabled, @ExchangePr if (ObjectHelper.isNotEmpty(renameFields)) { Map renamingMap = parseNames(renameFields); - for (Map.Entry entry : + for (Map.Entry entry : body.entrySet()) { final String fieldName = (String) entry.getKey(); if (filterNames(fieldName, enabledFields, disabledFields)) { diff --git a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/kafka/ValueToKey.java b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/kafka/ValueToKey.java index b4bcf67d1..bc5af6ebf 100644 --- a/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/kafka/ValueToKey.java +++ b/library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/transform/kafka/ValueToKey.java @@ -43,7 +43,7 @@ public void process(@ExchangeProperty("fields") String fields, Exchange ex) thro splittedFields = Arrays.stream(fields.split(",")).collect(Collectors.toList()); } Map key = new HashMap<>(); - for (Map.Entry entry: + for (Map.Entry entry: body.entrySet()) { final String fieldName = (String) entry.getKey(); if (filterNames(fieldName, splittedFields)) { diff --git a/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/DataTypeConverter b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/DataTypeConverter new file mode 100644 index 000000000..96cc4b098 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/DataTypeConverter @@ -0,0 +1,25 @@ +# +# 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. +# + +org.apache.camel.kamelets.utils.format.converter.bytes +org.apache.camel.kamelets.utils.format.converter.text +org.apache.camel.kamelets.utils.format.converter.pojo +org.apache.camel.kamelets.utils.format.converter.avro +org.apache.camel.kamelets.utils.format.converter.json +org.apache.camel.kamelets.utils.format.converter.aws2.s3 +org.apache.camel.kamelets.utils.format.converter.aws2.ddb +org.apache.camel.kamelets.utils.format.converter.http diff --git a/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-json b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-json new file mode 100644 index 000000000..18aebea05 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-json @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +class=org.apache.camel.kamelets.utils.format.converter.json.JsonDataType diff --git a/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-x-java-object b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-x-java-object new file mode 100644 index 000000000..3f8079835 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-x-java-object @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +class=org.apache.camel.kamelets.utils.format.converter.pojo.JavaObjectDataType diff --git a/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-x-struct b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-x-struct new file mode 100644 index 000000000..fef2aab83 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/application-x-struct @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +class=org.apache.camel.kamelets.utils.format.converter.json.JsonStructDataType diff --git a/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/avro-binary b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/avro-binary new file mode 100644 index 000000000..69fc53091 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/avro-binary @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +class=org.apache.camel.kamelets.utils.format.converter.avro.AvroBinaryDataType diff --git a/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/avro-x-struct b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/avro-x-struct new file mode 100644 index 000000000..070e3147c --- /dev/null +++ b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/avro-x-struct @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +class=org.apache.camel.kamelets.utils.format.converter.avro.AvroStructDataType diff --git a/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-ddb-application-json b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-ddb-application-json new file mode 100644 index 000000000..f0194cc41 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-ddb-application-json @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +class=org.apache.camel.kamelets.utils.format.converter.aws2.ddb.Ddb2JsonInputType \ No newline at end of file diff --git a/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents new file mode 100644 index 000000000..fafdd926a --- /dev/null +++ b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/aws2-s3-application-cloudevents @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +class=org.apache.camel.kamelets.utils.format.converter.aws2.s3.AWS2S3CloudEventOutputType \ No newline at end of file diff --git a/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents new file mode 100644 index 000000000..e74fe8e21 --- /dev/null +++ b/library/camel-kamelets-utils/src/main/resources/META-INF/services/org/apache/camel/datatype/transformer/http-application-cloudevents @@ -0,0 +1,18 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +class=org.apache.camel.kamelets.utils.format.converter.http.HttpCloudEventOutputType diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverterTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/format/converter/aws2/ddb/Ddb2JsonInputTypeTest.java similarity index 59% rename from library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverterTest.java rename to library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/format/converter/aws2/ddb/Ddb2JsonInputTypeTest.java index 33d27bfe4..efa600b0d 100644 --- a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/aws/ddb/JsonToDdbModelConverterTest.java +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/format/converter/aws2/ddb/Ddb2JsonInputTypeTest.java @@ -14,16 +14,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.kamelets.utils.transform.aws.ddb; + +package org.apache.camel.kamelets.utils.format.converter.aws2.ddb; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.camel.CamelExecutionException; import org.apache.camel.Exchange; -import org.apache.camel.InvalidPayloadException; import org.apache.camel.component.aws2.ddb.Ddb2Constants; import org.apache.camel.component.aws2.ddb.Ddb2Operations; import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.impl.engine.TransformerKey; +import org.apache.camel.kamelets.utils.format.converter.json.Json; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.Transformer; import org.apache.camel.support.DefaultExchange; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -33,25 +37,24 @@ import software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate; import software.amazon.awssdk.services.dynamodb.model.ReturnValue; -class JsonToDdbModelConverterTest { +public class Ddb2JsonInputTypeTest { + public static final String AWS_2_DDB_APPLICATION_JSON_TRANSFORMER = "aws2-ddb:application-json"; private DefaultCamelContext camelContext; - private final ObjectMapper mapper = new ObjectMapper(); - - private final JsonToDdbModelConverter processor = new JsonToDdbModelConverter(); + private final Ddb2JsonInputType inputType = new Ddb2JsonInputType(); private final String keyJson = "{" + - "\"name\": \"Rajesh Koothrappali\"" + + "\"name\": \"Rajesh Koothrappali\"" + "}"; private final String itemJson = "{" + - "\"name\": \"Rajesh Koothrappali\"," + - "\"age\": 29," + - "\"super-heroes\": [\"batman\", \"spiderman\", \"wonderwoman\"]," + - "\"issues\": [5, 3, 9, 1]," + - "\"girlfriend\": null," + - "\"doctorate\": true" + + "\"name\": \"Rajesh Koothrappali\"," + + "\"age\": 29," + + "\"super-heroes\": [\"batman\", \"spiderman\", \"wonderwoman\"]," + + "\"issues\": [5, 3, 9, 1]," + + "\"girlfriend\": null," + + "\"doctorate\": true" + "}"; @BeforeEach @@ -64,9 +67,9 @@ void setup() { void shouldMapPutItemHeaders() throws Exception { Exchange exchange = new DefaultExchange(camelContext); - exchange.getMessage().setBody(mapper.readTree(itemJson)); - - processor.process(Ddb2Operations.PutItem.name(), exchange); + exchange.getMessage().setBody(Json.MAPPER.readTree(itemJson)); + exchange.setProperty("operation", Ddb2Operations.PutItem.name()); + inputType.transform(exchange.getMessage(), DataType.ANY, new DataType(AWS_2_DDB_APPLICATION_JSON_TRANSFORMER)); Assertions.assertTrue(exchange.getMessage().hasHeaders()); Assertions.assertEquals(Ddb2Operations.PutItem, exchange.getMessage().getHeader(Ddb2Constants.OPERATION)); @@ -80,9 +83,10 @@ void shouldMapPutItemHeaders() throws Exception { void shouldMapUpdateItemHeaders() throws Exception { Exchange exchange = new DefaultExchange(camelContext); - exchange.getMessage().setBody(mapper.readTree("{\"key\": " + keyJson + ", \"item\": " + itemJson + "}")); + exchange.getMessage().setBody(Json.MAPPER.readTree("{\"operation\": \"" + Ddb2Operations.UpdateItem.name() + "\", \"key\": " + + keyJson + ", \"item\": " + itemJson + "}")); - processor.process(Ddb2Operations.UpdateItem.name(), exchange); + inputType.transform(exchange.getMessage(), DataType.ANY, new DataType(AWS_2_DDB_APPLICATION_JSON_TRANSFORMER)); Assertions.assertTrue(exchange.getMessage().hasHeaders()); Assertions.assertEquals(Ddb2Operations.UpdateItem, exchange.getMessage().getHeader(Ddb2Constants.OPERATION)); @@ -100,9 +104,10 @@ void shouldMapUpdateItemHeaders() throws Exception { void shouldMapDeleteItemHeaders() throws Exception { Exchange exchange = new DefaultExchange(camelContext); - exchange.getMessage().setBody(mapper.readTree("{\"key\": " + keyJson + "}")); + exchange.getMessage().setBody(Json.MAPPER.readTree("{\"key\": " + keyJson + "}")); + exchange.setProperty("operation", Ddb2Operations.DeleteItem.name()); - processor.process(Ddb2Operations.DeleteItem.name(), exchange); + inputType.transform(exchange.getMessage(), DataType.ANY, new DataType(AWS_2_DDB_APPLICATION_JSON_TRANSFORMER)); Assertions.assertTrue(exchange.getMessage().hasHeaders()); Assertions.assertEquals(Ddb2Operations.DeleteItem, exchange.getMessage().getHeader(Ddb2Constants.OPERATION)); @@ -118,9 +123,9 @@ void shouldMapDeleteItemHeaders() throws Exception { void shouldMapNestedObjects() throws Exception { Exchange exchange = new DefaultExchange(camelContext); - exchange.getMessage().setBody(mapper.readTree("{\"user\":" + itemJson + "}")); - - processor.process(Ddb2Operations.PutItem.name(), exchange); + exchange.getMessage().setBody(Json.MAPPER.readTree("{\"user\":" + itemJson + "}")); + exchange.setProperty("operation", Ddb2Operations.PutItem.name()); + inputType.transform(exchange.getMessage(), DataType.ANY, new DataType(AWS_2_DDB_APPLICATION_JSON_TRANSFORMER)); Assertions.assertTrue(exchange.getMessage().hasHeaders()); Assertions.assertEquals(Ddb2Operations.PutItem, exchange.getMessage().getHeader(Ddb2Constants.OPERATION)); @@ -130,11 +135,12 @@ void shouldMapNestedObjects() throws Exception { Assertions.assertEquals(1L, attributeValueMap.size()); Assertions.assertEquals("AttributeValue(M={name=AttributeValue(S=Rajesh Koothrappali), " + - "age=AttributeValue(N=29), " + - "super-heroes=AttributeValue(SS=[batman, spiderman, wonderwoman]), " + - "issues=AttributeValue(NS=[5, 3, 9, 1]), " + - "girlfriend=AttributeValue(NUL=true), " + - "doctorate=AttributeValue(BOOL=true)})", attributeValueMap.get("user").toString()); + "age=AttributeValue(N=29), " + + "super-heroes=AttributeValue(SS=[batman, spiderman, wonderwoman]), " + + "issues=AttributeValue(NS=[5, 3, 9, 1]), " + + "girlfriend=AttributeValue(NUL=true), " + + "doctorate=AttributeValue(BOOL=true)})", + attributeValueMap.get("user").toString()); } @Test @@ -142,9 +148,10 @@ void shouldMapNestedObjects() throws Exception { void shouldMapEmptyJson() throws Exception { Exchange exchange = new DefaultExchange(camelContext); - exchange.getMessage().setBody(mapper.readTree("{}")); + exchange.getMessage().setBody("{}"); + exchange.getMessage().setHeader(Ddb2Constants.OPERATION, Ddb2Operations.PutItem.name()); - processor.process(Ddb2Operations.PutItem.name(), exchange); + inputType.transform(exchange.getMessage(), DataType.ANY, new DataType(AWS_2_DDB_APPLICATION_JSON_TRANSFORMER)); Assertions.assertTrue(exchange.getMessage().hasHeaders()); Assertions.assertEquals(Ddb2Operations.PutItem, exchange.getMessage().getHeader(Ddb2Constants.OPERATION)); @@ -154,20 +161,37 @@ void shouldMapEmptyJson() throws Exception { Assertions.assertEquals(0L, attributeValueMap.size()); } - @Test() + @Test + void shouldFailForWrongBodyType() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setBody("Hello"); + + Assertions.assertThrows(CamelExecutionException.class, () -> inputType.transform(exchange.getMessage(), DataType.ANY, new DataType(AWS_2_DDB_APPLICATION_JSON_TRANSFORMER))); + } + + @Test void shouldFailForUnsupportedOperation() throws Exception { Exchange exchange = new DefaultExchange(camelContext); - exchange.getMessage().setBody(mapper.readTree("{}")); + exchange.getMessage().setBody(Json.MAPPER.readTree("{}")); + exchange.setProperty("operation", Ddb2Operations.BatchGetItems.name()); - Assertions.assertThrows(UnsupportedOperationException.class, () -> processor.process(Ddb2Operations.BatchGetItems.name(), exchange)); + Assertions.assertThrows(UnsupportedOperationException.class, () -> inputType.transform(exchange.getMessage(), DataType.ANY, new DataType(AWS_2_DDB_APPLICATION_JSON_TRANSFORMER))); + } + + @Test + public void shouldLookupDataType() throws Exception { + Transformer transformer = camelContext.getTransformerRegistry().resolveTransformer(new TransformerKey(DataType.ANY, new DataType(AWS_2_DDB_APPLICATION_JSON_TRANSFORMER))); + Assertions.assertNotNull(transformer); } private void assertAttributeValueMap(Map attributeValueMap) { Assertions.assertEquals(6L, attributeValueMap.size()); Assertions.assertEquals(AttributeValue.builder().s("Rajesh Koothrappali").build(), attributeValueMap.get("name")); Assertions.assertEquals(AttributeValue.builder().n("29").build(), attributeValueMap.get("age")); - Assertions.assertEquals(AttributeValue.builder().ss("batman", "spiderman", "wonderwoman").build(), attributeValueMap.get("super-heroes")); + Assertions.assertEquals(AttributeValue.builder().ss("batman", "spiderman", "wonderwoman").build(), + attributeValueMap.get("super-heroes")); Assertions.assertEquals(AttributeValue.builder().ns("5", "3", "9", "1").build(), attributeValueMap.get("issues")); Assertions.assertEquals(AttributeValue.builder().nul(true).build(), attributeValueMap.get("girlfriend")); Assertions.assertEquals(AttributeValue.builder().bool(true).build(), attributeValueMap.get("doctorate")); @@ -175,11 +199,19 @@ private void assertAttributeValueMap(Map attributeValueM private void assertAttributeValueUpdateMap(Map attributeValueMap) { Assertions.assertEquals(6L, attributeValueMap.size()); - Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().s("Rajesh Koothrappali").build()).action(AttributeAction.PUT).build(), attributeValueMap.get("name")); - Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().n("29").build()).action(AttributeAction.PUT).build(), attributeValueMap.get("age")); - Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().ss("batman", "spiderman", "wonderwoman").build()).action(AttributeAction.PUT).build(), attributeValueMap.get("super-heroes")); - Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().ns("5", "3", "9", "1").build()).action(AttributeAction.PUT).build(), attributeValueMap.get("issues")); - Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().nul(true).build()).action(AttributeAction.PUT).build(), attributeValueMap.get("girlfriend")); - Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().bool(true).build()).action(AttributeAction.PUT).build(), attributeValueMap.get("doctorate")); + Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().s("Rajesh Koothrappali").build()) + .action(AttributeAction.PUT).build(), attributeValueMap.get("name")); + Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().n("29").build()) + .action(AttributeAction.PUT).build(), attributeValueMap.get("age")); + Assertions.assertEquals( + AttributeValueUpdate.builder().value(AttributeValue.builder().ss("batman", "spiderman", "wonderwoman").build()) + .action(AttributeAction.PUT).build(), + attributeValueMap.get("super-heroes")); + Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().ns("5", "3", "9", "1").build()) + .action(AttributeAction.PUT).build(), attributeValueMap.get("issues")); + Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().nul(true).build()) + .action(AttributeAction.PUT).build(), attributeValueMap.get("girlfriend")); + Assertions.assertEquals(AttributeValueUpdate.builder().value(AttributeValue.builder().bool(true).build()) + .action(AttributeAction.PUT).build(), attributeValueMap.get("doctorate")); } } diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/format/converter/http/HttpCloudEventOutputTypeTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/format/converter/http/HttpCloudEventOutputTypeTest.java new file mode 100644 index 000000000..ac6821d5e --- /dev/null +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/format/converter/http/HttpCloudEventOutputTypeTest.java @@ -0,0 +1,70 @@ +/* + * 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.format.converter.http; + +import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; + +import org.apache.camel.Exchange; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.impl.engine.TransformerKey; +import org.apache.camel.kamelets.utils.format.converter.utils.CloudEvents; +import org.apache.camel.spi.DataType; +import org.apache.camel.spi.Transformer; +import org.apache.camel.support.DefaultExchange; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class HttpCloudEventOutputTypeTest { + + private final DefaultCamelContext camelContext = new DefaultCamelContext(); + + private final HttpCloudEventOutputType outputType = new HttpCloudEventOutputType(); + + @Test + void shouldMapToHttpCloudEvent() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setHeader(CloudEvents.CAMEL_CLOUD_EVENT_SUBJECT, "test1.txt"); + exchange.getMessage().setHeader(CloudEvents.CAMEL_CLOUD_EVENT_TYPE, "org.apache.camel.event"); + exchange.getMessage().setHeader(CloudEvents.CAMEL_CLOUD_EVENT_SOURCE, "org.apache.camel.test"); + exchange.getMessage().setHeader(CloudEvents.CAMEL_CLOUD_EVENT_CONTENT_TYPE, "text/plain"); + exchange.getMessage().setBody(new ByteArrayInputStream("Test1".getBytes(StandardCharsets.UTF_8))); + + outputType.transform(exchange.getMessage(), DataType.ANY, new DataType("http:application-cloudevents")); + + assertTrue(exchange.getMessage().hasHeaders()); + assertEquals(exchange.getExchangeId(), exchange.getMessage().getHeader("ce-id")); + assertEquals("1.0", exchange.getMessage().getHeader("ce-specversion")); + assertEquals("org.apache.camel.event", exchange.getMessage().getHeader("ce-type")); + assertEquals("test1.txt", exchange.getMessage().getHeader("ce-subject")); + assertEquals("org.apache.camel.test", exchange.getMessage().getHeader("ce-source")); + assertTrue(exchange.getMessage().getHeaders().containsKey("ce-time")); + assertEquals("text/plain", exchange.getMessage().getHeader(Exchange.CONTENT_TYPE)); + assertEquals("Test1", exchange.getMessage().getBody(String.class)); + } + + @Test + public void shouldLookupDataType() throws Exception { + Transformer transformer = camelContext.getTransformerRegistry().resolveTransformer(new TransformerKey(DataType.ANY, new DataType("http:application-cloudevents"))); + Assertions.assertNotNull(transformer); + } +} diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/headers/DeDuplicateHeadersTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/headers/DeDuplicateHeadersTest.java new file mode 100644 index 000000000..ca675a7ee --- /dev/null +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/headers/DeDuplicateHeadersTest.java @@ -0,0 +1,96 @@ +/* + * 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.headers; + +import org.apache.camel.Exchange; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.support.DefaultExchange; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class DeDuplicateHeadersTest { + + private DefaultCamelContext camelContext; + + private DeDuplicateNamingHeaders processor; + + @BeforeEach + void setup() { + camelContext = new DefaultCamelContext(); + } + + @Test + void shouldDuplicateHeaders() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setHeader("kafka.topic", "peppe"); + exchange.getMessage().setHeader("kafka.key", "peppe"); + exchange.getMessage().setHeader("kafka.override_topic", "peppe"); + exchange.getMessage().setHeader("my-header", "header"); + + processor = new DeDuplicateNamingHeaders(); + processor.setPrefix("kafka."); + processor.setRenamingPrefix("kafka."); + processor.process(exchange); + + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("kafka.KEY")); + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("kafka.TOPIC")); + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("kafka.OVERRIDE_TOPIC")); + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("my-header")); + } + + @Test + void shouldDuplicateSelectedHeaders() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setHeader("kafka.TOPIC", "peppe"); + exchange.getMessage().setHeader("kafka.KEY", "peppe"); + exchange.getMessage().setHeader("my-header", "header"); + exchange.getMessage().setHeader("kafka.override_topic", "peppe"); + + processor = new DeDuplicateNamingHeaders(); + processor.setPrefix("kafka."); + processor.setRenamingPrefix("kafka."); + processor.setSelectedHeaders("kafka.TOPIC,kafka.KEY"); + processor.setMode("filtering"); + processor.process(exchange); + + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("kafka.KEY")); + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("kafka.TOPIC")); + Assertions.assertFalse(exchange.getMessage().getHeaders().containsKey("kafka.OVERRIDE_TOPIC")); + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("my-header")); + } + + @Test + void shouldDeDuplicateSelectedHeaders() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setHeader("kafka.override_topic", "peppe"); + + processor = new DeDuplicateNamingHeaders(); + processor.setPrefix("kafka."); + processor.setRenamingPrefix("kafka."); + processor.setSelectedHeaders("kafka.topic,kafka.key"); + processor.setMode("filtering"); + processor.process(exchange); + + Assertions.assertFalse(exchange.getMessage().getHeaders().containsKey("kafka.OVERRIDE_TOPIC")); + + } + +} diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/headers/DuplicateHeadersTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/headers/DuplicateHeadersTest.java new file mode 100644 index 000000000..3cb3ca877 --- /dev/null +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/headers/DuplicateHeadersTest.java @@ -0,0 +1,75 @@ +/* + * 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.headers; + +import org.apache.camel.Exchange; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.support.DefaultExchange; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class DuplicateHeadersTest { + + private DefaultCamelContext camelContext; + + private DuplicateNamingHeaders processor; + + @BeforeEach + void setup() { + camelContext = new DefaultCamelContext(); + } + + @Test + void shouldDuplicateHeaders() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setHeader("CamelAwsS3Key", "test.txt"); + exchange.getMessage().setHeader("CamelAwsS3BucketName", "kamelets-demo"); + exchange.getMessage().setHeader("my-header", "header"); + + processor = new DuplicateNamingHeaders(); + processor.setPrefix("CamelAwsS3"); + processor.setRenamingPrefix("aws.s3."); + processor.process(exchange); + + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("aws.s3.key")); + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("aws.s3.bucket.name")); + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("my-header")); + } + + @Test + void shouldDuplicateSelectedHeaders() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setHeader("CamelAwsS3Key", "test.txt"); + exchange.getMessage().setHeader("CamelAwsS3BucketName", "kamelets-demo"); + exchange.getMessage().setHeader("my-header", "header"); + + processor = new DuplicateNamingHeaders(); + processor.setPrefix("CamelAwsS3"); + processor.setRenamingPrefix("aws.s3."); + processor.setMode("filtering"); + processor.setSelectedHeaders("CamelAwsS3Key,CamelAwsS3BucketName"); + processor.process(exchange); + + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("aws.s3.key")); + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("aws.s3.bucket.name")); + Assertions.assertTrue(exchange.getMessage().getHeaders().containsKey("my-header")); + } + +} diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/serialization/kafka/KafkaHeaderDeserializerTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/serialization/kafka/KafkaHeaderDeserializerTest.java index ee9625c49..2d7e3bd8b 100644 --- a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/serialization/kafka/KafkaHeaderDeserializerTest.java +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/serialization/kafka/KafkaHeaderDeserializerTest.java @@ -18,6 +18,7 @@ package org.apache.camel.kamelets.utils.serialization.kafka; import java.nio.charset.StandardCharsets; +import java.util.Arrays; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; @@ -27,9 +28,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -/** - * @author Christoph Deppisch - */ class KafkaHeaderDeserializerTest { private DefaultCamelContext camelContext; @@ -50,6 +48,7 @@ void shouldDeserializeHeaders() throws Exception { exchange.getMessage().setHeader("fooNull", null); exchange.getMessage().setHeader("number", 1L); + processor.enabled = true; processor.process(exchange); Assertions.assertTrue(exchange.getMessage().hasHeaders()); @@ -70,6 +69,7 @@ void shouldDeserializeHeadersViaTypeConverter() throws Exception { exchange.getMessage().setHeader("fooBytes", "barBytes".getBytes(StandardCharsets.UTF_8)); exchange.getMessage().setHeader("fooNull", null); + processor.enabled = true; processor.process(exchange); Assertions.assertTrue(exchange.getMessage().hasHeaders()); @@ -77,4 +77,36 @@ void shouldDeserializeHeadersViaTypeConverter() throws Exception { Assertions.assertEquals("converted", exchange.getMessage().getHeader("fooBytes")); Assertions.assertEquals("converted", exchange.getMessage().getHeader("fooNull")); } + + @Test + void shouldFallbackToDefaultConverter() throws Exception { + camelContext.setTypeConverter(null); + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setHeader("foo", "bar"); + exchange.getMessage().setHeader("fooBytes", "barBytes".getBytes(StandardCharsets.UTF_8)); + + processor.enabled = true; + processor.process(exchange); + + Assertions.assertTrue(exchange.getMessage().hasHeaders()); + Assertions.assertEquals("bar", exchange.getMessage().getHeader("foo")); + Assertions.assertEquals("barBytes", exchange.getMessage().getHeader("fooBytes")); + } + + @Test + void shouldNotDeserializeHeadersWhenDisabled() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setHeader("foo", "bar"); + exchange.getMessage().setHeader("fooBytes", "barBytes".getBytes(StandardCharsets.UTF_8)); + + processor.enabled = false; + processor.process(exchange); + + Assertions.assertTrue(exchange.getMessage().hasHeaders()); + Assertions.assertEquals("bar", exchange.getMessage().getHeader("foo")); + Assertions.assertTrue(exchange.getMessage().getHeader("fooBytes") instanceof byte[]); + Assertions.assertEquals(Arrays.toString("barBytes".getBytes(StandardCharsets.UTF_8)), Arrays.toString((byte[]) exchange.getMessage().getHeader("fooBytes"))); + } } diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/ExtractFieldTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/ExtractFieldTest.java index f2cd86b1a..95fcbe88c 100644 --- a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/ExtractFieldTest.java +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/ExtractFieldTest.java @@ -18,7 +18,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; -import org.apache.camel.InvalidPayloadException; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.support.DefaultExchange; import org.junit.jupiter.api.Assertions; @@ -49,9 +48,86 @@ void shouldExtractFieldFromJsonNode() throws Exception { exchange.getMessage().setBody(mapper.readTree(baseJson)); - processor.process("name", exchange); + processor.setField("name"); + processor.process(exchange); Assertions.assertEquals("Rajesh Koothrappali", exchange.getMessage().getBody(String.class)); } + @Test + void shouldExtractFieldToHeader() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setBody(mapper.readTree(baseJson)); + + processor.setField("name"); + processor.setHeaderOutput(true); + processor.setHeaderOutputName("name"); + processor.process(exchange); + + Assertions.assertEquals(baseJson, exchange.getMessage().getBody(String.class)); + Assertions.assertEquals("Rajesh Koothrappali", exchange.getMessage().getHeader("name")); + } + + @Test + void shouldExtractFieldToHeaderWithStrictHeaderCheck() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setBody(mapper.readTree(baseJson)); + + processor.setField("name"); + processor.setHeaderOutput(true); + processor.setHeaderOutputName("name"); + processor.setStrictHeaderCheck(true); + processor.process(exchange); + + Assertions.assertEquals(baseJson, exchange.getMessage().getBody(String.class)); + Assertions.assertEquals("Rajesh Koothrappali", exchange.getMessage().getHeader("name")); + + exchange.getMessage().setHeader("name", "somethingElse"); + + processor.process(exchange); + + Assertions.assertEquals("Rajesh Koothrappali", exchange.getMessage().getBody(String.class)); + Assertions.assertEquals("somethingElse", exchange.getMessage().getHeader("name")); + } + + @Test + void shouldExtractFieldToDefaultHeader() throws Exception { + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setBody(mapper.readTree(baseJson)); + + processor.setField("name"); + processor.setHeaderOutput(true); + processor.process(exchange); + + Assertions.assertEquals(baseJson, exchange.getMessage().getBody(String.class)); + Assertions.assertEquals("Rajesh Koothrappali", exchange.getMessage().getHeader(ExtractField.EXTRACTED_FIELD_HEADER)); + + exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setBody(mapper.readTree(baseJson)); + + processor.setHeaderOutputName("none"); + processor.process(exchange); + + Assertions.assertEquals(baseJson, exchange.getMessage().getBody(String.class)); + Assertions.assertEquals("Rajesh Koothrappali", exchange.getMessage().getHeader(ExtractField.EXTRACTED_FIELD_HEADER)); + } + + @Test + void shouldExtractFieldWithT() throws Exception { + final String baseJson = "{\"id\":\"1\",\"message\":\"Camel\\\\tRocks\"}"; + Exchange exchange = new DefaultExchange(camelContext); + + exchange.getMessage().setBody(mapper.readTree(baseJson)); + + processor.setField("message"); + processor.setTrimField(true); + processor.process(exchange); + + Assertions.assertEquals("Camel\\tRocks", exchange.getMessage().getBody()); + } + } diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/HoistFieldTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/HoistFieldTest.java index 0b748d6af..eb912eb1b 100644 --- a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/HoistFieldTest.java +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/HoistFieldTest.java @@ -25,11 +25,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - class HoistFieldTest { private DefaultCamelContext camelContext; diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/InsertFieldTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/InsertFieldTest.java index cf26d56e0..9719aa118 100644 --- a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/InsertFieldTest.java +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/InsertFieldTest.java @@ -18,7 +18,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; -import org.apache.camel.InvalidPayloadException; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.support.DefaultExchange; import org.junit.jupiter.api.Assertions; @@ -48,7 +47,8 @@ void shouldAddFieldToPlainJson() throws Exception { exchange.getMessage().setBody(mapper.readTree(baseJson)); - processor.process("age", "29", exchange); + processor = new InsertField("age", "29"); + processor.process(exchange); Assertions.assertEquals(exchange.getMessage().getBody(String.class), "{" + "\n" + " \"name\" : \"Rajesh Koothrappali\"," + "\n" + @@ -63,7 +63,8 @@ void shouldAddFieldToArrayJson() throws Exception { String arrayJson = "[\"batman\",\"spiderman\",\"wonderwoman\"]"; exchange.getMessage().setBody(mapper.readTree(arrayJson)); - processor.process("heroes", "green lantern", exchange); + processor.setValue("green lantern"); + processor.process(exchange); Assertions.assertEquals(exchange.getMessage().getBody(String.class), "[ \"batman\", \"spiderman\", \"wonderwoman\", \"green lantern\" ]"); diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/MaskFieldTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/MaskFieldTest.java index a7c5fba61..6aa48e8f7 100644 --- a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/MaskFieldTest.java +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/MaskFieldTest.java @@ -67,4 +67,20 @@ void shouldMaskFieldWithNull() throws Exception { JsonNode s = processor.process("name", null, exchange); Assertions.assertEquals("\"\"" , s.get("name").toString()); } + + @Test + void shouldMaskFieldList() throws Exception { + Map> names = new HashMap<>(); + Exchange exchange = new DefaultExchange(camelContext); + List els = new ArrayList<>(); + els.add("Sheldon"); + els.add("Rajesh"); + els.add("Leonard"); + names.put("names", els); + + exchange.getMessage().setBody(mapper.writeValueAsString(names)); + + JsonNode s = processor.process("names", null, exchange); + Assertions.assertEquals("[]" , s.get("names").toString()); + } } diff --git a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/RegexRouterTest.java b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/RegexRouterTest.java index 04b496b46..ed8f775a0 100644 --- a/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/RegexRouterTest.java +++ b/library/camel-kamelets-utils/src/test/java/org/apache/camel/kamelets/utils/transform/RegexRouterTest.java @@ -16,7 +16,6 @@ */ package org.apache.camel.kamelets.utils.transform; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.component.kafka.KafkaConstants; import org.apache.camel.impl.DefaultCamelContext; @@ -29,8 +28,6 @@ class RegexRouterTest { private DefaultCamelContext camelContext; - private final ObjectMapper mapper = new ObjectMapper(); - private RegexRouter processor; private final String topic = "hello"; diff --git a/library/camel-kamelets-utils/src/test/resources/log4j2-test.xml b/library/camel-kamelets-utils/src/test/resources/log4j2-test.xml new file mode 100644 index 000000000..1d6d8f383 --- /dev/null +++ b/library/camel-kamelets-utils/src/test/resources/log4j2-test.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + diff --git a/library/camel-kamelets/pom.xml b/library/camel-kamelets/pom.xml new file mode 100644 index 000000000..bffc4c996 --- /dev/null +++ b/library/camel-kamelets/pom.xml @@ -0,0 +1,66 @@ + + + + 4.0.0 + + + org.apache.camel.kamelets + camel-kamelets-parent + 2.2.0-SNAPSHOT + ../../pom.xml + + + camel-kamelets + jar + + Camel Kamelets + Camel Kamelets + + + + + maven-resources-plugin + 3.1.0 + + + copy-resource-one + install + + copy-resources + + + + true + ${project.basedir}/src/main/resources/kamelets + + + ./../../kamelets/ + + *.kamelet.yaml + + + + + + + + + + diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml similarity index 76% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml index 0ed9541c5..753a75ef9 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: avro-deserialize-action annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" labels: camel.apache.org/kamelet.type: "action" spec: @@ -14,8 +33,6 @@ spec: title: "Avro Deserialize Action" description: "Deserialize payload to Avro" type: object - required: - - schema properties: schema: title: Schema @@ -30,28 +47,26 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:kamelet" - "camel:core" - "camel:jackson-avro" template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.converter.avro.AvroSchemaResolver" + property: + - key: validate + value: '{{validate}}' + - key: schema + value: '{{schema:}}' from: uri: kamelet:source steps: - - set-property: - name: schema - constant: "{{schema}}" - - set-property: - name: validate - constant: "{{validate}}" - unmarshal: avro: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" - - remove-property: - name: schema - - remove-property: - name: validate + schemaResolver: "#bean:{{schemaResolver}}" - remove-header: name: "Content-Type" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml similarity index 76% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml index 502abbd52..bfb1b8b57 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: avro-serialize-action annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" labels: camel.apache.org/kamelet.type: "action" spec: @@ -14,8 +33,6 @@ spec: title: "Avro Serialize Action" description: "Serialize payload to Avro" type: object - required: - - schema properties: schema: title: Schema @@ -30,29 +47,27 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:kamelet" - "camel:core" - "camel:jackson-avro" template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.converter.avro.AvroSchemaResolver" + property: + - key: validate + value: '{{validate}}' + - key: schema + value: '{{schema:}}' from: uri: kamelet:source steps: - - set-property: - name: schema - constant: "{{schema}}" - - set-property: - name: validate - constant: "{{validate}}" - marshal: avro: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightAvroSchemaResolver" - - remove-property: - name: schema - - remove-property: - name: validate + schemaResolver: "#bean:{{schemaResolver}}" - set-header: name: "Content-Type" constant: "application/avro" diff --git a/aws-ddb-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml similarity index 59% rename from aws-ddb-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml index 7ab4a47a5..8d9a0f1ac 100644 --- a/aws-ddb-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -15,32 +15,40 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-ddb-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNMzkuNTA2IDEzLjY2N2gyMC4zMjF2NzEuOTk5SDM5LjUwNnpNNzQuMTMxIDY3LjU2NFY3OC41Mmw3LjQ4LTguNzY0di03LjYwMmwtNy40MzcgNS4zOTd6TTc0LjEzMSA2Mi45MzZsLjA0My0uMDEgNy40MzctNHYtNy42NDlsLTcuNDguNjg4ek03NC4xNzQgMzYuNDI5bC0uMDQzLS4wMVY0Ny4zNWw3LjQ4LjY5OXYtNy42NDV6Ii8+PHBhdGggZmlsbD0iIzFBNDc2RiIgZD0iTTgxLjYxMSA0OC4wNDlsLTcuNDgtLjY5OS0xNC4zMDMtLjU3MkgzOS41MDZsLTE0LjMwMy41NzJWMzYuNDQzbC0uMDE1LjAwOC4wMTUtLjAzMiAxNC4zMDMtMy4zMTRINTkuODI4bDE0LjMwMyAzLjMxNCA1LjI1OCAyLjc5NXYtMS43OTdsMi4yMjItLjI0My03LjQ4LTUuNDEtMTQuMzAzLTQuNDMySDM5LjUwNmwtMTQuMzAzIDQuNDMyVjIwLjgwN2wtNy40OCA4Ljc2M3Y3LjY1M2wuMDU4LS4wNDIgMi4xNjQuMjM2djEuODM0bC0yLjIyMiAxLjE4OXY3LjYxNWwuMDU4LS4wMDYgMi4xNjQuMDMydjMuMTk2bC0xLjg2Ny4wMjgtLjM1NS0uMDM0djcuNjE4bDIuMjIyIDEuMTk1djEuODU1bC0yLjEyOS4yMzUtLjA5My0uMDd2Ny42NTJsNy40OCA4Ljc2NFY2Ny41NjRsMTQuMzAzIDQuNDMySDU5LjgyOGwxNC4zNDUtNC40NDUgNy40MzgtNS4zNjctMi4yMjItLjI0NXYtMS44MThsLTUuMjE2IDIuODA1LTE0LjM0NSAzLjI5NXYuMDA0SDM5LjUwNnYtLjAwNGwtMTQuMzQ4LTMuMjk1LS4wMjUtLjA1MS4wNy4wMzdWNTEuOTY1bDE0LjMwMy41N3YuMDE0SDU5LjgyOHYtLjAxNGwxNC4zMDMtLjU3IDcuNDgtLjY1Ni0yLjIyMi0uMDMydi0zLjE5NnoiLz48L3N2Zz4=" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS DynamoDB Streams" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "AWS DynamoDB Sink" description: |- - Send data to AWS DynamoDB service. The sent data will insert/update/delete an item on the given AWS DynamoDB table. + Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes an item on the specified AWS DynamoDB table. - Access Key/Secret Key are the basic method for authenticating to the AWS DynamoDB service. These parameters are optional, because the Kamelet provide also the 'useDefaultCredentialsProvider'. + The basic authentication method for the AWS DynamoDB service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. - When using a default Credentials Provider the AWS DynamoDB client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. + If you use the default credentials provider, the DynamoDB client loads the credentials through this provider and doesn't use the basic authentication method. - This Kamelet expects a JSON as body. The mapping between the JSON fields and table attribute values is done by key, so if you have the input: - - '{"username":"oscerd", "city":"Rome"}' - - The Kamelet will insert/update an item in the given AWS DynamoDB table and set the attributes 'username' and 'city' respectively. Please note that the JSON object must include the primary key values that define the item. + This Kamelet expects a JSON-formatted body and it must include the primary key values that define the DynamoDB item. The mapping between the JSON fields and table attribute values is done by key. For example, for '{"username":"oscerd", "city":"Rome"}' input, the Kamelet inserts or update an item in the specified AWS DynamoDB table and sets the values for the 'username' and 'city' attributes. + + For PutItem operation the Json body defines all item attributes. + For DeleteItem operation the Json body defines only the primary key attributes that identify the item to delete. + For UpdateItem operation the Json body defines both key attributes to identify the item to be updated and all item attributes tht get updated on the item. + + The given Json body can use "key" and "item" as top level properties. Both define a Json object that will be mapped to respective attribute value maps + { + "key": {}, + "item": {} + } required: - table - region @@ -48,11 +56,11 @@ spec: properties: table: title: Table - description: Name of the DynamoDB table to look at + description: The name of the DynamoDB table. type: string accessKey: title: Access Key - description: The access key obtained from AWS + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -60,7 +68,7 @@ spec: - urn:camel:group:credentials secretKey: title: Secret Key - description: The secret key obtained from AWS + description: The secret key obtained from AWS. type: string format: password x-descriptors: @@ -68,35 +76,30 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to + description: The AWS region to access. type: string - example: eu-west-1 - enum: ["af-south-1", "ap-east-1", "ap-northeast-1", "ap-northeast-2", "ap-northeast-3", "ap-south-1", "ap-southeast-1", "ap-southeast-2", "ap-southeast-3", "ca-central-1", "eu-central-1", "eu-north-1", "eu-south-1", "eu-west-1", "eu-west-2", "eu-west-3", "fips-us-east-1", "fips-us-east-2", "fips-us-west-1", "fips-us-west-2", "me-south-1", "sa-east-1", "us-east-1", "us-east-2", "us-west-1", "us-west-2", "cn-north-1", "cn-northwest-1", "us-gov-east-1", "us-gov-west-1", "us-iso-east-1", "us-iso-west-1", "us-isob-east-1"] + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] operation: title: Operation - description: The operation to perform (one of PutItem, UpdateItem, DeleteItem) + description: "The operation to perform." type: string + enum: ["PutItem", "UpdateItem", "DeleteItem"] default: PutItem example: PutItem - writeCapacity: - title: Write Capacity - description: The provisioned throughput to reserved for writing resources to your table - type: integer - default: 1 useDefaultCredentialsProvider: title: Default Credentials Provider - description: Set whether the DynamoDB client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in. + description: If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false uriEndpointOverride: title: Overwrite Endpoint URI - description: Set the overriding endpoint URI. This option needs to be used in combination with overrideEndpoint option. + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. type: string overrideEndpoint: title: Endpoint Overwrite - description: Set the need for overiding the endpoint URI. This option needs to be used in combination with uriEndpointOverride setting. + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' @@ -105,7 +108,7 @@ spec: in: mediaType: application/json dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - "camel:core" - "camel:jackson" - "camel:aws2-ddb" @@ -117,11 +120,8 @@ spec: - set-property: name: operation constant: "{{operation}}" - - unmarshal: - json: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - - bean: "org.apache.camel.kamelets.utils.transform.aws.ddb.JsonToDdbModelConverter" + - transform: + to-type: "aws2-ddb:application-json" - to: uri: "aws2-ddb:{{table}}" parameters: @@ -129,7 +129,6 @@ spec: accessKey: "{{?accessKey}}" region: "{{region}}" operation: "{{operation}}" - writeCapacity: "{{?writeCapacity}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" uriEndpointOverride: "{{?uriEndpointOverride}}" overrideEndpoint: "{{overrideEndpoint}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml similarity index 59% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml index 829969ee5..186a51166 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-kinesis-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTS4wNTksMjE3LjU1OWwxMjguMTYyLDkwLjY3NUwyNTYsMjE3LjU1OSwxMjcuOTQ1LDE5OC45MjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDYsMTU0LjAxN2g2Ny41NzdWNTcuODM2TDE3NS45OSw0OS45NDMsMTI4LjE0Niw2My44OThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTE3NS45OSwxNTQuMDE3aDUyLjIzM1Y5MS42MzJsLTE0Ljk0LTQuNDgxLTM3LjI5Myw2LjMzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0yMTMuMjgyLDgyLjI2djcxLjc1N2g0Mi4yMjRMMjU2LDgxLjk0MWwtMTIuODI2LTUuMTI0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMjguMTQ3LDBWMTU0LjAxN2gyNS41VjEyLjc1MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTk1LjcyNCw1Ny44MzZsLTE5LjczMy03Ljg5NFYxNTQuMDE3aDE5LjczMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjI4LjIyNCw5MS42MzJsLTE0Ljk0MS00LjQ4djY2Ljg2NWgxNC45NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjQzLjE3NCwxNTQuMDE3SDI1NlY4MS45NDFsLTEyLjgyNi01LjEyNFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTI3Ljc1NCwxODQuODYzdjQ2LjAzM2wxMjcuNzUyLTMxLjg0NFYxNzIuMDg3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iI2Y2ODUzNCIvPjxwYXRoIGQ9Ik0xMjcuNzU0LDI2Mi43ODF2NDUuNDUzTDI1NiwyNDQuMTE0VjIxNy41NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNLjA1OSwyNDQuMzlsMTI3LjY5NSw2My44NDRWMjYyLjQ0OEwuMDU4LDIxNy41NThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTAsMTk5LjA1MWwxMjcuNzU0LDMxLjg0NVYxODQuODYyTDAsMTcyLjA4NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiM5ZDUwMjUiLz48L3N2Zz4=" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS Kinesis" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: sink spec: @@ -15,31 +34,28 @@ spec: description: |- Send data to AWS Kinesis. - The Kamelet expects the following header: - - - `partition` / `ce-partition`: to set the Kinesis partition key + The basic authentication method for the Kinesis service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the Kinesis client loads the credentials through this provider and doesn't use the basic authentication method. + + In the header, you can optionally set the `file` / `ce-partition` property to set the Kinesis partition key. - If the header won't be set the exchange ID will be used. + If you do not set the property in the header, the Kamelet uses the exchange ID for the partition key. - The Kamelet is also able to recognize the following header: + You can also set the `sequence-number` / `ce-sequencenumber` property in the header to specify the Sequence number. - - `sequence-number` / `ce-sequencenumber`: to set the Sequence number - - This header is optional. required: - stream - - accessKey - - secretKey - region type: object properties: stream: title: Stream Name - description: The Kinesis stream that you want to access (needs to be created in advance) + description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist. type: string accessKey: title: Access Key - description: The access key obtained from AWS + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -47,7 +63,7 @@ spec: - urn:camel:group:credentials secretKey: title: Secret Key - description: The secret key obtained from AWS + description: The secret key obtained from AWS. type: string format: password x-descriptors: @@ -55,9 +71,9 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to + description: The AWS region to access. type: string - example: eu-west-1 + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] useDefaultCredentialsProvider: title: Default Credentials Provider description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). @@ -65,8 +81,22 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + types: + in: + mediaType: application/octet-stream dependencies: - - camel:core + - "camel:core" - "camel:aws2-kinesis" - "camel:kamelet" template: @@ -109,3 +139,5 @@ spec: accessKey: "{{?accessKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml new file mode 100644 index 000000000..e30c36996 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml @@ -0,0 +1,125 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-kinesis-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTS4wNTksMjE3LjU1OWwxMjguMTYyLDkwLjY3NUwyNTYsMjE3LjU1OSwxMjcuOTQ1LDE5OC45MjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDYsMTU0LjAxN2g2Ny41NzdWNTcuODM2TDE3NS45OSw0OS45NDMsMTI4LjE0Niw2My44OThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTE3NS45OSwxNTQuMDE3aDUyLjIzM1Y5MS42MzJsLTE0Ljk0LTQuNDgxLTM3LjI5Myw2LjMzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0yMTMuMjgyLDgyLjI2djcxLjc1N2g0Mi4yMjRMMjU2LDgxLjk0MWwtMTIuODI2LTUuMTI0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMjguMTQ3LDBWMTU0LjAxN2gyNS41VjEyLjc1MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTk1LjcyNCw1Ny44MzZsLTE5LjczMy03Ljg5NFYxNTQuMDE3aDE5LjczMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjI4LjIyNCw5MS42MzJsLTE0Ljk0MS00LjQ4djY2Ljg2NWgxNC45NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjQzLjE3NCwxNTQuMDE3SDI1NlY4MS45NDFsLTEyLjgyNi01LjEyNFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTI3Ljc1NCwxODQuODYzdjQ2LjAzM2wxMjcuNzUyLTMxLjg0NFYxNzIuMDg3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iI2Y2ODUzNCIvPjxwYXRoIGQ9Ik0xMjcuNzU0LDI2Mi43ODF2NDUuNDUzTDI1NiwyNDQuMTE0VjIxNy41NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNLjA1OSwyNDQuMzlsMTI3LjY5NSw2My44NDRWMjYyLjQ0OEwuMDU4LDIxNy41NThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTAsMTk5LjA1MWwxMjcuNzU0LDMxLjg0NVYxODQuODYyTDAsMTcyLjA4NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiM5ZDUwMjUiLz48L3N2Zz4=" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS Kinesis" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "AWS Kinesis Source" + description: |- + Receive data from AWS Kinesis. + + The basic authentication method for the Kinesis service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the Kinesis client loads the credentials through this provider and doesn't use the basic authentication method. + + Two headers will be duplicated with different names for clarity at sink level, CamelAwsKinesisPartitionKey will be duplicated into aws.kinesis.partition.key and CamelAwsKinesisSequenceNumber will be duplicated in aws.kinesis.sequence.number + required: + - stream + - region + type: object + properties: + stream: + title: Stream Name + description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist. + 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 + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected stream. + type: integer + default: 500 + types: + out: + mediaType: application/octet-stream + dependencies: + - "camel:aws2-kinesis" + - "camel:kamelet" + - "camel:core" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + template: + beans: + - name: duplicateHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAwsKinesis' + renamingPrefix: 'aws.kinesis.' + mode: 'filtering' + selectedHeaders: 'CamelAwsKinesisPartitionKey,CamelAwsKinesisSequenceNumber' + from: + uri: aws2-kinesis:{{stream}} + parameters: + secretKey: "{{?secretKey}}" + accessKey: "{{?accessKey}}" + region: "{{region}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" + steps: + - process: + ref: "{{duplicateHeaders}}" + - to: "kamelet:sink" diff --git a/aws-lambda-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml similarity index 57% rename from aws-lambda-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml index 1e5b40259..1b361a0b1 100644 --- a/aws-lambda-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml @@ -1,33 +1,54 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-lambda-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA2NSIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTAgMjQ1LjI2MmwxNi4zMjIgOC4xNjFMMTkgMjQ4LjY2OFY1OS4zMzNsLTIuNjc4LTMuNDk0TDAgNjR2MTgxLjI2MiIgZmlsbD0iIzlENTAyNSIvPjxwYXRoIGQ9Ik00Ny42NzggNjMuNTdsLTMxLjM1Ni03LjczMXYxOTcuNTg0bDMxLjM1Ni03LjMwMlY2My41NyIgZmlsbD0iI0Y2ODUzNiIvPjxwYXRoIGQ9Ik0xNDMuODkzIDc4LjYwNGwyMi4zMzUtMTEuNTk3IDc0LjMwOSAyOC43NzgtMTkuNzU4IDIuNTc3LTc2Ljg4Ni0xOS43NTgiIGZpbGw9IiM2QjNBMTkiLz48cGF0aCBkPSJNMTQ0Ljc1MiAyMzAuNjU4bDIxLjkwNiAxMS41OTcgNzQuMzA4LTI4Ljc3OC0xOS43NTgtMi41NzgtNzYuNDU2IDE5Ljc1OSIgZmlsbD0iI0ZCQkY5MyIvPjxwYXRoIGQ9Ik0xNTAuMzM2IDE5OC44NzJsMzkuMDg3IDUuMTU1IDIuMjQ0LTQuMDI3di05MGwtMi4yNDQtNC43NjUtMzkuMDg3IDUuMTU0djg4LjQ4M00zNS42NTEgNDUuOTZsMjQuMDU0LTEyLjAyN0w2Mi4zMzMgMzl2MjMxbC0yLjYyOCA1LjMyOS0yNC4wNTQtMTIuMDI3VjQ1Ljk2IiBmaWxsPSIjOUQ1MDI1Ii8+PHBhdGggZD0iTTEwOC42NzEgMjU5LjAwN2wtNDguOTY2IDE1Ljg5MlYzMy45MzNsNDguOTY2IDE1Ljg5M3YyMDkuMTgxIiBmaWxsPSIjRjY4NTM2Ii8+PHBhdGggZD0iTTg5Ljc3MiAyODkuOTMzTDEyOCAzMDkuMjYybDQtNC41OTV2LTI5OUwxMjggMCA4OS43NzIgMTkuMzI5djI3MC42MDRNMjE5LjkxOSA5OC4zNjJsMTkuNzU5LTIuNTc3IDEuNjk3IDIuNDY1VjIxMWwtMS42OTcgMi45MDYtMTkuNzU5LTIuNTc3Vjk4LjM2MiIgZmlsbD0iIzlENTAyNSIvPjxwYXRoIGQ9Ik0xODkuNDIzIDEwNS4yMzV2OTkuMjIxbDQwLjgwNS00OS44MjUtNDAuODA1LTQ5LjM5NiIgZmlsbD0iI0Y2ODUzNiIvPjxwYXRoIGQ9Ik0yMzkuNjc4IDU1LjgzOUwxMjggMHYzMDkuMjYybDEyOC02NFY2NGwtMTYuMzIyLTguMTYxem0wIDE1OC4yMTdsLTczLjQ1IDIxLjkzNlY3My4yN2w3My40NSAyMS45MzZ2MTE4Ljg1eiIgZmlsbD0iI0Y2ODUzNiIvPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS Lambda" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: sink spec: definition: title: AWS Lambda Sink description: |- - Send a payload to an AWS Lambda function + Send a payload to an AWS Lambda function. + + The basic authentication method for the Lambda service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the Lambda client loads the credentials through this provider and doesn't use the basic authentication method. required: - function - - accessKey - - secretKey - region type: object properties: function: title: Function Name - description: The Lambda Function name + description: The Lambda Function name. type: string accessKey: title: Access Key - description: The access key obtained from AWS + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -35,7 +56,7 @@ spec: - urn:camel:group:credentials secretKey: title: Secret Key - description: The secret key obtained from AWS + description: The secret key obtained from AWS. type: string format: password x-descriptors: @@ -43,9 +64,9 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to + description: The AWS region to access. type: string - example: eu-west-1 + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] useDefaultCredentialsProvider: title: Default Credentials Provider description: If true, the Lambda client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). @@ -54,8 +75,8 @@ spec: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false dependencies: - - "camel:kamelet" - - "camel:aws2-lambda" + - "camel:aws2-lambda" + - "camel:kamelet" template: from: uri: kamelet:source diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml similarity index 73% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml index 11e23b953..9c51ad327 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -14,15 +14,17 @@ # See the License for the specific language governing permissions and # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-redshift-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNjE1IDE3ODMuNyIgdmlld0JveD0iMCAwIDE2MTUgMTc4My43IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im04MDcuNSAxMzYzLjggNjc4LjMgMTYxLjV2LTEyNzAuNWwtNjc4LjMgMTYxLjV6IiBmaWxsPSIjMjA1Yjk3Ii8+PHBhdGggZD0ibTE0ODUuOCAyNTQuOCAxMjkuMiA2NC42djExNDEuM2wtMTI5LjIgNjQuNnptLTY3OC4zIDExMDktNjc4LjMgMTYxLjV2LTEyNzAuNWw2NzguMyAxNjEuNXoiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtMTI5LjIgMjU0LjgtMTI5LjIgNjQuNnYxMTQxLjNsMTI5LjIgNjQuNnoiIGZpbGw9IiMyMDViOTciLz48cGF0aCBkPSJtOTc5LjggMTc4My43IDI1OC40LTEyOS4ydi0xNTI1LjNsLTI1OC40LTEyOS4yLTc5IDg0N3oiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtNjM1LjIgMTc4My43LTI1OC40LTEyOS4ydi0xNTI1LjNsMjU4LjQtMTI5LjIgNzkgODQ3eiIgZmlsbD0iIzIwNWI5NyIvPjxwYXRoIGQ9Im02MzUuMiAwaDM0OC4xdjE3ODAuMWgtMzQ4LjF6IiBmaWxsPSIjMmU3M2I3Ii8+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS Redshift" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -31,11 +33,11 @@ spec: description: |- Send data to an AWS Redshift 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: + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet needs to receive as input something like: + Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' required: @@ -48,23 +50,23 @@ spec: properties: serverName: title: Server Name - description: Server Name for the data source + description: The server name for the data source. type: string example: localhost serverPort: title: Server Port - description: Server Port for the data source + description: The server port for the AWS RedShi data source. type: string default: 5439 username: title: Username - description: The username to use for accessing a secured AWS Redshift Database + description: The username to access a secured AWS Redshift Database. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured AWS Redshift Database + description: The password to access a secured AWS Redshift Database. type: string format: password x-descriptors: @@ -72,12 +74,12 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the AWS Redshift Database + description: The query to execute against the AWS Redshift Database. type: string example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' databaseName: title: Database Name - description: The Database Name we are pointing + description: The name of the AWS RedShift Database. type: string types: in: @@ -86,28 +88,24 @@ spec: - "camel:jackson" - "camel:kamelet" - "camel:sql" - - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.5" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" + - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.18" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" template: beans: - name: dsBean type: "#class:org.apache.commons.dbcp2.BasicDataSource" - property: - - key: username - value: '{{username}}' - - key: password - value: '{{password}}' - - key: url - value: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}' - - key: driverClassName - value: 'com.amazon.redshift.jdbc.Driver' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'com.amazon.redshift.jdbc.Driver' from: uri: "kamelet:source" steps: - unmarshal: - json: + json: library: Jackson - - to: + - to: uri: "sql:{{query}}" parameters: dataSource: "#bean:{{dsBean}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml new file mode 100644 index 000000000..283d52e93 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml @@ -0,0 +1,143 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-s3-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS S3" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "AWS S3 Sink" + description: |- + Upload data to an Amazon S3 Bucket. + + The basic authentication method for the S3 service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method. + + In the header, you can optionally set the `file` / `ce-partition` property to specify the name of the file to upload. + + If you do not set the property in the header, the Kamelet uses the exchange ID for the file name. + required: + - bucketNameOrArn + - region + type: object + properties: + bucketNameOrArn: + title: Bucket Name + description: The S3 Bucket name or Amazon Resource Name (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 + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + autoCreateBucket: + title: Autocreate Bucket + description: Specifies to automatically create the S3 bucket. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + keyName: + title: Key Name + description: The key name for saving an element in the bucket. + type: string + dependencies: + - "camel:core" + - "camel:aws2-s3" + - "camel:kamelet" + template: + from: + uri: "kamelet:source" + steps: + - choice: + precondition: true + when: + - simple: '${propertiesExist:!keyName}' + steps: + - choice: + when: + - simple: "${header[file]}" + steps: + - set-header: + name: CamelAwsS3Key + simple: "${header[file]}" + - simple: "${header[ce-file]}" + steps: + - set-header: + name: CamelAwsS3Key + simple: "${header[ce-file]}" + otherwise: + steps: + - set-header: + name: CamelAwsS3Key + simple: "${exchangeId}" + - to: + uri: "aws2-s3:{{bucketNameOrArn}}" + parameters: + secretKey: "{{?secretKey}}" + accessKey: "{{?accessKey}}" + region: "{{region}}" + autoCreateBucket: "{{autoCreateBucket}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + keyName: "{{?keyName}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml new file mode 100644 index 000000000..32990cd30 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-source.kamelet.yaml @@ -0,0 +1,141 @@ +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-s3-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS S3" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "AWS S3 Source" + description: |- + Receive data from an Amazon S3 Bucket. + + The basic authentication method for the S3 service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the S3 client loads the credentials through this provider and doesn't use the basic authentication method. + + Two headers will be duplicated with different names for clarity at sink level, CamelAwsS3Key will be duplicated into aws.s3.key and CamelAwsS3BucketName will be duplicated in aws.s3.bucket.name + required: + - bucketNameOrArn + - region + type: object + properties: + bucketNameOrArn: + title: Bucket Name + description: The S3 Bucket name or Amazon Resource Name (ARN). + type: string + deleteAfterRead: + title: Auto-delete Objects + description: Specifies to delete objects after consuming them. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true + accessKey: + title: Access Key + description: The access key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + autoCreateBucket: + title: Autocreate Bucket + description: Specifies to automatically create the S3 bucket. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + prefix: + title: Prefix + description: The AWS S3 bucket prefix to consider while searching. + type: string + example: 'folder/' + ignoreBody: + title: Ignore Body + description: If true, the S3 Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the S3 object is put in the body. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected bucket. + type: integer + default: 500 + maxMessagesPerPoll: + title: Max Messages Per Poll + description: Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited. + type: integer + default: 10 + dependencies: + - "camel:core" + - "camel:aws2-s3" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + template: + beans: + - name: renameHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAwsS3' + renamingPrefix: 'aws.s3.' + mode: 'filtering' + selectedHeaders: 'CamelAwsS3Key,CamelAwsS3BucketName' + from: + uri: "aws2-s3:{{bucketNameOrArn}}" + parameters: + autoCreateBucket: "{{autoCreateBucket}}" + secretKey: "{{?secretKey}}" + accessKey: "{{?accessKey}}" + region: "{{region}}" + ignoreBody: "{{ignoreBody}}" + deleteAfterRead: "{{deleteAfterRead}}" + prefix: "{{?prefix}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" + maxMessagesPerPoll: "{{maxMessagesPerPoll}}" + steps: + - process: + ref: "{{renameHeaders}}" + - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml similarity index 58% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml index 537b52706..c0c014904 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-s3-streaming-upload-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS S3" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -14,17 +33,19 @@ spec: title: "AWS S3 Streaming upload Sink" description: |- Upload data to AWS S3 in streaming upload mode. + + Access Key/Secret Key are the basic method for authenticating to the AWS S3 Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'. + + When using a default Credentials Provider the S3 client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. required: - bucketNameOrArn - - accessKey - - secretKey - region - keyName type: object properties: bucketNameOrArn: title: Bucket Name - description: The S3 Bucket name or ARN. + description: The S3 Bucket name or Amazon Resource Name (ARN).. type: string accessKey: title: Access Key @@ -44,9 +65,9 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to. + description: The AWS region to access. type: string - example: eu-west-1 + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] autoCreateBucket: title: Autocreate Bucket description: Setting the autocreation of the S3 bucket bucketName. @@ -62,13 +83,17 @@ spec: batchMessageNumber: title: Batch Message Number description: The number of messages composing a batch in streaming upload mode - type: int + type: integer default: 10 batchSize: title: Batch Size description: The batch size (in bytes) in streaming upload mode - type: int + type: integer default: 1000000 + streamingUploadTimeout: + title: Streaming Upload Timeout + description: While streaming upload mode is true, this option set the timeout to complete upload + type: integer 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 @@ -80,11 +105,22 @@ spec: type: string useDefaultCredentialsProvider: title: Default Credentials Provider - description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + description: Set whether the S3 client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in. type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false dependencies: - "camel:aws2-s3" - "camel:kamelet" @@ -98,7 +134,6 @@ spec: secretKey: "{{?secretKey}}" accessKey: "{{?accessKey}}" region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" autoCreateBucket: "{{autoCreateBucket}}" streamingUploadMode: "true" restartingPolicy: "{{restartingPolicy}}" @@ -106,4 +141,7 @@ spec: batchSize: "{{batchSize}}" namingStrategy: "{{namingStrategy}}" keyName: "{{keyName}}" - + streamingUploadTimeout: "{{?streamingUploadTimeout}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/aws-sns-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml similarity index 52% rename from aws-sns-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml index 3db0c4ef0..2f789459f 100644 --- a/aws-sns-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml @@ -1,33 +1,56 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-sns-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj48L3BhdGg+DQoJCTxwYXRoIGQ9Ik0zNy43NSwyMTMuMjMzIEwyMi44NzUsMjA5LjA2NyBMOC44MTcsMTkzLjAzMyBMMjUuODk5LDE5MC4yMjQgTDM3Ljc1LDIxMy4yMzMiIGZpbGw9IiM5OTVCODAiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTAsMTkxLjAxNyBMMTUuMjA0LDE5NC4xMDggTDE3LjQxMSwxOTAuMjI2IEwxNy40MTEsNTguNTAzIEwxNS4yMDQsNTUuOTQyIEwwLDY0LjYgTDAsMTkxLjAxNyIgZmlsbD0iIzdCM0Y2NSI+PC9wYXRoPg0KCQk8cGF0aCBkPSJNNzMuOTMzLDY5LjcwOCBMMTUuMjA4LDU1Ljk0MiBMMTUuMjA4LDE5NC4xMDggTDI0LjAwNiwxOTMuMjkgTDM3Ljc1LDIxMy4yMzMgTDQ4LjM1LDE5MS4wMjggTDczLjkzMywxODguNjUgTDczLjkzMyw2OS43MDgiIGZpbGw9IiNDMTdCOUQiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTMzLjk1OCwxOTguMTMzIEw2MC4wMjEsMjAzLjM4MyBMNjEuNzM3LDE5OS4zMzggTDYxLjczNywzNy40NCBMNjAuMDIxLDMzLjc3NSBMMzMuOTU4LDQ2Ljk4MyBMMzMuOTU4LDE5OC4xMzMiIGZpbGw9IiM3QjNGNjUiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTIwOC43MzQsODEuNTE2IEw2MC4wMjEsMzMuNzc1IEw2MC4wMjEsMjAzLjM4NyBMNzcuMjQyLDIwMS4xNzEgTDk4Ljg3NSwyMzIuMDMzIEwxMTYuMDAxLDE5Ni4xODMgTDIwOC43MzQsMTg0LjI1IEwyMDguNzM0LDgxLjUxNiIgZmlsbD0iI0MxN0I5RCI+PC9wYXRoPg0KCQk8cGF0aCBkPSJNMTgxLjgzMywyNTYuNDkyIEwxNDQuMjY3LDI0NS45NjcgTDEwOC43NTgsMjA1LjQ2NyBMMTU0Ljc5MSwyMDQuOTk5IEwxODEuODMzLDI1Ni40OTIiIGZpbGw9IiM5OTVCODAiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTg5LjU5MSwyMDguOTUgTDEyNy45MjEsMjE2LjM2NyBMMTMwLjg5OCwyMTMuODAxIEwxMzAuODk4LDQuMTE3IEwxMjcuOTIxLDAgTDg5LjU5MSwxOS4xNTggTDg5LjU5MSwyMDguOTUiIGZpbGw9IiM3QjNGNjUiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTI1Niw2NC4wMzMgTDEyNy45MjUsMCBMMTI3LjkyNSwyMTYuMzY3IEwxNTAuNTIyLDIxMS44MzkgTDE4MS44MzMsMjU2LjQ5MiBMMjA4LjczNCwyMDAuMTgzIEwyMDguNzE3LDIwMC4xODEgTDI1NiwxOTAuNzA4IEwyNTYsNjQuMDMzIiBmaWxsPSIjQzE3QjlEIj48L3BhdGg+DQoJPC9nPg0KPC9zdmc+DQo=" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "AWS SNS" + camel.apache.org/kamelet.namespace: "AWS" labels: camel.apache.org/kamelet.type: sink spec: definition: title: AWS SNS Sink description: |- - Send message to an AWS SNS Topic + Send message to an Amazon Simple Notification Service (SNS) topic. + + The basic authentication method for the SNS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the SNS client loads the credentials through this provider and doesn't use the basic authentication method. + + In the header, you can optionally set the `subject` / `ce-subject` property to specify the subject of the message. required: - topicNameOrArn - - accessKey - - secretKey - region type: object properties: topicNameOrArn: title: Topic Name - description: The SQS Topic name or ARN + description: The SNS topic name name or Amazon Resource Name (ARN). type: string accessKey: title: Access Key - description: The access key obtained from AWS + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -35,7 +58,7 @@ spec: - urn:camel:group:credentials secretKey: title: Secret Key - description: The secret key obtained from AWS + description: The secret key obtained from AWS. type: string format: password x-descriptors: @@ -43,9 +66,9 @@ spec: - urn:camel:group:credentials region: title: AWS Region - description: The AWS region to connect to + description: The AWS region to access. type: string - example: eu-west-1 + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] autoCreateTopic: title: Autocreate Topic description: Setting the autocreation of the SNS topic. @@ -60,13 +83,37 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false dependencies: - - "camel:kamelet" - - "camel:aws2-sns" + - "camel:core" + - "camel:aws2-sns" + - "camel:kamelet" template: from: uri: kamelet:source steps: + - choice: + when: + - simple: "${header[subject]}" + steps: + - set-header: + name: CamelAwsSnsSubject + simple: "${header[subject]}" + - simple: "${header[ce-subject]}" + steps: + - set-header: + name: CamelAwsSnsSubject + simple: "${header[ce-subject]}" - to: uri: "aws2-sns:{{topicNameOrArn}}" parameters: @@ -75,3 +122,5 @@ spec: secretKey: "{{?secretKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml new file mode 100644 index 000000000..6062ff68c --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-fifo-sink.kamelet.yaml @@ -0,0 +1,175 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-sqs-fifo-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAwIDEwMCIKICAgaGVpZ2h0PSI3Mi4xOTk5OTciCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDU5Ljg0OTk5OCA3Mi4xOTk5OTciCiAgIHdpZHRoPSI1OS44NDk5OTgiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxNDUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImRvd25sb2FkLnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wLjIgKGU4NmM4NzA4NzksIDIwMjEtMDEtMTUpIj48bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExNTEiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxNDkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMTYiCiAgICAgaWQ9Im5hbWVkdmlldzE0NyIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgZml0LW1hcmdpbi10b3A9IjAuMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAuMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwLjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAuMSIKICAgICBpbmtzY2FwZTp6b29tPSI4LjE5IgogICAgIGlua3NjYXBlOmN4PSIyOS45MjUiCiAgICAgaW5rc2NhcGU6Y3k9IjM2LjEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMTQ1IiAvPjxnCiAgICAgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAuMDc1LC0xMy45KSI+PGcKICAgICAgIGlkPSJnMTQyIj48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTQuNDYyLDQwLjQ5NCA1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTIwIiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDIwLjE3OSwyOC45MDggMjAuMTc5LDM3LjM0NCA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMjIiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI0OS45OTcsODYgMjAuMTksNzEuMDk0IDIwLjE5LDYyLjY1NCA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiNkOWE3NDEiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDc5LjgyNSwyOC45MTQgNzkuODIzLDM3LjM1IDUwLjAwMywyOC4zOTkgIgogICAgICAgICBpZD0icG9seWdvbjEyNiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjQ5Ljk5Nyw4NiA3OS44MDYsNzEuMDk5IDc5LjgwNiw2Mi42NiA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI4IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iMjAuMTc5LDI4LjkwOCAyMy45ODksMjcuMDA0IDIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzAiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI1MC4wMDEsNDAuODMyIDM5LjAxOSw0Mi4yMjkgMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgIgogICAgICAgICBpZD0icG9seWdvbjEzMiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjODc2OTI5IgogICAgICAgICBwb2ludHM9IjM1LjA4Myw0Mi43MjkgMjcuOTU0LDQzLjYzNyAyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTM0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM2MjRhMWUiCiAgICAgICAgIHBvaW50cz0iNzkuODIzLDM3LjM1IDU0LjQ4MSw0MC40OTYgMjMuOTg3LDM2LjIwMSA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzYiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iI2ZhZDc5MSIKICAgICAgICAgcG9pbnRzPSI3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2IDIzLjk4NSw2My43OTMgNDkuOTk5LDcxLjYgIgogICAgICAgICBpZD0icG9seWdvbjEzOCIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjUwLjAwMSw0MC44MzIgNzkuODA4LDQ0LjYyOSA3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTQwIiAvPjwvZz48L2c+PC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS SQS" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: sink +spec: + definition: + title: AWS SQS FIFO Sink + description: |- + + Send message to an AWS SQS FIFO Queue. + + Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'. + + When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. + required: + - queueNameOrArn + - region + type: object + properties: + queueNameOrArn: + title: Queue Name + description: The SQS Queue 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 + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + contentBasedDeduplication: + title: Content-Based Deduplication + description: Use content-based deduplication (should be enabled in the SQS FIFO queue first) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreateQueue: + title: Autocreate Queue + description: Setting the autocreation of the SQS queue. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + amazonAWSHost: + title: AWS Host + description: The hostname of the Amazon AWS cloud. + type: string + default: amazonaws.com + protocol: + title: Protocol + description: The underlying protocol used to communicate with SQS + type: string + example: http or https + default: https + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + dependencies: + - "camel:aws2-sqs" + - "camel:core" + - "camel:kamelet" + template: + from: + uri: kamelet:source + steps: + - set-property: + name: contentBasedDeduplication + constant: "{{contentBasedDeduplication}}" + - choice: + when: + - simple: "${header[group]}" + steps: + - set-property: + name: CamelAwsMessageGroupId + simple: "${header[group]}" + - simple: "${header[ce-group]}" + steps: + - set-property: + name: CamelAwsMessageGroupId + simple: "${header[ce-group]}" + otherwise: + steps: + - set-property: + name: CamelAwsMessageGroupId + simple: "${exchangeId}" + - choice: + when: + - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'" + steps: + - to: + uri: "aws2-sqs:{{queueNameOrArn}}" + parameters: + autoCreateQueue: "{{autoCreateQueue}}" + accessKey: "{{?accessKey}}" + secretKey: "{{?secretKey}}" + region: "{{region}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + messageGroupIdStrategy: "usePropertyValue" + messageDeduplicationIdStrategy: "useContentBasedDeduplication" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + otherwise: + steps: + - to: + uri: "aws2-sqs:{{queueNameOrArn}}" + parameters: + autoCreateQueue: "{{autoCreateQueue}}" + accessKey: "{{?accessKey}}" + secretKey: "{{?secretKey}}" + region: "{{region}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + messageGroupIdStrategy: "usePropertyValue" + messageDeduplicationIdStrategy: "useExchangeId" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml new file mode 100644 index 000000000..1069976ee --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-sink.kamelet.yaml @@ -0,0 +1,124 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-sqs-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAwIDEwMCIKICAgaGVpZ2h0PSI3Mi4xOTk5OTciCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDU5Ljg0OTk5OCA3Mi4xOTk5OTciCiAgIHdpZHRoPSI1OS44NDk5OTgiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxNDUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImRvd25sb2FkLnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wLjIgKGU4NmM4NzA4NzksIDIwMjEtMDEtMTUpIj48bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExNTEiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxNDkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMTYiCiAgICAgaWQ9Im5hbWVkdmlldzE0NyIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgZml0LW1hcmdpbi10b3A9IjAuMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAuMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwLjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAuMSIKICAgICBpbmtzY2FwZTp6b29tPSI4LjE5IgogICAgIGlua3NjYXBlOmN4PSIyOS45MjUiCiAgICAgaW5rc2NhcGU6Y3k9IjM2LjEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMTQ1IiAvPjxnCiAgICAgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAuMDc1LC0xMy45KSI+PGcKICAgICAgIGlkPSJnMTQyIj48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTQuNDYyLDQwLjQ5NCA1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTIwIiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDIwLjE3OSwyOC45MDggMjAuMTc5LDM3LjM0NCA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMjIiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI0OS45OTcsODYgMjAuMTksNzEuMDk0IDIwLjE5LDYyLjY1NCA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiNkOWE3NDEiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDc5LjgyNSwyOC45MTQgNzkuODIzLDM3LjM1IDUwLjAwMywyOC4zOTkgIgogICAgICAgICBpZD0icG9seWdvbjEyNiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjQ5Ljk5Nyw4NiA3OS44MDYsNzEuMDk5IDc5LjgwNiw2Mi42NiA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI4IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iMjAuMTc5LDI4LjkwOCAyMy45ODksMjcuMDA0IDIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzAiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI1MC4wMDEsNDAuODMyIDM5LjAxOSw0Mi4yMjkgMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgIgogICAgICAgICBpZD0icG9seWdvbjEzMiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjODc2OTI5IgogICAgICAgICBwb2ludHM9IjM1LjA4Myw0Mi43MjkgMjcuOTU0LDQzLjYzNyAyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTM0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM2MjRhMWUiCiAgICAgICAgIHBvaW50cz0iNzkuODIzLDM3LjM1IDU0LjQ4MSw0MC40OTYgMjMuOTg3LDM2LjIwMSA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzYiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iI2ZhZDc5MSIKICAgICAgICAgcG9pbnRzPSI3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2IDIzLjk4NSw2My43OTMgNDkuOTk5LDcxLjYgIgogICAgICAgICBpZD0icG9seWdvbjEzOCIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjUwLjAwMSw0MC44MzIgNzkuODA4LDQ0LjYyOSA3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTQwIiAvPjwvZz48L2c+PC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS SQS" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: sink +spec: + definition: + title: AWS SQS Sink + description: |- + Send messages to an Amazon Simple Queue Service (SQS) queue. + + The basic authentication method for the SQS service is to specify an access key and a secret key. These parameters are optional because the Kamelet provides a default credentials provider. + + If you use the default credentials provider, the SQS client loads the credentials through this provider and doesn't use the basic authentication method. + required: + - queueNameOrArn + - region + type: object + properties: + queueNameOrArn: + title: Queue Name + description: The SQS Queue name or or Amazon Resource Name (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 + - urn:camel:group:credentials + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + region: + title: AWS Region + description: The AWS region to access. + type: string + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + autoCreateQueue: + title: Autocreate Queue + description: Automatically create the SQS queue. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + amazonAWSHost: + title: AWS Host + description: The hostname of the Amazon AWS cloud. + type: string + default: amazonaws.com + protocol: + title: Protocol + description: The underlying protocol used to communicate with SQS. + type: string + example: http or https + default: https + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + dependencies: + - "camel:aws2-sqs" + - "camel:kamelet" + template: + from: + uri: kamelet:source + steps: + - to: + uri: "aws2-sqs:{{queueNameOrArn}}" + parameters: + autoCreateQueue: "{{autoCreateQueue}}" + accessKey: "{{?accessKey}}" + secretKey: "{{?secretKey}}" + region: "{{region}}" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml new file mode 100644 index 000000000..71a5ac775 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/aws-sqs-source.kamelet.yaml @@ -0,0 +1,174 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: aws-sqs-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAwIDEwMCIKICAgaGVpZ2h0PSI3Mi4xOTk5OTciCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDU5Ljg0OTk5OCA3Mi4xOTk5OTciCiAgIHdpZHRoPSI1OS44NDk5OTgiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIGlkPSJzdmcxNDUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImRvd25sb2FkLnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wLjIgKGU4NmM4NzA4NzksIDIwMjEtMDEtMTUpIj48bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExNTEiPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnMxNDkiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMTYiCiAgICAgaWQ9Im5hbWVkdmlldzE0NyIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgZml0LW1hcmdpbi10b3A9IjAuMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAuMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwLjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAuMSIKICAgICBpbmtzY2FwZTp6b29tPSI4LjE5IgogICAgIGlua3NjYXBlOmN4PSIyOS45MjUiCiAgICAgaW5rc2NhcGU6Y3k9IjM2LjEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMTQ1IiAvPjxnCiAgICAgaWQ9IkFtYXpvbl9DbG91ZFNlYXJjaCIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAuMDc1LC0xMy45KSI+PGcKICAgICAgIGlkPSJnMTQyIj48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjIzLjk4NywzNi4yMDEgNTQuNDYyLDQwLjQ5NCA1NC40Niw1OS41MDYgMjMuOTg1LDYzLjc5MyAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTIwIiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDIwLjE3OSwyOC45MDggMjAuMTc5LDM3LjM0NCA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMjIiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI0OS45OTcsODYgMjAuMTksNzEuMDk0IDIwLjE5LDYyLjY1NCA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiNkOWE3NDEiCiAgICAgICAgIHBvaW50cz0iNTAuMDAzLDE0IDc5LjgyNSwyOC45MTQgNzkuODIzLDM3LjM1IDUwLjAwMywyOC4zOTkgIgogICAgICAgICBpZD0icG9seWdvbjEyNiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjQ5Ljk5Nyw4NiA3OS44MDYsNzEuMDk5IDc5LjgwNiw2Mi42NiA0OS45OTksNzEuNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTI4IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM4NzY5MjkiCiAgICAgICAgIHBvaW50cz0iMjAuMTc5LDI4LjkwOCAyMy45ODksMjcuMDA0IDIzLjk4NSw3Mi45OSAyMC4xNzUsNzEuMDg2ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzAiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iIzg3NjkyOSIKICAgICAgICAgcG9pbnRzPSI1MC4wMDEsNDAuODMyIDM5LjAxOSw0Mi4yMjkgMzkuMDE3LDU3Ljc2MiA0OS45OTksNTkuMTYgIgogICAgICAgICBpZD0icG9seWdvbjEzMiIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjODc2OTI5IgogICAgICAgICBwb2ludHM9IjM1LjA4Myw0Mi43MjkgMjcuOTU0LDQzLjYzNyAyNy45NTQsNTYuMzU0IDM1LjA4MSw1Ny4yNiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTM0IiAvPjxwb2x5Z29uCiAgICAgICAgIGZpbGw9IiM2MjRhMWUiCiAgICAgICAgIHBvaW50cz0iNzkuODIzLDM3LjM1IDU0LjQ4MSw0MC40OTYgMjMuOTg3LDM2LjIwMSA1MC4wMDMsMjguMzk5ICIKICAgICAgICAgaWQ9InBvbHlnb24xMzYiIC8+PHBvbHlnb24KICAgICAgICAgZmlsbD0iI2ZhZDc5MSIKICAgICAgICAgcG9pbnRzPSI3OS44MDYsNjIuNjYgNTQuNDYsNTkuNTA2IDIzLjk4NSw2My43OTMgNDkuOTk5LDcxLjYgIgogICAgICAgICBpZD0icG9seWdvbjEzOCIgLz48cG9seWdvbgogICAgICAgICBmaWxsPSIjZDlhNzQxIgogICAgICAgICBwb2ludHM9IjUwLjAwMSw0MC44MzIgNzkuODA4LDQ0LjYyOSA3OS44MDgsNTUuMzMgNDkuOTk5LDU5LjA5MiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTQwIiAvPjwvZz48L2c+PC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "AWS SQS" + camel.apache.org/keda.type: "aws-sqs-queue" + camel.apache.org/kamelet.namespace: "AWS" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "AWS SQS Source" + description: |- + Receive data from AWS SQS. + + Access Key/Secret Key are the basic method for authenticating to the AWS SQS Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'. + + When using a default Credentials Provider the SQS client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet. + + Two headers will be duplicated with different names for clarity at sink level, CamelAwsSqsMessageId will be duplicated into aws.sqs.message.id and CamelAwsSqsReceiptHandle will be duplicated in aws.sqs.receipt.handle + required: + - queueNameOrArn + - region + type: object + properties: + queueNameOrArn: + title: Queue Name + description: The SQS Queue Name or ARN + type: string + deleteAfterRead: + title: Auto-delete Messages + description: Delete messages after consuming them + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true + accessKey: + title: Access Key + description: The access key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + - urn:keda:authentication:awsAccessKeyID + - urn:keda:required + secretKey: + title: Secret Key + description: The secret key obtained from AWS. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + - urn:keda:authentication:awsSecretAccessKey + - urn:keda:required + region: + title: AWS Region + description: The AWS region to access. + type: string + x-descriptors: + - urn:keda:metadata:awsRegion + - urn:keda:required + enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"] + autoCreateQueue: + title: Autocreate Queue + description: Setting the autocreation of the SQS queue. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + amazonAWSHost: + title: AWS Host + description: The hostname of the Amazon AWS cloud. + type: string + default: amazonaws.com + protocol: + title: Protocol + description: The underlying protocol used to communicate with SQS + type: string + example: http or https + default: https + queueURL: + title: Queue URL + description: The full SQS Queue URL (required if using KEDA) + type: string + x-descriptors: + - urn:keda:metadata:queueURL + - urn:keda:required + useDefaultCredentialsProvider: + title: Default Credentials Provider + description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key). + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + uriEndpointOverride: + title: Overwrite Endpoint URI + description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option. + type: string + overrideEndpoint: + title: Endpoint Overwrite + description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected stream + type: integer + default: 500 + greedy: + title: Greedy Scheduler + description: If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + dependencies: + - "camel:core" + - "camel:aws2-sqs" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + template: + beans: + - name: renameHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAwsSqs' + renamingPrefix: 'aws.sqs.' + mode: 'filtering' + selectedHeaders: 'CamelAwsSqsReceiptHandle,CamelAwsSqsMessageId' + from: + uri: "aws2-sqs:{{queueNameOrArn}}" + parameters: + autoCreateQueue: "{{autoCreateQueue}}" + secretKey: "{{?secretKey}}" + accessKey: "{{?accessKey}}" + region: "{{region}}" + deleteAfterRead: "{{deleteAfterRead}}" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" + greedy: "{{greedy}}" + steps: + - process: + ref: "{{renameHeaders}}" + - to: "kamelet:sink" diff --git a/azure-storage-blob-append-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml similarity index 94% rename from azure-storage-blob-append-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml index f4ef2479f..bc0819176 100644 --- a/azure-storage-blob-append-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-sink.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -15,22 +15,24 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: - name: azure-storage-blob-append-sink + name: azure-storage-blob-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Azure Storage Blob" + camel.apache.org/kamelet.namespace: "Azure" labels: camel.apache.org/kamelet.type: "sink" spec: definition: - title: "Azure Storage Blob Append Sink" + title: "Azure Storage Blob Sink" description: |- - Upload data in append mode to Azure Storage Blob. + Upload data to Azure Storage Blob. In the header, you can set the `file` / `ce-file` property to specify the filename to upload. If you do set property in the header, the Kamelet uses the exchange ID as filename. required: @@ -91,6 +93,5 @@ spec: uri: "azure-storage-blob://{{accountName}}/{{containerName}}" parameters: accessKey: "{{?accessKey}}" - operation: "commitAppendBlob" - blobType: "appendBlob" + operation: "uploadBlockBlob" credentialType: "{{credentialType}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml similarity index 71% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml index f53aaa417..4ba65b3a8 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml @@ -1,46 +1,63 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: azure-storage-blob-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Azure Storage Blob" + camel.apache.org/kamelet.namespace: "Azure" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Azure Storage Blob Source" description: |- - Consume Files from Azure Storage Blob. + Consume files from Azure Storage Blob. + + Two headers will be duplicated with different names for clarity at sink level, CamelAzureStorageBlobETag will be duplicated into azure.storage.blob.e.tag and CamelAzureStorageBlobBlobSize will be duplicated in azure.storage.blob.blob.size required: - accountName - containerName - - accessKey type: object properties: accountName: title: Account Name description: The Azure Storage Blob account name. type: string + x-descriptors: + - urn:camel:group:credentials containerName: title: Container Name description: The Azure Storage Blob container name. type: string accessKey: title: Access Key - description: The Azure Storage Blob access Key. + description: The Azure Storage Blob access key. type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials - credentialType: - title: Credential Type - description: Determines the credential strategy to adopt. Possible values are SHARED_ACCOUNT_KEY, SHARED_KEY_CREDENTIAL and AZURE_IDENTITY - type: string - default: SHARED_ACCOUNT_KEY delay: title: Delay description: The number of milliseconds before the next poll of the selected blob. @@ -53,20 +70,37 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + credentialType: + title: Credential Type + description: Determines the credential strategy to adopt. + type: string + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + default: "SHARED_ACCOUNT_KEY" dependencies: - - "camel:azure-storage-blob" - - "camel:jsonpath" - - "camel:core" - - "camel:timer" - - "camel:kamelet" + - "camel:azure-storage-blob" + - "camel:kamelet" + - "camel:core" + - "camel:jsonpath" + - "camel:timer" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" template: + beans: + - name: duplicateHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAzureStorageBlob' + renamingPrefix: 'azure.storage.blob.' + mode: 'filtering' + selectedHeaders: 'CamelAzureStorageBlobETag,CamelAzureStorageBlobBlobSize' from: uri: "azure-storage-blob:{{accountName}}/{{containerName}}" parameters: - accessKey: "{{accessKey}}" + accessKey: "{{?accessKey}}" credentialType: "{{credentialType}}" delay: "{{delay}}" steps: + - process: + ref: "{{duplicateHeaders}}" - to: "kamelet:sink" - choice: precondition: true @@ -77,6 +111,6 @@ spec: uri: "azure-storage-blob:{{accountName}}/{{containerName}}" parameters: operation: "deleteBlob" - accessKey: "{{accessKey}}" + accessKey: "{{?accessKey}}" credentialType: "{{credentialType}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-datalake-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-datalake-sink.kamelet.yaml new file mode 100644 index 000000000..732e49c31 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-datalake-sink.kamelet.yaml @@ -0,0 +1,113 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: azure-storage-datalake-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDExNTguMiA4NjAuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzA5NUNBMjt9DQoJLnN0MXtmaWxsOiNGRkZGRkY7fQ0KCS5zdDJ7ZmlsbDojMzJCRUVEO30NCgkuc3Qze2ZpbGw6IzFCMUIyMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkyNy43LDE5Ny44SDYwOC44Yy0zLjQsMC4xLTYuOC0wLjktOS41LTNsLTkxLjItNjAuN2MtMi45LTEuNy02LjEtMi42LTkuNS0yLjZIMjMwLjVjLTkuMywwLTE3LDcuNC0xNy4yLDE2LjgNCgl2NTYzLjdjMC4yLDkuMyw3LjksMTYuOCwxNy4yLDE2LjhoNjk3LjFjOS4zLDAsMTctNy41LDE3LjItMTYuOHYtNDk3Qzk0NC45LDIwNS42LDkzNy4yLDE5Ny44LDkyNy43LDE5Ny44TDkyNy43LDE5Ny44eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTQzOS4zLDE2NC4zSDI4Ni45Yy0zLjgsMC02LjksMy4xLTYuOSw2Ljl2MTkuNGMwLDMuOCwzLjEsNi45LDYuOSw2LjloMTUyLjNjMy44LDAsNi45LTMuMSw2LjktNi45DQoJYzAsMCwwLDAsMCwwdi0xOS40QzQ0Ni4xLDE2Ny4zLDQ0My4xLDE2NC4zLDQzOS4zLDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MiIgZD0iTTMwOC40LDE2NC4zaC0yMy43Yy0yLjYsMC00LjcsMi4xLTQuNyw0Ljd2MjMuN2MwLDIuNiwyLjEsNC43LDQuNyw0LjdoMjMuN2MyLjYsMCw0LjctMi4xLDQuNy00LjdWMTY5DQoJQzMxMy4yLDE2Ni40LDMxMS4xLDE2NC4zLDMwOC40LDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MyIgZD0iTTkyNy43LDE5N0g1NzkuMWMtNC42LTAuMS05LDEuOC0xMiw1LjJMNTA5LDI1OC4xYy0zLjMsMy03LjYsNC43LTEyLDQuN0gyMzAuNWMtOS41LDAtMTcuMiw3LjctMTcuMiwxNy4ybDAsMA0KCXY0MzAuM2MwLjIsOS4zLDcuOSwxNi44LDE3LjIsMTYuOGg2OTcuMWM5LjMsMCwxNy03LjQsMTcuMi0xNi44VjIxNWMwLjEtMi4zLTAuMy00LjctMS4xLTYuOUM5NDEuMywyMDEuNCw5MzQuOSwxOTcsOTI3LjcsMTk3eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTYyOS45LDI4OC4yYy0xLjEtMC4zLTIuMy0wLjMtMy41LDBjMCwwLTMuOSwwLTUuNiwzbC0xMzYsMTk3LjVjLTEuMiwyLjEtMS4yLDQuOCwwLDYuOWMxLjMsMi40LDMuNyw0LDYuNSw0LjMNCgloODAuNWwtMzUuNiwxMTkuNmMtMC40LDAuNy0wLjYsMS41LTAuNiwyLjJjMCwwLjgsMC4xLDEuNiwwLjQsMi4zYzAuMywwLjcsMC43LDEuNCwxLjMsMS45YzAuNiwwLjYsMS4zLDEsMiwxLjNjMSwwLjQsMiwwLjQsMywwDQoJYzIuNiwwLDMuOSwwLDUuNi0zTDY4OCw0MjMuN3YtNC4zYy0wLjItMy45LTMuNC02LjktNy4zLTYuOWgtODYuMWwzNC45LTExNy41QzYzMS4yLDI5My4yLDYzMS4zLDI5MC4zLDYyOS45LDI4OC4yTDYyOS45LDI4OC4yeiIvPg0KPC9zdmc+DQo=" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake" + camel.apache.org/kamelet.namespace: "Azure" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Azure Storage Blob Data Lake Sink" + description: |- + Send data to Azure Storage Blob Data Lake. + required: + - accountName + - clientId + - clientSecret + - tenantId + - fileSystemName + type: object + properties: + accountName: + title: Account Name + description: The Azure Storage Blob Data lake account name. + type: string + x-descriptors: + - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob Data lake client Id. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob Data lake client secret. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob Data lake tenant id. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + fileSystemName: + title: File System Name + description: The Azure Storage Blob Data lake File system name. + type: string + x-descriptors: + - urn:camel:group:credentials + dependencies: + - "camel:azure-storage-datalake" + - "camel:kamelet" + - "camel:core" + - "camel:timer" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + template: + from: + uri: "kamelet:source" + steps: + - choice: + when: + - simple: "${header[file]}" + steps: + - set-header: + name: CamelAzureStorageDataLakeFileName + simple: "${header[file]}" + - simple: "${header[ce-file]}" + steps: + - set-header: + name: CamelAzureStorageDataLakeFileName + simple: "${header[ce-file]}" + otherwise: + steps: + - set-header: + name: CamelAzureStorageDataLakeFileName + simple: "${exchangeId}" + - to: + uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}" + parameters: + clientId: "{{clientId}}" + clientSecret: "{{clientSecret}}" + tenantId: "{{tenantId}}" + operation: "upload" diff --git a/library/camel-kamelets/src/main/resources/kamelets/azure-storage-datalake-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-datalake-source.kamelet.yaml new file mode 100644 index 000000000..95dba3df9 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-datalake-source.kamelet.yaml @@ -0,0 +1,100 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: azure-storage-datalake-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDExNTguMiA4NjAuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzA5NUNBMjt9DQoJLnN0MXtmaWxsOiNGRkZGRkY7fQ0KCS5zdDJ7ZmlsbDojMzJCRUVEO30NCgkuc3Qze2ZpbGw6IzFCMUIyMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkyNy43LDE5Ny44SDYwOC44Yy0zLjQsMC4xLTYuOC0wLjktOS41LTNsLTkxLjItNjAuN2MtMi45LTEuNy02LjEtMi42LTkuNS0yLjZIMjMwLjVjLTkuMywwLTE3LDcuNC0xNy4yLDE2LjgNCgl2NTYzLjdjMC4yLDkuMyw3LjksMTYuOCwxNy4yLDE2LjhoNjk3LjFjOS4zLDAsMTctNy41LDE3LjItMTYuOHYtNDk3Qzk0NC45LDIwNS42LDkzNy4yLDE5Ny44LDkyNy43LDE5Ny44TDkyNy43LDE5Ny44eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTQzOS4zLDE2NC4zSDI4Ni45Yy0zLjgsMC02LjksMy4xLTYuOSw2Ljl2MTkuNGMwLDMuOCwzLjEsNi45LDYuOSw2LjloMTUyLjNjMy44LDAsNi45LTMuMSw2LjktNi45DQoJYzAsMCwwLDAsMCwwdi0xOS40QzQ0Ni4xLDE2Ny4zLDQ0My4xLDE2NC4zLDQzOS4zLDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MiIgZD0iTTMwOC40LDE2NC4zaC0yMy43Yy0yLjYsMC00LjcsMi4xLTQuNyw0Ljd2MjMuN2MwLDIuNiwyLjEsNC43LDQuNyw0LjdoMjMuN2MyLjYsMCw0LjctMi4xLDQuNy00LjdWMTY5DQoJQzMxMy4yLDE2Ni40LDMxMS4xLDE2NC4zLDMwOC40LDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MyIgZD0iTTkyNy43LDE5N0g1NzkuMWMtNC42LTAuMS05LDEuOC0xMiw1LjJMNTA5LDI1OC4xYy0zLjMsMy03LjYsNC43LTEyLDQuN0gyMzAuNWMtOS41LDAtMTcuMiw3LjctMTcuMiwxNy4ybDAsMA0KCXY0MzAuM2MwLjIsOS4zLDcuOSwxNi44LDE3LjIsMTYuOGg2OTcuMWM5LjMsMCwxNy03LjQsMTcuMi0xNi44VjIxNWMwLjEtMi4zLTAuMy00LjctMS4xLTYuOUM5NDEuMywyMDEuNCw5MzQuOSwxOTcsOTI3LjcsMTk3eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTYyOS45LDI4OC4yYy0xLjEtMC4zLTIuMy0wLjMtMy41LDBjMCwwLTMuOSwwLTUuNiwzbC0xMzYsMTk3LjVjLTEuMiwyLjEtMS4yLDQuOCwwLDYuOWMxLjMsMi40LDMuNyw0LDYuNSw0LjMNCgloODAuNWwtMzUuNiwxMTkuNmMtMC40LDAuNy0wLjYsMS41LTAuNiwyLjJjMCwwLjgsMC4xLDEuNiwwLjQsMi4zYzAuMywwLjcsMC43LDEuNCwxLjMsMS45YzAuNiwwLjYsMS4zLDEsMiwxLjNjMSwwLjQsMiwwLjQsMywwDQoJYzIuNiwwLDMuOSwwLDUuNi0zTDY4OCw0MjMuN3YtNC4zYy0wLjItMy45LTMuNC02LjktNy4zLTYuOWgtODYuMWwzNC45LTExNy41QzYzMS4yLDI5My4yLDYzMS4zLDI5MC4zLDYyOS45LDI4OC4yTDYyOS45LDI4OC4yeiIvPg0KPC9zdmc+DQo=" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake" + camel.apache.org/kamelet.namespace: "Azure" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Azure Storage Blob Data Lake Source" + description: |- + Consume files from Azure Storage Blob Data Lake. + required: + - accountName + - clientId + - clientSecret + - tenantId + - fileSystemName + type: object + properties: + accountName: + title: Account Name + description: The Azure Storage Blob Data lake account name. + type: string + x-descriptors: + - urn:camel:group:credentials + clientId: + title: Client Id + description: The Azure Storage Blob Data lake client Id. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + clientSecret: + title: Client Secret + description: The Azure Storage Blob Data lake client secret. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + tenantId: + title: Tenant Id + description: The Azure Storage Blob Data lake tenant id. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + fileSystemName: + title: File System Name + description: The Azure Storage Blob Data lake File system name. + type: string + x-descriptors: + - urn:camel:group:credentials + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected blob. + type: integer + default: 500 + dependencies: + - "camel:azure-storage-datalake" + - "camel:kamelet" + - "camel:core" + - "camel:timer" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + template: + from: + uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}" + parameters: + clientId: "{{clientId}}" + clientSecret: "{{clientSecret}}" + tenantId: "{{tenantId}}" + delay: "{{delay}}" + steps: + - to: "kamelet:sink" diff --git a/azure-storage-queue-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml similarity index 67% rename from azure-storage-queue-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml index f2ea7179d..835829763 100644 --- a/azure-storage-queue-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml @@ -1,27 +1,40 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: azure-storage-queue-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OGMtLjIzOCAwLS40NzUgMC0uNzEzLS4yNDRsLTkuMDI0LTcuMzE3djExLjk1MWgyMC42NlYzNy4zMTdsLTkuNzM2IDcuNTYxYy0uNDc1LjI0NC0uOTUuMjQ0LTEuMTg3LjI0NHptMjkuNjgzIDBjLS4yMzggMC0uNzEzIDAtLjcxMy0uMjQ0bC05LjI2MS03LjMxN3YxMS45NTFoMjAuNjZWMzcuMzE3bC05LjczNiA3LjU2MWMtLjQ3NS4yNDQtLjcxMy4yNDQtLjk1LjI0NHpNNjcuNjc4IDBIMjIuNTU5TDAgNDBsMjIuNTU5IDQwSDY3LjQ0TDkwIDQwIDY3LjY3OCAwem03LjgzNiA1Ny4wNzNIMTQuMDExYy0xLjkgMC0zLjMyNS0xLjcwNy0zLjMyNS0zLjY1OVYyOS4yNjhjMC0xLjk1MSAxLjQyNS0zLjY1OCAzLjMyNS0zLjY1OGg2MS41MDRjLjcxMyAwIDEuOSAwIDkuOTc0IDE1LjYxbC4yMzcuNzMyLS4yMzcuNzMyYy04LjA3NCAxNC4zOS05LjI2MSAxNC4zOS05Ljk3NCAxNC4zOXpNNDAuMzcgMzQuNjM0SDIwLjY2bDkuNzM2IDcuODA1em0tMjYuMzU5LTYuMzQxYy0uNDc1IDAtLjk1LjQ4OC0uOTUuOTc2djI0LjE0NmMwIC40ODguNDc1IDEuMjIuOTUgMS4yMkg3NS4wNGMxLjE4OC0xLjIyIDQuNzQ5LTcuMDczIDcuODM3LTEyLjY4My0zLjA4Ny02LjA5OC02Ljg4Ni0xMi40MzktNy44MzctMTMuNjU5SDE0LjAxMXptMjkuOTIxIDIyLjQzOWMwIC43MzItLjcxMyAxLjQ2My0xLjY2MyAxLjQ2M0gxOC45OThjLS43MTMgMC0uOTUtLjczMi0uOTUtMS40NjNWMzIuOTI3YzAtLjczMi4yMzgtLjk3Ni45NS0uOTc2SDQyLjI3Yy43MTIgMCAxLjY2My4yNDQgMS42NjMuOTc2djE3LjgwNXptMjkuMjA5IDBjMCAuNzMyLS40NzUgMS40NjMtMS4xODggMS40NjNINDguOTE5Yy0uNzEyIDAtMS4xODctLjczMi0xLjE4Ny0xLjQ2M1YzMi45MjdjMC0uNzMyLjQ3NS0uOTc2IDEuMTg3LS45NzZoMjMuMDM0Yy43MTMgMCAxLjE4OC4yNDQgMS4xODguOTc2djE3LjgwNXoiIGZpbGw9IiMwMDc4ZDciIHN0cm9rZT0ibm9uZSIvPjwvc3ltYm9sPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Azure Storage Queue" + camel.apache.org/kamelet.namespace: "Azure" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Azure Storage Queue Sink" description: |- - Send Messages to Azure Storage queues. - - The Kamelet is able to understand the following headers to be set: - - - `expiration` / `ce-expiration`: as the time to live of the message in the queue. + Send events to Azure Storage queues. - If the header won't be set the default of 7 days will be used. - - The format should be in this form: PnDTnHnMn.nS., e.g: PT20.345S — parses as 20.345 seconds, P2D — parses as 2 days. + In the header, you can set the `partition` / `ce-partition` property to determine how long an event remains in the Azure Storage queue. Use `PnDTnHnMn.nS.` format. For example, `PT20.345S` parses as 20.345 seconds and `P2D` parses as 2 days. If you not set the property in the header, the Kamelet uses the default of `P27D` (7 days). required: - accountName - queueName @@ -32,20 +45,22 @@ spec: title: Account Name description: The Azure Storage Queue account name. type: string + x-descriptors: + - urn:camel:group:credentials queueName: title: Queue Name description: The Azure Storage Queue container name. type: string accessKey: title: Access Key - description: The Azure Storage Queue access Key. + description: The Azure Storage Queue access key. type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials dependencies: - - camel:core + - "camel:core" - "camel:azure-storage-queue" - "camel:kamelet" template: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml similarity index 57% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml index b4b1e31c5..75786d437 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml @@ -1,19 +1,40 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: azure-storage-queue-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OGMtLjIzOCAwLS40NzUgMC0uNzEzLS4yNDRsLTkuMDI0LTcuMzE3djExLjk1MWgyMC42NlYzNy4zMTdsLTkuNzM2IDcuNTYxYy0uNDc1LjI0NC0uOTUuMjQ0LTEuMTg3LjI0NHptMjkuNjgzIDBjLS4yMzggMC0uNzEzIDAtLjcxMy0uMjQ0bC05LjI2MS03LjMxN3YxMS45NTFoMjAuNjZWMzcuMzE3bC05LjczNiA3LjU2MWMtLjQ3NS4yNDQtLjcxMy4yNDQtLjk1LjI0NHpNNjcuNjc4IDBIMjIuNTU5TDAgNDBsMjIuNTU5IDQwSDY3LjQ0TDkwIDQwIDY3LjY3OCAwem03LjgzNiA1Ny4wNzNIMTQuMDExYy0xLjkgMC0zLjMyNS0xLjcwNy0zLjMyNS0zLjY1OVYyOS4yNjhjMC0xLjk1MSAxLjQyNS0zLjY1OCAzLjMyNS0zLjY1OGg2MS41MDRjLjcxMyAwIDEuOSAwIDkuOTc0IDE1LjYxbC4yMzcuNzMyLS4yMzcuNzMyYy04LjA3NCAxNC4zOS05LjI2MSAxNC4zOS05Ljk3NCAxNC4zOXpNNDAuMzcgMzQuNjM0SDIwLjY2bDkuNzM2IDcuODA1em0tMjYuMzU5LTYuMzQxYy0uNDc1IDAtLjk1LjQ4OC0uOTUuOTc2djI0LjE0NmMwIC40ODguNDc1IDEuMjIuOTUgMS4yMkg3NS4wNGMxLjE4OC0xLjIyIDQuNzQ5LTcuMDczIDcuODM3LTEyLjY4My0zLjA4Ny02LjA5OC02Ljg4Ni0xMi40MzktNy44MzctMTMuNjU5SDE0LjAxMXptMjkuOTIxIDIyLjQzOWMwIC43MzItLjcxMyAxLjQ2My0xLjY2MyAxLjQ2M0gxOC45OThjLS43MTMgMC0uOTUtLjczMi0uOTUtMS40NjNWMzIuOTI3YzAtLjczMi4yMzgtLjk3Ni45NS0uOTc2SDQyLjI3Yy43MTIgMCAxLjY2My4yNDQgMS42NjMuOTc2djE3LjgwNXptMjkuMjA5IDBjMCAuNzMyLS40NzUgMS40NjMtMS4xODggMS40NjNINDguOTE5Yy0uNzEyIDAtMS4xODctLjczMi0xLjE4Ny0xLjQ2M1YzMi45MjdjMC0uNzMyLjQ3NS0uOTc2IDEuMTg3LS45NzZoMjMuMDM0Yy43MTMgMCAxLjE4OC4yNDQgMS4xODguOTc2djE3LjgwNXoiIGZpbGw9IiMwMDc4ZDciIHN0cm9rZT0ibm9uZSIvPjwvc3ltYm9sPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Azure Storage Queue" + camel.apache.org/kamelet.namespace: "Azure" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Azure Storage Queue Source" description: |- - Receive Messages from Azure Storage queues. + Receive events from Azure Storage queues. + + One header will be duplicated with different names for clarity at sink level, CamelAzureStorageQueueMessageId will be duplicated into azure.storage.queue.message.id required: - accountName - queueName @@ -24,31 +45,45 @@ spec: title: Account Name description: The Azure Storage Queue account name. type: string + x-descriptors: + - urn:camel:group:credentials queueName: title: Queue Name description: The Azure Storage Queue container name. type: string accessKey: title: Access Key - description: The Azure Storage Queue access Key. + description: The Azure Storage Queue access key. type: string format: password x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password + - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials 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 + description: The maximum number of messages to get. You can specify a value between 1 and 32. The default is 1 (one message). If there are fewer than the maximum number of messages in the queue, then all the messages are returned. + type: integer default: 1 dependencies: - "camel:azure-storage-queue" - "camel:kamelet" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:core" template: + beans: + - name: renameHeaders + type: "#class:org.apache.camel.kamelets.utils.headers.DuplicateNamingHeaders" + properties: + prefix: 'CamelAzureStorageQueue' + renamingPrefix: 'azure.storage.queue.' + mode: 'filtering' + selectedHeaders: 'CamelAzureStorageQueueMessageId' from: uri: "azure-storage-queue://{{accountName}}/{{queueName}}" parameters: accessKey: "{{accessKey}}" maxMessages: "{{maxMessages}}" steps: + - process: + ref: "{{renameHeaders}}" - to: "kamelet:sink" diff --git a/cassandra-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/cassandra-sink.kamelet.yaml similarity index 73% rename from cassandra-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/cassandra-sink.kamelet.yaml index d7d72354d..3f5acd639 100644 --- a/cassandra-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/cassandra-sink.kamelet.yaml @@ -1,52 +1,70 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: cassandra-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHRpdGxlPmNhc3NhbmRyYTwvdGl0bGU+CjxwYXRoIGQ9Ik0yMy4zLDguN2MwLDAtMC4zLDAuMy0wLjUsMC41Yy0wLjUsMC41LTEuMiwxLjMtMS43LDEuNWgwYy0wLjEsMC0wLjEsMC0wLjItMC4xbDAuOS0xLjlsMCwwYzAsMC4xLTEsMS45LTIuMiwxLjZsMCwwCgljMCwwLDAsMC0wLjEsMGMwLjYtMC44LDAuOC0xLjUsMC44LTEuNXMtMSwxLjYtMi4zLDEuMmMwLDAtMC4xLDAtMC4xLTAuMWMwLDAsMC0wLjEsMC0wLjFjMC0wLjEsMC4xLTAuMSwwLjEtMC4yCgljMC4xLTAuMiwwLjMtMC41LDAuMy0wLjVTMTguMyw5LjUsMTgsOS43bDAsMGMtMC4yLDAuMS0wLjUsMC4zLTAuNywwLjNjLTAuMSwwLTAuMSwwLTAuMiwwYy0wLjMtMC4xLTAuMy0wLjMtMC4yLTAuNgoJYzAuMS0wLjMsMC4yLTAuNSwwLjItMC41cy0wLjMsMC40LTAuNSwwLjhjLTAuMiwwLjMtMC40LDAuNS0wLjYsMC42bC0wLjIsMGMtMC4xLTAuMiwwLjEtMSwwLjEtMWMtMC4xLDAuMi0wLjMsMC40LTAuNCwwLjYKCWMtMC4xLDAuMi0wLjMsMC4zLTAuNSwwLjRoMGMtMC4xLDAtMC4yLDAtMC4zLDBjMCwwLTAuMS0wLjEtMC4xLTAuMmMtMC4xLTAuNCwwLjItMSwwLjItMWMwLDAtMC4xLDAuMy0wLjMsMC43djAKCWMwLDAuMS0wLjEsMC4yLTAuMSwwLjJjLTAuMSwwLjItMC4yLDAuMy0wLjMsMC4zYy0wLjItMC4xLTAuMy0wLjMtMC4zLTAuNWMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjRzMCwwLjMtMC4yLDAuNwoJYzAsMC4xLTAuMSwwLjItMC4yLDAuM2MwLDAtMC4xLDAuMS0wLjEsMC4xYy0xLjIsMC4yLTIuNCwwLjYtMy41LDFjLTAuMywwLjEtMC42LDAuMi0wLjksMC4zYy0xLDAuNC0yLDEtMy4xLDEuNwoJYy0xLjIsMC44LTIuMywxLjYtMy40LDIuNmMtMC42LDAuNS0xLjIsMS4xLTEuOCwxLjdjNC43LTIuNiw2LjYtNi4zLDE1LjUtNi43YzYuNy0wLjMsOS45LDIuOCwxMC45LDIuOWMyLjYsMC4xLDQuMy0xLjksNC45LTIuNgoJYzAuMS0wLjIsMC4yLTAuMywwLjItMC4zYzAsMC0wLjQsMC41LTEsMWwwLDBjLTAuNiwwLjUtMS40LDAuOS0yLjEsMC44aDBjLTAuMSwwLTAuMiwwLTAuMywwYzEtMC42LDEuNi0xLjYsMi0yLjEKCWMwLjEtMC4yLDAuMy0wLjUsMC4zLTAuNXMtMi4zLDIuNC00LjEsMi4yYy0wLjEsMC0wLjEsMC0wLjIsMGMwLjgtMC42LDEuMy0xLjQsMS43LTIuMXYwaDBjMC40LTAuNywwLjYtMS4zLDAuNi0xLjMKCWMwLDAtMC40LDAuNy0xLDEuNGwwLDBjLTAuNiwwLjctMS4zLDEuNS0yLDEuN2MtMC4xLDAtMC4yLDAuMS0wLjMsMC4xYzEuNC0xLjMsMi4xLTMuMSwyLjEtMy4xcy0xLjUsMi4xLTIuNywyLjUKCWMtMC4xLDAtMC4yLDAuMS0wLjIsMC4xYzAuOC0wLjcsMS4yLTEuMiwxLjQtMS43YzAuMy0wLjUsMC40LTAuOSwwLjQtMC45bDAsMGMtMC4xLDAuMi0wLjIsMC4zLTAuNCwwLjRsMCwwYy0wLjMsMC40LTAuOSwxLTEuNCwxLjQKCWwwLDBjLTAuMSwwLjEtMC4zLDAuMi0wLjQsMC4zYzAsMC0wLjEsMC4xLTAuMSwwLjFjLTAuMSwwLjEtMC4yLDAuMS0wLjQsMC4yYzAsMC0wLjEsMC0wLjEsMGMtMC4xLTAuMS0wLjItMC4xLTAuMy0wLjIKCWMtMC4xLDAuMS0wLjEsMC4yLTAuMiwwLjJoMGMwLDAtMC4xLDAtMC4xLDBjMS4xLTEuMiwxLjktMi44LDEuOS0yLjhsMCwwYzAsMC0xLjYsMi4xLTIuMywyLjNjLTAuMSwwLTAuMi0wLjEtMC4zLTAuMQoJYzAtMC4xLDAtMC4xLDAuMS0wLjJjMC4yLTAuNCwwLjYtMSwwLjYtMXMtMC4xLDAuMS0wLjIsMC4xYy0wLjEsMC4xLTAuMywwLjItMC40LDAuM2MtMC4xLDAuMS0wLjIsMC4xLTAuMiwwLjEKCWMtMC4xLDAuMS0wLjIsMC4xLTAuMywwLjFjLTAuMSwwLjEtMC4yLDAuMS0wLjMsMC4xYy0wLjEsMC0wLjEsMC0wLjEsMEMyMi4zLDEwLjUsMjMuMyw4LjcsMjMuMyw4LjdMMjMuMyw4Ljd6IE0xNywxMS42CgljLTAuNCwwLTAuOCwwLTEuMiwwYy0wLjQsMC0wLjcsMC0xLjEsMC4xYy0wLjQsMC4yLTAuNywwLjQtMSwwLjZjMCwwLjEsMCwwLjEsMCwwLjJjMCwwLjEsMCwwLjItMC4xLDAuMmwxLjIsMC45bDAsMGwtMC41LTEuNwoJbDAuOCwxLjVjMCwwLDAuMSwwLDAuMSwwbDAtMS42bDAuNSwxLjZsMC42LTEuNWwwLDEuN2MwLDAsMCwwLDAsMGwwLjktMS4zbC0wLjUsMS42bDAsMGwxLjQtMC45bC0xLDEuNHYwbDEuMy0wLjVjMCwwLDAsMCwwLjEtMC4xCgljLTAuMy0wLjQsMC0wLjksMC41LTAuOGMwLjItMC4zLDAuMy0wLjcsMC40LTFDMTguNiwxMS43LDE3LjgsMTEuNiwxNywxMS42TDE3LDExLjZ6IE0xMy42LDExLjhMMTMuNiwxMS44Yy0wLjQsMC0wLjgsMC4xLTEuMiwwLjIKCXMtMC44LDAuMS0xLjEsMC4yaDBjMC4yLDAuNSwwLjQsMSwwLjcsMS40YzAuMS0wLjMsMC4zLTAuNiwwLjUtMC45Yy0wLjItMC41LDAuMy0wLjksMC44LTAuN0MxMy40LDExLjksMTMuNSwxMS44LDEzLjYsMTEuOAoJTDEzLjYsMTEuOHogTTE5LjYsMTEuOWMwLDAuNC0wLjEsMC43LTAuMiwxLjFjMC40LDAuMywwLjEsMS0wLjQsMC45Yy0wLjIsMC4zLTAuNSwwLjYtMC43LDAuOGwwLjksMGwtMS4zLDAuM2MwLDAtMC4xLDAuMS0wLjEsMC4xCgljMC44LDAuMSwxLjUsMC40LDIuMSwwLjljMC40LTAuOCwwLjctMS42LDAuNy0yLjZDMjAuNCwxMi44LDIwLDEyLjMsMTkuNiwxMS45TDE5LjYsMTEuOXogTTExLjEsMTIuMmMtMC40LDAuMS0wLjgsMC4yLTEuMSwwLjMKCWMtMC4yLDAuMy0wLjMsMC43LTAuMywxYzAsMi4yLDEuMyw0LDMuMSw0LjlsMCwwYy0wLjMtMC4zLTAuNi0wLjctMC44LTEuMWMtMC45LDAuMS0xLjItMS4xLTAuNC0xLjRjLTAuMS0wLjYsMC0xLjMsMC4yLTEuOQoJQzExLjUsMTMuNSwxMS4yLDEyLjksMTEuMSwxMi4yTDExLjEsMTIuMnogTTIxLjMsMTIuMmMwLjIsMC41LDAuMywxLjEsMC4zLDEuN2MwLDMuMy0yLjksNS45LTYuNiw1LjljLTMuNiwwLTYuNi0yLjYtNi42LTUuOQoJYzAtMC4zLDAtMC42LDAuMS0wLjljLTEsMC40LTEuOSwwLjktMi44LDEuNWMtMC4zLDAuNS0wLjQsMS4xLTAuNCwxLjZjMC4xLDEuMywxLjMsMi40LDMsMy4ybC0wLjMtMC4xYy0zLjEtMC45LTUuNSwwLjctOC4xLTAuNwoJYzAuNiwwLjUsMS4zLDEsMy4zLDFjMC43LDAsMi45LTAuMSwzLjMsMC4yYzAuNCwwLjMtMS40LDItMS40LDJzMy0yLjUsMy4zLTEuN2MwLjIsMC41LTAuOSwyLTAuOSwyczEtMS40LDEuOC0xLjcKCWMwLjUtMC4yLDEtMC4yLDEuNCwwLjRjMC4yLDAuMy0xLjIsMi4xLTEuMiwyLjFzMi0xLjksMi4zLTEuOGMwLjQsMC4xLDAsMS44LDAsMS44czAuNy0xLjcsMS4xLTEuOWMwLjUtMC4yLTEuMiw0LTEuMiw0CglzMi4xLTMuOSwyLjUtNGMwLjctMC4yLDEuMSwyLjcsMS4xLDIuN3MtMC4zLTIuNSwwLTIuN2MyLjMtMSwxLDQuMywxLDQuM3MxLjUtMy42LDAuNi00LjRjMi40LDEuNiwyLjEsNC40LDIuMSw0LjRzMC42LTEuNC0xLjEtNC43CgljMSwwLDIuNCwyLjUsMi40LDIuNXMtMS42LTIuOC0wLjUtMi44YzIuMS0wLjEsMi4zLDMuNywyLjMsMy43czAuNi0wLjUtMS4xLTQuMmMxLjEtMC43LDMuNywzLjQsMy43LDMuNHMtMi40LTQtMi00LjMKCWMwLjQtMC4zLDEuOCwxLjMsMS44LDEuM3MtMS4xLTEuNS0wLjgtMS42YzAuMy0wLjIsMy4yLDIuOSwzLjIsMi45cy0yLjUtMy0yLjEtMy40YzAuNC0wLjQsMi4zLDEsMi4zLDFzLTIuOC0xLjktMi4zLTIuMgoJYzAuOC0wLjQsMywxLDMsMXMtMS4zLTEuMS0xLjEtMS40YzAuMi0wLjMsMi44LDEuNywyLjgsMS43cy0yLjMtMS44LTIuNC0yLjNjLTAuMS0wLjUsMS44LDAuMiwxLjgsMC4ycy0yLjEtMS0yLjItMS4zCgljMC0wLjMsMS40LDAuMywxLjQsMC4zcy0yLTEuNi0yLjUtMC4zYy0wLjEsMC4yLTAuMiwwLjQtMC40LDAuNmMwLjEtMC40LDAuMi0wLjcsMC4xLTEuMWMwLTAuMSwwLTAuMi0wLjEtMC40CglDMjQuNiwxMy41LDIzLjIsMTIuOCwyMS4zLDEyLjJMMjEuMywxMi4yeiBNMTMuNSwxMi44Yy0wLjEsMC4yLTAuNCwwLjMtMC43LDAuMmMtMC4xLDAuMS0wLjEsMC4yLTAuMiwwLjNsMS43LDAuNmMwLDAsMCwwLDAtMC4xCglMMTMuNSwxMi44eiBNMTIuNywxMy40Yy0wLjEsMC4yLTAuMiwwLjQtMC4zLDAuN2MwLjIsMC4yLDAuMywwLjMsMC41LDAuNWwxLjIsMGwwLDBMMTIuNywxMy40eiBNMTguMiwxNC4xbC0wLjgsMC42bDAuMSwwCglDMTcuOCwxNC41LDE4LDE0LjMsMTguMiwxNC4xeiBNMTIuMiwxNC41QzEyLjIsMTQuNSwxMi4yLDE0LjUsMTIuMiwxNC41Yy0wLjEsMC41LTAuMSwwLjktMC4xLDEuM2MwLjMsMC4xLDAuNiwwLjMsMC42LDAuNmwxLjItMC44CgljLTAuMSwwLTAuMi0wLjEtMC4zLTAuMWwtMS40LTAuMWwwLjgtMC4yQzEyLjgsMTUsMTIuNSwxNC44LDEyLjIsMTQuNUwxMi4yLDE0LjV6IE0xMy4zLDE0LjhjMC4yLDAuMSwwLjQsMC4yLDAuNiwwLjNsMC4yLDAKCWMwLDAsMCwwLDAtMC4xTDEzLjMsMTQuOHogTTE3LjQsMTUuN2wxLjIsMS4yTDE3LDE2LjJsMC45LDEuNGwtMS40LTEuMWwwLDBsMC41LDEuN2wtMC44LTEuNWwtMC4xLDEuOGwtMC41LTEuOGwtMC42LDEuN2wwLjItMS44CglsMCwwTDE0LDE4LjJsMC40LTEuNWMtMC41LDAuNC0wLjgsMS0xLjEsMS42YzAuMSwwLjEsMC4zLDAuMywwLjQsMC40YzIuMiwwLjYsNC42LTAuMyw1LjgtMi4zYy0wLjUtMC4zLTEuMS0wLjYtMS43LTAuN0wxNy40LDE1Ljd6CgkgTTE0LjIsMTZsLTEuNCwwLjVjMCwwLDAsMCwwLDAuMWMwLDAuMi0wLjEsMC40LTAuMiwwLjZjMC4xLDAuMywwLjMsMC42LDAuNSwwLjhjMC4xLTAuMywwLjMtMC42LDAuNC0wLjhMMTMsMTcuNEwxNC4yLDE2egoJIE0xOSwxOS43Yy0wLjIsMC4xLTAuNSwwLjEtMC44LDAuMkMxOC41LDE5LjgsMTguOCwxOS43LDE5LDE5Ljd6IE0xNy42LDIwYy0wLjIsMC0wLjMsMC4xLTAuNSwwLjFjLTAuMywwLTAuNSwwLjEtMC44LDAuMQoJQzE2LjgsMjAuMSwxNy4yLDIwLjEsMTcuNiwyMEwxNy42LDIweiBNMTUuOCwyMC4yYy0wLjEsMC0wLjMsMC0wLjQsMEMxNS41LDIwLjIsMTUuNiwyMC4yLDE1LjgsMjAuMnoiLz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Cassandra" + camel.apache.org/kamelet.namespace: "Nosql" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Cassandra Sink" description: |- - Send data to a Cassandra Cluster. + Send data to an Apache Cassandra cluster. - This Kamelet expects the body as JSON Array. The content of the JSON Array will be used as input for the CQL Prepared Statement set in the query parameter. + This Kamelet expects JSON Array formatted data. The content of the JSON Array is used as input for the CQL Prepared Statement set in the query parameter. required: - connectionHost - connectionPort - keyspace - - username - - password - query type: object properties: connectionHost: title: Connection Host - description: Hostname(s) cassandra server(s). Multiple hosts can be separated by comma. + description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames. type: string example: localhost connectionPort: title: Connection Port - description: Port number of cassandra server(s) + description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers. type: string example: 9042 keyspace: title: Keyspace - description: Keyspace to use + description: The keyspace to use. type: string example: customers username: title: Username - description: The username to use for accessing a secured Cassandra Cluster + description: The username for accessing a secured Cassandra cluster. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured Cassandra Cluster + description: The password for accessing a secured Cassandra cluster. type: string format: password x-descriptors: @@ -54,13 +72,26 @@ spec: - urn:camel:group:credentials consistencyLevel: title: Consistency Level - description: Consistency level to use. The value can be one of ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, SERIAL, LOCAL_SERIAL, LOCAL_ONE + description: The consistency level to use. type: string default: ANY + enum: ["ANY", "ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "LOCAL_ONE"] + prepareStatements: + title: Prepare Statements + description: If true, specifies to use PreparedStatements as the query. If false, specifies to use regular Statements as the query. + type: boolean + default: true + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:checkbox query: title: Query - description: The Prepared statement to execute against the Cassandra cluster table + description: The query to execute against the Cassandra cluster table. type: string + extraTypeCodecs: + title: Extra Type Codecs + description: To use a specific comma separated list of Extra Type codecs. + type: string + enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"] types: in: mediaType: application/json @@ -79,7 +110,9 @@ spec: - to: uri: "cql://{{connectionHost}}:{{connectionPort}}/{{keyspace}}" parameters: - username: "{{username}}" - password: "{{password}}" - cql: "{{query}}" + username: "{{?username}}" + password: "{{?password}}" + prepareStatements: "{{prepareStatements}}" consistencyLevel: "{{consistencyLevel}}" + cql: "{{query}}" + extraTypeCodecs: "{{?extraTypeCodecs}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/cassandra-source.kamelet.yaml similarity index 77% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/cassandra-source.kamelet.yaml index befa15099..2d143ad91 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/cassandra-source.kamelet.yaml @@ -1,50 +1,68 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: cassandra-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHRpdGxlPmNhc3NhbmRyYTwvdGl0bGU+CjxwYXRoIGQ9Ik0yMy4zLDguN2MwLDAtMC4zLDAuMy0wLjUsMC41Yy0wLjUsMC41LTEuMiwxLjMtMS43LDEuNWgwYy0wLjEsMC0wLjEsMC0wLjItMC4xbDAuOS0xLjlsMCwwYzAsMC4xLTEsMS45LTIuMiwxLjZsMCwwCgljMCwwLDAsMC0wLjEsMGMwLjYtMC44LDAuOC0xLjUsMC44LTEuNXMtMSwxLjYtMi4zLDEuMmMwLDAtMC4xLDAtMC4xLTAuMWMwLDAsMC0wLjEsMC0wLjFjMC0wLjEsMC4xLTAuMSwwLjEtMC4yCgljMC4xLTAuMiwwLjMtMC41LDAuMy0wLjVTMTguMyw5LjUsMTgsOS43bDAsMGMtMC4yLDAuMS0wLjUsMC4zLTAuNywwLjNjLTAuMSwwLTAuMSwwLTAuMiwwYy0wLjMtMC4xLTAuMy0wLjMtMC4yLTAuNgoJYzAuMS0wLjMsMC4yLTAuNSwwLjItMC41cy0wLjMsMC40LTAuNSwwLjhjLTAuMiwwLjMtMC40LDAuNS0wLjYsMC42bC0wLjIsMGMtMC4xLTAuMiwwLjEtMSwwLjEtMWMtMC4xLDAuMi0wLjMsMC40LTAuNCwwLjYKCWMtMC4xLDAuMi0wLjMsMC4zLTAuNSwwLjRoMGMtMC4xLDAtMC4yLDAtMC4zLDBjMCwwLTAuMS0wLjEtMC4xLTAuMmMtMC4xLTAuNCwwLjItMSwwLjItMWMwLDAtMC4xLDAuMy0wLjMsMC43djAKCWMwLDAuMS0wLjEsMC4yLTAuMSwwLjJjLTAuMSwwLjItMC4yLDAuMy0wLjMsMC4zYy0wLjItMC4xLTAuMy0wLjMtMC4zLTAuNWMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjRzMCwwLjMtMC4yLDAuNwoJYzAsMC4xLTAuMSwwLjItMC4yLDAuM2MwLDAtMC4xLDAuMS0wLjEsMC4xYy0xLjIsMC4yLTIuNCwwLjYtMy41LDFjLTAuMywwLjEtMC42LDAuMi0wLjksMC4zYy0xLDAuNC0yLDEtMy4xLDEuNwoJYy0xLjIsMC44LTIuMywxLjYtMy40LDIuNmMtMC42LDAuNS0xLjIsMS4xLTEuOCwxLjdjNC43LTIuNiw2LjYtNi4zLDE1LjUtNi43YzYuNy0wLjMsOS45LDIuOCwxMC45LDIuOWMyLjYsMC4xLDQuMy0xLjksNC45LTIuNgoJYzAuMS0wLjIsMC4yLTAuMywwLjItMC4zYzAsMC0wLjQsMC41LTEsMWwwLDBjLTAuNiwwLjUtMS40LDAuOS0yLjEsMC44aDBjLTAuMSwwLTAuMiwwLTAuMywwYzEtMC42LDEuNi0xLjYsMi0yLjEKCWMwLjEtMC4yLDAuMy0wLjUsMC4zLTAuNXMtMi4zLDIuNC00LjEsMi4yYy0wLjEsMC0wLjEsMC0wLjIsMGMwLjgtMC42LDEuMy0xLjQsMS43LTIuMXYwaDBjMC40LTAuNywwLjYtMS4zLDAuNi0xLjMKCWMwLDAtMC40LDAuNy0xLDEuNGwwLDBjLTAuNiwwLjctMS4zLDEuNS0yLDEuN2MtMC4xLDAtMC4yLDAuMS0wLjMsMC4xYzEuNC0xLjMsMi4xLTMuMSwyLjEtMy4xcy0xLjUsMi4xLTIuNywyLjUKCWMtMC4xLDAtMC4yLDAuMS0wLjIsMC4xYzAuOC0wLjcsMS4yLTEuMiwxLjQtMS43YzAuMy0wLjUsMC40LTAuOSwwLjQtMC45bDAsMGMtMC4xLDAuMi0wLjIsMC4zLTAuNCwwLjRsMCwwYy0wLjMsMC40LTAuOSwxLTEuNCwxLjQKCWwwLDBjLTAuMSwwLjEtMC4zLDAuMi0wLjQsMC4zYzAsMC0wLjEsMC4xLTAuMSwwLjFjLTAuMSwwLjEtMC4yLDAuMS0wLjQsMC4yYzAsMC0wLjEsMC0wLjEsMGMtMC4xLTAuMS0wLjItMC4xLTAuMy0wLjIKCWMtMC4xLDAuMS0wLjEsMC4yLTAuMiwwLjJoMGMwLDAtMC4xLDAtMC4xLDBjMS4xLTEuMiwxLjktMi44LDEuOS0yLjhsMCwwYzAsMC0xLjYsMi4xLTIuMywyLjNjLTAuMSwwLTAuMi0wLjEtMC4zLTAuMQoJYzAtMC4xLDAtMC4xLDAuMS0wLjJjMC4yLTAuNCwwLjYtMSwwLjYtMXMtMC4xLDAuMS0wLjIsMC4xYy0wLjEsMC4xLTAuMywwLjItMC40LDAuM2MtMC4xLDAuMS0wLjIsMC4xLTAuMiwwLjEKCWMtMC4xLDAuMS0wLjIsMC4xLTAuMywwLjFjLTAuMSwwLjEtMC4yLDAuMS0wLjMsMC4xYy0wLjEsMC0wLjEsMC0wLjEsMEMyMi4zLDEwLjUsMjMuMyw4LjcsMjMuMyw4LjdMMjMuMyw4Ljd6IE0xNywxMS42CgljLTAuNCwwLTAuOCwwLTEuMiwwYy0wLjQsMC0wLjcsMC0xLjEsMC4xYy0wLjQsMC4yLTAuNywwLjQtMSwwLjZjMCwwLjEsMCwwLjEsMCwwLjJjMCwwLjEsMCwwLjItMC4xLDAuMmwxLjIsMC45bDAsMGwtMC41LTEuNwoJbDAuOCwxLjVjMCwwLDAuMSwwLDAuMSwwbDAtMS42bDAuNSwxLjZsMC42LTEuNWwwLDEuN2MwLDAsMCwwLDAsMGwwLjktMS4zbC0wLjUsMS42bDAsMGwxLjQtMC45bC0xLDEuNHYwbDEuMy0wLjVjMCwwLDAsMCwwLjEtMC4xCgljLTAuMy0wLjQsMC0wLjksMC41LTAuOGMwLjItMC4zLDAuMy0wLjcsMC40LTFDMTguNiwxMS43LDE3LjgsMTEuNiwxNywxMS42TDE3LDExLjZ6IE0xMy42LDExLjhMMTMuNiwxMS44Yy0wLjQsMC0wLjgsMC4xLTEuMiwwLjIKCXMtMC44LDAuMS0xLjEsMC4yaDBjMC4yLDAuNSwwLjQsMSwwLjcsMS40YzAuMS0wLjMsMC4zLTAuNiwwLjUtMC45Yy0wLjItMC41LDAuMy0wLjksMC44LTAuN0MxMy40LDExLjksMTMuNSwxMS44LDEzLjYsMTEuOAoJTDEzLjYsMTEuOHogTTE5LjYsMTEuOWMwLDAuNC0wLjEsMC43LTAuMiwxLjFjMC40LDAuMywwLjEsMS0wLjQsMC45Yy0wLjIsMC4zLTAuNSwwLjYtMC43LDAuOGwwLjksMGwtMS4zLDAuM2MwLDAtMC4xLDAuMS0wLjEsMC4xCgljMC44LDAuMSwxLjUsMC40LDIuMSwwLjljMC40LTAuOCwwLjctMS42LDAuNy0yLjZDMjAuNCwxMi44LDIwLDEyLjMsMTkuNiwxMS45TDE5LjYsMTEuOXogTTExLjEsMTIuMmMtMC40LDAuMS0wLjgsMC4yLTEuMSwwLjMKCWMtMC4yLDAuMy0wLjMsMC43LTAuMywxYzAsMi4yLDEuMyw0LDMuMSw0LjlsMCwwYy0wLjMtMC4zLTAuNi0wLjctMC44LTEuMWMtMC45LDAuMS0xLjItMS4xLTAuNC0xLjRjLTAuMS0wLjYsMC0xLjMsMC4yLTEuOQoJQzExLjUsMTMuNSwxMS4yLDEyLjksMTEuMSwxMi4yTDExLjEsMTIuMnogTTIxLjMsMTIuMmMwLjIsMC41LDAuMywxLjEsMC4zLDEuN2MwLDMuMy0yLjksNS45LTYuNiw1LjljLTMuNiwwLTYuNi0yLjYtNi42LTUuOQoJYzAtMC4zLDAtMC42LDAuMS0wLjljLTEsMC40LTEuOSwwLjktMi44LDEuNWMtMC4zLDAuNS0wLjQsMS4xLTAuNCwxLjZjMC4xLDEuMywxLjMsMi40LDMsMy4ybC0wLjMtMC4xYy0zLjEtMC45LTUuNSwwLjctOC4xLTAuNwoJYzAuNiwwLjUsMS4zLDEsMy4zLDFjMC43LDAsMi45LTAuMSwzLjMsMC4yYzAuNCwwLjMtMS40LDItMS40LDJzMy0yLjUsMy4zLTEuN2MwLjIsMC41LTAuOSwyLTAuOSwyczEtMS40LDEuOC0xLjcKCWMwLjUtMC4yLDEtMC4yLDEuNCwwLjRjMC4yLDAuMy0xLjIsMi4xLTEuMiwyLjFzMi0xLjksMi4zLTEuOGMwLjQsMC4xLDAsMS44LDAsMS44czAuNy0xLjcsMS4xLTEuOWMwLjUtMC4yLTEuMiw0LTEuMiw0CglzMi4xLTMuOSwyLjUtNGMwLjctMC4yLDEuMSwyLjcsMS4xLDIuN3MtMC4zLTIuNSwwLTIuN2MyLjMtMSwxLDQuMywxLDQuM3MxLjUtMy42LDAuNi00LjRjMi40LDEuNiwyLjEsNC40LDIuMSw0LjRzMC42LTEuNC0xLjEtNC43CgljMSwwLDIuNCwyLjUsMi40LDIuNXMtMS42LTIuOC0wLjUtMi44YzIuMS0wLjEsMi4zLDMuNywyLjMsMy43czAuNi0wLjUtMS4xLTQuMmMxLjEtMC43LDMuNywzLjQsMy43LDMuNHMtMi40LTQtMi00LjMKCWMwLjQtMC4zLDEuOCwxLjMsMS44LDEuM3MtMS4xLTEuNS0wLjgtMS42YzAuMy0wLjIsMy4yLDIuOSwzLjIsMi45cy0yLjUtMy0yLjEtMy40YzAuNC0wLjQsMi4zLDEsMi4zLDFzLTIuOC0xLjktMi4zLTIuMgoJYzAuOC0wLjQsMywxLDMsMXMtMS4zLTEuMS0xLjEtMS40YzAuMi0wLjMsMi44LDEuNywyLjgsMS43cy0yLjMtMS44LTIuNC0yLjNjLTAuMS0wLjUsMS44LDAuMiwxLjgsMC4ycy0yLjEtMS0yLjItMS4zCgljMC0wLjMsMS40LDAuMywxLjQsMC4zcy0yLTEuNi0yLjUtMC4zYy0wLjEsMC4yLTAuMiwwLjQtMC40LDAuNmMwLjEtMC40LDAuMi0wLjcsMC4xLTEuMWMwLTAuMSwwLTAuMi0wLjEtMC40CglDMjQuNiwxMy41LDIzLjIsMTIuOCwyMS4zLDEyLjJMMjEuMywxMi4yeiBNMTMuNSwxMi44Yy0wLjEsMC4yLTAuNCwwLjMtMC43LDAuMmMtMC4xLDAuMS0wLjEsMC4yLTAuMiwwLjNsMS43LDAuNmMwLDAsMCwwLDAtMC4xCglMMTMuNSwxMi44eiBNMTIuNywxMy40Yy0wLjEsMC4yLTAuMiwwLjQtMC4zLDAuN2MwLjIsMC4yLDAuMywwLjMsMC41LDAuNWwxLjIsMGwwLDBMMTIuNywxMy40eiBNMTguMiwxNC4xbC0wLjgsMC42bDAuMSwwCglDMTcuOCwxNC41LDE4LDE0LjMsMTguMiwxNC4xeiBNMTIuMiwxNC41QzEyLjIsMTQuNSwxMi4yLDE0LjUsMTIuMiwxNC41Yy0wLjEsMC41LTAuMSwwLjktMC4xLDEuM2MwLjMsMC4xLDAuNiwwLjMsMC42LDAuNmwxLjItMC44CgljLTAuMSwwLTAuMi0wLjEtMC4zLTAuMWwtMS40LTAuMWwwLjgtMC4yQzEyLjgsMTUsMTIuNSwxNC44LDEyLjIsMTQuNUwxMi4yLDE0LjV6IE0xMy4zLDE0LjhjMC4yLDAuMSwwLjQsMC4yLDAuNiwwLjNsMC4yLDAKCWMwLDAsMCwwLDAtMC4xTDEzLjMsMTQuOHogTTE3LjQsMTUuN2wxLjIsMS4yTDE3LDE2LjJsMC45LDEuNGwtMS40LTEuMWwwLDBsMC41LDEuN2wtMC44LTEuNWwtMC4xLDEuOGwtMC41LTEuOGwtMC42LDEuN2wwLjItMS44CglsMCwwTDE0LDE4LjJsMC40LTEuNWMtMC41LDAuNC0wLjgsMS0xLjEsMS42YzAuMSwwLjEsMC4zLDAuMywwLjQsMC40YzIuMiwwLjYsNC42LTAuMyw1LjgtMi4zYy0wLjUtMC4zLTEuMS0wLjYtMS43LTAuN0wxNy40LDE1Ljd6CgkgTTE0LjIsMTZsLTEuNCwwLjVjMCwwLDAsMCwwLDAuMWMwLDAuMi0wLjEsMC40LTAuMiwwLjZjMC4xLDAuMywwLjMsMC42LDAuNSwwLjhjMC4xLTAuMywwLjMtMC42LDAuNC0wLjhMMTMsMTcuNEwxNC4yLDE2egoJIE0xOSwxOS43Yy0wLjIsMC4xLTAuNSwwLjEtMC44LDAuMkMxOC41LDE5LjgsMTguOCwxOS43LDE5LDE5Ljd6IE0xNy42LDIwYy0wLjIsMC0wLjMsMC4xLTAuNSwwLjFjLTAuMywwLTAuNSwwLjEtMC44LDAuMQoJQzE2LjgsMjAuMSwxNy4yLDIwLjEsMTcuNiwyMEwxNy42LDIweiBNMTUuOCwyMC4yYy0wLjEsMC0wLjMsMC0wLjQsMEMxNS41LDIwLjIsMTUuNiwyMC4yLDE1LjgsMjAuMnoiLz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Cassandra" + camel.apache.org/kamelet.namespace: "Nosql" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Cassandra Source" description: |- - Query a Cassandra cluster table. + Send a query to an Apache Cassandra cluster table. required: - connectionHost - connectionPort - keyspace - - username - - password - query type: object properties: connectionHost: title: Connection Host - description: Hostname(s) cassandra server(s). Multiple hosts can be separated by comma. + description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames. type: string example: localhost connectionPort: title: Connection Port - description: Port number of cassandra server(s) + description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers. type: string example: 9042 keyspace: title: Keyspace - description: Keyspace to use + description: The keyspace to use. type: string example: customers username: title: Username - description: The username to use for accessing a secured Cassandra Cluster + description: The username for accessing a secured Cassandra cluster. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured Cassandra Cluster + description: The password for accessing a secured Cassandra cluster. type: string format: password x-descriptors: @@ -52,18 +70,25 @@ spec: - urn:camel:group:credentials resultStrategy: title: Result Strategy - description: The strategy to convert the result set of the query. Possible values are ALL, ONE, LIMIT_10, LIMIT_100... + description: The strategy to convert the result set of the query. type: string default: ALL + enum: ["ALL", "ONE", "LIMIT_10", "LIMIT_100"] consistencyLevel: title: Consistency Level - description: Consistency level to use. The value can be one of ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, SERIAL, LOCAL_SERIAL, LOCAL_ONE + description: The consistency level to use. type: string default: QUORUM + enum: ["ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "SERIAL", "LOCAL_SERIAL", "LOCAL_ONE"] query: title: Query - description: The query to execute against the Cassandra cluster table + description: The query to execute against the Cassandra cluster table. + type: string + extraTypeCodecs: + title: Extra Type Codecs + description: To use a specific comma separated list of Extra Type codecs. type: string + enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"] types: out: mediaType: application/json @@ -75,11 +100,12 @@ spec: from: uri: "cql://{{connectionHost}}:{{connectionPort}}/{{keyspace}}" parameters: - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" cql: "{{query}}" consistencyLevel: "{{consistencyLevel}}" resultSetConversionStrategy: "{{resultStrategy}}" + extraTypeCodecs: "{{?extraTypeCodecs}}" steps: - marshal: json: {} diff --git a/ceph-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/ceph-sink.kamelet.yaml similarity index 87% rename from ceph-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/ceph-sink.kamelet.yaml index 1c761056d..2e4c964d9 100644 --- a/ceph-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/ceph-sink.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: ceph-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTU3IiB2aWV3Qm94PSIwIDAgMTYwIDE1NyIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZD0iTTc5LjgxNTIgOTYuMDczOUM4OC42ODM2IDk2LjA3MzkgOTUuNzA0NCA4OS4wNTMxIDk1LjcwNDQgODAuMTg0OEM5NS43MDQ0IDcxLjMxNjQgODguNjgzNiA2NC4yOTU2IDc5LjgxNTIgNjQuMjk1NkM3MC45NDY5IDY0LjI5NTYgNjMuOTI2MSA3MS4zMTY0IDYzLjkyNjEgODAuMTg0OEM2My45MjYxIDg4LjY4MzYgNzEuMzE2NCA5Ni4wNzM5IDc5LjgxNTIgOTYuMDczOVpNMTAxLjI0NyAxNTYuMzA1TDEwNS42ODEgMTU0LjgyN0MxMTAuMTE1IDE1My4zNDkgMTE0LjkxOSAxNTEuNTAxIDExOC45ODQgMTQ4LjkxNUMxMTEuNTk0IDE0NC44NSAxMDcuMTU5IDEzNy40NiAxMDcuMTU5IDEyOC45NjFDMTA3LjE1OSAxMjMuNDE4IDEwOS4zNzYgMTE4LjI0NSAxMTMuNDQxIDExMy4wNzJDMTEzLjQ0MSAxMTMuMDcyIDExMy40NDEgMTEzLjA3MiAxMTMuODExIDExMi43MDJMMTE0LjkxOSAxMTEuMjI0QzExNi4wMjggMTA5Ljc0NiAxMTcuMTM2IDEwOC42MzcgMTE4LjI0NSAxMDcuMTU5QzEyMS45NCAxMDEuOTg2IDEyNC44OTYgOTYuMDczOSAxMjYuMzc0IDg5Ljc5MjJDMTI3Ljg1MiA4Mi43NzE0IDEyOC4yMjIgNzUuNzUwNiAxMjYuNzQ0IDY4LjcyOThDMTI1LjI2NiA2Mi40NDggMTIyLjY3OSA1Ni4xNjYzIDExOC45ODQgNTAuOTkzMUMxMTUuMjg5IDQ1LjgxOTkgMTEwLjg1NSA0MS4zODU3IDEwNS4zMTIgMzguMDZDOTkuNzY5MSAzNC43MzQ0IDkzLjQ4NzMgMzIuMTQ3OCA4Ni44MzYgMzEuNDA4OEM4NC42MTg5IDMxLjAzOTMgODIuNDAxOSAzMS4wMzkzIDgwLjE4NDggMzEuMDM5M0g3OS40NDU3Qzc3LjIyODYgMzEuMDM5MyA3NS4wMTE2IDMxLjAzOTMgNzIuNzk0NSAzMS40MDg4QzY2LjE0MzIgMzIuNTE3MyA1OS44NjE0IDM0LjczNDQgNTQuMzE4NyAzOC4wNkM0OS4xNDU1IDQxLjM4NTcgNDQuMzQxOCA0NS44MTk5IDQwLjY0NjcgNTAuOTkzMUMzNi45NTE1IDU2LjE2NjMgMzMuOTk1NCA2Mi40NDggMzIuODg2OCA2OC43Mjk4QzMxLjQwODggNzUuNzUwNiAzMS40MDg4IDgyLjc3MTQgMzMuMjU2NCA4OS40MjI2QzM0LjczNDQgOTUuNzA0NCAzNy42OTA1IDEwMS42MTcgNDEuMzg1NyAxMDYuNzlMNDQuNzExMyAxMTAuODU1TDQ1LjgxOTkgMTEyLjMzM0M0OS44ODQ1IDExNy4xMzYgNTIuMTAxNiAxMjIuNjc5IDUyLjEwMTYgMTI4LjIyMkM1Mi4xMDE2IDEzNi43MjEgNDcuMjk3OSAxNDQuMTExIDQwLjI3NzEgMTQ4LjE3NkM0NC4zNDE4IDE1MC4zOTMgNDkuMTQ1NSAxNTIuNjEgNTMuNTc5NyAxNTQuMDg4TDU4LjM4MzQgMTU1LjU2NkM1OS4xMjI0IDE1NC44MjcgNjIuNDQ4IDE1Mi42MSA2NS40MDQyIDE0OC4xNzZDNjguMzYwMyAxNDQuMTExIDcxLjY4NTkgMTM3LjQ2IDcxLjY4NTkgMTI4LjIyMkM3MS42ODU5IDEyMi42NzkgNzAuNTc3NCAxMTcuNTA2IDY4LjM2MDMgMTEyLjMzM0M2Ni4xNDMyIDEwNy4xNTkgNjMuMTg3MSAxMDIuNzI1IDU5LjQ5MTkgOTguNjYwNUw1OC43NTI5IDk3LjU1MkM1Ny4yNzQ4IDk2LjA3MzkgNTUuNzk2OCA5NC4yMjYzIDU0LjY4ODIgOTIuMzc4OEM1My4yMTAyIDg5Ljc5MjIgNTIuMTAxNiA4Ny41NzUxIDUxLjczMjEgODQuNjE4OUM1MC42MjM2IDgwLjU1NDMgNTAuNjIzNiA3Ni40ODk2IDUxLjczMjEgNzIuNDI0OUM1Mi40NzExIDY4LjcyOTggNTMuOTQ5MiA2NS4wMzQ2IDU2LjE2NjMgNjIuMDc4NUM1OC4zODM0IDU5LjEyMjQgNjAuOTcgNTYuNTM1OCA2NC4yOTU2IDU0LjMxODdDNjcuNjIxMiA1Mi4xMDE2IDcxLjMxNjQgNTAuOTkzMSA3NS4wMTE1IDUwLjI1NEM3Ni40ODk2IDQ5Ljg4NDUgNzcuNTk4MiA0OS44ODQ1IDc5LjA3NjIgNDkuODg0NUg3OS44MTUyQzgxLjI5MzMgNDkuODg0NSA4Mi40MDE5IDQ5Ljg4NDUgODMuODc5OSA1MC4yNTRDODcuNTc1MSA1MC42MjM2IDkxLjI3MDIgNTIuMTAxNiA5NC41OTU4IDU0LjMxODdDOTcuOTIxNSA1Ni4xNjYzIDEwMC41MDggNTguNzUyOSAxMDIuNzI1IDYyLjA3ODVDMTA0Ljk0MiA2NS4wMzQ2IDEwNi40MiA2OC43Mjk4IDEwNy4xNTkgNzIuNDI0OUMxMDcuODk4IDc2LjQ4OTYgMTA3Ljg5OCA4MC41NTQzIDEwNy4xNTkgODQuNjE4OUMxMDYuNDIgODcuMjA1NSAxMDUuNjgxIDg5Ljc5MjIgMTA0LjIwMyA5Mi4zNzg4QzEwMy4wOTUgOTQuMjI2MyAxMDEuNjE3IDk2LjA3MzkgMTAwLjEzOSA5Ny41NTJMOTkuMzk5NSA5OC42NjA1Qzk1LjcwNDQgMTAyLjcyNSA5Mi43NDgzIDEwNy4xNTkgOTAuNTMxMiAxMTIuMzMzQzg4LjMxNDEgMTE3LjUwNiA4Ny4yMDU1IDEyMi42NzkgODcuMjA1NSAxMjguMjIyQzg3LjIwNTUgMTM3LjQ2IDkwLjUzMTIgMTQ0LjExMSA5My40ODczIDE0OC4xNzZDOTYuODEyOSAxNTMuMzQ5IDEwMC4xMzkgMTU1LjkzNSAxMDEuMjQ3IDE1Ni4zMDVaTTEzMC40MzkgMTQxLjUyNEMxMzkuMzA3IDEzNC4xMzQgMTQ3LjA2NyAxMjQuNTI3IDE1MS44NzEgMTE0LjU1QzE1NC40NTcgMTA5LjM3NiAxNTYuMzA1IDEwMy40NjQgMTU3Ljc4MyA5Ny45MjE1QzE1OS4yNjEgOTIuMDA5MiAxNjAgODUuNzI3NSAxNjAgNzkuODE1MkMxNjAgNjkuMDk5MyAxNTcuNzgzIDU4LjM4MzQgMTUzLjcxOCA0OC43NzZDMTQ5LjY1NCAzOS4xNjg2IDE0My43NDEgMzAuNjY5NyAxMzYuNzIxIDIzLjI3OTRDMTI5LjMzIDE1Ljg4OTEgMTIwLjgzMSAxMC4zNDY0IDExMS4yMjQgNi4yODE3NkMxMDEuMjQ3IDIuMjE3MDkgOTAuOTAwNyAwIDgwLjE4NDggMEg3OS44MTUyQzY5LjA5OTMgMCA1OC4zODM0IDIuMjE3MDkgNDguNzc2IDYuMjgxNzZDMzkuMTY4NiAxMC4zNDY0IDMwLjY2OTcgMTYuMjU4NyAyMy4yNzk0IDIzLjI3OTRDMTUuODg5MSAzMC42Njk3IDEwLjM0NjQgMzkuMTY4NiA2LjI4MTc2IDQ4Ljc3NkMyLjIxNzA5IDU4Ljc1MjkgMCA2OS4wOTkzIDAgNzkuODE1MkMwIDg2LjA5NyAwLjczOTAzIDkyLjAwOTIgMi4yMTcwOSA5Ny45MjE1QzMuNjk1MTUgMTAzLjgzNCA1LjU0MjczIDEwOS4zNzYgOC4xMjkzMyAxMTQuNTVDMTIuOTMzIDEyNC41MjcgMjAuNjkyOCAxMzQuMTM0IDI5LjU2MTIgMTQxLjUyNEMzNS40NzM0IDEzOC4xOTkgMzguNDI5NiAxMzQuODczIDM5LjE2ODYgMTMxLjE3OEMzOS45MDc2IDEyNy40ODMgMzguNDI5NiAxMjMuNzg4IDM0LjM2NDkgMTE4Ljk4NEMyNC43NTc1IDEwNy44OTggMTkuNTg0MyA5My44NTY4IDE5LjU4NDMgNzkuNDQ1N0MxOS41ODQzIDQ2LjE4OTQgNDYuNTU4OSAxOS4yMTQ4IDc5LjgxNTIgMTguODQ1M0g4MC4xODQ4SDgwLjU1NDNDMTEzLjgxMSAxOC44NDUzIDE0MC43ODUgNDUuODE5OSAxNDAuNzg1IDc5LjQ0NTdDMTQwLjc4NSA5My44NTY4IDEzNS42MTIgMTA4LjI2OCAxMjYuMDA1IDExOC45ODRDMTIxLjk0IDEyMy43ODggMTIwLjQ2MiAxMjcuNDgzIDEyMS4yMDEgMTMxLjE3OEMxMjEuNTcgMTM0Ljg3MyAxMjQuODk2IDEzOC41NjggMTMwLjQzOSAxNDEuNTI0WiIgZmlsbD0iI0VGNDI0RCI+PC9wYXRoPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cmVjdCB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE1Ni4zMDUiIGZpbGw9IndoaXRlIj48L3JlY3Q+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+IA==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Ceph" + camel.apache.org/kamelet.namespace: "Cloud" labels: camel.apache.org/kamelet.type: "sink" spec: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/ceph-source.kamelet.yaml similarity index 88% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/ceph-source.kamelet.yaml index 9885e5764..9f987aa77 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/ceph-source.kamelet.yaml @@ -1,12 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: ceph-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTU3IiB2aWV3Qm94PSIwIDAgMTYwIDE1NyIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZD0iTTc5LjgxNTIgOTYuMDczOUM4OC42ODM2IDk2LjA3MzkgOTUuNzA0NCA4OS4wNTMxIDk1LjcwNDQgODAuMTg0OEM5NS43MDQ0IDcxLjMxNjQgODguNjgzNiA2NC4yOTU2IDc5LjgxNTIgNjQuMjk1NkM3MC45NDY5IDY0LjI5NTYgNjMuOTI2MSA3MS4zMTY0IDYzLjkyNjEgODAuMTg0OEM2My45MjYxIDg4LjY4MzYgNzEuMzE2NCA5Ni4wNzM5IDc5LjgxNTIgOTYuMDczOVpNMTAxLjI0NyAxNTYuMzA1TDEwNS42ODEgMTU0LjgyN0MxMTAuMTE1IDE1My4zNDkgMTE0LjkxOSAxNTEuNTAxIDExOC45ODQgMTQ4LjkxNUMxMTEuNTk0IDE0NC44NSAxMDcuMTU5IDEzNy40NiAxMDcuMTU5IDEyOC45NjFDMTA3LjE1OSAxMjMuNDE4IDEwOS4zNzYgMTE4LjI0NSAxMTMuNDQxIDExMy4wNzJDMTEzLjQ0MSAxMTMuMDcyIDExMy40NDEgMTEzLjA3MiAxMTMuODExIDExMi43MDJMMTE0LjkxOSAxMTEuMjI0QzExNi4wMjggMTA5Ljc0NiAxMTcuMTM2IDEwOC42MzcgMTE4LjI0NSAxMDcuMTU5QzEyMS45NCAxMDEuOTg2IDEyNC44OTYgOTYuMDczOSAxMjYuMzc0IDg5Ljc5MjJDMTI3Ljg1MiA4Mi43NzE0IDEyOC4yMjIgNzUuNzUwNiAxMjYuNzQ0IDY4LjcyOThDMTI1LjI2NiA2Mi40NDggMTIyLjY3OSA1Ni4xNjYzIDExOC45ODQgNTAuOTkzMUMxMTUuMjg5IDQ1LjgxOTkgMTEwLjg1NSA0MS4zODU3IDEwNS4zMTIgMzguMDZDOTkuNzY5MSAzNC43MzQ0IDkzLjQ4NzMgMzIuMTQ3OCA4Ni44MzYgMzEuNDA4OEM4NC42MTg5IDMxLjAzOTMgODIuNDAxOSAzMS4wMzkzIDgwLjE4NDggMzEuMDM5M0g3OS40NDU3Qzc3LjIyODYgMzEuMDM5MyA3NS4wMTE2IDMxLjAzOTMgNzIuNzk0NSAzMS40MDg4QzY2LjE0MzIgMzIuNTE3MyA1OS44NjE0IDM0LjczNDQgNTQuMzE4NyAzOC4wNkM0OS4xNDU1IDQxLjM4NTcgNDQuMzQxOCA0NS44MTk5IDQwLjY0NjcgNTAuOTkzMUMzNi45NTE1IDU2LjE2NjMgMzMuOTk1NCA2Mi40NDggMzIuODg2OCA2OC43Mjk4QzMxLjQwODggNzUuNzUwNiAzMS40MDg4IDgyLjc3MTQgMzMuMjU2NCA4OS40MjI2QzM0LjczNDQgOTUuNzA0NCAzNy42OTA1IDEwMS42MTcgNDEuMzg1NyAxMDYuNzlMNDQuNzExMyAxMTAuODU1TDQ1LjgxOTkgMTEyLjMzM0M0OS44ODQ1IDExNy4xMzYgNTIuMTAxNiAxMjIuNjc5IDUyLjEwMTYgMTI4LjIyMkM1Mi4xMDE2IDEzNi43MjEgNDcuMjk3OSAxNDQuMTExIDQwLjI3NzEgMTQ4LjE3NkM0NC4zNDE4IDE1MC4zOTMgNDkuMTQ1NSAxNTIuNjEgNTMuNTc5NyAxNTQuMDg4TDU4LjM4MzQgMTU1LjU2NkM1OS4xMjI0IDE1NC44MjcgNjIuNDQ4IDE1Mi42MSA2NS40MDQyIDE0OC4xNzZDNjguMzYwMyAxNDQuMTExIDcxLjY4NTkgMTM3LjQ2IDcxLjY4NTkgMTI4LjIyMkM3MS42ODU5IDEyMi42NzkgNzAuNTc3NCAxMTcuNTA2IDY4LjM2MDMgMTEyLjMzM0M2Ni4xNDMyIDEwNy4xNTkgNjMuMTg3MSAxMDIuNzI1IDU5LjQ5MTkgOTguNjYwNUw1OC43NTI5IDk3LjU1MkM1Ny4yNzQ4IDk2LjA3MzkgNTUuNzk2OCA5NC4yMjYzIDU0LjY4ODIgOTIuMzc4OEM1My4yMTAyIDg5Ljc5MjIgNTIuMTAxNiA4Ny41NzUxIDUxLjczMjEgODQuNjE4OUM1MC42MjM2IDgwLjU1NDMgNTAuNjIzNiA3Ni40ODk2IDUxLjczMjEgNzIuNDI0OUM1Mi40NzExIDY4LjcyOTggNTMuOTQ5MiA2NS4wMzQ2IDU2LjE2NjMgNjIuMDc4NUM1OC4zODM0IDU5LjEyMjQgNjAuOTcgNTYuNTM1OCA2NC4yOTU2IDU0LjMxODdDNjcuNjIxMiA1Mi4xMDE2IDcxLjMxNjQgNTAuOTkzMSA3NS4wMTE1IDUwLjI1NEM3Ni40ODk2IDQ5Ljg4NDUgNzcuNTk4MiA0OS44ODQ1IDc5LjA3NjIgNDkuODg0NUg3OS44MTUyQzgxLjI5MzMgNDkuODg0NSA4Mi40MDE5IDQ5Ljg4NDUgODMuODc5OSA1MC4yNTRDODcuNTc1MSA1MC42MjM2IDkxLjI3MDIgNTIuMTAxNiA5NC41OTU4IDU0LjMxODdDOTcuOTIxNSA1Ni4xNjYzIDEwMC41MDggNTguNzUyOSAxMDIuNzI1IDYyLjA3ODVDMTA0Ljk0MiA2NS4wMzQ2IDEwNi40MiA2OC43Mjk4IDEwNy4xNTkgNzIuNDI0OUMxMDcuODk4IDc2LjQ4OTYgMTA3Ljg5OCA4MC41NTQzIDEwNy4xNTkgODQuNjE4OUMxMDYuNDIgODcuMjA1NSAxMDUuNjgxIDg5Ljc5MjIgMTA0LjIwMyA5Mi4zNzg4QzEwMy4wOTUgOTQuMjI2MyAxMDEuNjE3IDk2LjA3MzkgMTAwLjEzOSA5Ny41NTJMOTkuMzk5NSA5OC42NjA1Qzk1LjcwNDQgMTAyLjcyNSA5Mi43NDgzIDEwNy4xNTkgOTAuNTMxMiAxMTIuMzMzQzg4LjMxNDEgMTE3LjUwNiA4Ny4yMDU1IDEyMi42NzkgODcuMjA1NSAxMjguMjIyQzg3LjIwNTUgMTM3LjQ2IDkwLjUzMTIgMTQ0LjExMSA5My40ODczIDE0OC4xNzZDOTYuODEyOSAxNTMuMzQ5IDEwMC4xMzkgMTU1LjkzNSAxMDEuMjQ3IDE1Ni4zMDVaTTEzMC40MzkgMTQxLjUyNEMxMzkuMzA3IDEzNC4xMzQgMTQ3LjA2NyAxMjQuNTI3IDE1MS44NzEgMTE0LjU1QzE1NC40NTcgMTA5LjM3NiAxNTYuMzA1IDEwMy40NjQgMTU3Ljc4MyA5Ny45MjE1QzE1OS4yNjEgOTIuMDA5MiAxNjAgODUuNzI3NSAxNjAgNzkuODE1MkMxNjAgNjkuMDk5MyAxNTcuNzgzIDU4LjM4MzQgMTUzLjcxOCA0OC43NzZDMTQ5LjY1NCAzOS4xNjg2IDE0My43NDEgMzAuNjY5NyAxMzYuNzIxIDIzLjI3OTRDMTI5LjMzIDE1Ljg4OTEgMTIwLjgzMSAxMC4zNDY0IDExMS4yMjQgNi4yODE3NkMxMDEuMjQ3IDIuMjE3MDkgOTAuOTAwNyAwIDgwLjE4NDggMEg3OS44MTUyQzY5LjA5OTMgMCA1OC4zODM0IDIuMjE3MDkgNDguNzc2IDYuMjgxNzZDMzkuMTY4NiAxMC4zNDY0IDMwLjY2OTcgMTYuMjU4NyAyMy4yNzk0IDIzLjI3OTRDMTUuODg5MSAzMC42Njk3IDEwLjM0NjQgMzkuMTY4NiA2LjI4MTc2IDQ4Ljc3NkMyLjIxNzA5IDU4Ljc1MjkgMCA2OS4wOTkzIDAgNzkuODE1MkMwIDg2LjA5NyAwLjczOTAzIDkyLjAwOTIgMi4yMTcwOSA5Ny45MjE1QzMuNjk1MTUgMTAzLjgzNCA1LjU0MjczIDEwOS4zNzYgOC4xMjkzMyAxMTQuNTVDMTIuOTMzIDEyNC41MjcgMjAuNjkyOCAxMzQuMTM0IDI5LjU2MTIgMTQxLjUyNEMzNS40NzM0IDEzOC4xOTkgMzguNDI5NiAxMzQuODczIDM5LjE2ODYgMTMxLjE3OEMzOS45MDc2IDEyNy40ODMgMzguNDI5NiAxMjMuNzg4IDM0LjM2NDkgMTE4Ljk4NEMyNC43NTc1IDEwNy44OTggMTkuNTg0MyA5My44NTY4IDE5LjU4NDMgNzkuNDQ1N0MxOS41ODQzIDQ2LjE4OTQgNDYuNTU4OSAxOS4yMTQ4IDc5LjgxNTIgMTguODQ1M0g4MC4xODQ4SDgwLjU1NDNDMTEzLjgxMSAxOC44NDUzIDE0MC43ODUgNDUuODE5OSAxNDAuNzg1IDc5LjQ0NTdDMTQwLjc4NSA5My44NTY4IDEzNS42MTIgMTA4LjI2OCAxMjYuMDA1IDExOC45ODRDMTIxLjk0IDEyMy43ODggMTIwLjQ2MiAxMjcuNDgzIDEyMS4yMDEgMTMxLjE3OEMxMjEuNTcgMTM0Ljg3MyAxMjQuODk2IDEzOC41NjggMTMwLjQzOSAxNDEuNTI0WiIgZmlsbD0iI0VGNDI0RCI+PC9wYXRoPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwIj48cmVjdCB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE1Ni4zMDUiIGZpbGw9IndoaXRlIj48L3JlY3Q+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+IA==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Ceph" + camel.apache.org/kamelet.namespace: "Cloud" labels: camel.apache.org/kamelet.type: "source" spec: diff --git a/library/camel-kamelets/src/main/resources/kamelets/data-type-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/data-type-action.kamelet.yaml new file mode 100644 index 000000000..3063ea2c4 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/data-type-action.kamelet.yaml @@ -0,0 +1,72 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: data-type-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Data Type Action" + description: |- + Applies a given data type with respective data transformation. + required: + - format + type: object + properties: + scheme: + title: Component Scheme + description: The data type component scheme enables users to apply Camel component specific data type conversions. + type: string + format: + title: Data Type Format + description: Defines the data type that will be applied by this action. Apache Camel and the Kamelet catalog support different data types and performs automatic message conversion according to the given type. + type: string + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + template: + beans: + - name: dataTypeProcessor + type: "#class:org.apache.camel.processor.transformer.DataTypeProcessor" + from: + uri: "kamelet:source" + steps: + - choice: + when: + - simple: "'{{?scheme}}' != ''" + steps: + - set-property: + name: CamelDataType + simple: "{{?scheme}}:{{format}}" + otherwise: + steps: + - set-property: + name: CamelDataType + simple: "{{format}}" + - bean: + ref: "{{dataTypeProcessor}}" + method: process diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml similarity index 78% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml index 8754cecc3..1c86b962b 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml @@ -1,29 +1,49 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: elasticsearch-index-sink labels: camel.apache.org/kamelet.type: "sink" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.group: "ElasticSearch" + camel.apache.org/kamelet.namespace: "Search" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1NTAgMjUwIiB2aWV3Qm94PSI3Nyw4Myw0MTAsOTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8cGF0aCBkPSJtMTc4IDEwMi41aDMxM3Y0MWgtMzEzeiIgZmlsbD0ibm9uZSIvPgogPGcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyI+CiAgPHBhdGggZD0ibTE5My4zIDEzOS40Yy00IDAtNy4yLTEuMi05LjUtMy41cy0zLjQtNS42LTMuNC05LjdjMC00LjIgMS4xLTcuNiAzLjItMTBzNS0zLjYgOC43LTMuNmMzLjQgMCA2LjEgMSA4LjEgMy4xczMgNC45IDMgOC42djNoLTE3LjNjLjEgMi41LjggNC40IDIgNS44czMuMSAyIDUuNCAyYzEuNSAwIDMtLjEgNC4zLS40czIuNy0uOCA0LjMtMS40djQuNWMtMS4zLjYtMi43IDEuMS00LjEgMS40cy0zIC4yLTQuNy4yem0tMS4xLTIyLjZjLTEuOCAwLTMuMi42LTQuMiAxLjdzLTEuNyAyLjctMS45IDQuOWgxMS44YzAtMi4xLS41LTMuOC0xLjUtNC45cy0yLjQtMS43LTQuMi0xLjd6Ii8+CiAgPHBhdGggZD0ibTIxNS4xIDEzOWgtNS41di0zNi41aDUuNXoiLz4KICA8cGF0aCBkPSJtMjM5LjIgMTM5LTEuMS0zLjZoLS4yYy0xLjIgMS42LTIuNSAyLjctMy44IDMuMnMtMi45LjktNC45LjljLTIuNSAwLTQuNS0uNy02LTIuMXMtMi4xLTMuMy0yLjEtNS44YzAtMi43IDEtNC43IDMtNnM1LTIuMSA5LjEtMi4ybDQuNS0uMXYtMS40YzAtMS43LS40LTIuOS0xLjItMy43cy0yLTEuMi0zLjYtMS4yYy0xLjMgMC0yLjYuMi0zLjguNnMtMi40LjktMy41IDEuNGwtMS44LTMuOWMxLjQtLjcgMi45LTEuMyA0LjYtMS43czMuMi0uNiA0LjctLjZjMy4zIDAgNS44LjcgNy41IDIuMnMyLjUgMy43IDIuNSA2Ljh2MTcuMnptLTguMi0zLjhjMiAwIDMuNi0uNiA0LjgtMS43czEuOC0yLjcgMS44LTQuN3YtMi4ybC0zLjMuMWMtMi42LjEtNC41LjUtNS43IDEuM3MtMS44IDItMS44IDMuNmMwIDEuMi4zIDIuMSAxIDIuN3MxLjguOSAzLjIuOXoiLz4KICA8cGF0aCBkPSJtMjY4LjIgMTMxLjZjMCAyLjUtLjkgNC41LTIuOCA1LjhzLTQuNSAyLTcuOSAyYy0zLjUgMC02LjItLjUtOC4zLTEuNnYtNC44YzMgMS40IDUuOSAyLjEgOC41IDIuMSAzLjQgMCA1LjEtMSA1LjEtMy4xIDAtLjctLjItMS4yLS42LTEuNnMtMS0uOS0xLjktMS40LTIuMS0xLTMuNi0xLjZjLTMtMS4yLTUtMi4zLTYuMS0zLjVzLTEuNi0yLjctMS42LTQuNWMwLTIuMi45LTMuOSAyLjctNS4yczQuMi0xLjggNy4zLTEuOGMzIDAgNS45LjYgOC42IDEuOWwtMS44IDQuMWMtMi44LTEuMi01LjEtMS43LTcuMS0xLjctMi45IDAtNC40LjgtNC40IDIuNSAwIC44LjQgMS41IDEuMSAyLjFzMi40IDEuMyA1IDIuM2MyLjEuOCAzLjcgMS42IDQuNyAyLjNzMS43IDEuNSAyLjIgMi40Yy43IDEgLjkgMiAuOSAzLjN6Ii8+CiAgPHBhdGggZD0ibTI4My44IDEzNWMxLjMgMCAyLjctLjIgNC0uNnY0LjFjLS42LjMtMS40LjUtMi40LjdzLTIgLjMtMyAuM2MtNS4yIDAtNy44LTIuOC03LjgtOC4ydi0xNGgtMy41di0yLjRsMy44LTIgMS45LTUuNWgzLjR2NS44aDcuNHY0LjJoLTcuNHYxMy45YzAgMS4zLjMgMi4zIDEgMi45czEuNi44IDIuNi44eiIvPgogIDxwYXRoIGQ9Im0yOTIuNyAxMDYuMmMwLTEgLjMtMS43LjgtMi4zczEuMy0uOCAyLjMtLjggMS43LjMgMi4zLjguOCAxLjMuOCAyLjNjMCAuOS0uMyAxLjctLjggMi4ycy0xLjMuOC0yLjMuOC0xLjgtLjMtMi4zLS44LS44LTEuMy0uOC0yLjJ6bTUuOSAzMi44aC01LjV2LTI1LjloNS41eiIvPgogIDxwYXRoIGQ9Im0zMTYuOSAxMzkuNGMtMy45IDAtNi45LTEuMS04LjktMy40cy0zLjEtNS42LTMuMS05LjljMC00LjQgMS4xLTcuNyAzLjItMTAuMXM1LjItMy41IDkuMi0zLjVjMi43IDAgNS4yLjUgNy40IDEuNWwtMS43IDQuNGMtMi4zLS45LTQuMi0xLjQtNS44LTEuNC00LjUgMC02LjcgMy02LjcgOC45IDAgMi45LjYgNS4xIDEuNyA2LjZzMi44IDIuMiA0LjkgMi4yYzIuNSAwIDQuOC0uNiA3LTEuOHY0LjhjLTEgLjYtMiAxLTMuMiAxLjJzLTIuNC41LTQgLjV6Ii8+CiAgPHBhdGggZD0ibTM0Ny42IDEzMS42YzAgMi41LS45IDQuNS0yLjggNS44cy00LjUgMi03LjkgMmMtMy41IDAtNi4yLS41LTguMy0xLjZ2LTQuOGMzIDEuNCA1LjkgMi4xIDguNSAyLjEgMy40IDAgNS4xLTEgNS4xLTMuMSAwLS43LS4yLTEuMi0uNi0xLjZzLTEtLjktMS45LTEuNC0yLjEtMS0zLjYtMS42Yy0zLTEuMi01LTIuMy02LjEtMy41cy0xLjYtMi43LTEuNi00LjVjMC0yLjIuOS0zLjkgMi43LTUuMnM0LjItMS44IDcuMy0xLjhjMyAwIDUuOS42IDguNiAxLjlsLTEuOCA0LjFjLTIuOC0xLjItNS4xLTEuNy03LjEtMS43LTIuOSAwLTQuNC44LTQuNCAyLjUgMCAuOC40IDEuNSAxLjEgMi4xczIuNCAxLjMgNSAyLjNjMi4xLjggMy43IDEuNiA0LjcgMi4zczEuNyAxLjUgMi4yIDIuNGMuNyAxIC45IDIgLjkgMy4zeiIvPgogIDxwYXRoIGQ9Im0zNjQuOSAxMzkuNGMtNCAwLTcuMi0xLjItOS41LTMuNXMtMy40LTUuNi0zLjQtOS43YzAtNC4yIDEuMS03LjYgMy4yLTEwczUtMy42IDguNy0zLjZjMy40IDAgNi4xIDEgOC4xIDMuMXMzIDQuOSAzIDguNnYzaC0xNy4zYy4xIDIuNS44IDQuNCAyIDUuOHMzLjEgMiA1LjQgMmMxLjUgMCAzLS4xIDQuMy0uNHMyLjctLjggNC4zLTEuNHY0LjVjLTEuMy42LTIuNyAxLjEtNC4xIDEuNHMtMi45LjItNC43LjJ6bS0xLTIyLjZjLTEuOCAwLTMuMi42LTQuMiAxLjdzLTEuNyAyLjctMS45IDQuOWgxMS44YzAtMi4xLS41LTMuOC0xLjUtNC45cy0yLjUtMS43LTQuMi0xLjd6Ii8+CiAgPHBhdGggZD0ibTM5Ny40IDEzOS0xLjEtMy42aC0uMmMtMS4yIDEuNi0yLjUgMi43LTMuOCAzLjJzLTIuOS45LTQuOS45Yy0yLjUgMC00LjUtLjctNi0yLjFzLTIuMS0zLjMtMi4xLTUuOGMwLTIuNyAxLTQuNyAzLTZzNS0yLjEgOS4xLTIuMmw0LjUtLjF2LTEuNGMwLTEuNy0uNC0yLjktMS4yLTMuN3MtMi0xLjItMy42LTEuMmMtMS4zIDAtMi42LjItMy44LjZzLTIuNC45LTMuNSAxLjRsLTEuOC0zLjljMS40LS43IDIuOS0xLjMgNC42LTEuN3MzLjItLjYgNC43LS42YzMuMyAwIDUuOC43IDcuNSAyLjJzMi41IDMuNyAyLjUgNi44djE3LjJ6bS04LjItMy44YzIgMCAzLjYtLjYgNC44LTEuN3MxLjgtMi43IDEuOC00Ljd2LTIuMmwtMy4zLjFjLTIuNi4xLTQuNS41LTUuNyAxLjNzLTEuOCAyLTEuOCAzLjZjMCAxLjIuMyAyLjEgMSAyLjdzMS45LjkgMy4yLjl6Ii8+CiAgPHBhdGggZD0ibTQyMi4yIDExMi42YzEuMSAwIDIgLjEgMi43LjJsLS41IDUuMWMtLjgtLjItMS42LS4zLTIuNC0uMy0yLjIgMC00IC43LTUuNCAyLjJzLTIuMSAzLjMtMi4xIDUuNnYxMy42aC01LjV2LTI1LjloNC4zbC43IDQuNmguM2MuOS0xLjUgMi0yLjggMy40LTMuN3MyLjktMS40IDQuNS0xLjR6Ii8+CiAgPHBhdGggZD0ibTQ0MC4yIDEzOS40Yy0zLjkgMC02LjktMS4xLTguOS0zLjRzLTMuMS01LjYtMy4xLTkuOWMwLTQuNCAxLjEtNy43IDMuMi0xMC4xczUuMi0zLjUgOS4yLTMuNWMyLjcgMCA1LjIuNSA3LjQgMS41bC0xLjcgNC40Yy0yLjMtLjktNC4yLTEuNC01LjgtMS40LTQuNSAwLTYuNyAzLTYuNyA4LjkgMCAyLjkuNiA1LjEgMS43IDYuNnMyLjggMi4yIDQuOSAyLjJjMi41IDAgNC44LS42IDctMS44djQuOGMtMSAuNi0yIDEtMy4yIDEuMnMtMi40LjUtNCAuNXoiLz4KICA8cGF0aCBkPSJtNDc2LjMgMTM5aC01LjV2LTE2YzAtMi0uNC0zLjUtMS4yLTQuNXMtMi4xLTEuNS0zLjgtMS41Yy0yLjMgMC00IC43LTUuMSAyLjFzLTEuNiAzLjctMS42IDYuOXYxM2gtNS41di0zNi41aDUuNXY5LjNjMCAxLjUtLjEgMy4xLS4zIDQuOGguNGMuOC0xLjIgMS44LTIuMiAzLjEtMi45czIuOS0xIDQuNy0xYzYuMyAwIDkuNCAzLjIgOS40IDkuNXYxNi44eiIvPgogPC9nPgogPHBhdGggZD0ibTE0MS44IDExNS41aC0yMC45Yy4xLjUuMyAxIC40IDEuNC43IDIuNCAxLjEgNC45IDEuMyA3LjUuMSAxIC4xIDIuMS4xIDMuMXMwIDIuMS0uMSAzLjFjLS4yIDIuNi0uNiA1LjEtMS4zIDcuNS0uMS41LS4zIDEtLjQgMS40aDIwLjljNi42IDAgMTEuOS01LjQgMTEuOS0xMnMtNS4zLTEyLTExLjktMTJ6IiBmaWxsPSIjMDBhOWU1Ii8+CiA8cGF0aCBkPSJtMTIyLjYgMTMwLjZjLjEtMSAuMS0yLjEuMS0zLjFzMC0yLjEtLjEtMy4xYy0uMi0yLjYtLjYtNS4xLTEuMy03LjUtLjEtLjUtLjMtMS0uNC0xLjRoLTMyLjNjLTEuMiAzLjgtMS44IDcuOC0xLjggMTJzLjYgOC4yIDEuOCAxMmgzMi4zYy4xLS41LjMtMSAuNC0xLjQuNy0yLjQgMS4xLTQuOSAxLjMtNy41eiIgZmlsbD0iIzM1MzUzNSIvPgogPHBhdGggZD0ibTE0NS40IDE0My41aC0yNmMtLjggMS44LTEuNyAzLjUtMi43IDUuMS0xLjUgMi41LTMuMyA0LjctNS4zIDYuOC0uNy43LTEuNCAxLjMtMi4xIDItMS40IDEuMy0zIDIuNC00LjYgMy41IDYuMyA0LjIgMTMuOSA2LjYgMjIgNi42IDEzLjkgMCAyNi4xLTcuMSAzMy4zLTE3LjgtMy43LTMuOC04LjktNi4yLTE0LjYtNi4yeiIgZmlsbD0iIzAwYmZiMyIvPgogPHBhdGggZD0ibTExNi43IDE0OC42YzEtMS42IDEuOS0zLjMgMi43LTUuMWgtMjkuM2MzLjEgNy4xIDguMiAxMy4yIDE0LjcgMTcuNCAxLjYtMS4xIDMuMS0yLjIgNC42LTMuNS43LS42IDEuNC0xLjMgMi4xLTIgMS45LTIgMy43LTQuMyA1LjItNi44eiIgZmlsbD0iIzAxOWI4ZiIvPgogPHBhdGggZD0ibTExMS40IDk5LjZjLS43LS43LTEuNC0xLjMtMi4xLTItMS40LTEuMy0zLTIuNC00LjYtMy41LTYuNCA0LjItMTEuNSAxMC4zLTE0LjcgMTcuNGgyOS4zYy0uOC0xLjgtMS43LTMuNS0yLjctNS4xLTEuNC0yLjUtMy4yLTQuOC01LjItNi44eiIgZmlsbD0iI2Y5YjExMCIvPgogPHBhdGggZD0ibTEyNi43IDg3LjVjLTguMSAwLTE1LjcgMi40LTIyIDYuNiAxLjYgMS4xIDMuMSAyLjIgNC42IDMuNS43LjYgMS40IDEuMyAyLjEgMiAyIDIuMSAzLjggNC4zIDUuMyA2LjggMSAxLjYgMS45IDMuMyAyLjcgNS4xaDI2YzUuNyAwIDEwLjktMi40IDE0LjYtNi4yLTcuMi0xMC43LTE5LjQtMTcuOC0zMy4zLTE3Ljh6IiBmaWxsPSIjZmVkMTBhIi8+Cjwvc3ZnPg==" spec: definition: title: "ElasticSearch Index Sink" description: |- - This sink stores documents into ElasticSearch. + Stores JSON-formatted data into ElasticSearch. - Input data must have JSON format according to the index used. + The input data must be formatted in JSON according to the requirements of the index. - - `indexId` / `ce-indexid`: as the index ID for Elasticsearch + If you specify the `certificate` property, you must base64 encode it before you pass it as a parameter. + + In the header, you can set the following properties: - If the header won't be set the exchange ID will be used as index. - - - `indexName` / `ce-indexname`: as the index Name for Elasticsearch - - If the header won't be set the exchange ID will be used as index name. + - `indexId` / `ce-indexid`: The index ID for ElasticSearch. + + - `indexName` / `ce-indexname`: The index name for ElasticSearch. + + If you do not set a property in the header, the Kamelet uses the exchange ID for the index setting. required: - clusterName - hostAddresses @@ -31,13 +51,13 @@ spec: properties: user: title: Username - description: Username to connect to ElasticSearch. + description: The username to connect to ElasticSearch. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: Password to connect to ElasticSearch. + description: The password to connect to ElasticSearch. type: string format: password x-descriptors: @@ -45,42 +65,46 @@ spec: - urn:camel:group:credentials enableSSL: title: Enable SSL - description: Do we want to connect using SSL? + description: Specifies to connect by using SSL. type: boolean default: true x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' hostAddresses: title: Host Addresses - description: Comma separated list with ip:port formatted remote transport addresses to use. + description: A comma-separated list of remote transport addresses in `ip:port format`. type: string example: quickstart-es-http:9200 clusterName: title: ElasticSearch Cluster Name - description: Name of the cluster. + description: The name of the ElasticSearch cluster. type: string example: quickstart indexName: title: Index in ElasticSearch - description: The name of the index to act against. + description: The name of the ElasticSearch index. type: string example: data + certificate: + title: Certificate + description: The Certificate for accessing the Elasticsearch cluster. You must encode this value in base64. + type: string types: out: - mediaType: application/json + mediaType: text/plain in: mediaType: application/json dependencies: - "camel:core" - "camel:jackson" - "camel:kamelet" - - "camel:elasticsearch-rest" + - "camel:elasticsearch" - "camel:gson" - "camel:bean" template: beans: - name: local-es - type: "#class:org.apache.camel.component.elasticsearch.ElasticsearchComponent" + type: "#class:org.apache.camel.component.es.ElasticsearchComponent" properties: user: "{{?user}}" password: "{{?password}}" @@ -111,6 +135,8 @@ spec: - set-header: name: "indexName" simple: "${header[ce-indexname]}" + - unmarshal: + json: {} - to: uri: "{{local-es}}:{{clusterName}}" parameters: @@ -118,5 +144,4 @@ spec: hostAddresses: "{{hostAddresses}}" enableSSL: "{{enableSSL}}" indexName: "{{?indexName}}" - - marshal: - json: { } + certificatePath: "base64:{{?certificate}}" diff --git a/extract-field-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/extract-field-action.kamelet.yaml similarity index 57% rename from extract-field-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/extract-field-action.kamelet.yaml index 31835b4d6..4bf0d1488 100644 --- a/extract-field-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/extract-field-action.kamelet.yaml @@ -1,25 +1,76 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: extract-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Extract Field Action" - description: "Extract a field from the body" + description: |- + Extract a field from the message body. + + The extract field action expects an application/json content type. + + The field parameter allows you to specify which field of the json the user wants to extract. By default the message body will be overriden with the extracted field. + + The optional parameter headerOutput allows the user to specify wheter the extracted field should be stored in a message header named 'CamelKameletsExtractFieldName', leaving the message body untouched. + + The optional parameter headerOutputName allows the user to specify a custom header name instead of the default 'CamelKameletsExtractFieldName'. This parameter must be used in conjunction with headerOutput. + If no headerOutputName parameter will be provided, the default 'CamelKameletsExtractFieldName' will be used. + + The optional parameter strictHeaderCheck allows to user to enable a strict header name check. If enabled the action will check if the header output name (custom or default) has been used already in the exchange. If so, the extracted field will be stored in the message body, if not, the extracted field will be stored in the selected header (custom or default). + + The headerOutput/headerOutputName/strictHeaderCheck parameters are particulary useful in case you would like to reuse an extracted field as parameter for another header, for example. required: - field properties: field: title: Field - description: The name of the field to be added + description: The name of the field to extract type: string + headerOutput: + title: Header Output + description: If enable the action will store the extracted field in an header named CamelKameletsExtractFieldName + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + headerOutputName: + title: Header Output Name + description: A custom name for the header containing the extracted field + default: "none" + type: string + strictHeaderCheck: + title: Strict Header Check + description: If enabled the action will check if the header output name (custom or default) has been used already in the exchange. If so, the extracted field will be stored in the message body, if not, the extracted field will be stored in the selected header (custom or default). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' trimField: title: Trim Field description: If enabled we return the Raw extracted field @@ -29,11 +80,20 @@ spec: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:kamelet" - "camel:core" - "camel:jackson" template: + beans: + - name: extractField + type: "#class:org.apache.camel.kamelets.utils.transform.ExtractField" + properties: + field: '{{field}}' + headerOutput: '{{headerOutput}}' + headerOutputName: '{{headerOutputName}}' + strictHeaderCheck: '{{strictHeaderCheck}}' + trimField: '{{trimField}}' from: uri: kamelet:source steps: @@ -48,13 +108,8 @@ spec: json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - - set-property: - name: "field" - constant: "{{field}}" - - set-property: - name: "trimField" - constant: "{{trimField}}" - - bean: "org.apache.camel.kamelets.utils.transform.ExtractField" + - process: + ref: "{{extractField}}" - choice: when: - simple: "${exchangeProperty[trimField]} == 'false'" diff --git a/ftp-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/ftp-sink.kamelet.yaml similarity index 79% rename from ftp-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/ftp-sink.kamelet.yaml index b43ae0f7d..268432891 100644 --- a/ftp-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/ftp-sink.kamelet.yaml @@ -1,25 +1,41 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: ftp-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "FTP" + camel.apache.org/kamelet.namespace: "File" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "FTP Sink" description: |- - Send data to an FTP Server. + Send data to an FTP server. + + In the header, you can set the `file` / `ce-file` property to specify the filename to upload. - The Kamelet expects the following headers to be set: - - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. + If you do not set the property in the header, the Kamelet uses the exchange ID for the filename. required: - connectionHost - connectionPort @@ -30,20 +46,22 @@ spec: properties: connectionHost: title: Connection Host - description: Hostname of the FTP server + description: The hostname of the FTP server. type: string connectionPort: title: Connection Port - description: Port of the FTP server + description: The port of the FTP server. type: string default: 21 username: title: Username - description: The username to access the FTP server + description: The username to access the FTP server. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to access the FTP server + description: The password to access the FTP server. type: string format: password x-descriptors: @@ -51,20 +69,35 @@ spec: - urn:camel:group:credentials directoryName: title: Directory Name - description: The starting directory + description: The starting directory. type: string passiveMode: title: Passive Mode - description: Sets passive mode connection + description: Specifies to use passive mode connection. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' fileExist: title: File Existence - description: How to behave in case of file already existent. There are 4 enums and the value can be one of Override, Append, Fail or Ignore + description: How to behave in case of file already existent. type: string default: Override + enum: ["Override", "Append", "Fail", "Ignore"] + binary: + title: Binary + description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreate: + title: Autocreate Missing Directories + description: Automatically create the directory the files should be written to. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "camel:ftp" - "camel:core" @@ -91,3 +124,5 @@ spec: password: "{{password}}" passiveMode: "{{passiveMode}}" fileExist: "{{fileExist}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/ftp-source.kamelet.yaml similarity index 78% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/ftp-source.kamelet.yaml index 0ee56dd38..96f5ae7cd 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/ftp-source.kamelet.yaml @@ -1,19 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: ftp-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "FTP" + camel.apache.org/kamelet.namespace: "File" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "FTP Source" description: |- - Receive data from an FTP Server. + Receive data from an FTP server. required: - connectionHost - connectionPort @@ -24,20 +42,22 @@ spec: properties: connectionHost: title: Connection Host - description: Hostname of the FTP server + description: The hostname of the FTP server. type: string connectionPort: title: Connection Port - description: Port of the FTP server + description: The port of the FTP server. type: string default: 21 username: title: Username - description: The username to access the FTP server + description: The username to access the FTP server. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to access the FTP server + description: The password to access the FTP server. type: string format: password x-descriptors: @@ -49,25 +69,46 @@ spec: type: string passiveMode: title: Passive Mode - description: Sets passive mode connection + description: Specifes to use passive mode connection. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' recursive: title: Recursive - description: If a directory, will look for files in all the sub-directories as well. + description: If a directory, look for files in all the sub-directories as well. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' idempotent: title: Idempotency - description: Skip already processed files. + description: Skip already-processed files. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + binary: + title: Binary + description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreate: + title: Autocreate Missing Directories + description: Automatically create starting directory. type: boolean default: true x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + delete: + title: Delete + description: If true, the file will be deleted after it is processed successfully. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "camel:ftp" - "camel:core" @@ -80,6 +121,9 @@ spec: passiveMode: "{{passiveMode}}" recursive: "{{recursive}}" idempotent: "{{idempotent}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" + delete: "{{delete}}" steps: - set-header: name: file diff --git a/has-header-filter-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml similarity index 79% rename from has-header-filter-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml index 7499f6a10..eda32fb5b 100644 --- a/has-header-filter-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml @@ -1,24 +1,42 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: has-header-filter-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "EIP" spec: definition: title: "Has Header Filter Action" - description: "Filter based on the presence of one header" + description: "Filter message based on the presence of one header" required: - name properties: name: title: Header Name - description: The header name to evaluate. The header name must be passed by the source Kamelet. For Knative only, if you are using Cloud Events, you must include the CloudEvent (ce-) prefix in the header name. + description: The header name to evaluate. The header name must be passed by the source Kamelet. For Knative only, the name of the header requires a CloudEvent (ce-) prefix. type: string example: headerName value: diff --git a/hoist-field-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/hoist-field-action.kamelet.yaml similarity index 80% rename from hoist-field-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/hoist-field-action.kamelet.yaml index 36a854728..daddc641f 100644 --- a/hoist-field-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/hoist-field-action.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: hoist-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Hoist Field Action" @@ -22,7 +40,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3 - "camel:core" - "camel:jackson" - "camel:kamelet" @@ -35,7 +53,7 @@ spec: - simple: "${header[Content-Type]} == 'application/json'" steps: - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -43,7 +61,7 @@ spec: constant: "{{field}}" - bean: "org.apache.camel.kamelets.utils.transform.HoistField" - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/library/camel-kamelets/src/main/resources/kamelets/http-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/http-sink.kamelet.yaml new file mode 100644 index 000000000..96e1ebab5 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/http-sink.kamelet.yaml @@ -0,0 +1,63 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: http-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "HTTP" + camel.apache.org/kamelet.namespace: "HTTP" + labels: + camel.apache.org/kamelet.type: sink +spec: + definition: + title: HTTP Sink + description: Forward data to a HTTP or HTTPS endpoint. + required: + - url + type: object + properties: + url: + title: URL + description: The URL to which you want to send data. + type: string + example: "https://my-service/path" + pattern: "^(http|https)://.*" + method: + title: Method + description: The HTTP method to use. + type: string + default: POST + enum: ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE", "PATCH"] + dependencies: + - "camel:http" + - "camel:kamelet" + - "camel:core" + template: + from: + uri: kamelet:source + steps: + - remove-header: + name: CamelHttpUri + - set-header: + name: CamelHttpMethod + constant: "{{method}}" + - to: "{{url}}" diff --git a/insert-field-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/insert-field-action.kamelet.yaml similarity index 73% rename from insert-field-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/insert-field-action.kamelet.yaml index 842c56b5f..6b1027a26 100644 --- a/insert-field-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/insert-field-action.kamelet.yaml @@ -1,18 +1,41 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: insert-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Insert Field Action" - description: "Adds a custom field with a constant value to the message in transit" + description: |- + Adds a custom field with a simple language parsed value to the message in transit. + + The extract field action expected an application/json content type. + + If for example you have an array like '{ "foo":"John", "bar":30 }' and your action has been configured with field as 'element' and value as 'hello', you'll get '{ "foo":"John", "bar":30, "element":"hello" }' required: - field - value @@ -27,11 +50,17 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:core" - "camel:jackson" - "camel:kamelet" template: + beans: + - name: insertField + type: "#class:org.apache.camel.kamelets.utils.transform.InsertField" + properties: + field: '{{field}}' + value: '{{value}}' from: uri: kamelet:source steps: @@ -46,13 +75,8 @@ spec: json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - - set-property: - name: "field" - constant: "{{field}}" - - set-property: - name: "value" - constant: "{{value}}" - - bean: "org.apache.camel.kamelets.utils.transform.InsertField" + - process: + ref: "{{insertField}}" - choice: when: - simple: "${exchangeProperty[deserialized]} == 'true'" diff --git a/throttle-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/insert-header-action.kamelet.yaml similarity index 85% rename from throttle-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/insert-header-action.kamelet.yaml index b66eadb8e..e8be99d68 100644 --- a/throttle-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/insert-header-action.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -14,34 +14,36 @@ # See the License for the specific language governing permissions and # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: - name: throttle-action + name: insert-header-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "EIP" spec: definition: - title: "Throttle Action" - description: "The Throttle action allows you to ensure that a specific sink does not get overloaded." + title: "Insert Header Action" + description: "Adds an header with a simple language parsed expression to the message in transit" required: - - messages + - name + - value properties: - messages: - title: Messages Number - description: The number of messages to send in the time period set - type: integer - example: 10 - timePeriod: - title: Time Period - description: Sets the time period during which the maximum request count is valid for, in milliseconds + name: + title: Name + description: The name of the header to be added. For Knative only, the name of the header requires a CloudEvent (ce-) prefix. + type: string + example: headername + value: + title: Value + description: The value of the header to be added type: string - default: "1000" type: object dependencies: - "camel:core" @@ -50,6 +52,6 @@ spec: from: uri: kamelet:source steps: - - throttle: - constant: "{{messages}}" - timePeriodMillis: "{{timePeriod}}" + - set-header: + name: "{{name}}" + simple: "{{value}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml new file mode 100644 index 000000000..2d88f5117 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/is-tombstone-filter-action.kamelet.yaml @@ -0,0 +1,45 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: is-tombstone-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" +spec: + definition: + title: "Is Tombstone Filter Action" + description: "Filter based on the presence of body or not" + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + template: + from: + uri: kamelet:source + steps: + - filter: + simple: "${body} == null || ${body} == ''" + steps: + - stop: {} diff --git a/jira-add-comment-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml similarity index 72% rename from jira-add-comment-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml index 4452b2d06..6e47d7e6a 100644 --- a/jira-add-comment-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-add-comment-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -21,10 +39,10 @@ spec: The comment is set in the body of the message. + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: @@ -40,12 +58,18 @@ spec: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials types: in: mediaType: application/json @@ -54,7 +78,7 @@ spec: - "camel:jackson" - "camel:jira" - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "kamelet:source" @@ -70,5 +94,6 @@ spec: uri: "jira:AddComment" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + access-token: "{{?personal-token}}" diff --git a/jira-add-issue-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml similarity index 79% rename from jira-add-issue-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml index bdf1ae670..22b1769a7 100644 --- a/jira-add-issue-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-add-issue-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -33,10 +51,10 @@ spec: The issue description can be set from the body of the message or the `issueDescription`/`ce-issueDescription` in the header, however the body takes precedence. + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: @@ -52,12 +70,18 @@ spec: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials types: in: mediaType: application/json @@ -66,7 +90,7 @@ spec: - "camel:jackson" - "camel:jira" - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "kamelet:source" @@ -124,5 +148,6 @@ spec: uri: "jira:AddIssue" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + access-token: "{{?personal-token}}" diff --git a/jira-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jira-source.kamelet.yaml similarity index 69% rename from jira-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/jira-source.kamelet.yaml index 744730e99..226f1b95c 100644 --- a/jira-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/jira-source.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "source" spec: @@ -14,34 +32,41 @@ spec: title: "Jira Source" description: |- Receive notifications about new issues from Jira. + + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: title: Jira URL - description: The URL of your instance of Jira + description: The URL of your instance of Jira. type: string example: http://my_jira.com:8081 username: title: Username - description: The username to access Jira + description: The username to access Jira. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira. type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials jql: title: JQL - description: A query to filter issues + description: A query to filter issues. type: string example: project=MyProject @@ -50,16 +75,17 @@ spec: mediaType: application/json dependencies: - "camel:jackson" - - "camel:kamelet" - "camel:jira" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "camel:kamelet" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "jira:newIssues" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + accessToken: "{{?personal-token}}" jql: "{{jql}}" steps: - marshal: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml similarity index 74% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml index 28ea620e3..e236a7246 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-transition-issue-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -23,10 +41,10 @@ spec: The comment of the transition is set in the body of the message. + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: @@ -42,12 +60,18 @@ spec: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials types: in: mediaType: application/json @@ -56,7 +80,7 @@ spec: - "camel:jackson" - "camel:jira" - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "kamelet:source" @@ -79,5 +103,6 @@ spec: uri: "jira:transitionIssue" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + access-token: "{{?personal-token}}" diff --git a/jira-update-issue-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml similarity index 79% rename from jira-update-issue-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml index 2b1fb36eb..ad38b7a58 100644 --- a/jira-update-issue-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jira-update-issue-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "JIRA" + camel.apache.org/kamelet.namespace: "JIRA" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -33,10 +51,10 @@ spec: The issue description can be set from the body of the message or the `issueDescription`/`ce-issueDescription` in the header, however the body takes precedence. + To authenticate a username/password or personal token must be defined. We recommend to use personal token as it is a safer way to get access to Jira. + required: - jiraUrl - - username - - password type: object properties: jiraUrl: @@ -52,12 +70,18 @@ spec: - urn:camel:group:credentials password: title: Password - description: The password or the API Token to access Jira + description: The password to access Jira type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + personal-token: + title: Personal Token + description: Personal Token + type: string + x-descriptors: + - urn:camel:group:credentials types: in: mediaType: application/json @@ -66,7 +90,7 @@ spec: - "camel:jackson" - "camel:jira" - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" + - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5" template: from: uri: "kamelet:source" @@ -124,5 +148,6 @@ spec: uri: "jira:UpdateIssue" parameters: jiraUrl: "{{jiraUrl}}" - username: "{{username}}" - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + access-token: "{{?personal-token}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml similarity index 96% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml index 3b3b0ffd9..7577f94de 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml @@ -1,19 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jms-amqp-10-sink annotations: camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMTkzLjgzMzVtbSIKICAgaGVpZ2h0PSI5Ny4yNjgwMTNtbSIKICAgdmlld0JveD0iMCAwIDE5My44MzM1IDk3LjI2ODAxMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMTAwMyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi4zICgyNDA1NTQ2LCAyMDE4LTAzLTExKSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icXBpZC5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM5OTciPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMV8tNyIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeDE9Ii02ODczLjY0NzkiCiAgICAgICB5MT0iMjc3NC4yOTk4IgogICAgICAgeDI9Ii02NjM2LjIzNzMiCiAgICAgICB5Mj0iMjQ5Ni42ODk1IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRjU5NzIzIgogICAgICAgICBpZD0ic3RvcDMxNzItNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMxMjMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNGNjk4MjIiCiAgICAgICAgIGlkPSJzdG9wMzE3NC0zIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuODM4MyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMTc2LTUiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMl8tNiIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeDE9Ii04NjMwLjcxOTciCiAgICAgICB5MT0iMjgwNC45NjA3IgogICAgICAgeDI9Ii02OTM2LjkyNTMiCiAgICAgICB5Mj0iMjgwNC45NjA3IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzE5Ny0yIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMTk5LTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyMDEtMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyMDMtMiIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF8zXy03IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg0MjYuMjU1OSIKICAgICAgIHkxPSIyNjM1LjI4MzkiCiAgICAgICB4Mj0iLTc0MTYuOTE5NCIKICAgICAgIHkyPSIyNjM1LjI4MzkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMyODI2NjEiCiAgICAgICAgIGlkPSJzdG9wMzIwOC0wIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzY2MkU4QyIKICAgICAgICAgaWQ9InN0b3AzMjEwLTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUUyMDY0IgogICAgICAgICBpZD0ic3RvcDMyMTItMyIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIwMzIiCiAgICAgICAgIGlkPSJzdG9wMzIxNC02IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzRfLTAiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgeTE9IjI4MjAuODYwNCIKICAgICAgIHgyPSItNjg0MS43OTMiCiAgICAgICB5Mj0iMjgyMC44NjA0IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzIxOS02IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMjIxLTIiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyMjMtNiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyMjUtMSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF81Xy04IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg0MTIuMDU3NiIKICAgICAgIHkxPSIyNzk3Ljg3ODkiCiAgICAgICB4Mj0iLTc1MjEuOTE3NSIKICAgICAgIHkyPSIyNzk3Ljg3ODkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMyODI2NjEiCiAgICAgICAgIGlkPSJzdG9wMzIzMC03IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzY2MkU4QyIKICAgICAgICAgaWQ9InN0b3AzMjMyLTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUUyMDY0IgogICAgICAgICBpZD0ic3RvcDMyMzQtMiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIwMzIiCiAgICAgICAgIGlkPSJzdG9wMzIzNi0wIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzZfLTIiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgeTE9IjI2NDUuNDg5NyIKICAgICAgIHgyPSItNjg0MS43OTMiCiAgICAgICB5Mj0iMjY0NS40ODk3IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzI0MS0zIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMjQzLTciIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyNDUtNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyNDctOSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF83Xy0yIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg2NDAuNjU5MiIKICAgICAgIHkxPSIyNjU0LjI2NDkiCiAgICAgICB4Mj0iLTY5NDYuODY0NyIKICAgICAgIHkyPSIyNjU0LjI2NDkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuMzIzMyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgaWQ9InN0b3AzMjUyLTIiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC42MzAyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICBpZD0ic3RvcDMyNTQtOCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjc1MTQiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgIGlkPSJzdG9wMzI1Ni05IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgIGlkPSJzdG9wMzI1OC03IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzhfLTMiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgeTE9IjI1OTMuNDQ2IgogICAgICAgeDI9Ii02ODQxLjc5MjUiCiAgICAgICB5Mj0iMjU5My40NDYiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuMzIzMyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgaWQ9InN0b3AzMjY3LTYiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC42MzAyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICBpZD0ic3RvcDMyNjktMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjc1MTQiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgIGlkPSJzdG9wMzI3MS0yIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgIGlkPSJzdG9wMzI3My05IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzlfLTMiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgeTE9IjI1OTkuMzI0MiIKICAgICAgIHgyPSItNjg0MS43OTI1IgogICAgICAgeTI9IjI1OTkuMzI0MiIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUMyMDYzIgogICAgICAgICBpZD0ic3RvcDMyODItMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDODIwMzciCiAgICAgICAgIGlkPSJzdG9wMzI4NC05IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjEzNSIKICAgICAgICAgaWQ9InN0b3AzMjg2LTQiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMjg4LTciIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMTBfLTgiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItNzU4NC4wMzg2IgogICAgICAgeTE9IjI2MDAuNTUxNSIKICAgICAgIHgyPSItNzIwOS42NTQzIgogICAgICAgeTI9IjI2MDAuNTUxNSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUMyMDYzIgogICAgICAgICBpZD0ic3RvcDMyOTctNCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDODIwMzciCiAgICAgICAgIGlkPSJzdG9wMzI5OS01IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjEzNSIKICAgICAgICAgaWQ9InN0b3AzMzAxLTAiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMzAzLTMiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxNzkuMjM0NjYiCiAgICAgaW5rc2NhcGU6Y3k9IjIwNy4wNzAyOSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBmaXQtbWFyZ2luLXRvcD0iMCIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3MjYiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA0OSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMTE0IgogICAgIGlua3NjYXBlOndpbmRvdy15PSI1NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwMDAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2Ny4yNDA5NiwtMTUuNjM4MzgzKSI+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6IzJkMmQyZDtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgIGQ9Im0gLTg0LjA4NzA2MSwxMTIuNzgyMzQgYyAtMC4xMDA0OCwtMC4xMDA0OCAtMC4xODI3LC0xNi40NjE2NzYgLTAuMTgyNywtMzYuMzU4MjA2IDAsLTMyLjc0MzI2IDAuMDM5NywtMzYuMTkwNzUgMC40MTg1MiwtMzYuMzM2MTEgMC41NDUxMywtMC4yMDkxOSA3LjYxMzY2NCwtMC4yMDkxOSA4LjE1ODgwNCwwIDAuMzA5MjUsMC4xMTg2NyAwLjQxODUxLDAuNTI5MDUgMC40MTg1MSwxLjU3MTg4IDAsMS42MjU5NyAwLjMyODE5LDEuOTgxMiAxLjE0NDA3LDEuMjM4MzUgNC4yOTMxNywtMy45MDg5MSAxNC40OTI5NSwtNS4wMDQyNiAyMS4yMTEzNSwtMi4yNzc4OSA4LjcxOTYzLDMuNTM4NDggMTMuOTM5NTgsMTMuNjQ1NjQgMTMuMjY0MzI5LDI1LjY4MzExIC0wLjUxNjQ0LDkuMjA2NCAtNC40MzQzOTksMTcuMDUzMjEgLTEwLjk3NTk2OSwyMS45ODI0MiAtNC4xNTM0MiwzLjEyOTcgLTcuMjM5ODUsNC4xNDUyIC0xMi42MDUyMyw0LjE0NzM3IC00LjczMjE0LDAuMDAyIC03Ljg3MjIxLC0wLjcyNDExIC0xMC4zMjE5OSwtMi4zODY1OCAtMC41MzI5NSwtMC4zNjE2NiAtMS4xMDc0MywtMC42ODM4OCAtMS4yNzY2MywtMC43MTYwMiAtMC4yMjg0NiwtMC4wNDM0IC0wLjM0MTY4LDIuOTcxNiAtMC40Mzk5MywxMS43MTU1MDYgbCAtMC4xMzIyOSwxMS43NzM5NiAtNC4yNDkwNywwLjA3MjUgYyAtMi4zMzY5OSwwLjAzOTkgLTQuMzMxMjg0LC0wLjAxIC00LjQzMTc3NCwtMC4xMTAyNSB6IG0gMjEuOTEwMDE0LC0yOC4yNzU1MTYgYyAzLjAwMDEyLC0wLjYzMjY4IDUuMDAyOTYsLTEuNzcwODggNy40NDg4NSwtNC4yMzMxMyAyLjQzODMsLTIuNDU0NjEgMy44ODUyOCwtNS4wNDA3MiA0Ljg5MTgzLC04Ljc0Mjg0IDAuNzc1NjYsLTIuODUyOTIgMC44NDA1MiwtOS4yNjc1MiAwLjEyNTU5LC0xMi40MjExNCAtMS43MTAyLC03LjU0Mzg3IC02LjE2MTIsLTExLjQzNDcxIC0xNC4wOTQ0NCwtMTIuMzIwNjMgLTEuOTg0NTYsLTAuMjIxNjIgLTIuNzQ3NjksLTAuMTk0OSAtNC4yMjYwMiwwLjE0Nzk1IC0yLjQ0NzA5LDAuNTY3NTEgLTUuNDEzMywyLjAzNzc0IC02LjQxNjYsMy4xODA0NSBsIC0wLjgyNjA5LDAuOTQwODUgdiAxNC4yMzg2IDE0LjIzODU5IGwgMC43NTk4NywxLjA0ODk2IGMgMi41NzUwNCwzLjU1NDc2IDcuMTYzMDksNS4wMTM0NCAxMi4zMzcwMSwzLjkyMjM0IHogbSAtNDUuMjA3ODQzLDEuMjAyNDggYyAtNS4wNzA5NiwzLjI1ODIyIC0xMC42NTgzNSw1LjI5NzI2IC0xNi43MDQ2Niw2LjA5NjE2IC0zLjIwMzQyLDAuNDIzMjYgLTkuMzE3MzMsMC4xNjIyNyAtMTIuNjIwMzYsLTAuNTM4NzYgLTE1LjA2MTMsLTMuMTk2NTUgLTI2LjUyMTAzLC0xNC42MzM4MyAtMjkuOTEwMDksLTI5Ljg1MTUgLTAuODI3OTQsLTMuNzE3NjggLTAuODI3OTQsLTExLjQ3NjYzIDAsLTE1LjE5NDMxIDMuNjY3MjksLTE2LjQ2NzAxMyAxNi43MTM3NSwtMjguMzM2OTczIDMzLjQwMjMyLC0zMC4zOTAxODMgMy4wNzYyMywtMC4zNzg0NyA4LjgyNTg2LC0wLjE3Njg5IDExLjg3OCwwLjQxNjQ0IDE1LjM0OTc2LDIuOTgzOTYgMjcuMDg2OTc5LDE0LjUxMTgxIDMwLjUxODEwOSwyOS45NzM3NDMgMC43NzAzNywzLjQ3MTU1IDAuODMzMDEsMTEuMTY5OTcgMC4xMTk2LDE0LjY5ODM4IC0xLjM1MTk2LDYuNjg2NTcgLTQuNzU0MzMsMTMuNTI1NTEgLTguOTg3ODYsMTguMDY2MDYgMCwwIC0xLjA4Mzk3OSwyLjU4MDI5NSAtNy42OTUwNTksNi43MjM5NyB6IG0gLTE0Ljc2NTA0LC0yLjg5NzMgYyAzLjY1MTk2LC0wLjc5OTc1IDguMzYwMTksLTIuNzU5NyA4LjY4OTIzLC0zLjYxNzE2IGwgNS44MDUzLC01Ljg0NDEyIDEuMjkyOTIsMC40MzY5NSAwLjc2LC0wLjg1NjcgYyAxLjU4MzQxLC0xLjc4NDg5IDMuOTE5MjIsLTUuNzE3NDcgNC45MDkxNCwtOC4yNjUwNSAxLjQ4OTY1OSwtMy44MzM2MyAxLjk3NTc5OSwtNi40NzAxOSAxLjk3NTc5OSwtMTAuNzE1NjIgMCwtNC4yNDU0NCAtMC40ODYxNCwtNi44ODIgLTEuOTc1Nzk5LC0xMC43MTU2MyAtMy41ODY5MywtOS4yMzA5ODMgLTExLjg5MTIyLC0xNi4xNDc3MTMgLTIxLjk0MTAxLC0xOC4yNzQ4ODMgLTMuMDY4NzksLTAuNjQ5NTUgLTguODM3NDcsLTAuNjQ5NTUgLTExLjkwNjI1LDAgLTExLjg0NzQ4LDIuNTA3NjggLTIwLjk5NDMxLDExLjU0Nzg4MyAtMjMuNDQyOTcsMjMuMTY5NjczIC0wLjY0MjY1LDMuMDUwMTYgLTAuNjQyNjUsOC41OTE1MSAwLDExLjY0MTY3IDIuNjc0MjQsMTIuNjkyNDggMTMuMzU1NjEsMjIuMjI4NTIgMjYuNDg1NjgsMjMuNjQ1NzIgMi4wMzMyOCwwLjIxOTQ2IDcuMDcyNzQsLTAuMTA2NjMgOS4zNDc5NSwtMC42MDQ4OSB6IG0gOTAuNjU4MDUsOC42NDkxNSBjIC0wLjA2OTc5LC0wLjE4NTI3IC0wLjE1NjQwOSwtMTAuMzM4MTEgLTAuMTkyNDg3LC0yMi41NjE4NiBsIC0wLjA2NTYsLTIyLjIyNSAtNS4wMjcwODQsLTAuMTMyMjkgLTUuMDI3MDgzLC0wLjEzMjI5IHYgLTMuOTY4NzUgLTMuOTY4NzUgaCA5LjkyMTg3NSA5LjkyMTg3NSB2IDI2LjU5MDYzIDI2LjU5MDYyIGwgLTQuNzAyMzA3LDAuMDcyMyBjIC0zLjYxNzg0NCwwLjA1NTYgLTQuNzMxNTY4LC0wLjAwNSAtNC44MjkxOTEsLTAuMjY0NTkgeiBtIDMwLjU2NTg3MzM3LC0wLjYwMDM5IEMgLTkuMjU4Mzc1OSw4OS4xODM5MjQgLTE1LjQxNDg5Nyw4Mi42NDg4MDQgLTE3LjM3MjQzMyw3My40MDI5NTQgYyAtMS4wMzIxNjksLTQuODc1MTUgLTAuOTE0NDc5LC0xMS4zNyAwLjI5MTQ3MywtMTYuMDg1MjMgMS44NTkwMjksLTcuMjY4NzMgNy4yNzQyNTMxLC0xNC4zNzY1MSAxMy4yNTIxMDMxLC0xNy4zOTQxMiAzLjEwOTI3ODI3LC0xLjU2OTU2IDUuMDQ1MjI5MywtMS45Nzc4NCA5LjM4NTE0MjMsLTEuOTc5MjYgMi41MDU2OTYsLTcuOWUtNCA0LjUwNTIwMjYsMC4xMzM2NCA1LjQyMzk1NzYsMC4zNjQ3MyAxLjcwNzMwNiwwLjQyOTQzIDQuNjcwNiwxLjcxNzc1IDUuMzM1ODc2LDIuMzE5ODIgMC4yNTU4ODYsMC4yMzE1NyAwLjY0ODI3NywwLjM1MDgxIDAuODcxOTc3LDAuMjY0OTcgMC4zNTc0MDEsLTAuMTM3MTUgMC40MDY3MywtMS41Njk3OSAwLjQwNjczLC0xMS44MTI0NTMgdiAtMTEuNjU2MzcgbCA0LjQzMTc3MSwwLjA3MjYgNC40MzE3NzEsMC4wNzI1IDAuMDY3MDksMzYuMzE0MDYzIDAuMDY3MDgsMzYuMzE0MDYgaCAtNC40OTg4NTQgLTQuNDk4ODU2IHYgLTEuNDM5NTkgYyAwLC0wLjc5MTc4IC0wLjExMzA1OSwtMS41MDk0NyAtMC4yNTEyNDUsLTEuNTk0ODcgLTAuMTM4MTg0LC0wLjA4NTQgLTEuMDIwMTk3LDAuMzcxMTYgLTEuOTYwMDIzLDEuMDE0NiAtMC45Mzk4MjksMC42NDM0MyAtMi4zNzk4OTUsMS40MjA5NyAtMy4yMDAxNDksMS43Mjc4NiAtMy4zOTU5ODk2LDEuMjcwNjEgLTkuMzc1MzY0NiwxLjcwNTk3IC0xMy4xMDk0MTU2MywwLjk1NDUxIHogTSAxMS42MDY5NzUsODMuMDY2NDU0IGMgMi4xODAyMjUsLTAuNzUwMTEgNC41OTM5NSwtMi4xMDAxNiA1LjMzOTk5LC0yLjk4Njc3IGwgMC42NDc4NjEsLTAuNzY5OTQgdiAtMTQuMjI3NTEgLTE0LjIyNzUgbCAtMC43NTk4NjIsLTEuMDQ4OTYgYyAtMC45OTgwNzcsLTEuMzc3OCAtMi41NDM0MjYsLTIuNTgwMzUgLTQuNDE5ODc1LC0zLjQzOTQyIC0yLjAwMTM4LC0wLjkxNjI2IC01LjQ5MTE4MzYsLTEuMTMzODMgLTguMTUxNzQ4NiwtMC41MDgyMiAtOC4yMDkyNzczLDEuOTMwMzQgLTEzLjI1OTA5NDMsMTAuMDQ3MzIgLTEyLjc3MDg1MDMsMjAuNTI3NjIgMC41MjYyMTEsMTEuMjk1MjcgNS45NTEzMjMsMTcuMDkzMDEgMTYuMDcyODk1MywxNy4xNzY4OSAxLjg3MzIyMSwwLjAxNTUgMi45MzIxNDk2LC0wLjExNDQ4IDQuMDQxNTg5NiwtMC40OTYxOSB6IE0gLTMxLjQ5NzkzMSwzMS4zOTExNzEgYyAtMC4wNzMxOCwtMC4xOTA3IC0wLjEwMDI5LC0yLjM2NjQxIC0wLjA2MDI1LC00LjgzNDkyIGwgMC4wNzI4LC00LjQ4ODIxIGggNC42MzAyMDggNC42MzAyMDkgdiA0Ljc2MjUgNC43NjI1IGwgLTQuNTY5OTYsMC4wNzI0IGMgLTMuNTc2NDM0LDAuMDU2NyAtNC41OTg4ODUsLTAuMDAzIC00LjcwMzAwNiwtMC4yNzQyOSB6IgogICAgICAgaWQ9InBhdGgxNTkxIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3NjY3Njc3NjY2Njc2NjY2Nzc2Nzc2NjY2NjY3NjY2NjY3NzY3NjY2NjY2NjY3Njc3Njc2NjY2NzY2NjY2NjY2NjY2NjY3Nzc2NzY2NzY2NjY2NjY3NjY2NjY2NjY2NjY2Nzc2NjY3NjY2NjY2NjYyIgLz4KICAgIDxnCiAgICAgICBpZD0iZzMxNjkiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgtMC4wMTQ0MTc5MywwLjAyNDk3MjYsLTAuMDI0OTcyNiwtMC4wMTQ0MTc5MywtODEuNzM0ODg3LDgxLjgyNDQ0NikiPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDI3NCIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItNjg3My42NDc5IgogICAgICAgICB5MT0iMjc3NC4yOTk4IgogICAgICAgICB4Mj0iLTY2MzYuMjM3MyIKICAgICAgICAgeTI9IjI0OTYuNjg5NSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRjU5NzIzIgogICAgICAgICAgIGlkPSJzdG9wNDI3NiIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMTIzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNGNjk4MjIiCiAgICAgICAgICAgaWQ9InN0b3A0Mjc4IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjgzODMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgICBpZD0ic3RvcDQyODAiIC8+CiAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNzM2LjEsOC4xIGMgLTI3LjEsMTYgLTcyLjIsNjEuMyAtMTI1LjgsMTI3IGwgNDkuMyw5My4yIEMgNjk0LjMsMTc4LjggNzI5LjUsMTM0LjEgNzY1LDk2IGMgMi44LC0zIDQuMSwtNC40IDQuMSwtNC40IC0xLjMsMS40IC0yLjgsMyAtNC4xLDQuNCAtMTEuNSwxMi42IC00Ni40LDUzLjQgLTk5LDEzNC4yIDUwLjcsLTIuNSAxMjguNSwtMTIuOSAxOTIsLTIzLjcgMTksLTEwNS45IC0xOC41LC0xNTQuMyAtMTguNSwtMTU0LjMgMCwwIC00Ny42LC03NyAtMTAzLjQsLTQ0LjEgeiIKICAgICAgICAgaWQ9InBhdGgzMTc4IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzFfLTcpIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDY1Mi41LDUzOS45IGMgMC4zLC0wLjEgMC43LC0wLjEgMS4xLC0wLjIgbCAtNy4xLDAuOCBjIC0wLjQsMC4yIC0wLjgsMC40IC0xLjIsMC42IDIuMywtMC41IDQuOCwtMC45IDcuMiwtMS4yIHoiCiAgICAgICAgIGlkPSJwYXRoMzE4MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA2MDIsNzA2LjkgYyAtNCwwLjkgLTguMSwxLjYgLTEyLjMsMi4zIDQuMiwtMC43IDguMywtMS41IDEyLjMsLTIuMyB6IgogICAgICAgICBpZD0icGF0aDMxODIiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjU5LjQsMTA4MS40IGMgMC41LC0xLjMgMSwtMi44IDEuNSwtNC4xIDEwLjksLTI4LjcgMjEuNywtNTYuNiAzMi4zLC04My44IDExLjksLTMwLjUgMjMuNywtNjAgMzUuNSwtODguNiAxMi4zLC0zMC4xIDI0LjUsLTU5LjMgMzYuNCwtODcuNSAxMi41LC0yOS41IDI0LjksLTU4IDM3LjEsLTg1LjQgOS45LC0yMi4zIDE5LjYsLTQzLjkgMjkuMiwtNjQuOCAzLjIsLTcgNi40LC0xMy45IDkuNiwtMjAuNyA2LjMsLTEzLjYgMTIuNSwtMjYuOCAxOC43LC0zOS44IDUuNywtMTEuOSAxMS4zLC0yMy42IDE3LC0zNS4yIDEuOSwtMy44IDMuNywtNy42IDUuNiwtMTEuNCAwLjMsLTAuNiAwLjYsLTEuMiAwLjksLTEuOSBsIC02LjEsMC42IC00LjgsLTkuNSBjIC0wLjUsMC45IC0wLjksMS45IC0xLjQsMi44IC04LjYsMTcuMyAtMTcuMywzNC42IC0yNS44LDUyLjEgLTQuOSwxMC4yIC05LjgsMjAuNCAtMTQuNywzMC41IC0xMy41LDI4LjMgLTI2LjcsNTcgLTM5LjgsODUuNiAtMTMuMiwyOS4xIC0yNi4xLDU4LjMgLTM4LjksODcuNiAtMTIuNCwyOC44IC0yNC43LDU3LjYgLTM2LjYsODYuMyAtMTEuOSwyOC43IC0yMy42LDU3LjMgLTM1LDg1LjYgLTExLjksMjkuNiAtMjMuNCw1OSAtMzQuNiw4OCAtMi42LDYuNiAtNSwxMy4xIC03LjYsMTkuNiAtOSwyMy40IC0xNy44LDQ2LjYgLTI2LjMsNjkuNCBsIDcuNiwxNSA2LjgsLTAuNyBjIDAuMiwtMC43IDAuNSwtMS4zIDAuNywtMi4xIDExLjEsLTI5LjggMjIsLTU5LjEgMzIuNywtODcuNiB6IgogICAgICAgICBpZD0icGF0aDMxODQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gNTg2LjYsNzA5LjYgWiIKICAgICAgICAgaWQ9InBhdGgzMTg2IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU3MC4yLDc5MSBjIC02LjMsMS4xIC0xMi43LDIuMyAtMTkuNCwzLjQgMCwwIC0wLjEsMCAtMC4xLDAuMSAzLjQsLTAuNSA2LjcsLTEgMTAsLTEuNSAzLjEsLTAuNyA2LjMsLTEuMyA5LjUsLTIgeiIKICAgICAgICAgaWQ9InBhdGgzMTg4IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDojYmQyMDJlIiAvPgogICAgICA8cGF0aAogICAgICAgICBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIKICAgICAgICAgZD0ibSA1NzAuMiw3OTEgYyAtNi4zLDEuMSAtMTIuNywyLjMgLTE5LjQsMy40IDAsMCAtMC4xLDAgLTAuMSwwLjEgMy40LC0wLjUgNi43LC0xIDEwLC0xLjUgMy4xLC0wLjcgNi4zLC0xLjMgOS41LC0yIHoiCiAgICAgICAgIGlkPSJwYXRoMzE5MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zNTtmaWxsOiNiZDIwMmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNTg2LjcsNzA5LjUgYyAwLDAgMCwwLjEgMCwwIC0wLjEsMCAtMC4xLDAgLTAuMSwwLjEgMSwtMC4xIDIuMSwtMC4zIDMuMSwtMC41IDQuMiwtMC42IDguMywtMS4zIDEyLjMsLTIuMyAtNSwwLjkgLTEwLDEuOCAtMTUuMywyLjcgeiIKICAgICAgICAgaWQ9InBhdGgzMTkyIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDojYmQyMDJlIiAvPgogICAgICA8cGF0aAogICAgICAgICBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIKICAgICAgICAgZD0ibSA1ODYuNyw3MDkuNSBjIDAsMCAwLDAuMSAwLDAgLTAuMSwwIC0wLjEsMCAtMC4xLDAuMSAxLC0wLjEgMi4xLC0wLjMgMy4xLC0wLjUgNC4yLC0wLjYgOC4zLC0xLjMgMTIuMywtMi4zIC01LDAuOSAtMTAsMS44IC0xNS4zLDIuNyB6IgogICAgICAgICBpZD0icGF0aDMxOTQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDI5MSIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODYzMC43MTk3IgogICAgICAgICB5MT0iMjgwNC45NjA3IgogICAgICAgICB4Mj0iLTY5MzYuOTI1MyIKICAgICAgICAgeTI9IjI4MDQuOTYwNyIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0MjkzIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQyOTUiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDI5NyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDI5OSIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1MTQsNDY5LjIgYyAxNSwtMjguMSAzMC4yLC01NS41IDQ1LjUsLTgyLjEgMTUuOSwtMjcuOCAzMi4xLC01NC42IDQ4LjQsLTgwLjYgMC45LC0xLjUgMiwtMy4xIDIuOSwtNC42IDE2LjEsLTI1LjUgMzIuNCwtNTAuMSA0OC43LC03My41IGwgLTQ5LjMsLTkzLjIgYyAtMy43LDQuNSAtNy40LDkuMSAtMTEuMiwxMy45IC0xNC4zLDE3LjggLTI5LDM2LjggLTQ0LjIsNTcuMSAtMTcuMSwyMi44IC0zNC42LDQ3LjIgLTUyLjUsNzIuOCAtMTYuNCwyMy42IC0zMy4yLDQ4LjMgLTUwLDc0IC0xNC4zLDIxLjggLTI4LjUsNDQuMiAtNDIuNyw2Ny4yIC0wLjUsMC44IC0xLDEuNyAtMS41LDIuNiBsIDY0LjMsMTI3IEMgNDg2LDUyMi4zIDUwMCw0OTUuNCA1MTQsNDY5LjIgWiIKICAgICAgICAgaWQ9InBhdGgzMjA1IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzJfLTYpIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDMwMiIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODQyNi4yNTU5IgogICAgICAgICB5MT0iMjYzNS4yODM5IgogICAgICAgICB4Mj0iLTc0MTYuOTE5NCIKICAgICAgICAgeTI9IjI2MzUuMjgzOSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojMjgyNjYxIgogICAgICAgICAgIGlkPSJzdG9wNDMwNCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iOS41NDgzODllLTAyIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM2NjJFOEMiCiAgICAgICAgICAgaWQ9InN0b3A0MzA2IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjc4ODIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlFMjA2NCIKICAgICAgICAgICBpZD0ic3RvcDQzMDgiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuOTQ4NyIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMDMyIgogICAgICAgICAgIGlkPSJzdG9wNDMxMCIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAyMjEuMiwxMTg0LjQgYyAtOC41LDIzLjMgLTE3LjEsNDcuMiAtMjUuNiw3MS41IC0wLjEsMC4zIC0wLjIsMC43IC0wLjQsMSAtMS4yLDMuNCAtMi41LDYuOSAtMy42LDEwLjMgLTUuOCwxNi40IC0xMC44LDMxLjIgLTIyLjMsNjQuNyAxOC45LDguNiAzNC4xLDMxLjQgNDguNSw1Ny4yIC0xLjUsLTI2LjcgLTEyLjUsLTUxLjggLTMzLjYsLTcxLjIgOTMuMyw0LjIgMTczLjcsLTE5LjQgMjE1LjMsLTg3LjYgMy43LC02LjEgNy4xLC0xMi40IDEwLjIsLTE5LjMgLTE4LjksMjQgLTQyLjQsMzQuMSAtODYuNSwzMS43IC0wLjEsMCAtMC4yLDAuMSAtMC4zLDAuMSAwLjEsMCAwLjIsLTAuMSAwLjMsLTAuMSA2NSwtMjkuMSA5Ny41LC01NyAxMjYuNCwtMTAzLjIgNi44LC0xMSAxMy41LC0yMi45IDIwLjMsLTM2LjIgLTU2LjgsNTguMyAtMTIyLjUsNzQuOSAtMTkxLjgsNjIuMyBsIC01Miw1LjcgYyAtMS43LDQuNCAtMy4yLDguNyAtNC45LDEzLjEgeiIKICAgICAgICAgaWQ9InBhdGgzMjE2IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzNfLTcpIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDMxMyIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgICB5MT0iMjgyMC44NjA0IgogICAgICAgICB4Mj0iLTY4NDEuNzkzIgogICAgICAgICB5Mj0iMjgyMC44NjA0IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzMTUiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDMxNyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzE5IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzIxIiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDI0NS41LDEwNjguMSBjIDExLjIsLTI5IDIyLjgsLTU4LjQgMzQuNiwtODggMTEuNCwtMjguNCAyMywtNTcgMzUsLTg1LjYgMTIsLTI4LjYgMjQuMiwtNTcuNSAzNi42LC04Ni4zIDEyLjYsLTI5LjMgMjUuNiwtNTguNSAzOC45LC04Ny42IDEzLjEsLTI4LjggMjYuMywtNTcuNCAzOS44LC04NS42IDQuOCwtMTAuMiA5LjgsLTIwLjQgMTQuNywtMzAuNSA4LjUsLTE3LjUgMTcuMSwtMzQuOSAyNS44LC01Mi4xIDAuNSwtMC45IDAuOSwtMS45IDEuNCwtMi44IEwgNDA4LDQyMi42IGMgLTEsMS43IC0yLjEsMy41IC0zLjIsNS4xIC0xNSwyNC41IC0yOS45LDQ5LjUgLTQ0LjUsNzUgLTE0LjgsMjUuOCAtMjkuMyw1Mi4xIC00My41LDc4LjggLTExLjksMjIuNSAtMjMuNiw0NS4xIC0zNS4xLDY4LjEgLTIuMyw0LjYgLTQuNSw5LjMgLTYuOCwxMy45IC0xNCwyOC45IC0yNi42LDU2LjYgLTM4LjEsODMuNSAtMTMsMzAuMyAtMjQuNCw1OS4zIC0zNC4zLDg2LjggLTYuNiwxOC4xIC0xMi41LDM1LjUgLTE4LDUyLjMgLTQuNSwxNC4zIC04LjcsMjguNyAtMTIuOSw0MyAtOS42LDMzLjYgLTE3LjksNjcuMiAtMjQuNywxMDAuNiBsIDY0LjYsMTI3LjUgYyA4LjUsLTIyLjggMTcuMywtNDYgMjYuMywtNjkuNCAyLjcsLTYuNyA1LjEsLTEzLjMgNy43LC0xOS43IHoiCiAgICAgICAgIGlkPSJwYXRoMzIyNyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF80Xy0wKSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMjQiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg0MTIuMDU3NiIKICAgICAgICAgeTE9IjI3OTcuODc4OSIKICAgICAgICAgeDI9Ii03NTIxLjkxNzUiCiAgICAgICAgIHkyPSIyNzk3Ljg3ODkiCiAgICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzI4MjY2MSIKICAgICAgICAgICBpZD0ic3RvcDQzMjYiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojNjYyRThDIgogICAgICAgICAgIGlkPSJzdG9wNDMyOCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5RTIwNjQiCiAgICAgICAgICAgaWQ9InN0b3A0MzMwIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjAzMiIKICAgICAgICAgICBpZD0ic3RvcDQzMzIiIC8+CiAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTQ2LjIsMTAzNCBjIC04LjEsNDAuOCAtMTMuOSw4MS40IC0xNi44LDEyMS44IC0wLjEsMS40IC0wLjIsMi44IC0wLjMsNC4yIC0yMC4yLC0zMi4zIC03NC4xLC02My44IC03NCwtNjMuNSAzOC43LDU2IDY4LDExMS42IDcyLjMsMTY2LjIgLTIwLjcsNC4yIC00OSwtMS45IC04MS43LC0xMy45IDM0LjEsMzEuNCA1OS43LDQwIDY5LjgsNDIuNCAtMzEuNCwyIC02NCwyMy41IC05Ni45LDQ4LjMgNDguMSwtMTkuNiA4NywtMjcuNCAxMTQuOCwtMjEuMSAtNDQuMiwxMjUgLTg4LjQsMjYzIC0xMzIuNyw0MDkuNiAxMy42LC00IDIxLjcsLTEzLjIgMjYuMiwtMjUuNSA3LjksLTI2LjUgNjAuMiwtMjAwLjcgMTQyLjMsLTQyOS40IDIuNCwtNi41IDQuNywtMTMuMSA3LjEsLTE5LjYgMC42LC0xLjkgMS4zLC0zLjcgMiwtNS40IDguNiwtMjQgMTcuNywtNDguNSAyNi45LC03My41IDIuMSwtNS43IDQuMiwtMTEuNCA2LjQsLTE3LjEgMCwtMC4xIDAuMSwtMC4yIDAuMSwtMC4zIEwgMTQ3LDEwMjkuNyBjIC0wLjIsMS4zIC0wLjUsMi44IC0wLjgsNC4zIHoiCiAgICAgICAgIGlkPSJwYXRoMzIzOCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF81Xy04KSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMzUiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg1MzUuNTg3OSIKICAgICAgICAgeTE9IjI2NDUuNDg5NyIKICAgICAgICAgeDI9Ii02ODQxLjc5MyIKICAgICAgICAgeTI9IjI2NDUuNDg5NyIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0MzM3IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzMzkiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM0MSIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM0MyIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA0ODIuMyw1NjAuMiBjIC0xLjksMy44IC0zLjcsNy42IC01LjYsMTEuNCAtNS42LDExLjUgLTExLjIsMjMuMiAtMTcsMzUuMiAtNi4yLDEzIC0xMi40LDI2LjIgLTE4LjcsMzkuOCAtMy4yLDYuOCAtNi40LDEzLjcgLTkuNiwyMC43IC05LjYsMjAuOSAtMTkuMyw0Mi41IC0yOS4yLDY0LjggLTEyLjEsMjcuMyAtMjQuNiw1NS44IC0zNy4xLDg1LjQgLTExLjksMjguMiAtMjQuMiw1Ny4zIC0zNi40LDg3LjUgLTExLjcsMjguNiAtMjMuNSw1OC4yIC0zNS41LDg4LjYgLTEwLjcsMjcuMSAtMjEuNSw1NS4xIC0zMi4zLDgzLjggLTAuNSwxLjMgLTEsMi44IC0xLjUsNC4xIC0xMC44LDI4LjUgLTIxLjcsNTcuOCAtMzIuNiw4Ny44IC0wLjIsMC43IC0wLjUsMS4zIC0wLjcsMi4xIGwgNTIsLTUuNyBjIC0xLC0wLjIgLTIuMSwtMC4zIC0zLjEsLTAuNSA2Mi4xLC03LjcgMTQ0LjgsLTU0LjIgMTk4LjEsLTExMS41IDI0LjYsLTI2LjQgNDYuOSwtNTcuNiA2Ny41LC05NC4xIDE1LjMsLTI3LjEgMjkuOCwtNTcuMyA0My42LC05MC42IDEyLC0yOS4xIDIzLjUsLTYwLjcgMzQuNiwtOTQuOCAtMTQuMyw3LjUgLTMwLjYsMTMuMSAtNDguNiwxNi45IC0zLjIsMC43IC02LjQsMS4zIC05LjcsMS45IC0zLjMsMC42IC02LjYsMS4xIC0xMCwxLjUgdiAwIDAgYyAwLDAgMC4xLDAgMC4xLC0wLjEgNTgsLTIyLjMgOTQuNSwtNjUuMyAxMjEsLTExOCAtMTUuMiwxMC40IC00MCwyNCAtNjkuNywzMC41IC00LDAuOSAtOC4xLDEuNiAtMTIuMywyLjMgLTEsMC4xIC0yLjEsMC4zIC0zLjEsMC41IHYgMCAwIGggMC4xIGMgMCwwIDAsMCAwLjEsMCB2IDAgYyAyMC4yLC04LjQgMzcuMSwtMTcuOSA1MS44LC0yOSAzLjIsLTIuNCA2LjMsLTQuOCA5LjEsLTcuNCA0LjUsLTMuOSA4LjcsLTggMTIuOSwtMTIuMiAyLjYsLTIuOCA1LjEsLTUuNiA3LjYsLTguNSA1LjgsLTYuOSAxMS4yLC0xNC4zIDE2LjIsLTIyLjMgMS41LC0yLjUgMy4xLC00LjkgNC41LC03LjUgMiwtMy43IDMuOCwtNy40IDUuNiwtMTAuOSA4LjEsLTE2LjIgMTQuNiwtMzAuOCAxOS43LC00My41IDIuNiwtNi40IDQuOCwtMTIuMiA2LjgsLTE3LjggMC44LC0yLjIgMS41LC00LjMgMi4yLC02LjQgMi4xLC02LjEgMy43LC0xMS41IDUsLTE2LjMgMiwtNy4yIDMuMiwtMTIuOSAzLjgsLTE3IHYgMCAwIGMgLTIsMS41IC00LjIsMy4xIC02LjgsNC42IC0xNy41LDEwLjUgLTQ3LjUsMTkuOSAtNzEuNywyNC40IGwgNDcuNywtNS4yIC00Ny43LDUuMiBjIC0wLjMsMC4xIC0wLjcsMC4xIC0xLjEsMC4yIC0yLjUsMC40IC00LjgsMC44IC03LjMsMS4xIDAuNCwtMC4yIDAuOCwtMC40IDEuMiwtMC42IGwgLTE2My4zLDE3LjkgYyAwLDAuNCAtMC4zLDEuMSAtMC42LDEuNyB6IgogICAgICAgICBpZD0icGF0aDMyNDkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOnVybCgjU1ZHSURfNl8tMikiIC8+CiAgICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgICBpZD0ibGluZWFyR3JhZGllbnQ0MzQ2IgogICAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgICAgeDE9Ii04NjQwLjY1OTIiCiAgICAgICAgIHkxPSIyNjU0LjI2NDkiCiAgICAgICAgIHgyPSItNjk0Ni44NjQ3IgogICAgICAgICB5Mj0iMjY1NC4yNjQ5IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzNDgiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDM1MCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzUyIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzU0IiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDY2Ni4xLDIzMC4yIGMgLTE0LjUsMjIuMyAtMzAuMyw0Ny42IC00Ny41LDc2LjMgLTAuOSwxLjQgLTEuOSwzLjEgLTIuNyw0LjUgLTE0LjcsMjQuOCAtMzAuMyw1MiAtNDYuOSw4MS45IC0xNC4yLDI1LjggLTI5LDUzLjQgLTQ0LjQsODMuMSAtMTMuNCwyNS45IC0yNy4yLDUzLjQgLTQxLjUsODIuNSBsIDE2My4zLC0xNy45IGMgNDcuNiwtMjEuOSA2OC44LC00MS42IDg5LjQsLTcwLjMgNS40LC03LjkgMTEsLTE2LjEgMTYuNCwtMjQuNyAxNi44LC0yNi4yIDMzLjIsLTU1IDQ3LjksLTgzLjcgMTQuMiwtMjcuNyAyNi43LC01NS4xIDM2LjMsLTc5LjkgNi4xLC0xNS43IDExLC0zMC4zIDE0LjQsLTQzLjIgMywtMTEuMyA1LjMsLTIyLjEgNy4xLC0zMi40IC02My4zLDEwLjkgLTE0MS4yLDIxLjMgLTE5MS44LDIzLjggeiIKICAgICAgICAgaWQ9InBhdGgzMjYwIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzdfLTIpIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU2MC41LDc5Mi44IGMgLTMuMywwLjYgLTYuNiwxLjEgLTEwLDEuNSB2IDAgYyAzLjQsLTAuMyA2LjgsLTAuOSAxMCwtMS41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI2MiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTYwLjUsNzkyLjggYyAtMy4zLDAuNiAtNi42LDEuMSAtMTAsMS41IHYgMCBjIDMuNCwtMC4zIDYuOCwtMC45IDEwLC0xLjUgeiIKICAgICAgICAgaWQ9InBhdGgzMjY0IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0ib3BhY2l0eTowLjM1O2ZpbGw6I2JkMjAyZSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzNTkiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg1MzUuNTg4OSIKICAgICAgICAgeTE9IjI1OTMuNDQ2IgogICAgICAgICB4Mj0iLTY4NDEuNzkyNSIKICAgICAgICAgeTI9IjI1OTMuNDQ2IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzNjEiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDM2MyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzY1IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzY3IiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU2MC41LDc5Mi44IGMgLTMuMywwLjYgLTYuNiwxLjEgLTEwLDEuNSB2IDAgYyAzLjQsLTAuMyA2LjgsLTAuOSAxMCwtMS41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI3NSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF84Xy0zKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDEsLTAuMSAyLjEsLTAuMyAzLjEsLTAuNSAtMSwwLjEgLTIsMC40IC0zLjEsMC41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI3NyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTg2LjYsNzA5LjYgYyAxLC0wLjEgMi4xLC0wLjMgMy4xLC0wLjUgLTEsMC4xIC0yLDAuNCAtMy4xLDAuNSB6IgogICAgICAgICBpZD0icGF0aDMyNzkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDM3MiIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgICB5MT0iMjU5OS4zMjQyIgogICAgICAgICB4Mj0iLTY4NDEuNzkyNSIKICAgICAgICAgeTI9IjI1OTkuMzI0MiIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0Mzc0IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzNzYiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM3OCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM4MCIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDEsLTAuMSAyLjEsLTAuMyAzLjEsLTAuNSAtMSwwLjEgLTIsMC40IC0zLjEsMC41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI5MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF85Xy0zKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDAuMSwwIDAuMSwtMC4xIDAsMCB2IDAgMCAwIGMgMC4xLC0wLjEgMC4xLDAgMCwwIHoiCiAgICAgICAgIGlkPSJwYXRoMzI5MiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTg2LjYsNzA5LjYgYyAwLjEsMCAwLjEsLTAuMSAwLDAgdiAwIDAgMCBjIDAuMSwtMC4xIDAuMSwwIDAsMCB6IgogICAgICAgICBpZD0icGF0aDMyOTQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDM4NSIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItNzU4NC4wMzg2IgogICAgICAgICB5MT0iMjYwMC41NTE1IgogICAgICAgICB4Mj0iLTcyMDkuNjU0MyIKICAgICAgICAgeTI9IjI2MDAuNTUxNSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0Mzg3IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzODkiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM5MSIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM5MyIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDAuMSwwIDAuMSwtMC4xIDAsMCB2IDAgMCAwIGMgMC4xLC0wLjEgMC4xLDAgMCwwIHoiCiAgICAgICAgIGlkPSJwYXRoMzMwNSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8xMF8tOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K" + camel.apache.org/kamelet.support.level: "Stable" camel.apache.org/provider: "Red Hat" - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.group: "JMS" + camel.apache.org/kamelet.namespace: "Messaging" labels: camel.apache.org/kamelet.type: "sink" camel.apache.org/requires.runtime: camel-k spec: definition: - title: "JMS - AMQP 1.0 Kamelet Sink" - description: "A Kamelet that can produce events to any AMQP 1.0 compliant message broker using the Apache Qpid JMS client" + title: "JMS - AMQP 1.0 Sink" + description: "Send data to any AMQP 1.0 compliant message broker by using the Apache Qpid JMS client." required: - destinationName - remoteURI @@ -21,29 +39,28 @@ spec: properties: destinationType: title: "Destination Type" - description: "The JMS destination type (i.e.: queue or topic)" + description: "The JMS destination type (queue or topic)." type: string default: queue destinationName: title: "Destination Name" - description: "The JMS destination name" + description: "The JMS destination name." type: string remoteURI: title: "Broker URL" - description: "The JMS URL" + description: "The JMS URL." type: string example: "amqp://my-host:31616" dependencies: - "camel:jms" + - "camel:amqp" - "camel:kamelet" - - "mvn:org.apache.qpid:qpid-jms-client:0.55.0" template: beans: - name: connectionFactoryBean type: "#class:org.apache.qpid.jms.JmsConnectionFactory" - property: - - key: remoteURI - value: '{{remoteURI}}' + properties: + remoteURI: '{{remoteURI}}' from: uri: "kamelet:source" steps: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml similarity index 96% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml index 284448286..f2afd116b 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml @@ -1,19 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jms-amqp-10-source annotations: camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMTkzLjgzMzVtbSIKICAgaGVpZ2h0PSI5Ny4yNjgwMTNtbSIKICAgdmlld0JveD0iMCAwIDE5My44MzM1IDk3LjI2ODAxMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMTAwMyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi4zICgyNDA1NTQ2LCAyMDE4LTAzLTExKSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icXBpZC5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM5OTciPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMV8tNyIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeDE9Ii02ODczLjY0NzkiCiAgICAgICB5MT0iMjc3NC4yOTk4IgogICAgICAgeDI9Ii02NjM2LjIzNzMiCiAgICAgICB5Mj0iMjQ5Ni42ODk1IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRjU5NzIzIgogICAgICAgICBpZD0ic3RvcDMxNzItNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMxMjMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNGNjk4MjIiCiAgICAgICAgIGlkPSJzdG9wMzE3NC0zIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuODM4MyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMTc2LTUiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMl8tNiIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeDE9Ii04NjMwLjcxOTciCiAgICAgICB5MT0iMjgwNC45NjA3IgogICAgICAgeDI9Ii02OTM2LjkyNTMiCiAgICAgICB5Mj0iMjgwNC45NjA3IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzE5Ny0yIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMTk5LTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyMDEtMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyMDMtMiIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF8zXy03IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg0MjYuMjU1OSIKICAgICAgIHkxPSIyNjM1LjI4MzkiCiAgICAgICB4Mj0iLTc0MTYuOTE5NCIKICAgICAgIHkyPSIyNjM1LjI4MzkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMyODI2NjEiCiAgICAgICAgIGlkPSJzdG9wMzIwOC0wIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzY2MkU4QyIKICAgICAgICAgaWQ9InN0b3AzMjEwLTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUUyMDY0IgogICAgICAgICBpZD0ic3RvcDMyMTItMyIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIwMzIiCiAgICAgICAgIGlkPSJzdG9wMzIxNC02IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzRfLTAiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgeTE9IjI4MjAuODYwNCIKICAgICAgIHgyPSItNjg0MS43OTMiCiAgICAgICB5Mj0iMjgyMC44NjA0IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzIxOS02IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMjIxLTIiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyMjMtNiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyMjUtMSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF81Xy04IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg0MTIuMDU3NiIKICAgICAgIHkxPSIyNzk3Ljg3ODkiCiAgICAgICB4Mj0iLTc1MjEuOTE3NSIKICAgICAgIHkyPSIyNzk3Ljg3ODkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMyODI2NjEiCiAgICAgICAgIGlkPSJzdG9wMzIzMC03IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzY2MkU4QyIKICAgICAgICAgaWQ9InN0b3AzMjMyLTkiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUUyMDY0IgogICAgICAgICBpZD0ic3RvcDMyMzQtMiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIwMzIiCiAgICAgICAgIGlkPSJzdG9wMzIzNi0wIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzZfLTIiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgeTE9IjI2NDUuNDg5NyIKICAgICAgIHgyPSItNjg0MS43OTMiCiAgICAgICB5Mj0iMjY0NS40ODk3IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgIGlkPSJzdG9wMzI0MS0zIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgaWQ9InN0b3AzMjQzLTciIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICBpZD0ic3RvcDMyNDUtNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICBpZD0ic3RvcDMyNDctOSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJTVkdJRF83Xy0yIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4MT0iLTg2NDAuNjU5MiIKICAgICAgIHkxPSIyNjU0LjI2NDkiCiAgICAgICB4Mj0iLTY5NDYuODY0NyIKICAgICAgIHkyPSIyNjU0LjI2NDkiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuMzIzMyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgaWQ9InN0b3AzMjUyLTIiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC42MzAyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICBpZD0ic3RvcDMyNTQtOCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjc1MTQiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgIGlkPSJzdG9wMzI1Ni05IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgIGlkPSJzdG9wMzI1OC03IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzhfLTMiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgeTE9IjI1OTMuNDQ2IgogICAgICAgeDI9Ii02ODQxLjc5MjUiCiAgICAgICB5Mj0iMjU5My40NDYiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuMzIzMyIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgaWQ9InN0b3AzMjY3LTYiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC42MzAyIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICBpZD0ic3RvcDMyNjktMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjc1MTQiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgIGlkPSJzdG9wMzI3MS0yIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgIGlkPSJzdG9wMzI3My05IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9IlNWR0lEXzlfLTMiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgeTE9IjI1OTkuMzI0MiIKICAgICAgIHgyPSItNjg0MS43OTI1IgogICAgICAgeTI9IjI1OTkuMzI0MiIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUMyMDYzIgogICAgICAgICBpZD0ic3RvcDMyODItMSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDODIwMzciCiAgICAgICAgIGlkPSJzdG9wMzI4NC05IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjEzNSIKICAgICAgICAgaWQ9InN0b3AzMjg2LTQiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMjg4LTciIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iU1ZHSURfMTBfLTgiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIHgxPSItNzU4NC4wMzg2IgogICAgICAgeTE9IjI2MDAuNTUxNSIKICAgICAgIHgyPSItNzIwOS42NTQzIgogICAgICAgeTI9IjI2MDAuNTUxNSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojOUMyMDYzIgogICAgICAgICBpZD0ic3RvcDMyOTctNCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDODIwMzciCiAgICAgICAgIGlkPSJzdG9wMzI5OS01IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjEzNSIKICAgICAgICAgaWQ9InN0b3AzMzAxLTAiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgaWQ9InN0b3AzMzAzLTMiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMS40IgogICAgIGlua3NjYXBlOmN4PSIxNzkuMjM0NjYiCiAgICAgaW5rc2NhcGU6Y3k9IjIwNy4wNzAyOSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBmaXQtbWFyZ2luLXRvcD0iMCIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjM3MjYiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMjA0OSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMTE0IgogICAgIGlua3NjYXBlOndpbmRvdy15PSI1NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEwMDAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2Ny4yNDA5NiwtMTUuNjM4MzgzKSI+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6IzJkMmQyZDtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIKICAgICAgIGQ9Im0gLTg0LjA4NzA2MSwxMTIuNzgyMzQgYyAtMC4xMDA0OCwtMC4xMDA0OCAtMC4xODI3LC0xNi40NjE2NzYgLTAuMTgyNywtMzYuMzU4MjA2IDAsLTMyLjc0MzI2IDAuMDM5NywtMzYuMTkwNzUgMC40MTg1MiwtMzYuMzM2MTEgMC41NDUxMywtMC4yMDkxOSA3LjYxMzY2NCwtMC4yMDkxOSA4LjE1ODgwNCwwIDAuMzA5MjUsMC4xMTg2NyAwLjQxODUxLDAuNTI5MDUgMC40MTg1MSwxLjU3MTg4IDAsMS42MjU5NyAwLjMyODE5LDEuOTgxMiAxLjE0NDA3LDEuMjM4MzUgNC4yOTMxNywtMy45MDg5MSAxNC40OTI5NSwtNS4wMDQyNiAyMS4yMTEzNSwtMi4yNzc4OSA4LjcxOTYzLDMuNTM4NDggMTMuOTM5NTgsMTMuNjQ1NjQgMTMuMjY0MzI5LDI1LjY4MzExIC0wLjUxNjQ0LDkuMjA2NCAtNC40MzQzOTksMTcuMDUzMjEgLTEwLjk3NTk2OSwyMS45ODI0MiAtNC4xNTM0MiwzLjEyOTcgLTcuMjM5ODUsNC4xNDUyIC0xMi42MDUyMyw0LjE0NzM3IC00LjczMjE0LDAuMDAyIC03Ljg3MjIxLC0wLjcyNDExIC0xMC4zMjE5OSwtMi4zODY1OCAtMC41MzI5NSwtMC4zNjE2NiAtMS4xMDc0MywtMC42ODM4OCAtMS4yNzY2MywtMC43MTYwMiAtMC4yMjg0NiwtMC4wNDM0IC0wLjM0MTY4LDIuOTcxNiAtMC40Mzk5MywxMS43MTU1MDYgbCAtMC4xMzIyOSwxMS43NzM5NiAtNC4yNDkwNywwLjA3MjUgYyAtMi4zMzY5OSwwLjAzOTkgLTQuMzMxMjg0LC0wLjAxIC00LjQzMTc3NCwtMC4xMTAyNSB6IG0gMjEuOTEwMDE0LC0yOC4yNzU1MTYgYyAzLjAwMDEyLC0wLjYzMjY4IDUuMDAyOTYsLTEuNzcwODggNy40NDg4NSwtNC4yMzMxMyAyLjQzODMsLTIuNDU0NjEgMy44ODUyOCwtNS4wNDA3MiA0Ljg5MTgzLC04Ljc0Mjg0IDAuNzc1NjYsLTIuODUyOTIgMC44NDA1MiwtOS4yNjc1MiAwLjEyNTU5LC0xMi40MjExNCAtMS43MTAyLC03LjU0Mzg3IC02LjE2MTIsLTExLjQzNDcxIC0xNC4wOTQ0NCwtMTIuMzIwNjMgLTEuOTg0NTYsLTAuMjIxNjIgLTIuNzQ3NjksLTAuMTk0OSAtNC4yMjYwMiwwLjE0Nzk1IC0yLjQ0NzA5LDAuNTY3NTEgLTUuNDEzMywyLjAzNzc0IC02LjQxNjYsMy4xODA0NSBsIC0wLjgyNjA5LDAuOTQwODUgdiAxNC4yMzg2IDE0LjIzODU5IGwgMC43NTk4NywxLjA0ODk2IGMgMi41NzUwNCwzLjU1NDc2IDcuMTYzMDksNS4wMTM0NCAxMi4zMzcwMSwzLjkyMjM0IHogbSAtNDUuMjA3ODQzLDEuMjAyNDggYyAtNS4wNzA5NiwzLjI1ODIyIC0xMC42NTgzNSw1LjI5NzI2IC0xNi43MDQ2Niw2LjA5NjE2IC0zLjIwMzQyLDAuNDIzMjYgLTkuMzE3MzMsMC4xNjIyNyAtMTIuNjIwMzYsLTAuNTM4NzYgLTE1LjA2MTMsLTMuMTk2NTUgLTI2LjUyMTAzLC0xNC42MzM4MyAtMjkuOTEwMDksLTI5Ljg1MTUgLTAuODI3OTQsLTMuNzE3NjggLTAuODI3OTQsLTExLjQ3NjYzIDAsLTE1LjE5NDMxIDMuNjY3MjksLTE2LjQ2NzAxMyAxNi43MTM3NSwtMjguMzM2OTczIDMzLjQwMjMyLC0zMC4zOTAxODMgMy4wNzYyMywtMC4zNzg0NyA4LjgyNTg2LC0wLjE3Njg5IDExLjg3OCwwLjQxNjQ0IDE1LjM0OTc2LDIuOTgzOTYgMjcuMDg2OTc5LDE0LjUxMTgxIDMwLjUxODEwOSwyOS45NzM3NDMgMC43NzAzNywzLjQ3MTU1IDAuODMzMDEsMTEuMTY5OTcgMC4xMTk2LDE0LjY5ODM4IC0xLjM1MTk2LDYuNjg2NTcgLTQuNzU0MzMsMTMuNTI1NTEgLTguOTg3ODYsMTguMDY2MDYgMCwwIC0xLjA4Mzk3OSwyLjU4MDI5NSAtNy42OTUwNTksNi43MjM5NyB6IG0gLTE0Ljc2NTA0LC0yLjg5NzMgYyAzLjY1MTk2LC0wLjc5OTc1IDguMzYwMTksLTIuNzU5NyA4LjY4OTIzLC0zLjYxNzE2IGwgNS44MDUzLC01Ljg0NDEyIDEuMjkyOTIsMC40MzY5NSAwLjc2LC0wLjg1NjcgYyAxLjU4MzQxLC0xLjc4NDg5IDMuOTE5MjIsLTUuNzE3NDcgNC45MDkxNCwtOC4yNjUwNSAxLjQ4OTY1OSwtMy44MzM2MyAxLjk3NTc5OSwtNi40NzAxOSAxLjk3NTc5OSwtMTAuNzE1NjIgMCwtNC4yNDU0NCAtMC40ODYxNCwtNi44ODIgLTEuOTc1Nzk5LC0xMC43MTU2MyAtMy41ODY5MywtOS4yMzA5ODMgLTExLjg5MTIyLC0xNi4xNDc3MTMgLTIxLjk0MTAxLC0xOC4yNzQ4ODMgLTMuMDY4NzksLTAuNjQ5NTUgLTguODM3NDcsLTAuNjQ5NTUgLTExLjkwNjI1LDAgLTExLjg0NzQ4LDIuNTA3NjggLTIwLjk5NDMxLDExLjU0Nzg4MyAtMjMuNDQyOTcsMjMuMTY5NjczIC0wLjY0MjY1LDMuMDUwMTYgLTAuNjQyNjUsOC41OTE1MSAwLDExLjY0MTY3IDIuNjc0MjQsMTIuNjkyNDggMTMuMzU1NjEsMjIuMjI4NTIgMjYuNDg1NjgsMjMuNjQ1NzIgMi4wMzMyOCwwLjIxOTQ2IDcuMDcyNzQsLTAuMTA2NjMgOS4zNDc5NSwtMC42MDQ4OSB6IG0gOTAuNjU4MDUsOC42NDkxNSBjIC0wLjA2OTc5LC0wLjE4NTI3IC0wLjE1NjQwOSwtMTAuMzM4MTEgLTAuMTkyNDg3LC0yMi41NjE4NiBsIC0wLjA2NTYsLTIyLjIyNSAtNS4wMjcwODQsLTAuMTMyMjkgLTUuMDI3MDgzLC0wLjEzMjI5IHYgLTMuOTY4NzUgLTMuOTY4NzUgaCA5LjkyMTg3NSA5LjkyMTg3NSB2IDI2LjU5MDYzIDI2LjU5MDYyIGwgLTQuNzAyMzA3LDAuMDcyMyBjIC0zLjYxNzg0NCwwLjA1NTYgLTQuNzMxNTY4LC0wLjAwNSAtNC44MjkxOTEsLTAuMjY0NTkgeiBtIDMwLjU2NTg3MzM3LC0wLjYwMDM5IEMgLTkuMjU4Mzc1OSw4OS4xODM5MjQgLTE1LjQxNDg5Nyw4Mi42NDg4MDQgLTE3LjM3MjQzMyw3My40MDI5NTQgYyAtMS4wMzIxNjksLTQuODc1MTUgLTAuOTE0NDc5LC0xMS4zNyAwLjI5MTQ3MywtMTYuMDg1MjMgMS44NTkwMjksLTcuMjY4NzMgNy4yNzQyNTMxLC0xNC4zNzY1MSAxMy4yNTIxMDMxLC0xNy4zOTQxMiAzLjEwOTI3ODI3LC0xLjU2OTU2IDUuMDQ1MjI5MywtMS45Nzc4NCA5LjM4NTE0MjMsLTEuOTc5MjYgMi41MDU2OTYsLTcuOWUtNCA0LjUwNTIwMjYsMC4xMzM2NCA1LjQyMzk1NzYsMC4zNjQ3MyAxLjcwNzMwNiwwLjQyOTQzIDQuNjcwNiwxLjcxNzc1IDUuMzM1ODc2LDIuMzE5ODIgMC4yNTU4ODYsMC4yMzE1NyAwLjY0ODI3NywwLjM1MDgxIDAuODcxOTc3LDAuMjY0OTcgMC4zNTc0MDEsLTAuMTM3MTUgMC40MDY3MywtMS41Njk3OSAwLjQwNjczLC0xMS44MTI0NTMgdiAtMTEuNjU2MzcgbCA0LjQzMTc3MSwwLjA3MjYgNC40MzE3NzEsMC4wNzI1IDAuMDY3MDksMzYuMzE0MDYzIDAuMDY3MDgsMzYuMzE0MDYgaCAtNC40OTg4NTQgLTQuNDk4ODU2IHYgLTEuNDM5NTkgYyAwLC0wLjc5MTc4IC0wLjExMzA1OSwtMS41MDk0NyAtMC4yNTEyNDUsLTEuNTk0ODcgLTAuMTM4MTg0LC0wLjA4NTQgLTEuMDIwMTk3LDAuMzcxMTYgLTEuOTYwMDIzLDEuMDE0NiAtMC45Mzk4MjksMC42NDM0MyAtMi4zNzk4OTUsMS40MjA5NyAtMy4yMDAxNDksMS43Mjc4NiAtMy4zOTU5ODk2LDEuMjcwNjEgLTkuMzc1MzY0NiwxLjcwNTk3IC0xMy4xMDk0MTU2MywwLjk1NDUxIHogTSAxMS42MDY5NzUsODMuMDY2NDU0IGMgMi4xODAyMjUsLTAuNzUwMTEgNC41OTM5NSwtMi4xMDAxNiA1LjMzOTk5LC0yLjk4Njc3IGwgMC42NDc4NjEsLTAuNzY5OTQgdiAtMTQuMjI3NTEgLTE0LjIyNzUgbCAtMC43NTk4NjIsLTEuMDQ4OTYgYyAtMC45OTgwNzcsLTEuMzc3OCAtMi41NDM0MjYsLTIuNTgwMzUgLTQuNDE5ODc1LC0zLjQzOTQyIC0yLjAwMTM4LC0wLjkxNjI2IC01LjQ5MTE4MzYsLTEuMTMzODMgLTguMTUxNzQ4NiwtMC41MDgyMiAtOC4yMDkyNzczLDEuOTMwMzQgLTEzLjI1OTA5NDMsMTAuMDQ3MzIgLTEyLjc3MDg1MDMsMjAuNTI3NjIgMC41MjYyMTEsMTEuMjk1MjcgNS45NTEzMjMsMTcuMDkzMDEgMTYuMDcyODk1MywxNy4xNzY4OSAxLjg3MzIyMSwwLjAxNTUgMi45MzIxNDk2LC0wLjExNDQ4IDQuMDQxNTg5NiwtMC40OTYxOSB6IE0gLTMxLjQ5NzkzMSwzMS4zOTExNzEgYyAtMC4wNzMxOCwtMC4xOTA3IC0wLjEwMDI5LC0yLjM2NjQxIC0wLjA2MDI1LC00LjgzNDkyIGwgMC4wNzI4LC00LjQ4ODIxIGggNC42MzAyMDggNC42MzAyMDkgdiA0Ljc2MjUgNC43NjI1IGwgLTQuNTY5OTYsMC4wNzI0IGMgLTMuNTc2NDM0LDAuMDU2NyAtNC41OTg4ODUsLTAuMDAzIC00LjcwMzAwNiwtMC4yNzQyOSB6IgogICAgICAgaWQ9InBhdGgxNTkxIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3NjY3Njc3NjY2Njc2NjY2Nzc2Nzc2NjY2NjY3NjY2NjY3NzY3NjY2NjY2NjY3Njc3Njc2NjY2NzY2NjY2NjY2NjY2NjY3Nzc2NzY2NzY2NjY2NjY3NjY2NjY2NjY2NjY2Nzc2NjY3NjY2NjY2NjYyIgLz4KICAgIDxnCiAgICAgICBpZD0iZzMxNjkiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgtMC4wMTQ0MTc5MywwLjAyNDk3MjYsLTAuMDI0OTcyNiwtMC4wMTQ0MTc5MywtODEuNzM0ODg3LDgxLjgyNDQ0NikiPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDI3NCIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItNjg3My42NDc5IgogICAgICAgICB5MT0iMjc3NC4yOTk4IgogICAgICAgICB4Mj0iLTY2MzYuMjM3MyIKICAgICAgICAgeTI9IjI0OTYuNjg5NSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRjU5NzIzIgogICAgICAgICAgIGlkPSJzdG9wNDI3NiIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMTIzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNGNjk4MjIiCiAgICAgICAgICAgaWQ9InN0b3A0Mjc4IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjgzODMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0U4NzcyNiIKICAgICAgICAgICBpZD0ic3RvcDQyODAiIC8+CiAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNzM2LjEsOC4xIGMgLTI3LjEsMTYgLTcyLjIsNjEuMyAtMTI1LjgsMTI3IGwgNDkuMyw5My4yIEMgNjk0LjMsMTc4LjggNzI5LjUsMTM0LjEgNzY1LDk2IGMgMi44LC0zIDQuMSwtNC40IDQuMSwtNC40IC0xLjMsMS40IC0yLjgsMyAtNC4xLDQuNCAtMTEuNSwxMi42IC00Ni40LDUzLjQgLTk5LDEzNC4yIDUwLjcsLTIuNSAxMjguNSwtMTIuOSAxOTIsLTIzLjcgMTksLTEwNS45IC0xOC41LC0xNTQuMyAtMTguNSwtMTU0LjMgMCwwIC00Ny42LC03NyAtMTAzLjQsLTQ0LjEgeiIKICAgICAgICAgaWQ9InBhdGgzMTc4IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzFfLTcpIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDY1Mi41LDUzOS45IGMgMC4zLC0wLjEgMC43LC0wLjEgMS4xLC0wLjIgbCAtNy4xLDAuOCBjIC0wLjQsMC4yIC0wLjgsMC40IC0xLjIsMC42IDIuMywtMC41IDQuOCwtMC45IDcuMiwtMS4yIHoiCiAgICAgICAgIGlkPSJwYXRoMzE4MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA2MDIsNzA2LjkgYyAtNCwwLjkgLTguMSwxLjYgLTEyLjMsMi4zIDQuMiwtMC43IDguMywtMS41IDEyLjMsLTIuMyB6IgogICAgICAgICBpZD0icGF0aDMxODIiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjU5LjQsMTA4MS40IGMgMC41LC0xLjMgMSwtMi44IDEuNSwtNC4xIDEwLjksLTI4LjcgMjEuNywtNTYuNiAzMi4zLC04My44IDExLjksLTMwLjUgMjMuNywtNjAgMzUuNSwtODguNiAxMi4zLC0zMC4xIDI0LjUsLTU5LjMgMzYuNCwtODcuNSAxMi41LC0yOS41IDI0LjksLTU4IDM3LjEsLTg1LjQgOS45LC0yMi4zIDE5LjYsLTQzLjkgMjkuMiwtNjQuOCAzLjIsLTcgNi40LC0xMy45IDkuNiwtMjAuNyA2LjMsLTEzLjYgMTIuNSwtMjYuOCAxOC43LC0zOS44IDUuNywtMTEuOSAxMS4zLC0yMy42IDE3LC0zNS4yIDEuOSwtMy44IDMuNywtNy42IDUuNiwtMTEuNCAwLjMsLTAuNiAwLjYsLTEuMiAwLjksLTEuOSBsIC02LjEsMC42IC00LjgsLTkuNSBjIC0wLjUsMC45IC0wLjksMS45IC0xLjQsMi44IC04LjYsMTcuMyAtMTcuMywzNC42IC0yNS44LDUyLjEgLTQuOSwxMC4yIC05LjgsMjAuNCAtMTQuNywzMC41IC0xMy41LDI4LjMgLTI2LjcsNTcgLTM5LjgsODUuNiAtMTMuMiwyOS4xIC0yNi4xLDU4LjMgLTM4LjksODcuNiAtMTIuNCwyOC44IC0yNC43LDU3LjYgLTM2LjYsODYuMyAtMTEuOSwyOC43IC0yMy42LDU3LjMgLTM1LDg1LjYgLTExLjksMjkuNiAtMjMuNCw1OSAtMzQuNiw4OCAtMi42LDYuNiAtNSwxMy4xIC03LjYsMTkuNiAtOSwyMy40IC0xNy44LDQ2LjYgLTI2LjMsNjkuNCBsIDcuNiwxNSA2LjgsLTAuNyBjIDAuMiwtMC43IDAuNSwtMS4zIDAuNywtMi4xIDExLjEsLTI5LjggMjIsLTU5LjEgMzIuNywtODcuNiB6IgogICAgICAgICBpZD0icGF0aDMxODQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gNTg2LjYsNzA5LjYgWiIKICAgICAgICAgaWQ9InBhdGgzMTg2IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU3MC4yLDc5MSBjIC02LjMsMS4xIC0xMi43LDIuMyAtMTkuNCwzLjQgMCwwIC0wLjEsMCAtMC4xLDAuMSAzLjQsLTAuNSA2LjcsLTEgMTAsLTEuNSAzLjEsLTAuNyA2LjMsLTEuMyA5LjUsLTIgeiIKICAgICAgICAgaWQ9InBhdGgzMTg4IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDojYmQyMDJlIiAvPgogICAgICA8cGF0aAogICAgICAgICBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIKICAgICAgICAgZD0ibSA1NzAuMiw3OTEgYyAtNi4zLDEuMSAtMTIuNywyLjMgLTE5LjQsMy40IDAsMCAtMC4xLDAgLTAuMSwwLjEgMy40LC0wLjUgNi43LC0xIDEwLC0xLjUgMy4xLC0wLjcgNi4zLC0xLjMgOS41LC0yIHoiCiAgICAgICAgIGlkPSJwYXRoMzE5MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MC4zNTtmaWxsOiNiZDIwMmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gNTg2LjcsNzA5LjUgYyAwLDAgMCwwLjEgMCwwIC0wLjEsMCAtMC4xLDAgLTAuMSwwLjEgMSwtMC4xIDIuMSwtMC4zIDMuMSwtMC41IDQuMiwtMC42IDguMywtMS4zIDEyLjMsLTIuMyAtNSwwLjkgLTEwLDEuOCAtMTUuMywyLjcgeiIKICAgICAgICAgaWQ9InBhdGgzMTkyIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDojYmQyMDJlIiAvPgogICAgICA8cGF0aAogICAgICAgICBlbmFibGUtYmFja2dyb3VuZD0ibmV3ICAgICIKICAgICAgICAgZD0ibSA1ODYuNyw3MDkuNSBjIDAsMCAwLDAuMSAwLDAgLTAuMSwwIC0wLjEsMCAtMC4xLDAuMSAxLC0wLjEgMi4xLC0wLjMgMy4xLC0wLjUgNC4yLC0wLjYgOC4zLC0xLjMgMTIuMywtMi4zIC01LDAuOSAtMTAsMS44IC0xNS4zLDIuNyB6IgogICAgICAgICBpZD0icGF0aDMxOTQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDI5MSIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODYzMC43MTk3IgogICAgICAgICB5MT0iMjgwNC45NjA3IgogICAgICAgICB4Mj0iLTY5MzYuOTI1MyIKICAgICAgICAgeTI9IjI4MDQuOTYwNyIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0MjkzIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQyOTUiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDI5NyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDI5OSIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1MTQsNDY5LjIgYyAxNSwtMjguMSAzMC4yLC01NS41IDQ1LjUsLTgyLjEgMTUuOSwtMjcuOCAzMi4xLC01NC42IDQ4LjQsLTgwLjYgMC45LC0xLjUgMiwtMy4xIDIuOSwtNC42IDE2LjEsLTI1LjUgMzIuNCwtNTAuMSA0OC43LC03My41IGwgLTQ5LjMsLTkzLjIgYyAtMy43LDQuNSAtNy40LDkuMSAtMTEuMiwxMy45IC0xNC4zLDE3LjggLTI5LDM2LjggLTQ0LjIsNTcuMSAtMTcuMSwyMi44IC0zNC42LDQ3LjIgLTUyLjUsNzIuOCAtMTYuNCwyMy42IC0zMy4yLDQ4LjMgLTUwLDc0IC0xNC4zLDIxLjggLTI4LjUsNDQuMiAtNDIuNyw2Ny4yIC0wLjUsMC44IC0xLDEuNyAtMS41LDIuNiBsIDY0LjMsMTI3IEMgNDg2LDUyMi4zIDUwMCw0OTUuNCA1MTQsNDY5LjIgWiIKICAgICAgICAgaWQ9InBhdGgzMjA1IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzJfLTYpIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDMwMiIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODQyNi4yNTU5IgogICAgICAgICB5MT0iMjYzNS4yODM5IgogICAgICAgICB4Mj0iLTc0MTYuOTE5NCIKICAgICAgICAgeTI9IjI2MzUuMjgzOSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojMjgyNjYxIgogICAgICAgICAgIGlkPSJzdG9wNDMwNCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iOS41NDgzODllLTAyIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM2NjJFOEMiCiAgICAgICAgICAgaWQ9InN0b3A0MzA2IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjc4ODIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlFMjA2NCIKICAgICAgICAgICBpZD0ic3RvcDQzMDgiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuOTQ4NyIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMDMyIgogICAgICAgICAgIGlkPSJzdG9wNDMxMCIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAyMjEuMiwxMTg0LjQgYyAtOC41LDIzLjMgLTE3LjEsNDcuMiAtMjUuNiw3MS41IC0wLjEsMC4zIC0wLjIsMC43IC0wLjQsMSAtMS4yLDMuNCAtMi41LDYuOSAtMy42LDEwLjMgLTUuOCwxNi40IC0xMC44LDMxLjIgLTIyLjMsNjQuNyAxOC45LDguNiAzNC4xLDMxLjQgNDguNSw1Ny4yIC0xLjUsLTI2LjcgLTEyLjUsLTUxLjggLTMzLjYsLTcxLjIgOTMuMyw0LjIgMTczLjcsLTE5LjQgMjE1LjMsLTg3LjYgMy43LC02LjEgNy4xLC0xMi40IDEwLjIsLTE5LjMgLTE4LjksMjQgLTQyLjQsMzQuMSAtODYuNSwzMS43IC0wLjEsMCAtMC4yLDAuMSAtMC4zLDAuMSAwLjEsMCAwLjIsLTAuMSAwLjMsLTAuMSA2NSwtMjkuMSA5Ny41LC01NyAxMjYuNCwtMTAzLjIgNi44LC0xMSAxMy41LC0yMi45IDIwLjMsLTM2LjIgLTU2LjgsNTguMyAtMTIyLjUsNzQuOSAtMTkxLjgsNjIuMyBsIC01Miw1LjcgYyAtMS43LDQuNCAtMy4yLDguNyAtNC45LDEzLjEgeiIKICAgICAgICAgaWQ9InBhdGgzMjE2IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzNfLTcpIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDMxMyIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODUzNS41ODc5IgogICAgICAgICB5MT0iMjgyMC44NjA0IgogICAgICAgICB4Mj0iLTY4NDEuNzkzIgogICAgICAgICB5Mj0iMjgyMC44NjA0IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzMTUiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDMxNyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzE5IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzIxIiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDI0NS41LDEwNjguMSBjIDExLjIsLTI5IDIyLjgsLTU4LjQgMzQuNiwtODggMTEuNCwtMjguNCAyMywtNTcgMzUsLTg1LjYgMTIsLTI4LjYgMjQuMiwtNTcuNSAzNi42LC04Ni4zIDEyLjYsLTI5LjMgMjUuNiwtNTguNSAzOC45LC04Ny42IDEzLjEsLTI4LjggMjYuMywtNTcuNCAzOS44LC04NS42IDQuOCwtMTAuMiA5LjgsLTIwLjQgMTQuNywtMzAuNSA4LjUsLTE3LjUgMTcuMSwtMzQuOSAyNS44LC01Mi4xIDAuNSwtMC45IDAuOSwtMS45IDEuNCwtMi44IEwgNDA4LDQyMi42IGMgLTEsMS43IC0yLjEsMy41IC0zLjIsNS4xIC0xNSwyNC41IC0yOS45LDQ5LjUgLTQ0LjUsNzUgLTE0LjgsMjUuOCAtMjkuMyw1Mi4xIC00My41LDc4LjggLTExLjksMjIuNSAtMjMuNiw0NS4xIC0zNS4xLDY4LjEgLTIuMyw0LjYgLTQuNSw5LjMgLTYuOCwxMy45IC0xNCwyOC45IC0yNi42LDU2LjYgLTM4LjEsODMuNSAtMTMsMzAuMyAtMjQuNCw1OS4zIC0zNC4zLDg2LjggLTYuNiwxOC4xIC0xMi41LDM1LjUgLTE4LDUyLjMgLTQuNSwxNC4zIC04LjcsMjguNyAtMTIuOSw0MyAtOS42LDMzLjYgLTE3LjksNjcuMiAtMjQuNywxMDAuNiBsIDY0LjYsMTI3LjUgYyA4LjUsLTIyLjggMTcuMywtNDYgMjYuMywtNjkuNCAyLjcsLTYuNyA1LjEsLTEzLjMgNy43LC0xOS43IHoiCiAgICAgICAgIGlkPSJwYXRoMzIyNyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF80Xy0wKSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMjQiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg0MTIuMDU3NiIKICAgICAgICAgeTE9IjI3OTcuODc4OSIKICAgICAgICAgeDI9Ii03NTIxLjkxNzUiCiAgICAgICAgIHkyPSIyNzk3Ljg3ODkiCiAgICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC40MzQ1LC0wLjkzMTgsLTAuOTMxOCwtMC40MzQ1LDYyMjMuNDc2MSwtNTA1Mi43NDI3KSI+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzI4MjY2MSIKICAgICAgICAgICBpZD0ic3RvcDQzMjYiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjkuNTQ4Mzg5ZS0wMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojNjYyRThDIgogICAgICAgICAgIGlkPSJzdG9wNDMyOCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43ODgyIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5RTIwNjQiCiAgICAgICAgICAgaWQ9InN0b3A0MzMwIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjk0ODciCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0NDMjAzMiIKICAgICAgICAgICBpZD0ic3RvcDQzMzIiIC8+CiAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTQ2LjIsMTAzNCBjIC04LjEsNDAuOCAtMTMuOSw4MS40IC0xNi44LDEyMS44IC0wLjEsMS40IC0wLjIsMi44IC0wLjMsNC4yIC0yMC4yLC0zMi4zIC03NC4xLC02My44IC03NCwtNjMuNSAzOC43LDU2IDY4LDExMS42IDcyLjMsMTY2LjIgLTIwLjcsNC4yIC00OSwtMS45IC04MS43LC0xMy45IDM0LjEsMzEuNCA1OS43LDQwIDY5LjgsNDIuNCAtMzEuNCwyIC02NCwyMy41IC05Ni45LDQ4LjMgNDguMSwtMTkuNiA4NywtMjcuNCAxMTQuOCwtMjEuMSAtNDQuMiwxMjUgLTg4LjQsMjYzIC0xMzIuNyw0MDkuNiAxMy42LC00IDIxLjcsLTEzLjIgMjYuMiwtMjUuNSA3LjksLTI2LjUgNjAuMiwtMjAwLjcgMTQyLjMsLTQyOS40IDIuNCwtNi41IDQuNywtMTMuMSA3LjEsLTE5LjYgMC42LC0xLjkgMS4zLC0zLjcgMiwtNS40IDguNiwtMjQgMTcuNywtNDguNSAyNi45LC03My41IDIuMSwtNS43IDQuMiwtMTEuNCA2LjQsLTE3LjEgMCwtMC4xIDAuMSwtMC4yIDAuMSwtMC4zIEwgMTQ3LDEwMjkuNyBjIC0wLjIsMS4zIC0wLjUsMi44IC0wLjgsNC4zIHoiCiAgICAgICAgIGlkPSJwYXRoMzIzOCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF81Xy04KSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzMzUiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg1MzUuNTg3OSIKICAgICAgICAgeTE9IjI2NDUuNDg5NyIKICAgICAgICAgeDI9Ii02ODQxLjc5MyIKICAgICAgICAgeTI9IjI2NDUuNDg5NyIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0MzM3IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzMzkiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM0MSIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM0MyIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA0ODIuMyw1NjAuMiBjIC0xLjksMy44IC0zLjcsNy42IC01LjYsMTEuNCAtNS42LDExLjUgLTExLjIsMjMuMiAtMTcsMzUuMiAtNi4yLDEzIC0xMi40LDI2LjIgLTE4LjcsMzkuOCAtMy4yLDYuOCAtNi40LDEzLjcgLTkuNiwyMC43IC05LjYsMjAuOSAtMTkuMyw0Mi41IC0yOS4yLDY0LjggLTEyLjEsMjcuMyAtMjQuNiw1NS44IC0zNy4xLDg1LjQgLTExLjksMjguMiAtMjQuMiw1Ny4zIC0zNi40LDg3LjUgLTExLjcsMjguNiAtMjMuNSw1OC4yIC0zNS41LDg4LjYgLTEwLjcsMjcuMSAtMjEuNSw1NS4xIC0zMi4zLDgzLjggLTAuNSwxLjMgLTEsMi44IC0xLjUsNC4xIC0xMC44LDI4LjUgLTIxLjcsNTcuOCAtMzIuNiw4Ny44IC0wLjIsMC43IC0wLjUsMS4zIC0wLjcsMi4xIGwgNTIsLTUuNyBjIC0xLC0wLjIgLTIuMSwtMC4zIC0zLjEsLTAuNSA2Mi4xLC03LjcgMTQ0LjgsLTU0LjIgMTk4LjEsLTExMS41IDI0LjYsLTI2LjQgNDYuOSwtNTcuNiA2Ny41LC05NC4xIDE1LjMsLTI3LjEgMjkuOCwtNTcuMyA0My42LC05MC42IDEyLC0yOS4xIDIzLjUsLTYwLjcgMzQuNiwtOTQuOCAtMTQuMyw3LjUgLTMwLjYsMTMuMSAtNDguNiwxNi45IC0zLjIsMC43IC02LjQsMS4zIC05LjcsMS45IC0zLjMsMC42IC02LjYsMS4xIC0xMCwxLjUgdiAwIDAgYyAwLDAgMC4xLDAgMC4xLC0wLjEgNTgsLTIyLjMgOTQuNSwtNjUuMyAxMjEsLTExOCAtMTUuMiwxMC40IC00MCwyNCAtNjkuNywzMC41IC00LDAuOSAtOC4xLDEuNiAtMTIuMywyLjMgLTEsMC4xIC0yLjEsMC4zIC0zLjEsMC41IHYgMCAwIGggMC4xIGMgMCwwIDAsMCAwLjEsMCB2IDAgYyAyMC4yLC04LjQgMzcuMSwtMTcuOSA1MS44LC0yOSAzLjIsLTIuNCA2LjMsLTQuOCA5LjEsLTcuNCA0LjUsLTMuOSA4LjcsLTggMTIuOSwtMTIuMiAyLjYsLTIuOCA1LjEsLTUuNiA3LjYsLTguNSA1LjgsLTYuOSAxMS4yLC0xNC4zIDE2LjIsLTIyLjMgMS41LC0yLjUgMy4xLC00LjkgNC41LC03LjUgMiwtMy43IDMuOCwtNy40IDUuNiwtMTAuOSA4LjEsLTE2LjIgMTQuNiwtMzAuOCAxOS43LC00My41IDIuNiwtNi40IDQuOCwtMTIuMiA2LjgsLTE3LjggMC44LC0yLjIgMS41LC00LjMgMi4yLC02LjQgMi4xLC02LjEgMy43LC0xMS41IDUsLTE2LjMgMiwtNy4yIDMuMiwtMTIuOSAzLjgsLTE3IHYgMCAwIGMgLTIsMS41IC00LjIsMy4xIC02LjgsNC42IC0xNy41LDEwLjUgLTQ3LjUsMTkuOSAtNzEuNywyNC40IGwgNDcuNywtNS4yIC00Ny43LDUuMiBjIC0wLjMsMC4xIC0wLjcsMC4xIC0xLjEsMC4yIC0yLjUsMC40IC00LjgsMC44IC03LjMsMS4xIDAuNCwtMC4yIDAuOCwtMC40IDEuMiwtMC42IGwgLTE2My4zLDE3LjkgYyAwLDAuNCAtMC4zLDEuMSAtMC42LDEuNyB6IgogICAgICAgICBpZD0icGF0aDMyNDkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJmaWxsOnVybCgjU1ZHSURfNl8tMikiIC8+CiAgICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgICBpZD0ibGluZWFyR3JhZGllbnQ0MzQ2IgogICAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgICAgeDE9Ii04NjQwLjY1OTIiCiAgICAgICAgIHkxPSIyNjU0LjI2NDkiCiAgICAgICAgIHgyPSItNjk0Ni44NjQ3IgogICAgICAgICB5Mj0iMjY1NC4yNjQ5IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzNDgiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDM1MCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzUyIiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzU0IiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDY2Ni4xLDIzMC4yIGMgLTE0LjUsMjIuMyAtMzAuMyw0Ny42IC00Ny41LDc2LjMgLTAuOSwxLjQgLTEuOSwzLjEgLTIuNyw0LjUgLTE0LjcsMjQuOCAtMzAuMyw1MiAtNDYuOSw4MS45IC0xNC4yLDI1LjggLTI5LDUzLjQgLTQ0LjQsODMuMSAtMTMuNCwyNS45IC0yNy4yLDUzLjQgLTQxLjUsODIuNSBsIDE2My4zLC0xNy45IGMgNDcuNiwtMjEuOSA2OC44LC00MS42IDg5LjQsLTcwLjMgNS40LC03LjkgMTEsLTE2LjEgMTYuNCwtMjQuNyAxNi44LC0yNi4yIDMzLjIsLTU1IDQ3LjksLTgzLjcgMTQuMiwtMjcuNyAyNi43LC01NS4xIDM2LjMsLTc5LjkgNi4xLC0xNS43IDExLC0zMC4zIDE0LjQsLTQzLjIgMywtMTEuMyA1LjMsLTIyLjEgNy4xLC0zMi40IC02My4zLDEwLjkgLTE0MS4yLDIxLjMgLTE5MS44LDIzLjggeiIKICAgICAgICAgaWQ9InBhdGgzMjYwIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzdfLTIpIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU2MC41LDc5Mi44IGMgLTMuMywwLjYgLTYuNiwxLjEgLTEwLDEuNSB2IDAgYyAzLjQsLTAuMyA2LjgsLTAuOSAxMCwtMS41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI2MiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTYwLjUsNzkyLjggYyAtMy4zLDAuNiAtNi42LDEuMSAtMTAsMS41IHYgMCBjIDMuNCwtMC4zIDYuOCwtMC45IDEwLC0xLjUgeiIKICAgICAgICAgaWQ9InBhdGgzMjY0IgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBzdHlsZT0ib3BhY2l0eTowLjM1O2ZpbGw6I2JkMjAyZSIgLz4KICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDQzNTkiCiAgICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgICB4MT0iLTg1MzUuNTg4OSIKICAgICAgICAgeTE9IjI1OTMuNDQ2IgogICAgICAgICB4Mj0iLTY4NDEuNzkyNSIKICAgICAgICAgeTI9IjI1OTMuNDQ2IgogICAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuNDM0NSwtMC45MzE4LC0wLjkzMTgsLTAuNDM0NSw2MjIzLjQ3NjEsLTUwNTIuNzQyNykiPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjMyMzMiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzlDMjA2MyIKICAgICAgICAgICBpZD0ic3RvcDQzNjEiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNjMwMiIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQzgyMDM3IgogICAgICAgICAgIGlkPSJzdG9wNDM2MyIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC43NTE0IgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNDQzIxMzUiCiAgICAgICAgICAgaWQ9InN0b3A0MzY1IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNFODc3MjYiCiAgICAgICAgICAgaWQ9InN0b3A0MzY3IiAvPgogICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDU2MC41LDc5Mi44IGMgLTMuMywwLjYgLTYuNiwxLjEgLTEwLDEuNSB2IDAgYyAzLjQsLTAuMyA2LjgsLTAuOSAxMCwtMS41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI3NSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF84Xy0zKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDEsLTAuMSAyLjEsLTAuMyAzLjEsLTAuNSAtMSwwLjEgLTIsMC40IC0zLjEsMC41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI3NyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTg2LjYsNzA5LjYgYyAxLC0wLjEgMi4xLC0wLjMgMy4xLC0wLjUgLTEsMC4xIC0yLDAuNCAtMy4xLDAuNSB6IgogICAgICAgICBpZD0icGF0aDMyNzkiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDM3MiIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItODUzNS41ODg5IgogICAgICAgICB5MT0iMjU5OS4zMjQyIgogICAgICAgICB4Mj0iLTY4NDEuNzkyNSIKICAgICAgICAgeTI9IjI1OTkuMzI0MiIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0Mzc0IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzNzYiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM3OCIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM4MCIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDEsLTAuMSAyLjEsLTAuMyAzLjEsLTAuNSAtMSwwLjEgLTIsMC40IC0zLjEsMC41IHoiCiAgICAgICAgIGlkPSJwYXRoMzI5MCIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF85Xy0zKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDAuMSwwIDAuMSwtMC4xIDAsMCB2IDAgMCAwIGMgMC4xLC0wLjEgMC4xLDAgMCwwIHoiCiAgICAgICAgIGlkPSJwYXRoMzI5MiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6I2JkMjAyZSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAgICAiCiAgICAgICAgIGQ9Im0gNTg2LjYsNzA5LjYgYyAwLjEsMCAwLjEsLTAuMSAwLDAgdiAwIDAgMCBjIDAuMSwtMC4xIDAuMSwwIDAsMCB6IgogICAgICAgICBpZD0icGF0aDMyOTQiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuMzU7ZmlsbDojYmQyMDJlIiAvPgogICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50NDM4NSIKICAgICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgIHgxPSItNzU4NC4wMzg2IgogICAgICAgICB5MT0iMjYwMC41NTE1IgogICAgICAgICB4Mj0iLTcyMDkuNjU0MyIKICAgICAgICAgeTI9IjI2MDAuNTUxNSIKICAgICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjQzNDUsLTAuOTMxOCwtMC45MzE4LC0wLjQzNDUsNjIyMy40NzYxLC01MDUyLjc0MjcpIj4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMC4zMjMzIgogICAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiM5QzIwNjMiCiAgICAgICAgICAgaWQ9InN0b3A0Mzg3IiAvPgogICAgICAgIDxzdG9wCiAgICAgICAgICAgb2Zmc2V0PSIwLjYzMDIiCiAgICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I0M4MjAzNyIKICAgICAgICAgICBpZD0ic3RvcDQzODkiIC8+CiAgICAgICAgPHN0b3AKICAgICAgICAgICBvZmZzZXQ9IjAuNzUxNCIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojQ0MyMTM1IgogICAgICAgICAgIGlkPSJzdG9wNDM5MSIgLz4KICAgICAgICA8c3RvcAogICAgICAgICAgIG9mZnNldD0iMSIKICAgICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojRTg3NzI2IgogICAgICAgICAgIGlkPSJzdG9wNDM5MyIgLz4KICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA1ODYuNiw3MDkuNiBjIDAuMSwwIDAuMSwtMC4xIDAsMCB2IDAgMCAwIGMgMC4xLC0wLjEgMC4xLDAgMCwwIHoiCiAgICAgICAgIGlkPSJwYXRoMzMwNSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8xMF8tOCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K" + camel.apache.org/kamelet.support.level: "Stable" camel.apache.org/provider: "Red Hat" - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.group: "JMS" + camel.apache.org/kamelet.namespace: "Messaging" labels: camel.apache.org/kamelet.type: "source" camel.apache.org/requires.runtime: camel-k spec: definition: - title: "JMS - AMQP 1.0 Kamelet Source" - description: "A Kamelet that can consume events from any AMQP 1.0 compliant message broker using the Apache Qpid JMS client" + title: "JMS - AMQP 1.0 Source" + description: "Consume data from any AMQP 1.0 compliant message broker by using the Apache Qpid JMS client." required: - destinationName - remoteURI @@ -21,29 +39,28 @@ spec: properties: destinationType: title: "Destination Type" - description: "The JMS destination type (i.e.: queue or topic)" + description: "The JMS destination type (queue or topic)." type: string default: queue destinationName: title: "Destination Name" - description: "The JMS destination name" + description: "The JMS destination name." type: string remoteURI: title: "Broker URL" - description: "The JMS URL" + description: "The JMS URL." type: string example: "amqp://my-host:31616" dependencies: - "camel:jms" + - "camel:amqp" - "camel:kamelet" - - "mvn:org.apache.qpid:qpid-jms-client:0.55.0" template: beans: - name: connectionFactoryBean type: "#class:org.apache.qpid.jms.JmsConnectionFactory" - property: - - key: remoteURI - value: '{{remoteURI}}' + properties: + remoteURI: '{{remoteURI}}' from: uri: "jms:{{destinationType}}:{{destinationName}}" parameters: diff --git a/library/camel-kamelets/src/main/resources/kamelets/jms-ibm-mq-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jms-ibm-mq-sink.kamelet.yaml new file mode 100644 index 000000000..ccdb457d5 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/jms-ibm-mq-sink.kamelet.yaml @@ -0,0 +1,120 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: jms-ibm-mq-sink + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgIHZpZXdCb3g9IjAgMCA1NzMuMDggNTc2Ljk3Ij4KICAgIDxkZWZzPgogICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgLmNscy0xe2ZpbGw6I2ZmZjt9LmNscy0ye2ZpbGw6IzVhNzdiNTt9LmNscy0ze2ZpbGw6I2FmYmVlMDt9LmNscy00e2NsaXAtcGF0aDp1cmwoI2NsaXAtcGF0aCk7fS5jbHMtNXtjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgtMik7fQogICAgICAgIDwvc3R5bGU+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwLXBhdGgiPgogICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiCiAgICAgICAgICAgICAgICAgIGQ9Ik0xNjQuNSw1MTAuODhWNDU3aDQuMDh2NTMuOTFabTQ3Ljc4LTI3LjcxYTEzLjE0LDEzLjE0LDAsMCwxLDkuMjMsMTNjMCw5LjYyLTYuMjgsMTQuNjktMTUuODIsMTQuNjlIMTg1LjI0VjQ1N2gxOS44NGM4Ljk0LDAsMTUuNiw1LjE1LDE1LjYsMTQuMDhhMTIuMzgsMTIuMzgsMCwwLDEtOC40LDEyLjEyWm0tMjIuOTUsMjQuMDhoMTUuOWM3LjM1LDAsMTIuMTktNC4xNywxMi4xOS0xMS4wNnMtNC44NC0xMS4wNS0xMi4xOS0xMS4wNWgtMTUuOXYyMi4xMVptMTUuMy00Ni42NWgtMTUuM3YyMC45aDE1LjNjNi41MSwwLDEyLTMsMTItMTAuNDVzLTUuNDUtMTAuNDUtMTItMTAuNDVabTcyLjYxLDUwLjI4VjQ2Ni40M2wtMTYuMzUsMzYuODhIMjU2LjhsLTE2LjY2LTM2Ljg4djQ0LjQ1aC00LjA5VjQ1N2g0LjA5bDE4Ljc4LDQxLjU3TDI3Ny4yNCw0NTdoNC4wOXY1My45MVoiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgICAgIDxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTIiPgogICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiCiAgICAgICAgICAgICAgICAgIGQ9Ik0zNDkuNyw1MTAuODRWNDc3LjI4aC0uMThsLTEwLjkxLDI1Ljg0SDMzMmwtMTAuOTEtMjUuODRIMzIxdjMzLjU2aC03LjlWNDU3aDcuNDRsMTUsMzUuMDdMMzUwLjEzLDQ1N2g3LjQ2djUzLjgxWm01NC4yLTEwLDYuODgsNS42NS00LjY5LDUuNjEtNi41OC01LjQ0cS00LjYyLDQuNTEtMTIuMyw0LjY2YTE3Ljg5LDE3Ljg5LDAsMCwxLTEwLjI1LTMuMSwxNy43LDE3LjcsMCwwLDEtNi4wOC02LjU3Yy0uMzgtLjgxLS43My0xLjU5LTEtMi4zMmExNS40NSwxNS40NSwwLDAsMS0uNzItMi44OCwxNDUuMjksMTQ1LjI5LDAsMCwxLDAtMjUsMTUuMzgsMTUuMzgsMCwwLDEsMS43NS01LjEzLDE4LjMzLDE4LjMzLDAsMCwxLDYuMDgtNi42NCwxNy40NywxNy40NywwLDAsMSwxMC4yNS0zLDE3Ljc2LDE3Ljc2LDAsMCwxLDEwLjM2LDMsMTgsMTgsMCwwLDEsNS45NCw2LjY0LDEyLjc5LDEyLjc5LDAsMCwxLDEuODIsNS4xMywxMDcuMjMsMTA3LjIzLDAsMCwxLC40NiwxMi41NXEwLDguMzgtLjM2LDExLjdhMTQuNTEsMTQuNTEsMCwwLDEtMS41Myw1LjE3Wm0tNi41NC0yNy43MWExMS4yNiwxMS4yNiwwLDAsMC01LjI2LTcuMjQsMTEuMTgsMTEuMTgsMCwwLDAtNC45MS0xLjE1LDEwLjYzLDEwLjYzLDAsMCwwLTQuOCwxLjE1LDEwLjA5LDEwLjA5LDAsMCwwLTMuMjksMi43Nyw5LDksMCwwLDAtMiw0LjQ4LDY2LjcsNjYuNywwLDAsMC0uNTcsMTAuODMsNjUuNDcsNjUuNDcsMCwwLDAsLjU3LDEwLjc3LDksOSwwLDAsMCwyLDQuNTQsOS40Nyw5LjQ3LDAsMCwwLDMuMjksMi43MSw5LjExLDkuMTEsMCwwLDAsNC44LDEuMjIsOC42Miw4LjYyLDAsMCwwLDUuODQtMS44OWwtNi42Ni01LjQ3LDQuNjktNS41OSw2LjA5LDVxLjc1LTIuNzMuNzUtMTEuMjhhNzAuNiw3MC42LDAsMCwwLS41NC0xMC44NFoiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgPC9kZWZzPgogICAgPHRpdGxlPklCTSBJUTwvdGl0bGU+CiAgICA8Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjI4Ny42NCIgY3k9IjI4Ny4yIiByPSIyNzguNSIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0zIgogICAgICAgICAgICAgcG9pbnRzPSI0NTguMTcgNDI2LjY3IDExNy4xMSA0MjYuNjcgMTE3LjExIDE1My41NSA3MC45MSAxNTMuNTUgNzAuOTEgMTMxLjU1IDEzOS4xMSAxMzEuNTUgMTM5LjExIDQwNC42NyA0MzYuMTcgNDA0LjY3IDQzNi4xNyAxMzEuNTUgNTA0LjM3IDEzMS41NSA1MDQuMzcgMTUzLjU1IDQ1OC4xNyAxNTMuNTUgNDU4LjE3IDQyNi42NyIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0xIgogICAgICAgICAgICAgcG9pbnRzPSI0MjAuMjYgMjUzLjEyIDQyMC4yNiAyNDEuNzcgMTU1LjAyIDI0MS43NyAxNTUuMDIgMjUyLjg1IDI4Ny44OCAzMjkuNDkgNDIwLjI2IDI1My4xMiIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0xIgogICAgICAgICAgICAgcG9pbnRzPSIyODcuODggMzM5Ljc1IDE1NS4wMiAyNjMuMTEgMTU1LjAyIDM4OC44NCA0MjAuMjYgMzg4Ljg0IDQyMC4yNiAyNjMuMzggMjg3Ljg4IDMzOS43NSIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIgogICAgICAgICAgZD0iTTE2NC41LDUxMC44OFY0NTdoNC4wOHY1My45MVptNDcuNzgtMjcuNzFhMTMuMTQsMTMuMTQsMCwwLDEsOS4yMywxM2MwLDkuNjItNi4yOCwxNC42OS0xNS44MiwxNC42OUgxODUuMjRWNDU3aDE5Ljg0YzguOTQsMCwxNS42LDUuMTUsMTUuNiwxNC4wOGExMi4zOCwxMi4zOCwwLDAsMS04LjQsMTIuMTJabS0yMi45NSwyNC4wOGgxNS45YzcuMzUsMCwxMi4xOS00LjE3LDEyLjE5LTExLjA2cy00Ljg0LTExLjA1LTEyLjE5LTExLjA1aC0xNS45djIyLjExWm0xNS4zLTQ2LjY1aC0xNS4zdjIwLjloMTUuM2M2LjUxLDAsMTItMywxMi0xMC40NXMtNS40NS0xMC40NS0xMi0xMC40NVptNzIuNjEsNTAuMjhWNDY2LjQzbC0xNi4zNSwzNi44OEgyNTYuOGwtMTYuNjYtMzYuODh2NDQuNDVoLTQuMDlWNDU3aDQuMDlsMTguNzgsNDEuNTdMMjc3LjI0LDQ1N2g0LjA5djUzLjkxWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIgogICAgICAgICAgZD0iTTM0OS43LDUxMC44NFY0NzcuMjhoLS4xOGwtMTAuOTEsMjUuODRIMzMybC0xMC45MS0yNS44NEgzMjF2MzMuNTZoLTcuOVY0NTdoNy40NGwxNSwzNS4wN0wzNTAuMTMsNDU3aDcuNDZ2NTMuODFabTU0LjItMTAsNi44OCw1LjY1LTQuNjksNS42MS02LjU4LTUuNDRxLTQuNjIsNC41MS0xMi4zLDQuNjZhMTcuODksMTcuODksMCwwLDEtMTAuMjUtMy4xLDE3LjcsMTcuNywwLDAsMS02LjA4LTYuNTdjLS4zOC0uODEtLjczLTEuNTktMS0yLjMyYTE1LjQ1LDE1LjQ1LDAsMCwxLS43Mi0yLjg4LDE0NS4yOSwxNDUuMjksMCwwLDEsMC0yNSwxNS4zOCwxNS4zOCwwLDAsMSwxLjc1LTUuMTMsMTguMzMsMTguMzMsMCwwLDEsNi4wOC02LjY0LDE3LjQ3LDE3LjQ3LDAsMCwxLDEwLjI1LTMsMTcuNzYsMTcuNzYsMCwwLDEsMTAuMzYsMywxOCwxOCwwLDAsMSw1Ljk0LDYuNjQsMTIuNzksMTIuNzksMCwwLDEsMS44Miw1LjEzLDEwNy4yMywxMDcuMjMsMCwwLDEsLjQ2LDEyLjU1cTAsOC4zOC0uMzYsMTEuN2ExNC41MSwxNC41MSwwLDAsMS0xLjUzLDUuMTdabS02LjU0LTI3LjcxYTExLjI2LDExLjI2LDAsMCwwLTUuMjYtNy4yNCwxMS4xOCwxMS4xOCwwLDAsMC00LjkxLTEuMTUsMTAuNjMsMTAuNjMsMCwwLDAtNC44LDEuMTUsMTAuMDksMTAuMDksMCwwLDAtMy4yOSwyLjc3LDksOSwwLDAsMC0yLDQuNDgsNjYuNyw2Ni43LDAsMCwwLS41NywxMC44Myw2NS40Nyw2NS40NywwLDAsMCwuNTcsMTAuNzcsOSw5LDAsMCwwLDIsNC41NCw5LjQ3LDkuNDcsMCwwLDAsMy4yOSwyLjcxLDkuMTEsOS4xMSwwLDAsMCw0LjgsMS4yMiw4LjYyLDguNjIsMCwwLDAsNS44NC0xLjg5bC02LjY2LTUuNDcsNC42OS01LjU5LDYuMDksNXEuNzUtMi43My43NS0xMS4yOGE3MC42LDcwLjYsMCwwLDAtLjU0LTEwLjg0WiIvPgo8L3N2Zz4=" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/provider: "Red Hat" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.group: "JMS" + camel.apache.org/kamelet.namespace: "Messaging" + labels: + camel.apache.org/kamelet.type: "sink" + camel.apache.org/requires.runtime: camel-k +spec: + definition: + title: "JMS - IBM MQ Sink" + description: |- + A Kamelet that can produce events to an IBM MQ message queue using JMS. + + In your KameletBinding file, you must explicitly declare the IBM MQ Server driver dependency in spec->integration->dependencies + + - "mvn:com.ibm.mq:com.ibm.mq.allclient:" + + required: + - serverName + - serverPort + - destinationName + - queueManager + - channel + - username + - password + type: object + properties: + serverName: + title: "IBM MQ Server name" + description: "IBM MQ Server name or address" + type: string + serverPort: + title: "IBM MQ Server Port" + description: "IBM MQ Server port" + type: integer + default: 1414 + destinationType: + title: "Destination Type" + description: "The JMS destination type (queue or topic)" + type: string + default: queue + destinationName: + title: "Destination Name" + description: "The destination name" + type: string + queueManager: + title: "IBM MQ Queue Manager" + description: "Name of the IBM MQ Queue Manager" + type: string + channel: + title: "IBM MQ Channel" + description: "Name of the IBM MQ Channel" + type: string + clientId: + title: "IBM MQ Client ID" + description: "Name of the IBM MQ Client ID" + type: string + username: + title: "Username" + description: "Username to authenticate to IBM MQ server" + type: string + password: + title: "Password" + description: "Password to authenticate to IBM MQ server" + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + sslCipherSuite: + title: "CipherSuite" + description: "CipherSuite to use for enabling TLS" + type: string + dependencies: + - "camel:jms" + - "camel:kamelet" + template: + beans: + - name: wmqConnectionFactory + type: "#class:com.ibm.mq.jms.MQConnectionFactory" + properties: + XMSC_WMQ_HOST_NAME: '{{serverName}}' + XMSC_WMQ_PORT: '{{serverPort}}' + XMSC_WMQ_CHANNEL: '{{channel}}' + XMSC_WMQ_QUEUE_MANAGER: '{{queueManager}}' + XMSC_WMQ_CONNECTION_MODE: 1 + XMSC_USERID: '{{username}}' + XMSC_PASSWORD: '{{password}}' + XMSC_CLIENT_ID: '{{?clientId}}' + XMSC_WMQ_SSL_CIPHER_SUITE: '{{?sslCipherSuite}}' + from: + uri: "kamelet:source" + steps: + - to: + uri: "jms:{{destinationType}}:{{destinationName}}" + parameters: + connectionFactory: "#bean:{{wmqConnectionFactory}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/jms-ibm-mq-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jms-ibm-mq-source.kamelet.yaml new file mode 100644 index 000000000..2e5ae8e2b --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/jms-ibm-mq-source.kamelet.yaml @@ -0,0 +1,120 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: jms-ibm-mq-source + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgIHZpZXdCb3g9IjAgMCA1NzMuMDggNTc2Ljk3Ij4KICAgIDxkZWZzPgogICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgLmNscy0xe2ZpbGw6I2ZmZjt9LmNscy0ye2ZpbGw6IzVhNzdiNTt9LmNscy0ze2ZpbGw6I2FmYmVlMDt9LmNscy00e2NsaXAtcGF0aDp1cmwoI2NsaXAtcGF0aCk7fS5jbHMtNXtjbGlwLXBhdGg6dXJsKCNjbGlwLXBhdGgtMik7fQogICAgICAgIDwvc3R5bGU+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwLXBhdGgiPgogICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiCiAgICAgICAgICAgICAgICAgIGQ9Ik0xNjQuNSw1MTAuODhWNDU3aDQuMDh2NTMuOTFabTQ3Ljc4LTI3LjcxYTEzLjE0LDEzLjE0LDAsMCwxLDkuMjMsMTNjMCw5LjYyLTYuMjgsMTQuNjktMTUuODIsMTQuNjlIMTg1LjI0VjQ1N2gxOS44NGM4Ljk0LDAsMTUuNiw1LjE1LDE1LjYsMTQuMDhhMTIuMzgsMTIuMzgsMCwwLDEtOC40LDEyLjEyWm0tMjIuOTUsMjQuMDhoMTUuOWM3LjM1LDAsMTIuMTktNC4xNywxMi4xOS0xMS4wNnMtNC44NC0xMS4wNS0xMi4xOS0xMS4wNWgtMTUuOXYyMi4xMVptMTUuMy00Ni42NWgtMTUuM3YyMC45aDE1LjNjNi41MSwwLDEyLTMsMTItMTAuNDVzLTUuNDUtMTAuNDUtMTItMTAuNDVabTcyLjYxLDUwLjI4VjQ2Ni40M2wtMTYuMzUsMzYuODhIMjU2LjhsLTE2LjY2LTM2Ljg4djQ0LjQ1aC00LjA5VjQ1N2g0LjA5bDE4Ljc4LDQxLjU3TDI3Ny4yNCw0NTdoNC4wOXY1My45MVoiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgICAgIDxjbGlwUGF0aCBpZD0iY2xpcC1wYXRoLTIiPgogICAgICAgICAgICA8cGF0aCBjbGFzcz0iY2xzLTEiCiAgICAgICAgICAgICAgICAgIGQ9Ik0zNDkuNyw1MTAuODRWNDc3LjI4aC0uMThsLTEwLjkxLDI1Ljg0SDMzMmwtMTAuOTEtMjUuODRIMzIxdjMzLjU2aC03LjlWNDU3aDcuNDRsMTUsMzUuMDdMMzUwLjEzLDQ1N2g3LjQ2djUzLjgxWm01NC4yLTEwLDYuODgsNS42NS00LjY5LDUuNjEtNi41OC01LjQ0cS00LjYyLDQuNTEtMTIuMyw0LjY2YTE3Ljg5LDE3Ljg5LDAsMCwxLTEwLjI1LTMuMSwxNy43LDE3LjcsMCwwLDEtNi4wOC02LjU3Yy0uMzgtLjgxLS43My0xLjU5LTEtMi4zMmExNS40NSwxNS40NSwwLDAsMS0uNzItMi44OCwxNDUuMjksMTQ1LjI5LDAsMCwxLDAtMjUsMTUuMzgsMTUuMzgsMCwwLDEsMS43NS01LjEzLDE4LjMzLDE4LjMzLDAsMCwxLDYuMDgtNi42NCwxNy40NywxNy40NywwLDAsMSwxMC4yNS0zLDE3Ljc2LDE3Ljc2LDAsMCwxLDEwLjM2LDMsMTgsMTgsMCwwLDEsNS45NCw2LjY0LDEyLjc5LDEyLjc5LDAsMCwxLDEuODIsNS4xMywxMDcuMjMsMTA3LjIzLDAsMCwxLC40NiwxMi41NXEwLDguMzgtLjM2LDExLjdhMTQuNTEsMTQuNTEsMCwwLDEtMS41Myw1LjE3Wm0tNi41NC0yNy43MWExMS4yNiwxMS4yNiwwLDAsMC01LjI2LTcuMjQsMTEuMTgsMTEuMTgsMCwwLDAtNC45MS0xLjE1LDEwLjYzLDEwLjYzLDAsMCwwLTQuOCwxLjE1LDEwLjA5LDEwLjA5LDAsMCwwLTMuMjksMi43Nyw5LDksMCwwLDAtMiw0LjQ4LDY2LjcsNjYuNywwLDAsMC0uNTcsMTAuODMsNjUuNDcsNjUuNDcsMCwwLDAsLjU3LDEwLjc3LDksOSwwLDAsMCwyLDQuNTQsOS40Nyw5LjQ3LDAsMCwwLDMuMjksMi43MSw5LjExLDkuMTEsMCwwLDAsNC44LDEuMjIsOC42Miw4LjYyLDAsMCwwLDUuODQtMS44OWwtNi42Ni01LjQ3LDQuNjktNS41OSw2LjA5LDVxLjc1LTIuNzMuNzUtMTEuMjhhNzAuNiw3MC42LDAsMCwwLS41NC0xMC44NFoiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgPC9kZWZzPgogICAgPHRpdGxlPklCTSBJUTwvdGl0bGU+CiAgICA8Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjI4Ny42NCIgY3k9IjI4Ny4yIiByPSIyNzguNSIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0zIgogICAgICAgICAgICAgcG9pbnRzPSI0NTguMTcgNDI2LjY3IDExNy4xMSA0MjYuNjcgMTE3LjExIDE1My41NSA3MC45MSAxNTMuNTUgNzAuOTEgMTMxLjU1IDEzOS4xMSAxMzEuNTUgMTM5LjExIDQwNC42NyA0MzYuMTcgNDA0LjY3IDQzNi4xNyAxMzEuNTUgNTA0LjM3IDEzMS41NSA1MDQuMzcgMTUzLjU1IDQ1OC4xNyAxNTMuNTUgNDU4LjE3IDQyNi42NyIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0xIgogICAgICAgICAgICAgcG9pbnRzPSI0MjAuMjYgMjUzLjEyIDQyMC4yNiAyNDEuNzcgMTU1LjAyIDI0MS43NyAxNTUuMDIgMjUyLjg1IDI4Ny44OCAzMjkuNDkgNDIwLjI2IDI1My4xMiIvPgogICAgPHBvbHlnb24gY2xhc3M9ImNscy0xIgogICAgICAgICAgICAgcG9pbnRzPSIyODcuODggMzM5Ljc1IDE1NS4wMiAyNjMuMTEgMTU1LjAyIDM4OC44NCA0MjAuMjYgMzg4Ljg0IDQyMC4yNiAyNjMuMzggMjg3Ljg4IDMzOS43NSIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIgogICAgICAgICAgZD0iTTE2NC41LDUxMC44OFY0NTdoNC4wOHY1My45MVptNDcuNzgtMjcuNzFhMTMuMTQsMTMuMTQsMCwwLDEsOS4yMywxM2MwLDkuNjItNi4yOCwxNC42OS0xNS44MiwxNC42OUgxODUuMjRWNDU3aDE5Ljg0YzguOTQsMCwxNS42LDUuMTUsMTUuNiwxNC4wOGExMi4zOCwxMi4zOCwwLDAsMS04LjQsMTIuMTJabS0yMi45NSwyNC4wOGgxNS45YzcuMzUsMCwxMi4xOS00LjE3LDEyLjE5LTExLjA2cy00Ljg0LTExLjA1LTEyLjE5LTExLjA1aC0xNS45djIyLjExWm0xNS4zLTQ2LjY1aC0xNS4zdjIwLjloMTUuM2M2LjUxLDAsMTItMywxMi0xMC40NXMtNS40NS0xMC40NS0xMi0xMC40NVptNzIuNjEsNTAuMjhWNDY2LjQzbC0xNi4zNSwzNi44OEgyNTYuOGwtMTYuNjYtMzYuODh2NDQuNDVoLTQuMDlWNDU3aDQuMDlsMTguNzgsNDEuNTdMMjc3LjI0LDQ1N2g0LjA5djUzLjkxWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIgogICAgICAgICAgZD0iTTM0OS43LDUxMC44NFY0NzcuMjhoLS4xOGwtMTAuOTEsMjUuODRIMzMybC0xMC45MS0yNS44NEgzMjF2MzMuNTZoLTcuOVY0NTdoNy40NGwxNSwzNS4wN0wzNTAuMTMsNDU3aDcuNDZ2NTMuODFabTU0LjItMTAsNi44OCw1LjY1LTQuNjksNS42MS02LjU4LTUuNDRxLTQuNjIsNC41MS0xMi4zLDQuNjZhMTcuODksMTcuODksMCwwLDEtMTAuMjUtMy4xLDE3LjcsMTcuNywwLDAsMS02LjA4LTYuNTdjLS4zOC0uODEtLjczLTEuNTktMS0yLjMyYTE1LjQ1LDE1LjQ1LDAsMCwxLS43Mi0yLjg4LDE0NS4yOSwxNDUuMjksMCwwLDEsMC0yNSwxNS4zOCwxNS4zOCwwLDAsMSwxLjc1LTUuMTMsMTguMzMsMTguMzMsMCwwLDEsNi4wOC02LjY0LDE3LjQ3LDE3LjQ3LDAsMCwxLDEwLjI1LTMsMTcuNzYsMTcuNzYsMCwwLDEsMTAuMzYsMywxOCwxOCwwLDAsMSw1Ljk0LDYuNjQsMTIuNzksMTIuNzksMCwwLDEsMS44Miw1LjEzLDEwNy4yMywxMDcuMjMsMCwwLDEsLjQ2LDEyLjU1cTAsOC4zOC0uMzYsMTEuN2ExNC41MSwxNC41MSwwLDAsMS0xLjUzLDUuMTdabS02LjU0LTI3LjcxYTExLjI2LDExLjI2LDAsMCwwLTUuMjYtNy4yNCwxMS4xOCwxMS4xOCwwLDAsMC00LjkxLTEuMTUsMTAuNjMsMTAuNjMsMCwwLDAtNC44LDEuMTUsMTAuMDksMTAuMDksMCwwLDAtMy4yOSwyLjc3LDksOSwwLDAsMC0yLDQuNDgsNjYuNyw2Ni43LDAsMCwwLS41NywxMC44Myw2NS40Nyw2NS40NywwLDAsMCwuNTcsMTAuNzcsOSw5LDAsMCwwLDIsNC41NCw5LjQ3LDkuNDcsMCwwLDAsMy4yOSwyLjcxLDkuMTEsOS4xMSwwLDAsMCw0LjgsMS4yMiw4LjYyLDguNjIsMCwwLDAsNS44NC0xLjg5bC02LjY2LTUuNDcsNC42OS01LjU5LDYuMDksNXEuNzUtMi43My43NS0xMS4yOGE3MC42LDcwLjYsMCwwLDAtLjU0LTEwLjg0WiIvPgo8L3N2Zz4=" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/provider: "Red Hat" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.group: "JMS" + camel.apache.org/kamelet.namespace: "Messaging" + labels: + camel.apache.org/kamelet.type: "source" + camel.apache.org/requires.runtime: camel-k +spec: + definition: + title: "JMS - IBM MQ Source" + description: |- + A Kamelet that can read events from an IBM MQ message queue using JMS. + + In your KameletBinding file, you must explicitly declare the IBM MQ Server driver dependency in spec->integration->dependencies + + - "mvn:com.ibm.mq:com.ibm.mq.allclient:" + + required: + - serverName + - serverPort + - destinationName + - queueManager + - channel + - username + - password + type: object + properties: + serverName: + title: "IBM MQ Server name" + description: "IBM MQ Server name or address" + type: string + serverPort: + title: "IBM MQ Server Port" + description: "IBM MQ Server port" + type: integer + default: 1414 + destinationType: + title: "Destination Type" + description: "The JMS destination type (queue or topic)" + type: string + default: queue + destinationName: + title: "Destination Name" + description: "The destination name" + type: string + queueManager: + title: "IBM MQ Queue Manager" + description: "Name of the IBM MQ Queue Manager" + type: string + channel: + title: "IBM MQ Channel" + description: "Name of the IBM MQ Channel" + type: string + clientId: + title: "IBM MQ Client ID" + description: "Name of the IBM MQ Client ID" + type: string + username: + title: "Username" + description: "Username to authenticate to IBM MQ server" + type: string + password: + title: "Password" + description: "Password to authenticate to IBM MQ server" + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + sslCipherSuite: + title: "CipherSuite" + description: "CipherSuite to use for enabling TLS" + type: string + dependencies: + - "camel:jms" + - "camel:kamelet" + template: + beans: + - name: wmqConnectionFactory + type: "#class:com.ibm.mq.jms.MQConnectionFactory" + properties: + XMSC_WMQ_HOST_NAME: '{{serverName}}' + XMSC_WMQ_PORT: '{{serverPort}}' + XMSC_WMQ_CHANNEL: '{{channel}}' + XMSC_WMQ_QUEUE_MANAGER: '{{queueManager}}' + XMSC_WMQ_CONNECTION_MODE: 1 + XMSC_USERID: '{{username}}' + XMSC_PASSWORD: '{{password}}' + XMSC_CLIENT_ID: '{{?clientId}}' + XMSC_WMQ_SSL_CIPHER_SUITE: '{{?sslCipherSuite}}' + from: + uri: "jms:{{destinationType}}:{{destinationName}}" + parameters: + connectionFactory: "#bean:{{wmqConnectionFactory}}" + steps: + - to: + uri: "kamelet:sink" diff --git a/library/camel-kamelets/src/main/resources/kamelets/jslt-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/jslt-action.kamelet.yaml new file mode 100644 index 000000000..5aba69f39 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/jslt-action.kamelet.yaml @@ -0,0 +1,55 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: jslt-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "JSLT Action" + description: |- + Apply a JSLT query or transformation on JSON. + required: + - template + type: object + properties: + template: + title: Template + description: The inline template for JSLT Transformation + type: string + example: "file://template.json" + pattern: "^(http|https|file|classpath)://.*" + dependencies: + - "camel:jslt" + - "camel:kamelet" + template: + from: + uri: "kamelet:source" + steps: + - to: + uri: "jslt:" + parameters: + resourceUri: "{{template}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/json-deserialize-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/json-deserialize-action.kamelet.yaml new file mode 100644 index 000000000..5cf2f89f2 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/json-deserialize-action.kamelet.yaml @@ -0,0 +1,49 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: json-deserialize-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "JSON" +spec: + definition: + title: "Json Deserialize Action" + description: "Deserialize payload to JSON" + type: object + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson" + template: + from: + uri: kamelet:source + steps: + - unmarshal: + json: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + - remove-header: + name: "Content-Type" diff --git a/library/camel-kamelets/src/main/resources/kamelets/json-serialize-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/json-serialize-action.kamelet.yaml new file mode 100644 index 000000000..1f9eb2de4 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/json-serialize-action.kamelet.yaml @@ -0,0 +1,50 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: json-serialize-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "JSON" +spec: + definition: + title: "Json Serialize Action" + description: "Serialize payload to JSON" + type: object + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson" + template: + from: + uri: kamelet:source + steps: + - marshal: + json: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + - set-header: + name: "Content-Type" + constant: "application/json" diff --git a/library/camel-kamelets/src/main/resources/kamelets/kafka-scram-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/kafka-scram-sink.kamelet.yaml new file mode 100644 index 000000000..d4908fd85 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/kafka-scram-sink.kamelet.yaml @@ -0,0 +1,120 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: kafka-scram-sink + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Kafka" + camel.apache.org/kamelet.namespace: "Kafka" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Kafka Scram Sink" + description: |- + Send data to Kafka topics through SCRAM login module. + + The Kamelet is able to understand the following headers to be set: + + - `key` / `ce-key`: as message key + + - `partition-key` / `ce-partitionkey`: as message partition key + + Both the headers are optional. + required: + - topic + - bootstrapServers + - user + - password + type: object + properties: + topic: + title: Topic Names + description: Comma separated list of Kafka topic names + type: string + bootstrapServers: + title: Bootstrap Servers + description: Comma separated list of Kafka Broker URLs + type: string + securityProtocol: + title: Security Protocol + description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported + type: string + default: SASL_SSL + saslMechanism: + title: SASL Mechanism + description: The Simple Authentication and Security Layer (SASL) Mechanism used. + type: string + default: SCRAM-SHA-512 + user: + title: Username + description: Username to authenticate to Kafka + type: string + x-descriptors: + - urn:camel:group:credentials + password: + title: Password + description: Password to authenticate to kafka + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + dependencies: + - "camel:core" + - "camel:kafka" + - "camel:kamelet" + template: + from: + uri: "kamelet:source" + steps: + - choice: + when: + - simple: "${header[key]}" + steps: + - set-header: + name: kafka.KEY + simple: "${header[key]}" + - simple: "${header[ce-key]}" + steps: + - set-header: + name: kafka.KEY + simple: "${header[ce-key]}" + - choice: + when: + - simple: "${header[partition-key]}" + steps: + - set-header: + name: kafka.PARTITION_KEY + simple: "${header[partition-key]}" + - simple: "${header[ce-partitionkey]}" + steps: + - set-header: + name: kafka.PARTITION_KEY + simple: "${header[ce-partitionkey]}" + - to: + uri: "kafka:{{topic}}" + parameters: + brokers: "{{bootstrapServers}}" + securityProtocol: "{{securityProtocol}}" + saslMechanism: "{{saslMechanism}}" + saslJaasConfig: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="{{user}}" password="{{password}}";' diff --git a/library/camel-kamelets/src/main/resources/kamelets/kafka-scram-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/kafka-scram-source.kamelet.yaml new file mode 100644 index 000000000..5f0a55a3d --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/kafka-scram-source.kamelet.yaml @@ -0,0 +1,154 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: kafka-scram-source + annotations: + camel.apache.org/kamelet.support.level: "Preview" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Kafka" + camel.apache.org/kamelet.namespace: "Kafka" + camel.apache.org/keda.type: "kafka" + camel.apache.org/keda.authentication.sasl: "scram-sha-512" + camel.apache.org/keda.authentication.tls: "enable" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Kafka Scram Source" + description: |- + Receive data from Kafka topics through SCRAM login module. + required: + - topic + - bootstrapServers + - user + - password + type: object + properties: + topic: + title: Topic Names + description: Comma separated list of Kafka topic names + type: string + x-descriptors: + - urn:keda:metadata:topic + - urn:keda:required + bootstrapServers: + title: Bootstrap Servers + description: Comma separated list of Kafka Broker URLs + type: string + x-descriptors: + - urn:keda:metadata:bootstrapServers + - urn:keda:required + securityProtocol: + title: Security Protocol + description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported + type: string + default: SASL_SSL + saslMechanism: + title: SASL Mechanism + description: The Simple Authentication and Security Layer (SASL) Mechanism used. + type: string + default: SCRAM-SHA-512 + user: + title: Username + description: Username to authenticate to Kafka + type: string + x-descriptors: + - urn:camel:group:credentials + - urn:keda:authentication:username + - urn:keda:required + password: + title: Password + description: Password to authenticate to kafka + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + - urn:keda:authentication:password + - urn:keda:required + autoCommitEnable: + title: Auto Commit Enable + description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + allowManualCommit: + title: Allow Manual Commit + description: Whether to allow doing manual commits + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + pollOnError: + title: Poll On Error Behavior + description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of DISCARD, ERROR_HANDLER, RECONNECT, RETRY, STOP + type: string + default: "ERROR_HANDLER" + autoOffsetReset: + title: Auto Offset Reset + description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none + type: string + default: "latest" + x-descriptors: + - urn:keda:metadata:offsetResetPolicy + consumerGroup: + title: Consumer Group + description: A string that uniquely identifies the group of consumers to which this source belongs + type: string + example: "my-group-id" + x-descriptors: + - urn:keda:metadata:consumerGroup + - urn:keda:required + deserializeHeaders: + title: Automatically Deserialize Headers + description: When enabled the Kamelet source will deserialize all message headers to String representation. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:core" + - "camel:kafka" + - "camel:kamelet" + template: + beans: + - name: kafkaHeaderDeserializer + type: "#class:org.apache.camel.kamelets.utils.serialization.kafka.KafkaHeaderDeserializer" + properties: + enabled: '{{deserializeHeaders}}' + from: + uri: "kafka:{{topic}}" + parameters: + brokers: "{{?bootstrapServers}}" + securityProtocol: "{{securityProtocol}}" + saslMechanism: "{{saslMechanism}}" + saslJaasConfig: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="{{user}}" password="{{password}}";' + autoCommitEnable: "{{autoCommitEnable}}" + allowManualCommit: "{{allowManualCommit}}" + pollOnError: "{{pollOnError}}" + autoOffsetReset: "{{autoOffsetReset}}" + groupId: "{{?consumerGroup}}" + steps: + - process: + ref: "{{kafkaHeaderDeserializer}}" + - to: "kamelet:sink" diff --git a/kafka-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/kafka-sink.kamelet.yaml similarity index 78% rename from kafka-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/kafka-sink.kamelet.yaml index af5200263..ac451d50e 100644 --- a/kafka-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/kafka-sink.kamelet.yaml @@ -1,19 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: kafka-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Kafka" + camel.apache.org/kamelet.namespace: "Kafka" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Kafka Sink" description: |- - Send data to Kafka topics. + Send data to Kafka topics through Plain Login Module. The Kamelet is able to understand the following headers to be set: @@ -34,7 +52,7 @@ spec: description: Comma separated list of Kafka topic names type: string bootstrapServers: - title: Brokers + title: Bootstrap Servers description: Comma separated list of Kafka Broker URLs type: string securityProtocol: @@ -51,6 +69,8 @@ spec: title: Username description: Username to authenticate to Kafka type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password description: Password to authenticate to kafka @@ -60,7 +80,7 @@ spec: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials dependencies: - - camel:core + - "camel:core" - "camel:kafka" - "camel:kamelet" template: @@ -97,4 +117,4 @@ spec: brokers: "{{bootstrapServers}}" securityProtocol: "{{securityProtocol}}" saslMechanism: "{{saslMechanism}}" - saslJaasConfig: "org.apache.kafka.common.security.plain.PlainLoginModule required username='{{user}}' password='{{password}}';" + saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="{{user}}" password="{{password}}";' diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/kafka-source.kamelet.yaml similarity index 70% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/kafka-source.kamelet.yaml index 491375660..af9f0068d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/kafka-source.kamelet.yaml @@ -1,19 +1,40 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: kafka-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Kafka" + camel.apache.org/kamelet.namespace: "Kafka" + camel.apache.org/keda.type: "kafka" + camel.apache.org/keda.authentication.sasl: "plaintext" + camel.apache.org/keda.authentication.tls: "enable" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "Kafka Source" description: |- - Receive data from Kafka topics. + Receive data from Kafka topics through Plain Login Module. required: - topic - bootstrapServers @@ -25,10 +46,16 @@ spec: title: Topic Names description: Comma separated list of Kafka topic names type: string + x-descriptors: + - urn:keda:metadata:topic + - urn:keda:required bootstrapServers: - title: Brokers + title: Bootstrap Servers description: Comma separated list of Kafka Broker URLs type: string + x-descriptors: + - urn:keda:metadata:bootstrapServers + - urn:keda:required securityProtocol: title: Security Protocol description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported @@ -43,6 +70,10 @@ spec: title: Username description: Username to authenticate to Kafka type: string + x-descriptors: + - urn:camel:group:credentials + - urn:keda:authentication:username + - urn:keda:required password: title: Password description: Password to authenticate to kafka @@ -51,6 +82,8 @@ spec: x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + - urn:keda:authentication:password + - urn:keda:required autoCommitEnable: title: Auto Commit Enable description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer @@ -75,43 +108,47 @@ spec: description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none type: string default: "latest" + x-descriptors: + - urn:keda:metadata:offsetResetPolicy consumerGroup: title: Consumer Group description: A string that uniquely identifies the group of consumers to which this source belongs type: string example: "my-group-id" + x-descriptors: + - urn:keda:metadata:consumerGroup + - urn:keda:required deserializeHeaders: title: Automatically Deserialize Headers description: When enabled the Kamelet source will deserialize all message headers to String representation. type: boolean - default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:core" - "camel:kafka" - "camel:kamelet" template: + beans: + - name: kafkaHeaderDeserializer + type: "#class:org.apache.camel.kamelets.utils.serialization.kafka.KafkaHeaderDeserializer" + properties: + enabled: '{{deserializeHeaders}}' from: uri: "kafka:{{topic}}" parameters: brokers: "{{?bootstrapServers}}" securityProtocol: "{{securityProtocol}}" saslMechanism: "{{saslMechanism}}" - saslJaasConfig: "org.apache.kafka.common.security.plain.PlainLoginModule required username='{{user}}' password='{{password}}';" + saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="{{user}}" password="{{password}}";' autoCommitEnable: "{{autoCommitEnable}}" allowManualCommit: "{{allowManualCommit}}" pollOnError: "{{pollOnError}}" autoOffsetReset: "{{autoOffsetReset}}" groupId: "{{?consumerGroup}}" steps: - - set-property: - name: deserializeHeaders - constant: "{{deserializeHeaders}}" - - choice: - when: - - simple: "${exchangeProperty.deserializeHeaders} == 'true'" - steps: - - bean: "org.apache.camel.kamelets.utils.serialization.kafka.KafkaHeaderDeserializer" - - to: "kamelet:sink" + - process: + ref: "{{kafkaHeaderDeserializer}}" + - to: "kamelet:sink" diff --git a/library/camel-kamelets/src/main/resources/kamelets/log-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/log-action.kamelet.yaml new file mode 100644 index 000000000..bbb963855 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/log-action.kamelet.yaml @@ -0,0 +1,149 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: log-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Logging" + camel.apache.org/kamelet.namespace: "Logging" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Log Action" + description: |- + Logs all data that flows between source and sink, useful for debugging purposes. + type: object + properties: + loggerName: + title: Logger Name + description: Name of the logging category to use + type: string + default: "log-action" + level: + title: Log Level + description: Logging level to use + type: string + default: "INFO" + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:select:TRACE' + - 'urn:alm:descriptor:com.tectonic.ui:select:DEBUG' + - 'urn:alm:descriptor:com.tectonic.ui:select:INFO' + - 'urn:alm:descriptor:com.tectonic.ui:select:WARN' + - 'urn:alm:descriptor:com.tectonic.ui:select:ERROR' + - 'urn:alm:descriptor:com.tectonic.ui:select:OFF' + logMask: + title: Log Mask + description: Mask sensitive information like password or passphrase in the log + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + marker: + title: Marker + description: An optional Marker name to use + type: string + multiline: + title: Multiline + description: If enabled then each information is outputted on a newline + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showAllProperties: + title: Show All Properties + description: Show all of the exchange properties (both internal and custom) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showBody: + title: Show Body + description: Show the message body + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showBodyType: + title: Show Body Type + description: Show the body Java type + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showExchangePattern: + title: Show Exchange Pattern + description: Shows the Message Exchange Pattern (or MEP for short) + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showHeaders: + title: Show Headers + description: Show the headers received + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showProperties: + title: Show Properties + description: Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showStreams: + title: Show Streams + description: Show the stream bodies (they may not be available in following steps) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showCachedStreams: + title: Show Cached Streams + description: Whether Camel should show cached stream bodies or not. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + dependencies: + - "camel:kamelet" + - "camel:log" + template: + from: + uri: "kamelet:source" + steps: + - to: + uri: "log:{{loggerName}}" + parameters: + level: "{{?level}}" + logMask: "{{?logMask}}" + marker: "{{?marker}}" + multiline: "{{?multiline}}" + showAllProperties: "{{?showAllProperties}}" + showBody: "{{?showBody}}" + showBodyType: "{{?showBodyType}}" + showExchangePattern: "{{?showExchangePattern}}" + showHeaders: "{{?showHeaders}}" + showProperties: "{{?showProperties}}" + showStreams: "{{?showStreams}}" + showCachedStreams: "{{?showCachedStreams}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/log-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/log-sink.kamelet.yaml new file mode 100644 index 000000000..7611fec9a --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/log-sink.kamelet.yaml @@ -0,0 +1,149 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: log-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Logging" + camel.apache.org/kamelet.namespace: "Logging" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Log Sink" + description: |- + A sink that logs all data that it receives, useful for debugging purposes. + type: object + properties: + loggerName: + title: Logger Name + description: Name of the logging category to use + type: string + default: "log-sink" + level: + title: Log Level + description: Logging level to use + type: string + default: "INFO" + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:select:TRACE' + - 'urn:alm:descriptor:com.tectonic.ui:select:DEBUG' + - 'urn:alm:descriptor:com.tectonic.ui:select:INFO' + - 'urn:alm:descriptor:com.tectonic.ui:select:WARN' + - 'urn:alm:descriptor:com.tectonic.ui:select:ERROR' + - 'urn:alm:descriptor:com.tectonic.ui:select:OFF' + logMask: + title: Log Mask + description: Mask sensitive information like password or passphrase in the log + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + marker: + title: Marker + description: An optional Marker name to use + type: string + multiline: + title: Multiline + description: If enabled then each information is outputted on a newline + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showAllProperties: + title: Show All Properties + description: Show all of the exchange properties (both internal and custom) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showBody: + title: Show Body + description: Show the message body + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showBodyType: + title: Show Body Type + description: Show the body Java type + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showExchangePattern: + title: Show Exchange Pattern + description: Shows the Message Exchange Pattern (or MEP for short) + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showHeaders: + title: Show Headers + description: Show the headers received + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showProperties: + title: Show Properties + description: Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showStreams: + title: Show Streams + description: Show the stream bodies (they may not be available in following steps) + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + showCachedStreams: + title: Show Cached Streams + description: Whether Camel should show cached stream bodies or not. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + dependencies: + - "camel:kamelet" + - "camel:log" + template: + from: + uri: "kamelet:source" + steps: + - to: + uri: "log:{{loggerName}}" + parameters: + level: "{{?level}}" + logMask: "{{?logMask}}" + marker: "{{?marker}}" + multiline: "{{?multiline}}" + showAllProperties: "{{?showAllProperties}}" + showBody: "{{?showBody}}" + showBodyType: "{{?showBodyType}}" + showExchangePattern: "{{?showExchangePattern}}" + showHeaders: "{{?showHeaders}}" + showProperties: "{{?showProperties}}" + showStreams: "{{?showStreams}}" + showCachedStreams: "{{?showCachedStreams}}" diff --git a/mariadb-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/mariadb-sink.kamelet.yaml similarity index 80% rename from mariadb-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/mariadb-sink.kamelet.yaml index f859c8eb1..f9aa64144 100644 --- a/mariadb-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/mariadb-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: mariadb-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-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: "Red Hat" camel.apache.org/kamelet.group: "SQL" + camel.apache.org/kamelet.namespace: "Database" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -15,11 +33,15 @@ spec: description: |- Send data to a MariaDB 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: + In your KameletBinding file, you must explicitly declare the MariaDB Server driver dependency in spec->integration->dependencies. + + - "mvn:org.mariadb.jdbc:mariadb-java-client:" + + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet needs to receive as input something like: + Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' required: @@ -32,21 +54,23 @@ spec: properties: serverName: title: Server Name - description: Server Name for the data source + description: The server name for the data source. type: string example: localhost serverPort: title: Server Port - description: Server Port for the data source + description: The server port for the data source. type: string default: 3306 username: title: Username - description: The username to use for accessing a secured MariaDB Database + description: The username to access a secured MariaDB Database. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured MariaDB Database + description: The password to access a secured MariaDB Database. type: string format: password x-descriptors: @@ -54,12 +78,12 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the MariaDB Database + 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 + description: The name of the MariaDB Database. type: string types: in: @@ -68,28 +92,23 @@ spec: - "camel:jackson" - "camel:kamelet" - "camel:sql" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" - - "mvn:org.mariadb.jdbc:mariadb-java-client" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" template: 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}}:{{serverPort}}/{{databaseName}}' - - key: driverClassName - value: 'org.mariadb.jdbc.Driver' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:mariadb://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'org.mariadb.jdbc.Driver' from: uri: "kamelet:source" steps: - unmarshal: - json: + json: library: Jackson - - to: + - to: uri: "sql:{{query}}" parameters: dataSource: "#bean:{{dsBean}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mask-field-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/mask-field-action.kamelet.yaml similarity index 81% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/mask-field-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/mask-field-action.kamelet.yaml index cdc9d1f23..ac48887f0 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mask-field-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/mask-field-action.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: mask-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Mask Fields Action" @@ -27,7 +45,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:jackson" - "camel:kamelet" - "camel:core" @@ -43,7 +61,7 @@ spec: name: deserialized constant: "true" - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -58,7 +76,7 @@ spec: - simple: "${exchangeProperty[deserialized]} == 'true'" steps: - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/message-timestamp-router-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml similarity index 83% rename from message-timestamp-router-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml index 2932a2ad4..d8a5083e0 100644 --- a/message-timestamp-router-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: message-timestamp-router-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Message Timestamp Router Action" @@ -32,12 +50,12 @@ spec: type: string timestampKeyFormat: title: Timestamp Keys Format - description: Format of the timestamp keys. Possible values are 'timestamp' or any format string for the timestamp that is compatible with java.text.SimpleDateFormat. In case of 'timestamp' the field will be evaluated as milliseconds since 1970, so as a UNIX Timestamp. + description: Format of the timestamp keys. Possible values are 'timestamp' or any format string for the timestamp that is compatible with java.text.SimpleDateFormat. In case of 'timestamp' the field will be evaluated as milliseconds since 1970, so as a UNIX Timestamp. type: string default: "timestamp" type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:jackson" - "camel:kamelet" - "camel:core" @@ -50,7 +68,7 @@ spec: - simple: "${header[Content-Type]} == 'application/json'" steps: - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -67,7 +85,7 @@ spec: constant: "{{timestampKeyFormat}}" - bean: "org.apache.camel.kamelets.utils.transform.MessageTimestampRouter" - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/mongodb-sink.kamelet.yaml similarity index 55% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/mongodb-sink.kamelet.yaml index fc99e5d8a..0050405d9 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/mongodb-sink.kamelet.yaml @@ -1,25 +1,41 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: mongodb-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "MongoDB" + camel.apache.org/kamelet.namespace: "Nosql" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "MongoDB Sink" description: |- - Send documents to MongoDB. + Send data to MongoDB. - This Kamelet expects a JSON as body. + This Kamelet expects a JSON-formatted body. - Properties you can set as headers: - - - `db-upsert` / `ce-dbupsert`: if the database should create the element if it does not exist. Boolean value. + In the header, you can set the `db-upsert` / `ce-dbupsert` property, a boolean value that specifies whether the database should create an element if it does not exist. required: - hosts - collection @@ -28,35 +44,52 @@ spec: properties: hosts: title: MongoDB Hosts - description: Comma separated list of MongoDB Host Addresses in host:port format. + description: A comma-separated list of MongoDB host addresses in `host:port` format. type: string collection: title: MongoDB Collection - description: Sets the name of the MongoDB collection to bind to this endpoint. + description: The name of the MongoDB collection to bind to this endpoint. type: string password: title: MongoDB Password - description: User password for accessing MongoDB. + description: A user password for accessing MongoDB. type: string format: password x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials username: title: MongoDB Username - description: Username for accessing MongoDB. + description: A username for accessing MongoDB. type: string + x-descriptors: + - urn:camel:group:credentials + ssl: + title: Enable Ssl for Mongodb Connection + description: whether to enable ssl connection to mongodb + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + sslValidationEnabled: + title: Enables Ssl Certificates Validation and Host name checks. + description: IMPORTANT this should be disabled only in test environment since can pose security issues. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' database: title: MongoDB Database - description: Sets the name of the MongoDB database to target. + description: The name of the MongoDB database. type: string writeConcern: title: Write Concern - description: Configure the level of acknowledgment requested from MongoDB for write operations, possible values are ACKNOWLEDGED, W1, W2, W3, UNACKNOWLEDGED, JOURNALED, MAJORITY. + description: The level of acknowledgment requested from MongoDB for write operations. type: string + enum: ["ACKNOWLEDGED", "W1", "W2", "W3", "UNACKNOWLEDGED", "JOURNALED", "MAJORITY"] createCollection: title: Collection - description: Create collection during initialisation if it doesn't exist. + description: Create a collection during initialization if it doesn't exist. type: boolean default: false x-descriptors: @@ -65,14 +98,23 @@ spec: in: mediaType: application/json dependencies: - - camel:core + - "camel:core" - "camel:kamelet" - "camel:mongodb" - "camel:jackson" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" template: beans: - name: local-mongodb type: "#class:org.apache.camel.component.mongodb.MongoDbComponent" + - name: mongo-client + type: "#class:org.apache.camel.kamelets.utils.mongodb.SslAwareMongoClient" + properties: + password: "{{?password}}" + username: "{{?username}}" + hosts: "{{hosts}}" + ssl: "{{ssl}}" + sslValidationEnabled: "{{sslValidationEnabled}}" from: uri: kamelet:source steps: @@ -93,9 +135,7 @@ spec: parameters: createCollection: "{{?createCollection}}" writeConcern: "{{?writeConcern}}" - hosts: "{{hosts}}" collection: "{{collection}}" - password: "{{?password}}" - username: "{{?username}}" database: "{{database}}" operation: "insert" + mongoConnection: "#{{mongo-client}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/mongodb-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/mongodb-source.kamelet.yaml new file mode 100644 index 000000000..c6e117ceb --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/mongodb-source.kamelet.yaml @@ -0,0 +1,126 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: mongodb-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "MongoDB" + camel.apache.org/kamelet.namespace: "Nosql" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "MongoDB Source" + description: |- + Consume data from MongoDB. + + If you enable the `persistentTailTracking` property, the consumer keeps track of the last consumed message and, on the next restart, the consumption restarts from that message. If you enable `persistentTailTracking`, you must provide a value for the `tailTrackIncreasingField` property (by default it is optional). + + If you disable the `persistentTailTracking` property, the consumer consumes the whole collection and waits in idle for new data to consume. + + The collection that provides the data must be a capped collection. + required: + - hosts + - collection + - database + type: object + properties: + hosts: + title: MongoDB Hosts + description: A comma-separated list of MongoDB host addresses in `host:port` format. + type: string + collection: + title: MongoDB Collection + description: The name of the MongoDB collection to bind to this endpoint. + type: string + password: + title: MongoDB Password + description: The user password for accessing MongoDB. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + username: + title: MongoDB Username + description: The username for accessing MongoDB. The username must be present in the MongoDB's authentication database (`authenticationDatabase`). By default, the MongoDB `authenticationDatabase` is 'admin'. + type: string + x-descriptors: + - urn:camel:group:credentials + ssl: + title: Enable Ssl for Mongodb Connection + description: whether to enable ssl connection to mongodb + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + sslValidationEnabled: + title: Enables Ssl Certificates Validation and Host name checks. + description: IMPORTANT this should be disabled only in test environment since can pose security issues. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + database: + title: MongoDB Database + description: The name of the MongoDB database. + type: string + persistentTailTracking: + title: MongoDB Persistent Tail Tracking + description: Specifies to enable persistent tail tracking, which is a mechanism to keep track of the last consumed data across system restarts. The next time the system is up, the endpoint recovers the cursor from the point where it last stopped consuimg data. This option will only work on capped collections. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + tailTrackIncreasingField: + title: MongoDB Tail Track Increasing Field + description: The correlation field in the incoming data which is of increasing nature and is used to position the tailing cursor every time it is generated. + type: string + dependencies: + - "camel:kamelet" + - "camel:mongodb" + - "camel:jackson" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + template: + beans: + - name: local-mongodb + type: "#class:org.apache.camel.component.mongodb.MongoDbComponent" + - name: mongo-client + type: "#class:org.apache.camel.kamelets.utils.mongodb.SslAwareMongoClient" + properties: + password: "{{?password}}" + username: "{{?username}}" + hosts: "{{hosts}}" + ssl: "{{ssl}}" + sslValidationEnabled: "{{sslValidationEnabled}}" + from: + uri: "{{local-mongodb}}:test" + parameters: + collection: "{{collection}}" + database: "{{database}}" + persistentTailTracking: "{{persistentTailTracking}}" + tailTrackIncreasingField: "{{?tailTrackIncreasingField}}" + mongoConnection: "#{{mongo-client}}" + steps: + - marshal: + json: {} + - to: kamelet:sink diff --git a/library/camel-kamelets/src/main/resources/kamelets/mysql-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/mysql-sink.kamelet.yaml new file mode 100644 index 000000000..6a4b6b76a --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/mysql-sink.kamelet.yaml @@ -0,0 +1,114 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: mysql-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmVyc2lvbj0iMS4wIj4KIDxyZWN0IGZpbGw9IiMyNjU1N2MiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgeD0iLTMwIiB5PSItMzAiIHJ4PSIxLjQiIHJ5PSIxLjQiIHRyYW5zZm9ybT0ibWF0cml4KDAsLTEsLTEsMCwwLDApIi8+CiA8cGF0aCBvcGFjaXR5PSIuMiIgZD0ibTguMDI1NCA4LjAwMDFjLTAuNzgyNS0wLjAxNjYtMS4xNDk0IDAuNTI0NC0wLjk4ODMgMS40NTcgMC4wNTIgMC4zMDA2IDAuMzE1MiAwLjcyOTkgMC44ODI4IDEuNDQxOSAwLjYzMTIyIDAuNzkwOSAwLjg4NTE0IDEuMjIyNyAxLjE2MDIgMS45NzA3IDAuNDMzNiAxLjE3OTMgMC42MzQwMyAxLjU3NDggMC45ODYzMyAxLjk0MzQgMC4yNzM2NiAwLjI4NjMgMC4yNzM2OSAwLjI4NzEyIDAuMDg5ODQgMC44NzEwOS0wLjI4NTA3IDAuOTA1NTYtMC4zNDQwNyAyLjcyMDctMC4xMTUyMyAzLjU3NDIgMC4zNDI0OCAxLjI3NzQgMC43NjQwMiAxLjg1NzQgMS4zNTE2IDEuODU3NCAwLjQxOTY4IDAgMC43NjM2NC0wLjM1MDkyIDAuODg2NzItMC45MDQzIDAuMDQyNjgtMC4xOTE4NiAwLjEyMjQ5LTAuNDY2MDcgMC4xNzc3My0wLjYwOTM4IDAuMDk1MzUtMC4yNDcyOCAwLjEyMDkzLTAuMjI4MTggMC40OTQxNCAwLjM4MDg2IDAuMjE2MjggMC4zNTI5NiAwLjYyODY2IDAuODc4NjEgMC45MTYwMiAxLjE2OCAwLjY2MzggMC42Njg0NSAxLjU3NDkgMS40MjE3IDEuNjQwNiAxLjM1NzQgMC4wMjc3NS0wLjAyNzEzLTAuMjM4LTAuNDIxNzctMC41ODk4NC0wLjg3ODkxcy0xLjAxNTEtMS41MTg5LTEuNDc0Ni0yLjM1OTRjLTAuNTM1OTMtMC45ODAyOS0wLjg5OTctMS41Mjg2LTEuMDEzNy0xLjUyOTMtMC4zNzA0NS0wLjAwMjUtMC43MTU4OCAwLjU4MDA0LTAuOTE2MDIgMS41NDY5LTAuMjMwNTYgMS4xMTM4LTAuNjM2NzUgMC45MjcwOC0wLjk2NjgtMC40NDUzMS0wLjE5MDE5LTAuNzkwODUtMC4wOTEwNi0xLjg1NiAwLjI2MzY3LTIuODUzNSAwLjE2MTM3LTAuNDUzNzYgMC4yOTI5Ny0wLjg3MzczIDAuMjkyOTctMC45MzE2NHMtMC4yNTczMS0wLjU0MzQ4LTAuNTcyMjctMS4wODAxYy0wLjMxNS0wLjUzNy0wLjY4NTEtMS4yOTctMC44MjItMS42OS0wLjMzMjYtMC45NTQtMC40OTA1LTEuMjMyLTEuMTU4Mi0yLjA0My0wLjY4NzktMC44MzQ2LTAuNzUzLTEuMjIwMy0wLjIwNTEtMS4yMTY2IDAuNDI1NTQgMC4wMDI4MSAxLjExMjMgMC4yODk0NCAxLjgwMjcgMC43NTM5MSAwLjQzNzEgMC4yOTQwNCAwLjU4NTIzIDAuMzMzOTggMS4yODcxIDAuMzMzOTggMC44ODE0MiAwIDEuMDcwOSAwLjA3MjIgMi4yOTMgMC44NzY5NSAxLjI0NDUgMC44MTk1OCAyLjE3MjIgMS41ODEzIDIuODE0NSAyLjMxMjUgMC41NzA0IDAuNjQ5MzcgMC44ODIwMSAxLjIxMzggMi41NjA1IDQuNjU2MiAwLjY0NDMzIDEuMzIxNCAxLjIxNTggMS45NTkzIDIuMDAzOSAyLjIzMjQgMS4yMTczIDAuNDIxODUgMS42MzE3IDAuNjEzMTQgMi4xNjggMC45OTgwNWwwLjU2NjQxIDAuNDA2MjUtMC4zODA4NiAwLjA3NDIyYy0wLjIxMDMgMC4wNDAzMy0wLjY2ODQ3IDAuMTA2MTYtMS4wMTc2IDAuMTQ2NDgtMC43Mjc0MSAwLjA4NC0xLjIwMzEgMC4zODU3My0xLjIwMzEgMC43NjM2NyAwIDAuNDI1OTIgMS40NTEzIDEuNjQ1MyAyLjkwNjIgMi40NDE0IDAuNjk5MDMgMC4zODI0NyAxLjM3MTYgMC43NTkyNyAxLjQ5NDEgMC44Mzc4OSAwLjMyNTk4IDAuMjA5MjIgMC40MTQyNCAwLjE4Mzg5IDAuMzMwMDgtMC4wOTE4LTAuMTc2MjQtMC41NzczOC0wLjc3Mjc5LTEuMTM5OC0yLjQyOTctMi4yOTQ5LTAuOTcxOTctMC42Nzc2LTAuOTgxOTktMC42NTI0NCAwLjMxNjQxLTAuNzgxMjUgMC45MjUtMC4wOTEgMS4zOTItMC4yNDkgMS4zOTItMC40NzIgMC0wLjEwMi0wLjQ3LTAuNjQ0LTEuMDQ1LTEuMjAzLTAuOS0wLjg3Ni0xLjIwNC0xLjA5NC0yLjE5NS0xLjU3Ny0xLjM1LTAuNjU2LTEuODQyLTEuMTc3LTIuMTUzLTIuMjgzLTAuNDY0LTEuNjQ5LTEuNzEyLTMuNTg3LTMuMzcxLTUuMjMtMS43MTItMS42OTYtMy4zNDctMi42MzQ0LTQuODQ1LTIuNzgxNC0wLjYwOS0wLjA1OTgtMC45MjQtMC4xNTIyLTEuMjM5LTAuMzY1My0wLjUzMzItMC4zNjExLTEuNzcxNy0wLjc2ODQtMi4zNzY2LTAuNzgxMnptMi45NjI5IDMuMDAyYy0wLjEyMjY2LTAuMDA3OS0wLjIyOTQ1IDAuMDA4NS0wLjMwMjczIDAuMDU4NTktMC4yNzM0MSAwLjE4Njk5LTAuMjQwOTkgMC40MTUwNCAwLjA4MDA4IDAuNTU2NjQgMC4xNTA5MiAwLjA2NjU2IDAuMzY1MDEgMC4zMDE0NyAwLjQ3NjU2IDAuNTIxNDggMC4zNzUxIDAuNzM5NzggMC45NDk4NSAwLjI0NDUgMC42OTMzNi0wLjU5NzY2LTAuMDgwODUtMC4yNjU0Ni0wLjU3OTMtMC41MTU0Ny0wLjk0NzI3LTAuNTM5MDZ6Ii8+CiA8cGF0aCBmaWxsPSIjZmZmIiBkPSJtOC4wMjU0IDdjLTAuNzgyNS0wLjAxNjYtMS4xNDk0IDAuNTI0NC0wLjk4ODMgMS40NTcgMC4wNTIgMC4zMDA2IDAuMzE1MiAwLjczMDIgMC44ODI4IDEuNDQxNCAwLjYzMTIgMC43OTA2IDAuODg1MiAxLjIyMjYgMS4xNjAyIDEuOTcwNiAwLjQzMzYgMS4xNzkgMC42MzQgMS41NzUgMC45ODU5IDEuOTQzIDAuMjc0IDAuMjg3IDAuMjc0IDAuMjg4IDAuMDkgMC44NzItMC4yODQ4IDAuOTA1LTAuMzQzOCAyLjcyLTAuMTE1IDMuNTc0IDAuMzQyIDEuMjc3IDAuNzY0IDEuODU3IDEuMzUyIDEuODU3IDAuNDE5IDAgMC43NjMtMC4zNTEgMC44ODYtMC45MDQgMC4wNDMtMC4xOTIgMC4xMjMtMC40NjYgMC4xNzgtMC42MDkgMC4wOTUtMC4yNDggMC4xMjEtMC4yMjkgMC40OTQgMC4zOCAwLjIxNiAwLjM1MyAwLjYyOSAwLjg3OSAwLjkxNiAxLjE2OCAwLjY2NCAwLjY2OSAxLjU3NSAxLjQyMiAxLjY0MSAxLjM1OCAwLjAyOC0wLjAyNy0wLjIzOC0wLjQyMi0wLjU5LTAuODc5cy0xLjAxNS0xLjUxOS0xLjQ3NS0yLjM1OWMtMC41MzYtMC45ODEtMC44OTktMS41MjktMS4wMTMtMS41My0wLjM3MS0wLjAwMi0wLjcxNiAwLjU4LTAuOTE2IDEuNTQ3LTAuMjMxIDEuMTE0LTAuNjM3IDAuOTI3LTAuOTY3LTAuNDQ1LTAuMTktMC43OTEtMC4wOTEtMS44NTYgMC4yNjQtMi44NTQgMC4xNjEtMC40NTMgMC4yOTMtMC44NzMgMC4yOTMtMC45MzFzLTAuMjU4LTAuNTQ0LTAuNTczLTEuMDhjLTAuMzE1LTAuNTM3LTAuNjg1MS0xLjI5Ny0wLjgyMi0xLjY5LTAuMzMyNi0wLjk1NC0wLjQ5MDUtMS4yMzItMS4xNTgyLTIuMDQyOS0wLjY4NzktMC44MzQ4LTAuNzUzLTEuMjIwNC0wLjIwNTEtMS4yMTY4IDAuNDI1NSAwLjAwMjkgMS4xMTIzIDAuMjg5NSAxLjgwMjMgMC43NTM5IDAuNDM4IDAuMjk0MSAwLjU4NiAwLjMzNCAxLjI4OCAwLjMzNCAwLjg4MSAwIDEuMDcgMC4wNzIyIDIuMjkzIDAuODc3IDEuMjQ0IDAuODE5OCAyLjE3MiAxLjU4MTggMi44MTQgMi4zMTI4IDAuNTcgMC42NDkgMC44ODIgMS4yMTQgMi41NjEgNC42NTYgMC42NDQgMS4zMjEgMS4yMTUgMS45NTkgMi4wMDMgMi4yMzIgMS4yMTggMC40MjIgMS42MzIgMC42MTMgMi4xNjggMC45OThsMC41NjcgMC40MDctMC4zODEgMC4wNzRjLTAuMjEgMC4wNC0wLjY2OSAwLjEwNi0xLjAxOCAwLjE0Ni0wLjcyNyAwLjA4NC0xLjIwMyAwLjM4Ni0xLjIwMyAwLjc2NCAwIDAuNDI2IDEuNDUxIDEuNjQ1IDIuOTA2IDIuNDQxIDAuNyAwLjM4MyAxLjM3MiAwLjc2IDEuNDk1IDAuODM4IDAuMzI2IDAuMjEgMC40MTQgMC4xODQgMC4zMy0wLjA5MS0wLjE3Ny0wLjU3OC0wLjc3My0xLjE0LTIuNDMtMi4yOTUtMC45NzItMC42NzgtMC45ODItMC42NTMgMC4zMTYtMC43ODIgMC45MjYtMC4wOTIgMS4zOTMtMC4yNSAxLjM5My0wLjQ3MiAwLTAuMTAyLTAuNDctMC42NDQtMS4wNDUtMS4yMDMtMC45LTAuODc3LTEuMjA0LTEuMDk0LTIuMTk1LTEuNTc3LTEuMzUtMC42NTYtMS44NDItMS4xNzctMi4xNTMtMi4yODMtMC40NjQtMS42NS0xLjcxMi0zLjU4Ny0zLjM3MS01LjIzLTEuNzEyLTEuNjk2NS0zLjM0Ny0yLjYzNDUtNC44NDUtMi43ODE1LTAuNjA5LTAuMDU5OC0wLjkyNC0wLjE1MjItMS4yMzktMC4zNjUzLTAuNTMzMi0wLjM2MTEtMS43NzE3LTAuNzY4NC0yLjM3NjYtMC43ODEyem0yLjk2MjYgMy4wMDJjLTAuMTIyLTAuMDA3OS0wLjIyOSAwLjAwOC0wLjMwMiAwLjA1OS0wLjI3NCAwLjE4Ny0wLjI0MSAwLjQxNSAwLjA4IDAuNTU2IDAuMTUxIDAuMDY3IDAuMzY1IDAuMzAyIDAuNDc2IDAuNTIyIDAuMzc1IDAuNzM5IDAuOTUgMC4yNDQgMC42OTQtMC41OTgtMC4wODEtMC4yNjUtMC41OC0wLjUxNS0wLjk0OC0wLjUzOXoiLz4KIDxwYXRoIGZpbGw9IiNmZmYiIG9wYWNpdHk9Ii4xIiBkPSJtMy40MDA0IDJjLTAuNzc1NiAwLTEuNDAwNCAwLjYyNDgtMS40MDA0IDEuNDAwNHYxYzAtMC43NzU2IDAuNjI0OC0xLjQwMDQgMS40MDA0LTEuNDAwNGgyNS4yYzAuNzc1IDAgMS40IDAuNjI0OCAxLjQgMS40MDA0di0xYzAtMC43NzU2LTAuNjI1LTEuNDAwNC0xLjQtMS40MDA0aC0yNS4yeiIvPgogPHBhdGggb3BhY2l0eT0iLjIiIGQ9Im0yIDI4LjZ2MWMwIDAuNzc1IDAuNjI0OCAxLjQgMS40MDA0IDEuNGgyNS4yYzAuNzc1IDAgMS40LTAuNjI1IDEuNC0xLjR2LTFjMCAwLjc3NS0wLjYyNSAxLjQtMS40IDEuNGgtMjUuMmMtMC43NzUyIDAtMS40LTAuNjI1LTEuNC0xLjR6Ii8+Cjwvc3ZnPgo=" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "SQL" + camel.apache.org/kamelet.namespace: "Database" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "MySQL Sink" + description: |- + Send data to a MySQL Database. + + In your KameletBinding file, you must explicitly declare the SQL Server driver dependency in spec->integration->dependencies. + + - "mvn:mysql:mysql-connector-java:" + + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: + + 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' + + Here is example input for the example query: + + '{ "username":"oscerd", "city":"Rome"}' + required: + - serverName + - username + - password + - query + - databaseName + type: object + properties: + serverName: + title: Server Name + description: The server name for the data source. + type: string + example: localhost + serverPort: + title: Server Port + description: The server port for the data source. + type: string + default: 3306 + username: + title: Username + description: The username to access a secured MySQL Database. + type: string + x-descriptors: + - urn:camel:group:credentials + password: + title: Password + description: The password to access a secured MySQL Database. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + query: + 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 name of the MySQL Database. + type: string + types: + in: + mediaType: application/json + dependencies: + - "camel:jackson" + - "camel:kamelet" + - "camel:sql" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" + template: + beans: + - name: dsBean + type: "#class:org.apache.commons.dbcp2.BasicDataSource" + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:mysql://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'com.mysql.cj.jdbc.Driver' + from: + uri: "kamelet:source" + steps: + - unmarshal: + json: + library: Jackson + - to: + uri: "sql:{{query}}" + parameters: + dataSource: "#bean:{{dsBean}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/postgresql-sink.kamelet.yaml similarity index 82% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/postgresql-sink.kamelet.yaml index 932d56590..de4f2b57c 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/postgresql-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: postgresql-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+UG9zdGdyZVNRTCBpY29uPC90aXRsZT48cGF0aCBkPSJNMTcuMTI4IDBhMTAuMTM0IDEwLjEzNCAwIDAgMC0yLjc1NS40MDNsLS4wNjMuMDJBMTAuOTIyIDEwLjkyMiAwIDAgMCAxMi42LjI1OEMxMS40MjIuMjM4IDEwLjQxLjUyNCA5LjU5NCAxIDguNzkuNzIxIDcuMTIyLjI0IDUuMzY0LjMzNiA0LjE0LjQwMyAyLjgwNC43NzUgMS44MTQgMS44Mi44MjcgMi44NjUuMzA1IDQuNDgyLjQxNSA2LjY4MmMuMDMuNjA3LjIwMyAxLjU5Ny40OSAyLjg3OXMuNjkgMi43ODMgMS4xOTMgNC4xNTJjLjUwMyAxLjM3IDEuMDU0IDIuNiAxLjkxNSAzLjQzNi40My40MTkgMS4wMjIuNzcxIDEuNzIuNzQyLjQ5LS4wMi45MzMtLjIzNSAxLjMxNS0uNTUyLjE4Ni4yNDUuMzg1LjM1Mi41NjYuNDUxLjIyOC4xMjUuNDUuMjEuNjguMjY2LjQxMy4xMDMgMS4xMi4yNDEgMS45NDguMS4yODItLjA0Ny41NzktLjEzOS44NzUtLjI3LjAxMS4zMy4wMjQuNjUzLjAzNy45OC4wNDEgMS4wMzYuMDY3IDEuOTkzLjM3OCAyLjgzMi4wNS4xMzcuMTg3Ljg0My43MjcgMS40NjYuNTQuNjI0IDEuNTk4IDEuMDEzIDIuODAzLjc1NS44NS0uMTgyIDEuOTMxLS41MSAyLjY0OS0xLjUzMi43MS0xLjAxIDEuMDMtMi40NTkgMS4wOTMtNC44MDkuMDE2LS4xMjcuMDM1LS4yMzUuMDU1LS4zMzZsLjE2OS4wMTVoLjAyYy45MDcuMDQxIDEuODkxLS4wODggMi43MTMtLjQ3LjcyOC0uMzM3IDEuMjc5LS42NzggMS42OC0xLjI4My4xLS4xNS4yMS0uMzMxLjI0LS42NDNzLS4xNDktLjgtLjQ0Ni0xLjAyNWMtLjU5NS0uNDUyLS45NjktLjI4LTEuMzctLjE5N2E2LjI3IDYuMjcgMCAwIDEtMS4yMDIuMTQ2YzEuMTU2LTEuOTQ3IDEuOTg1LTQuMDE1IDIuNDU4LTUuODQ1LjI4LTEuMDguNDM3LTIuMDc2LjQ1LTIuOTQ3LjAxMy0uODcxLS4wNTgtMS42NDItLjU4LTIuMzA5QzIxLjM2LjYgMTkuMDY3LjAyNCAxNy4yOTMuMDA0Yy0uMDU1LS4wMDEtLjExLS4wMDItLjE2NS0uMDAxem0tLjA0Ny42NGMxLjY3OC0uMDE2IDMuODIyLjQ1NSA1LjM2MSAyLjQyMi4zNDYuNDQyLjQ0OSAxLjA4OC40MzcgMS44ODQtLjAxMy43OTUtLjE2IDEuNzQ3LS40MjkgMi43OS0uNTIyIDIuMDItMS41MDggNC4zNzUtMi44OTcgNi40ODhhLjc1Ni43NTYgMCAwIDAgLjE1OC4wODZjLjI5LjEyLjk1MS4yMjMgMi4yNy0uMDQ4LjMzMi0uMDcuNTc1LS4xMTcuODI3LjA3NWEuNTIuNTIgMCAwIDEgLjE4My40MjUuNzA0LjcwNCAwIDAgMS0uMTMuMzM2Yy0uMjU1LjM4My0uNzU4Ljc0Ni0xLjQwMyAxLjA0NS0uNTcxLjI2Ni0xLjM5LjQwNS0yLjExNi40MTMtLjM2NC4wMDQtLjctLjAyNC0uOTg1LS4xMTNsLS4wMTgtLjAwN2MtLjExIDEuMDYtLjM2MyAzLjE1My0uNTI4IDQuMTA4LS4xMzIuNzctLjM2MyAxLjM4Mi0uODA0IDEuODQtLjQ0LjQ1OC0xLjA2My43MzQtMS45MDEuOTE0LTEuMDM4LjIyMy0xLjc5NS0uMDE3LTIuMjgzLS40MjgtLjQ4Ny0uNDEtLjcxLS45NTQtLjg0NC0xLjI4Ny0uMDkyLS4yMy0uMTQtLjUyOC0uMTg2LS45MjYtLjA0Ni0uMzk4LS4wOC0uODg1LS4xMDMtMS40MzRhNTEuNDI2IDUxLjQyNiAwIDAgMS0uMDMtMi41MjMgMy4wNjEgMy4wNjEgMCAwIDEtMS41NTIuNzZjLS42ODkuMTE3LTEuMzA0LjAwMi0xLjY3MS0uMDlhMi4yNzYgMi4yNzYgMCAwIDEtLjUyLS4yMDFjLS4xNy0uMDkxLS4zMzItLjE5NC0uNDQtLjM5N2EuNTYuNTYgMCAwIDEtLjA1Ny0uMzgxLjYxLjYxIDAgMCAxIC4yMTgtLjMzMWMuMTk4LS4xNjEuNDYtLjI1MS44NTUtLjMzMy43MTktLjE0OC45Ny0uMjQ5IDEuMTIzLS4zNy4xMy0uMTA0LjI3Ny0uMzE0LjUzNy0uNjIyYTEuMTYgMS4xNiAwIDAgMS0uMDAzLS4wNDEgMi45NiAyLjk2IDAgMCAxLTEuMzMtLjM1OGMtLjE1LjE1OC0uOTE2Ljk2OC0xLjg1IDIuMDkyLS4zOTMuNDctLjgyNy43NC0xLjI4NS43NTktLjQ1OC4wMi0uODcyLS4yMTEtMS4yMjQtLjU1Mi0uNzAzLS42ODMtMS4yNjQtMS44NTgtMS43NTMtMy4xODYtLjQ4OC0xLjMyOC0uODg1LTIuODA3LTEuMTY3LTQuMDY3LS4yODMtMS4yNi0uNDUtMi4yNzYtLjQ3NC0yLjc2Ni0uMTA1LTIuMDgyLjM4Mi0zLjQ4NSAxLjIxNy00LjM3LjgzNi0uODg1IDEuOTgyLTEuMjIgMy4wOTktMS4yODQgMi4wMDUtLjExNSAzLjkwOS41ODQgNC4yOTQuNzM0Ljc0Mi0uNTA0IDEuNjk4LS44MTggMi44OTItLjc5OGE3LjM5IDcuMzkgMCAwIDEgMS42ODEuMjE4bC4wMi0uMDA5YTYuODU0IDYuODU0IDAgMCAxIC43MzktLjIxNEE5LjYyNiA5LjYyNiAwIDAgMSAxNy4wOC42NDJ6bS4xNTIuNjdoLS4xNDZhOC43NCA4Ljc0IDAgMCAwLTEuNzA0LjE5MmMxLjI0Ni41NTIgMi4xODcgMS40MDIgMi44NSAyLjI1YTguNDQgOC40NCAwIDAgMSAxLjEzMiAxLjkyYy4xMS4yNjQuMTg0LjQ4Ny4yMjYuNjYuMDIxLjA4Ny4wMzUuMTYuMDQuMjM2LjAwMi4wMzguMDA0LjA3Ny0uMDEyLjE0NCAwIC4wMDMtLjAwNS4wMS0uMDA2LjAxMy4wMy44NzYtLjE4NyAxLjQ3LS4yMTMgMi4zMDYtLjAyLjYwNi4xMzUgMS4zMTguMTczIDIuMDk1LjAzNi43My0uMDUyIDEuNTMyLS41MjYgMi4zMTkuMDQuMDQ4LjA3Ni4wOTYuMTE0LjE0NCAxLjI1NC0xLjk3NSAyLjE1OC00LjE2IDIuNjQtNi4wMjMuMjU4LTEuMDAzLjM5NS0xLjkxMi40MDctMi42MzIuMDEtLjcyLS4xMjQtMS4yNDItLjI5NS0xLjQ2LTEuMzQyLTEuNzE2LTMuMTU4LTIuMTUzLTQuNjgtMi4xNjV6bS00Ljc5LjI1NmMtMS4xODIuMDAzLTIuMDMuMzYtMi42NzMuODk1LS42NjMuNTUzLTEuMTA4IDEuMzEtMS40IDIuMDg1LS4zNDcuOTItLjQ2NiAxLjgxLS41MTMgMi40MTRsLjAxMy0uMDA4Yy4zNTctLjIuODI2LS40IDEuMzI4LS41MTYuNTAyLS4xMTUgMS4wNDMtLjE1MSAxLjUzMy4wMzlzLjg5NS42MzcgMS4wNDIgMS4zMTVjLjcwNCAzLjI1Ny0uMjE5IDQuNDY4LS41NTkgNS4zODJhOS42MSA5LjYxIDAgMCAwLS4zMzEgMS4wMTNjLjA0My0uMDEuMDg2LS4wMjIuMTI5LS4wMjYuMjQtLjAyLjQyOC4wNi41NC4xMDguMzQyLjE0Mi41NzcuNDQuNzA0Ljc4LjAzMy4wODkuMDU3LjE4NS4wNzEuMjg0YS4zMzYuMzM2IDAgMCAxIC4wMi4xMjcgNTUuMTQgNTUuMTQgMCAwIDAgLjAxMyAzLjczOGMuMDIzLjUzOC4wNTcgMS4wMTIuMSAxLjM4Ni4wNDMuMzczLjEwNC42NTcuMTQzLjc1My4xMjguMzIuMzE1LjczOS42NTMgMS4wMjQuMzM4LjI4NC44MjMuNDc0IDEuNzA5LjI4NC43NjgtLjE2NSAxLjI0Mi0uMzk0IDEuNTU5LS43MjMuMzE2LS4zMjkuNTA1LS43ODcuNjI2LTEuNDg4LjE4MS0xLjA1LjU0NS00LjA5NS41ODktNC42NjgtLjAyLS40MzIuMDQ0LS43NjQuMTgyLTEuMDE3LjE0Mi0uMjYuMzYyLS40MTkuNTUyLS41MDUuMDk1LS4wNDMuMTg0LS4wNzIuMjU3LS4wOTNhNS45NTYgNS45NTYgMCAwIDAtLjI0My0uMzI1IDQuNDU2IDQuNDU2IDAgMCAxLS42NjYtMS4wOTkgOC4yOTYgOC4yOTYgMCAwIDAtLjI1Ny0uNDgzYy0uMTMzLS4yNC0uMzAxLS41NC0uNDc3LS44NzctLjM1Mi0uNjc1LS43MzUtMS40OTMtLjkzNC0yLjI5LS4xOTgtLjc5Ni0uMjI3LTEuNjIuMjgxLTIuMjAxLjQ1LS41MTYgMS4yNC0uNzMgMi40MjYtLjYxLS4wMzUtLjEwNS0uMDU2LS4xOTItLjExNS0uMzMyYTcuODE3IDcuODE3IDAgMCAwLTEuMDQxLTEuNzY0Yy0xLjAwNS0xLjI4NS0yLjYzMi0yLjU1OS01LjE0Ni0yLjZoLS4xMTV6bS02LjY0Mi4wNTJjLS4xMjcgMC0uMjU0LjAwNC0uMzguMDExLTEuMDEuMDU4LTEuOTY1LjM1MS0yLjY0OCAxLjA3NS0uNjg0LjcyNC0xLjEzNCAxLjkxMS0xLjAzNiAzLjg3Ni4wMTkuMzcyLjE4MSAxLjQxNC40NTkgMi42NTIuMjc3IDEuMjM4LjY3IDIuNjk1IDEuMTQyIDMuOTgyLjQ3MyAxLjI4NyAxLjA0NiAyLjQwNyAxLjU5IDIuOTM3LjI3NC4yNjUuNTEyLjM3Mi43MjguMzYzLjIxNy0uMDEuNDc4LS4xMzUuNzk3LS41MThhNDMuMjQ0IDQzLjI0NCAwIDAgMSAxLjgxLTIuMDQ4IDMuNDk3IDMuNDk3IDAgMCAxLTEuMTY3LTMuMTVjLjEwMy0uNzM5LjExNy0xLjQzLjEwNS0xLjk3Ni0uMDEyLS41MzItLjA1LS44ODYtLjA1LTEuMTA3YS4zMzYuMzM2IDAgMCAxIDAtLjAxOXYtLjAwNWwtLjAwMS0uMDA2di0uMDAxYTkuODkzIDkuODkzIDAgMCAxIC41OTItMy4zNzZjLjI4LS43NDQuNjk3LTEuNSAxLjMyMi0yLjExMi0uNjE0LS4yMDItMS43MDQtLjUxLTIuODg0LS41NjhhNy42MDMgNy42MDMgMCAwIDAtLjM4LS4wMXpNMTguMTk5IDYuOWMtLjY3OS4wMDktMS4wNi4xODQtMS4yNi40MTMtLjI4My4zMjUtLjMxLjg5NS0uMTM0IDEuNTk3LjE3NS43MDMuNTM3IDEuNDg5Ljg3NyAyLjE0Mi4xNy4zMjcuMzM1LjYyMS40NjguODYuMTM0LjI0LjIzMi40MS4yOTIuNTU1LjA1NS4xMzQuMTE2LjI1Mi4xNzguMzYyLjI2My0uNTU1LjMxLTEuMS4yODMtMS42NjgtLjAzNS0uNzAzLS4xOTgtMS40MjItLjE3NC0yLjE1LjAyNy0uODUxLjE5NS0xLjQwNS4yMS0yLjA2M2E1Ljc5MyA1Ljc5MyAwIDAgMC0uNzQtLjA0OHptLTguMjM0LjExNWEyLjgyIDIuODIgMCAwIDAtLjYxNi4wNzQgNC42NjUgNC42NjUgMCAwIDAtMS4xNTMuNDQ5IDIuNDE3IDIuNDE3IDAgMCAwLS4zNDkuMjI4bC0uMDIyLjAyYy4wMDYuMTQ2LjAzNS41LjA0NyAxLjAyMS4wMTIuNTctLjAwMiAxLjI5Ny0uMTEyIDIuMDg0LS4yMzkgMS43MSAxLjAwMiAzLjEyNiAyLjQ2IDMuMTI4LjA4NS0uMzUxLjIyNS0uNzA3LjM2NS0xLjA4Mi40MDYtMS4wOTQgMS4yMDUtMS44OTIuNTMyLTUuMDA2LS4xMS0uNTEtLjMyOC0uNzE2LS42MjgtLjgzMmExLjQ3NCAxLjQ3NCAwIDAgMC0uNTI0LS4wODR6bTcuOTE3LjIwNGguMDVjLjA2Ni4wMDIuMTI3LjAwOS4xOC4wMjIuMDU0LjAxMi4xLjAzLjEzOC4wNTVhLjE2NC4xNjQgMCAwIDEgLjA3NS4xMWwtLjAwMS4wMDhoLjAwMS0uMDAxYS4yNC4yNCAwIDAgMS0uMDM1LjEzNS42NjguNjY4IDAgMCAxLS4xMS4xNS42NzcuNjc3IDAgMCAxLS4zODYuMjEyLjU5LjU5IDAgMCAxLS40MS0uMTAzLjYwOC42MDggMCAwIDEtLjEzLS4xMTguMjYuMjYgMCAwIDEtLjA2My0uMTI3LjE3LjE3IDAgMCAxIC4wNDItLjEyOC4zODQuMzg0IDAgMCAxIC4xMTctLjA5Yy4wOTYtLjA1NC4yMjYtLjA5NC4zNzMtLjExNi4wNTUtLjAwOC4xMDktLjAxMi4xNi0uMDEzem0tNy44Mi4xNjhjLjA1MyAwIC4xMDkuMDA1LjE2Ni4wMTMuMTUzLjAyMS4yODkuMDYyLjM5My4xMjJhLjQ0Ni40NDYgMCAwIDEgLjEzMy4xMDYuMjIzLjIyMyAwIDAgMSAuMDU0LjE3LjMwMi4zMDIgMCAwIDEtLjA3NS4xNTQuNjQ5LjY0OSAwIDAgMS0uMTQzLjEzLjY0LjY0IDAgMCAxLS40NDguMTEzLjcyOC43MjggMCAwIDEtLjQyLS4yMjguNzEuNzEgMCAwIDEtLjExOC0uMTY0LjI4LjI4IDAgMCAxLS4wNDEtLjE3N2MuMDE1LS4xMDguMTA0LS4xNjQuMTkxLS4xOTVhLjg2Ni44NjYgMCAwIDEgLjMwNy0uMDR6bTkuMDYgNy4zNDNsLS4wMDMuMDAxYy0uMTQ3LjA1My0uMjY4LjA3NS0uMzcuMTJhLjQ1Mi40NTIgMCAwIDAtLjIzOS4yMTRjLS4wNjMuMTE1LS4xMTcuMzE5LS4xMDEuNjY2YS41MS41MSAwIDAgMCAuMTQ4LjA3Yy4xNzEuMDUyLjQ1OC4wODYuNzc4LjA4MS42MzgtLjAwNyAxLjQyMy0uMTU2IDEuODQtLjM1YTMuOTUgMy45NSAwIDAgMCAuOTQzLS42MTVoLS4wMDFjLTEuMzkzLjI4OC0yLjE4LjIxMS0yLjY2My4wMTJhMS4zMTUgMS4zMTUgMCAwIDEtLjMzMi0uMnptLTguMDMxLjA5NGgtLjAyMWMtLjA1My4wMDUtLjEzLjAyMy0uMjc5LjE4OC0uMzQ4LjM5LS40Ny42MzUtLjc1Ny44NjQtLjI4Ny4yMjgtLjY2LjM1LTEuNDA1LjUwMy0uMjM2LjA0OC0uMzcxLjEwMS0uNDYxLjE0NC4wMjkuMDI0LjAyNi4wMy4wNy4wNTMuMTA5LjA2LjI0OS4xMTMuMzYyLjE0Mi4zMi4wOC44NDYuMTczIDEuMzk1LjA4LjU0OS0uMDk0IDEuMTItLjM1NyAxLjYwNy0xLjA0LjA4NC0uMTE4LjA5My0uMjkyLjAyNC0uNDc5LS4wNy0uMTg3LS4yMjMtLjM0OC0uMzMxLS4zOTNhLjY1My42NTMgMCAwIDAtLjIwNC0uMDZ6Ii8+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "SQL" + camel.apache.org/kamelet.namespace: "Database" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -15,11 +33,11 @@ spec: 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: + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet needs to receive as input something like: + Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' required: @@ -32,21 +50,23 @@ spec: properties: serverName: title: Server Name - description: Server Name for the data source + description: The server name for the data source. type: string example: localhost serverPort: title: Server Port - description: Server Port for the data source + description: The server port for the data source. type: string default: 5432 username: title: Username - description: The username to use for accessing a secured PostgreSQL Database + description: The username to access a secured PostgreSQL Database. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured PostgreSQL Database + description: The password to access a secured PostgreSQL Database. type: string format: password x-descriptors: @@ -54,12 +74,12 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the PostgreSQL Database + 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 + description: The name of the PostgreSQL Database. type: string types: in: @@ -68,21 +88,17 @@ spec: - "camel:jackson" - "camel:kamelet" - "camel:sql" - - "mvn:org.postgresql:postgresql:42.5.1" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" + - "mvn:org.postgresql:postgresql:42.6.0" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" template: 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}}:{{serverPort}}/{{databaseName}}' - - key: driverClassName - value: 'org.postgresql.Driver' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:postgresql://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'org.postgresql.Driver' from: uri: "kamelet:source" steps: diff --git a/library/camel-kamelets/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml new file mode 100644 index 000000000..b4fd4c9bb --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml @@ -0,0 +1,54 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: predicate-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" +spec: + definition: + title: "Predicate Filter Action" + description: "Filter based on a JsonPath Expression. 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." + 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/' + type: object + dependencies: + - "camel:core" + - "camel:kamelet" + - "camel:jsonpath" + template: + from: + uri: kamelet:source + steps: + - filter: + jsonpath: "$[?(!({{expression}}))]" + steps: + - stop: {} diff --git a/library/camel-kamelets/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml new file mode 100644 index 000000000..accf0432f --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml @@ -0,0 +1,62 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: protobuf-deserialize-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Protobuf Deserialize Action" + description: "Deserialize payload to Protobuf" + type: object + 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: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-protobuf" + template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.converter.protobuf.ProtobufSchemaResolver" + property: + - key: schema + value: '{{schema:}}' + from: + uri: kamelet:source + steps: + - unmarshal: + protobuf: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#bean:{{schemaResolver}}" + - remove-header: + name: "Content-Type" diff --git a/library/camel-kamelets/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml new file mode 100644 index 000000000..91f6819c4 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml @@ -0,0 +1,63 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: protobuf-serialize-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Protobuf Serialize Action" + description: "Serialize payload to Protobuf" + type: object + 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: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-protobuf" + template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.converter.protobuf.ProtobufSchemaResolver" + property: + - key: schema + value: '{{schema:}}' + from: + uri: kamelet:source + steps: + - marshal: + protobuf: + library: Jackson + unmarshalType: com.fasterxml.jackson.databind.JsonNode + schemaResolver: "#bean:{{schemaResolver}}" + - set-header: + name: "Content-Type" + constant: "application/protobuf" diff --git a/library/camel-kamelets/src/main/resources/kamelets/regex-router-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/regex-router-action.kamelet.yaml new file mode 100644 index 000000000..8a65953bc --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/regex-router-action.kamelet.yaml @@ -0,0 +1,61 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: regex-router-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" +spec: + definition: + title: "Regex Router Action" + description: "Update the destination using the configured regular expression and replacement string" + required: + - regex + - replacement + properties: + regex: + title: Regex + description: Regular Expression for destination + type: string + replacement: + title: Replacement + description: Replacement when matching + type: string + type: object + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + template: + from: + uri: kamelet:source + steps: + - set-property: + name: "regex" + constant: "{{regex}}" + - set-property: + name: "replacement" + constant: "{{replacement}}" + - bean: "org.apache.camel.kamelets.utils.transform.RegexRouter" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/replace-field-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/replace-field-action.kamelet.yaml similarity index 72% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/replace-field-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/replace-field-action.kamelet.yaml index 15ed7d54a..ddaaad2f3 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/replace-field-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/replace-field-action.kamelet.yaml @@ -1,18 +1,47 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: replace-field-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" spec: definition: title: "Replace Field Action" - description: "Replace field with a different key in the message in transit" + description: |- + Replace field with a different key in the message in transit. + + The required parameter 'renames' is a comma-separated list of colon-delimited renaming pairs like for example 'foo:bar,abc:xyz' and it represents the field rename mappings. + + The optional parameter 'enabled' represents the fields to include. If specified, only the named fields will be included in the resulting message. + + The optional parameter 'disabled' represents the fields to exclude. If specified, the listed fields will be excluded from the resulting message. This takes precedence over the 'enabled' parameter. + + The default value of 'enabled' parameter is 'all', so all the fields of the payload will be included. + + The default value of 'disabled' parameter is 'none', so no fields of the payload will be excluded. required: - renames properties: @@ -32,8 +61,11 @@ spec: type: string example: "foo:bar,c1:c2" type: object + types: + in: + mediaType: application/json dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:core" - "camel:jackson" - "camel:kamelet" @@ -49,7 +81,7 @@ spec: name: deserialized constant: "true" - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -67,7 +99,7 @@ spec: - simple: "${exchangeProperty[deserialized]} == 'true'" steps: - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/library/camel-kamelets/src/main/resources/kamelets/resolve-pojo-schema-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/resolve-pojo-schema-action.kamelet.yaml new file mode 100644 index 000000000..f5b67ea34 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/resolve-pojo-schema-action.kamelet.yaml @@ -0,0 +1,76 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- + +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: resolve-pojo-schema-action + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Transformation" + labels: + camel.apache.org/kamelet.type: "action" +spec: + definition: + title: "Resolve Schema Action" + description: "Resolves schema from given mime type and payload. Sets the resolved schema, the schema type and its content class as properties for later reference." + type: object + properties: + mimeType: + title: Mime Type + description: The mime type to determine the schema resolver implementation that should perform the operation. + type: string + default: "application/json" + example: "application/json" + schema: + title: Schema + description: Optional schema content (as single-line, using JSON format). + type: string + contentClass: + title: Content Class + description: Type information of the content object. Fully qualified class name. + type: string + example: "org.apache.camel.content.Foo" + targetMimeType: + title: Target Mime Type + description: Additional mime type information used to determine the schema resolver. Usually only used in combination with mime type "application/x-java-object" + type: string + example: "application/json" + dependencies: + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" + - "camel:kamelet" + - "camel:core" + - "camel:jackson-avro" + - "camel:jackson-protobuf" + template: + beans: + - name: schemaResolver + type: "#class:org.apache.camel.kamelets.utils.format.schema.DelegatingSchemaResolver" + properties: + mimeType: '{{mimeType}}' + schema: '{{schema:}}' + contentClass: '{{contentClass:}}' + targetMimeType: '{{targetMimeType:}}' + from: + uri: "kamelet:source" + steps: + - process: + ref: "{{schemaResolver}}" diff --git a/library/camel-kamelets/src/main/resources/kamelets/salesforce-composite-upsert-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/salesforce-composite-upsert-sink.kamelet.yaml new file mode 100644 index 000000000..f34c616d9 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/salesforce-composite-upsert-sink.kamelet.yaml @@ -0,0 +1,123 @@ +#--------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: salesforce-composite-upsert-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" + labels: + camel.apache.org/kamelet.type: "sink" +spec: + definition: + title: "Salesforce composite upsert Sink" + description: |- + Upsert Composite List of sObjects in Salesforce. + + The body received must contain List of JSON SObjects to insert/update inside the records attribute, for example: + + `{"records" : ["attributes" : {"type" : "KameletSinkSObject__c"},"ExtId__c" : "1","Name__c": "Ziauddin", "City__c": "Bhopal"], ["attributes" : {"type" : "KameletSinkSObject__c"},"ExtId__c" : "2","Name__c": "Shaikh", "City__c": "Bhopal"] }` + + required: + - sObjectName + - sObjectIdName + - clientId + - clientSecret + - userName + - password + type: object + properties: + sObjectName: + title: Object Name + description: The type of the Salesforce object. Required if using a key-value pair. + type: string + example: Contact + sObjectIdName: + title: Object Id Name + description: The Field Name of the External ID of the Salesforce object. Required if using a key-value pair. + type: string + loginUrl: + title: Login URL + description: The Salesforce instance login URL. + type: string + default: https://login.salesforce.com + clientId: + title: Consumer Key + description: The Salesforce application consumer key. + type: string + x-descriptors: + - urn:camel:group:credentials + clientSecret: + title: Consumer Secret + description: The Salesforce application consumer secret. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + userName: + title: Username + description: The Salesforce username. + type: string + x-descriptors: + - urn:camel:group:credentials + password: + title: Password + description: The Salesforce user password. + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + types: + in: + mediaType: application/json + dependencies: + - "camel:core" + - "camel:jsonpath" + - "camel:jackson" + - "camel:salesforce" + - "camel:kamelet" + template: + beans: + - name: salesforce + type: "#class:org.apache.camel.component.salesforce.SalesforceComponent" + properties: + sObjectName: "{{sObjectName}}" + sObjectIdName: "{{sObjectIdName}}" + clientId: "{{clientId}}" + clientSecret: "{{clientSecret}}" + userName: "{{userName}}" + password: "{{password}}" + loginUrl: "{{loginUrl}}" + from: + uri: kamelet:source + steps: + - transform: + jsonpath: "$['records']" + - to: + uri: "{{salesforce}}:compositeUpsertSObjectCollections" + parameters: + sObjectName: "{{sObjectName}}" + sObjectIdName: "{{sObjectIdName}}" + rawPayload: "true" + allOrNone: "false" diff --git a/salesforce-create-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml similarity index 88% rename from salesforce-create-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml index 6718d804d..0e7dc2478 100644 --- a/salesforce-create-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml @@ -1,22 +1,39 @@ -apiVersion: camel.apache.org/v1alpha1 +#--------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: salesforce-create-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Salesforce Create Sink" description: |- - Creates an object in Salesforce. The body of the message must contain - the JSON of the salesforce object. - - Example body: { "Phone": "555", "Name": "Antonia", "LastName": "Garcia" } + Create an object in Salesforce. + + The body of the message must contain the JSON of the Salesforce object, for example: `{ "Phone": "555", "Name": "Antonia", "LastName": "Garcia" }`. required: - clientId - clientSecret @@ -26,23 +43,23 @@ spec: properties: sObjectName: title: Object Name - description: Type of the object + description: The type of the object. type: string example: Contact loginUrl: title: Login URL - description: The Salesforce instance login URL + description: The Salesforce instance login URL. type: string default: https://login.salesforce.com clientId: title: Consumer Key - description: The Salesforce application consumer key + description: The Salesforce application consumer key. type: string x-descriptors: - urn:camel:group:credentials clientSecret: title: Consumer Secret - description: The Salesforce application consumer secret + description: The Salesforce application consumer secret. type: string format: password x-descriptors: @@ -50,13 +67,13 @@ spec: - urn:camel:group:credentials userName: title: Username - description: The Salesforce username + description: The Salesforce username. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The Salesforce user password + description: The Salesforce user password. type: string format: password x-descriptors: @@ -85,3 +102,4 @@ spec: uri: "{{local-salesforce}}:createSObject" parameters: sObjectName: "{{sObjectName}}" + rawPayload: "true" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml similarity index 88% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml index 2db4148e4..8f0a54ac9 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml @@ -1,22 +1,40 @@ -apiVersion: camel.apache.org/v1alpha1 +#--------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: salesforce-delete-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Salesforce Delete Sink" description: |- - Removes an object from Salesforce. The body received must be a json - containing two keys: sObjectId and sObjectName. - - Example body: { "sObjectId": "XXXXX0", "sObjectName": "Contact" } + Remove an object from Salesforce. + + The data body must be JSON-formatted and it must + contain two keys: `sObjectId` and `sObjectName`. For example: `{ "sObjectId": "XXXXX0", "sObjectName": "Contact" }` required: - clientId - clientSecret @@ -26,18 +44,18 @@ spec: properties: loginUrl: title: Login URL - description: The Salesforce instance login URL + description: The Salesforce instance login URL. type: string default: https://login.salesforce.com clientId: title: Consumer Key - description: The Salesforce application consumer key + description: The Salesforce application consumer key. type: string x-descriptors: - urn:camel:group:credentials clientSecret: title: Consumer Secret - description: The Salesforce application consumer secret + description: The Salesforce application consumer secret. type: string format: password x-descriptors: @@ -45,13 +63,13 @@ spec: - urn:camel:group:credentials userName: title: Username - description: The Salesforce username + description: The Salesforce username. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The Salesforce user password + description: The Salesforce user password. type: string format: password x-descriptors: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/salesforce-source.kamelet.yaml similarity index 84% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/salesforce-source.kamelet.yaml index a7cb38adf..b2ed0f2bc 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/salesforce-source.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: salesforce-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" labels: - camel.apache.org/kamelet.type: "source" + camel.apache.org/kamelet.type: "source" spec: definition: title: "Salesforce Source" @@ -25,33 +43,34 @@ spec: properties: query: title: Query - description: The query to execute on Salesforce + description: The query to execute on Salesforce. type: string example: SELECT Id, Name, Email, Phone FROM Contact topicName: title: Topic Name - description: The name of the topic/channel to use + description: The name of the topic or channel. type: string example: ContactTopic loginUrl: title: Login URL - description: The Salesforce instance login URL + description: The Salesforce instance login URL. type: string default: https://login.salesforce.com notifyForFields: title: Notify For Fields - description: Notify for fields, options are ALL, REFERENCED, SELECT, WHERE. + description: Notify for fields. type: string default: ALL + enum: [ "ALL", "REFERENCED", "SELECT", "WHERE"] clientId: title: Consumer Key - description: The Salesforce application consumer key + description: The Salesforce application consumer key. type: string x-descriptors: - urn:camel:group:credentials clientSecret: title: Consumer Secret - description: The Salesforce application consumer secret + description: The Salesforce application consumer secret. type: string format: password x-descriptors: @@ -59,13 +78,13 @@ spec: - urn:camel:group:credentials userName: title: Username - description: The Salesforce username + description: The Salesforce username. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The Salesforce user password + description: The Salesforce user password. type: string format: password x-descriptors: @@ -99,6 +118,11 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false + operation: + title: Operation + description: The operation to use + type: string + default: subscribe types: out: mediaType: application/json @@ -106,27 +130,28 @@ spec: - "camel:jackson" - "camel:salesforce" - "camel:kamelet" - template: - beans: - - name: local-salesforce - properties: - clientId: '{{clientId}}' - clientSecret: '{{clientSecret}}' - loginUrl: '{{loginUrl}}' - password: '{{password}}' - userName: '{{userName}}' - type: '#class:org.apache.camel.component.salesforce.SalesforceComponent' - from: - parameters: - notifyForFields: '{{notifyForFields}}' + template: + beans: + - name: local-salesforce + type: "#class:org.apache.camel.component.salesforce.SalesforceComponent" + properties: + clientId: "{{clientId}}" + clientSecret: "{{clientSecret}}" + userName: "{{userName}}" + password: "{{password}}" + loginUrl: "{{loginUrl}}" + from: + uri: "{{local-salesforce}}:{{topicName}}" + parameters: + notifyForFields: "{{notifyForFields}}" + updateTopic: "true" notifyForOperationCreate: "{{notifyForOperationCreate}}" notifyForOperationUpdate: "{{notifyForOperationUpdate}}" notifyForOperationDelete: "{{notifyForOperationDelete}}" notifyForOperationUndelete: "{{notifyForOperationUndelete}}" - sObjectQuery: '{{query}}' - updateTopic: "true" - steps: - - marshal: - json: {} - - to: kamelet:sink - uri: '{{local-salesforce}}:{{topicName}}' + sObjectQuery: "{{query}}" + operationName: "{{operation}}" + steps: + - marshal: + json: {} + - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml similarity index 83% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml index 7ceae4adc..448414375 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml @@ -1,55 +1,67 @@ -apiVersion: camel.apache.org/v1alpha1 +#--------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: salesforce-update-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZpZXdCb3g9IjAgMCA0OCA0OCIgdmVyc2lvbj0iMS4xIj48ZyBpZD0ic3VyZmFjZTEiPjxwYXRoIGQ9Ik0zNi41IDEyYy0xLjMyNCAwLTIuNTkuMjU4LTMuNzU4LjcwM0E3Ljk5NCA3Ljk5NCAwIDAgMCAyNiA5Yy0yLjEwNSAwLTQuMDIuODItNS40NDUgMi4xNTJBOS40NjggOS40NjggMCAwIDAgMTMuNSA4QzguMjU0IDggNCAxMi4yNTQgNCAxNy41YzAgLjc5My4xMSAxLjU1OS4yOSAyLjI5M0E4LjQ3MiA4LjQ3MiAwIDAgMCAxIDI2LjVDMSAzMS4xOTUgNC44MDUgMzUgOS41IDM1Yy40MTQgMCAuODE2LS4wNCAxLjIxNS0uMDk4IDEuMzEyIDMgNC4zIDUuMDk4IDcuNzg1IDUuMDk4IDMuMTYgMCA1LjkxNC0xLjczIDcuMzc5LTQuMjkzQTcuOTIzIDcuOTIzIDAgMCAwIDI4IDM2YzIuNjIxIDAgNC45MzgtMS4yNjYgNi4zOTgtMy4yMS42OC4xMzYgMS4zODMuMjEgMi4xMDIuMjFDNDIuMyAzMyA0NyAyOC4zIDQ3IDIyLjVTNDIuMyAxMiAzNi41IDEyeiIgZmlsbD0iIzAzOUJFNSIvPjxwYXRoIGQ9Ik0xNS44MjQgMjVjLjA0MyAwIC4wNzQtLjAzNS4wNzQtLjA4MiAwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjEuNTA0IDIzLjkzNHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNy4xMzcgMjMuOTNhLjExNi4xMTYgMCAwIDEgLjAwNCAwaC0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yNC4xMjUgMjEuOTFjLS4wMTYuMDQtLjA0Ny4wNDMtLjA3LjA0M2guMDA4Yy4wMjMgMCAuMDUtLjAwOC4wNjItLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODI0IDE5Yy4wNDMgMCAuMDc0LjAzNS4wNzQuMDgyIDAtLjA0Ny0uMDMtLjA4Mi0uMDc0LS4wODJ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTIxLjM2IDIyLjE4NGMwIC40MS4yMS42NjQuNTAzLjgzNi0uMjkzLS4xNzItLjUwNC0uNDI2LS41MDQtLjgzNnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzguMTI1IDI0LjczYy4wMjcuMDYtLjAzMS4wODYtLjAzMS4wODZzLjA1OC0uMDI3LjAzMS0uMDg2eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik04LjU1OSAyMXoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNOS43NjYgMjEuOTFjLS4wMi4wNC0uMDQ3LjA0My0uMDc1LjA0M0g5LjdjLjAyOCAwIC4wNTEtLjAwOC4wNjctLjA0M3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzUuMTk1IDI0LjE2NHoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuODI4IDIxLjc5N2gtLjAyM3MuMDA4LjAwNC4wMjMuMDA0di0uMDA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zNy44MzIgMjQuMTg4cy4wMTYgMCAuMDM1LS4wMDRoLS4wMDRjLS4wMTUgMC0uMDMxLjAwMy0uMDMxLjAwM3oiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNNi44ODcgMjQuNDZjLS4wMzIuMDcxLjAwOC4wODcuMDIuMDk5LjA4NS4wNTguMTcxLjA5Ny4yNjEuMTQ0LjQ2OS4yMy45MS4yOTcgMS4zNzUuMjk3Ljk0NSAwIDEuNTMxLS40NiAxLjUzMS0xLjIwN3YtLjAxNmMwLS42ODctLjY2NC0uOTM3LTEuMjg1LTEuMTE3bC0uMDc4LS4wMjNjLS40NjktLjE0LS44NzEtLjI2Mi0uODcxLS41NDd2LS4wMTZjMC0uMjQyLjIzNC0uNDIyLjYwMS0uNDIyLjQwNyAwIC44ODcuMTI1IDEuMi4yODUgMCAwIC4wOS4wNTUuMTI1LS4wMjcuMDE1LS4wNDMuMTc1LS40MzMuMTkxLS40NzYuMDItLjA0My0uMDE2LS4wNzktLjA0Ny0uMDk4QTIuODQ1IDIuODQ1IDAgMCAwIDguNTYgMjFoLS4wOTRjLS44NjMgMC0xLjQ2OS40OC0xLjQ2OSAxLjE3MnYuMDEyYzAgLjcyNi42NjQuOTY0IDEuMjkgMS4xMjhsLjEuMDI4Yy40NTQuMTI5Ljg0NC4yMzguODQ0LjUzMXYuMDE2YzAgLjI3LS4yNTMuNDcyLS42NjQuNDcyLS4xNiAwLS42NjgtLjAwNC0xLjIxNC0uMzI0YTIuNDUgMi40NSAwIDAgMS0uMTU3LS4wOWMtLjAyNy0uMDE1LS4wOTMtLjA0My0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMS4yNDYgMjQuNDZjLS4wMjcuMDcxLjAxMi4wODcuMDIuMDk5LjA5LjA1OC4xNzUuMDk3LjI2MS4xNDQuNDcuMjMuOTE0LjI5NyAxLjM4LjI5Ny45NCAwIDEuNTI3LS40NiAxLjUyNy0xLjIwN3YtLjAxNmMwLS42ODctLjY2LS45MzctMS4yODItMS4xMTdsLS4wODItLjAyM2MtLjQ2NS0uMTQtLjg3LS4yNjItLjg3LS41NDd2LS4wMTZjMC0uMjQyLjIzOC0uNDIyLjYwNS0uNDIyLjQwNiAwIC44ODYuMTI1IDEuMTk5LjI4NSAwIDAgLjA5LjA1NS4xMjUtLjAyNy4wMTYtLjA0My4xNzItLjQzMy4xOTEtLjQ3Ni4wMTYtLjA0My0uMDE1LS4wNzktLjA0Ny0uMDk4QTIuODU3IDIuODU3IDAgMCAwIDIyLjkyMiAyMWgtLjA5OGMtLjg2MyAwLTEuNDY1LjQ4LTEuNDY1IDEuMTcydi4wMTJjMCAuNzI2LjY2NC45NjQgMS4yOSAxLjEyOGwuMDk3LjAyOGMuNDU3LjEyOS44NDguMjM4Ljg0OC41MzF2LjAxNmMwIC4yNy0uMjU0LjQ3Mi0uNjY0LjQ3Mi0uMTYgMC0uNjY4LS4wMDQtMS4yMTUtLjMyNGEyLjQ1IDIuNDUgMCAwIDEtLjE1Ni0uMDljLS4wMi0uMDA4LS4wOTgtLjAzOS0uMTI1LjA0eiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0zMS40NjUgMjIuMjE5YTEuNzE0IDEuNzE0IDAgMCAwLS4zNi0uNjMzIDEuNzQgMS43NCAwIDAgMC0uNjAxLS40MyAyLjE4NyAyLjE4NyAwIDAgMC0uODQ4LS4xNTZjLS4zMTYgMC0uNjAxLjA1NS0uODQzLjE1NmExLjY3IDEuNjcgMCAwIDAtLjYwMi40M2MtLjE2NC4xNzYtLjI4MS4zOS0uMzYuNjMzYTIuNTQ0IDIuNTQ0IDAgMCAwLS4xMTcuNzg1YzAgLjI3Ny4wNC41NDMuMTE4Ljc4NWExLjY5MSAxLjY5MSAwIDAgMCAuOTYgMS4wNTljLjI0My4wOTcuNTI4LjE1Mi44NDQuMTUyLjMyIDAgLjYwNi0uMDUuODQ4LS4xNTIuMjM4LS4xMDIuNDQxLS4yNDYuNjAxLS40MjIuMTYtLjE4LjI4Mi0uMzk1LjM2LS42MzcuMDc4LS4yNDIuMTE3LS41MDQuMTE3LS43ODVzLS4wMzktLjU0My0uMTE3LS43ODVtLS43OS43ODVjMCAuNDIyLS4wODEuNzU4LS4yNS45OTItLjE2Ny4yMzQtLjQxNy4zNDgtLjc2OS4zNDgtLjM0NyAwLS41OTctLjExNC0uNzYxLS4zNDgtLjE2OC0uMjM0LS4yNS0uNTctLjI1LS45OTIgMC0uNDIyLjA4NS0uNzU4LjI1LS45ODguMTY0LS4yMzUuNDE0LS4zNDQuNzYxLS4zNDQuMzUyIDAgLjYwMi4xMS43Ny4zNDQuMTY4LjIzLjI1LjU2Ni4yNS45ODgiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzcuOTM0IDI0LjIzNGMtLjAyOC0uMDc0LS4xMDItLjA0Ny0uMTAyLS4wNDdhMS43NDMgMS43NDMgMCAwIDEtLjM2Ny4wOTggMi44OCAyLjg4IDAgMCAxLS40My4wMzFjLS4zODMgMC0uNjgzLS4xMDUtLjkwMi0uMzEyLS4yMTUtLjIxMS0uMzM2LS41NDctLjMzNi0xIDAtLjQxNC4xMS0uNzI3LjMtLjk2NS4xOTItLjIzNC40ODUtLjM1NS44NzYtLjM1NS4zMjQgMCAuNTc0LjAzNS44MzIuMTA5IDAgMCAuMDYyLjAyNy4wOS0uMDUuMDctLjE3Ny4xMi0uMzAyLjE5NS0uNDk3LjAyLS4wNTgtLjAzMS0uMDgyLS4wNS0uMDg2YTMuMjQgMy4yNCAwIDAgMC0uNTI0LS4xMjUgNC40MzUgNC40MzUgMCAwIDAtLjU5LS4wMzVjLS4zMzIgMC0uNjI1LjA1NS0uODguMTU2YTEuODQyIDEuODQyIDAgMCAwLS42MzYuNDI2Yy0uMTY4LjE4LS4yOTcuMzk1LS4zODMuNjM3YTIuMzE1IDIuMzE1IDAgMCAwLS4xMjkuNzg1YzAgLjYwNS4xNzYgMS4wOTQuNTI4IDEuNDUzLjM0Ny4zNi44Ny41NDMgMS41NTQuNTQzLjQwMyAwIC44MTctLjA3NCAxLjExNC0uMTg0IDAgMCAuMDU4LS4wMjcuMDM1LS4wODZ6IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTQxLjk2NSAyMi4wODJhMS41MiAxLjUyIDAgMCAwLS4zNDQtLjU3OCAxLjUxNiAxLjUxNiAwIDAgMC0uNTA0LS4zNiAyLjEwNSAyLjEwNSAwIDAgMC0uNzY1LS4xNDRjLS4zMzIgMC0uNjMzLjA1LS44OC4xNi0uMjQ1LjEwNi0uNDUyLjI1LS42MTMuNDM0LS4xNjQuMTgtLjI4NS4zOTgtLjM2My42NGEyLjYwNSAyLjYwNSAwIDAgMC0uMTE3Ljc5YzAgLjI4NS4wNDMuNTUuMTIxLjc5Mi4wODIuMjM5LjIxLjQ1NC4zODcuNjMuMTc1LjE3NS40MDIuMzEyLjY3Mi40MS4yNjUuMDk3LjU5My4xNDguOTY4LjE0NC43NyAwIDEuMTc2LS4xNiAxLjM0LS4yNDYuMDMxLS4wMTYuMDU5LS4wNDMuMDI0LS4xMTdsLS4xNzItLjQ1M2MtLjAyOC0uMDctLjEwMi0uMDQzLS4xMDItLjA0My0uMTkxLjA2Mi0uNDYuMTgzLTEuMDk0LjE4LS40MTQgMC0uNzIyLS4xMS0uOTE0LS4yOS0uMTk1LS4xOC0uMjkzLS40NDUtLjMwOC0uODJoMi42NjRzLjA3IDAgLjA3OC0uMDY2Yy4wMDQtLjAyOC4wOS0uNTA4LS4wNzgtMS4wNjNtLTIuNjUzLjUxNmMuMDM2LS4yMzUuMTA2LS40MzQuMjE1LS41ODIuMTY0LS4yMzUuNDEtLjM2Ljc2Mi0uMzYuMzUyIDAgLjU4Mi4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTguNTgyeiIgZmlsbD0iI0ZGRiIvPjxwYXRoIGQ9Ik0yMC40NTMgMjIuMDgyYTEuNTE3IDEuNTE3IDAgMCAwLS4zNC0uNTc4IDEuNDkgMS40OSAwIDAgMC0uNTA4LS4zNiAyLjA4MyAyLjA4MyAwIDAgMC0uNzYxLS4xNDRjLS4zMzIgMC0uNjM3LjA1LS44ODMuMTYtLjI0Mi4xMDYtLjQ1LjI1LS42MTMuNDM0YTEuNzggMS43OCAwIDAgMC0uMzYuNjQgMi42MDUgMi42MDUgMCAwIDAtLjExNy43OWMwIC4yODUuMDQuNTUuMTIxLjc5Mi4wNzguMjM5LjIxMS40NTQuMzg3LjYzLjE3Ni4xNzUuMzk4LjMxMi42NjguNDEuMjcuMDk3LjU5NC4xNDguOTY5LjE0NC43NyAwIDEuMTc1LS4xNiAxLjM0My0uMjQ2LjAzMi0uMDE2LjA1NS0uMDQzLjAyNC0uMTE3bC0uMTc2LS40NTNjLS4wMjctLjA3LS4xMDItLjA0My0uMTAyLS4wNDMtLjE5LjA2Mi0uNDYuMTgzLTEuMDkzLjE4LS40MTQgMC0uNzE5LS4xMS0uOTEtLjI5LS4yLS4xOC0uMjk3LS40NDUtLjMxMy0uODJoMi42NjhzLjA3IDAgLjA3OC0uMDY2YzAtLjAyOC4wOS0uNTA4LS4wODItMS4wNjNtLTIuNjUyLjUxNmMuMDM5LS4yMzUuMTEtLjQzNC4yMTUtLjU4Mi4xNjQtLjIzNS40MTQtLjM2Ljc2NS0uMzYuMzQ4IDAgLjU3OC4xMjUuNzQ2LjM2LjExLjE1Mi4xNi4zNTUuMTc2LjU4MnoiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTIuOTMgMjIuNDhjLS4xMS0uMDAzLS4yNDYtLjAwNy0uNDE0LS4wMDctLjIzIDAtLjQ1NC4wMjMtLjY2LjA3OC0uMjA4LjA1LS4zOTUuMTI5LS41NTUuMjM4LS4xNi4xMDYtLjI5My4yNDItLjM4Ny40MDZhMS4xMzUgMS4xMzUgMCAwIDAtLjE0NC41N2MwIC4yMi4wNDMuNDEuMTI1LjU2My4wNzguMTU2LjE5NS4yODUuMzQzLjM4Ny4xNDkuMTAxLjMzMi4xNzYuNTQzLjIxOS4yMTEuMDQzLjQ1LjA2Ni43MTEuMDY2LjI3NCAwIC41NDMtLjAyLjgwOS0uMDYzLjI2MS0uMDQyLjU4Mi0uMTAxLjY3Mi0uMTIuMDktLjAyLjE4Ny0uMDQ0LjE4Ny0uMDQ0LjA2Ny0uMDE1LjA1OS0uMDgyLjA1OS0uMDgydi0yLjI1N2MwLS40OTctLjE0NS0uODY0LS40MjItMS4wOTQtLjI4MS0uMjI3LS42OTUtLjM0LTEuMjI3LS4zNC0uMTk5IDAtLjUyLjAyMy0uNzE1LjA2MyAwIDAtLjU4Mi4xMDEtLjgyLjI3NyAwIDAtLjA1NS4wMzEtLjAyMy4wOThsLjE4Ny40NjhjLjAyNC4wNjMuMDg2LjA0My4wODYuMDQzcy4wMjQtLjAwOC4wNDctLjAyM2MuNTEyLS4yNTggMS4xNi0uMjUgMS4xNi0uMjUuMjkgMCAuNTEyLjA1NC42Ni4xNi4xNDUuMTA1LjIyLjI1OC4yMi41OXYuMTA1Yy0uMjMxLS4wMzEtLjQ0Mi0uMDUtLjQ0Mi0uMDVtLTEuMDYzIDEuNzM4YS41MzguNTM4IDAgMCAxLS4xNTItLjE0OS41Ny41NyAwIDAgMS0uMDc4LS4zMmMwLS4yMTkuMDc4LS4zNzEuMjM4LS40NzctLjAwNCAwIC4yMy0uMTg3Ljc3My0uMTguMzguMDA1LjcyMy4wNTUuNzIzLjA1NXYxLjEyNXMtLjM0LjA2Ny0uNzE5LjA4NmMtLjU0My4wMzItLjc4NS0uMTQtLjc4NS0uMTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMzQuNzYyIDIxLjE2OGMuMDItLjA1OS0uMDI0LS4wODItLjA0My0uMDlhMi41MjYgMi41MjYgMCAwIDAtLjQ0Ni0uMDc0Yy0uMzM2LS4wMi0uNTIuMDM1LS42ODcuMTA1LS4xNjguMDctLjM1Mi4xODgtLjQ1LjMybC0uMDAzLS4zMTJjMC0uMDQzLS4wMzEtLjA3OC0uMDc0LS4wNzhoLS42ODRhLjA3Ni4wNzYgMCAwIDAtLjA3OC4wNzh2My44MDVjMCAuMDQzLjAzOS4wNzguMDgyLjA3OGguN2EuMDguMDggMCAwIDAgLjA4MS0uMDc4di0xLjg5OWMwLS4yNTcuMDI4LS41MTEuMDg2LS42NzFhLjk2NC45NjQgMCAwIDEgLjIzNC0uMzc1Ljg2Ljg2IDAgMCAxIC4zMzMtLjE5MiAxLjM1IDEuMzUgMCAwIDEgLjM1NS0uMDQ3Yy4xNCAwIC4yOTMuMDM1LjI5My4wMzUuMDUuMDA0LjA3OC0uMDI3LjA5OC0uMDcuMDQ2LS4xMTMuMTc1LS40NjUuMjAzLS41MzUiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMjguMjAzIDE5LjEwNWExLjk1IDEuOTUgMCAwIDAtLjYyNS0uMDljLS40ODQgMC0uODYzLjEzNy0xLjEyOS40MDctLjI2NS4yNjUtLjQ0NS42NzYtLjUzOSAxLjIxbC0uMDQ3LjM2NGgtLjYwNXMtLjA3NC0uMDA0LS4wOS4wNzhsLS4wOTguNTU1Yy0uMDA4LjA1NS4wMTYuMDg2LjA4Ni4wODZoLjU5bC0uNTk4IDMuMzM2YTQuNDMgNC40MyAwIDAgMS0uMTYuNjYgMS40MjIgMS40MjIgMCAwIDEtLjE4Ny4zNzkuNTA1LjUwNSAwIDAgMS0uMjQyLjE4NyAxIDEgMCAwIDEtLjMxNy4wNDMuOTcuOTcgMCAwIDEtLjIxLS4wMjMuNTguNTggMCAwIDEtLjE0NS0uMDQzcy0uMDctLjAyNy0uMDk4LjA0M2MtLjAyMy4wNTUtLjE4LjQ4OC0uMTk1LjUzOS0uMDIuMDU1LjAwNC4wOTQuMDM5LjEwNS4wNzguMDMyLjEzNy4wNDcuMjQyLjA3NS4xNDguMDM1LjI3My4wMzUuMzkuMDM1LjI0NyAwIC40Ny0uMDM1LjY1Ny0uMTAyLjE4Ny0uMDY2LjM0OC0uMTgzLjQ5Mi0uMzQ0LjE1Ni0uMTcxLjI1NC0uMzUxLjM0OC0uNTkzLjA5LS4yNDYuMTY4LS41NDcuMjM0LS44OTlsLjU5OC0zLjM5OGguODc5cy4wNzQuMDA0LjA5LS4wNzhsLjA5Ny0uNTU1Yy4wMDgtLjA1LS4wMTUtLjA4Ni0uMDg2LS4wODZoLS44NTFjLjAwNC0uMDIuMDU4LS41MDQuMTU2LS43ODVhLjc4OC43ODggMCAwIDEgLjE4Ny0uMjg1LjU2Ni41NjYgMCAwIDEgLjIyMy0uMTQgMS4xNjUgMS4xNjUgMCAwIDEgLjUwNC0uMDJjLjA4Mi4wMi4xMTcuMDI3LjEzNy4wMzUuMDkuMDI3LjA5NyAwIC4xMTctLjA0M2wuMjAzLS41NTljLjAyMy0uMDU4LS4wMjctLjA4Ni0uMDQ3LS4wOTQiIGZpbGw9IiNGRkYiLz48cGF0aCBkPSJNMTUuODk4IDI0LjkxOGMwIC4wNDctLjAzLjA4Mi0uMDc0LjA4MmgtLjcwN2MtLjA0NyAwLS4wNzgtLjAzNS0uMDc4LS4wODJ2LTUuODM2YzAtLjA0Ny4wMzEtLjA4Mi4wNzgtLjA4MmguNzA3Yy4wNDMgMCAuMDc0LjA0LjA3NC4wODJ6IiBmaWxsPSIjRkZGIi8+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0ic2FsZXNmb3JjZSIgZGM6ZGVzY3JpcHRpb249InNhbGVzZm9yY2UiIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTEyLTE1IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5JY29uczg8L3JkZjpsaT48L3JkZjpCYWc+PC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L21ldGFkYXRhPjwvc3ZnPg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Salesforce" + camel.apache.org/kamelet.namespace: "Salesforce" labels: camel.apache.org/kamelet.type: "sink" spec: definition: title: "Salesforce Update Sink" description: |- - Updates an object in Salesforce. The body received must contain a - JSON key-value pair for each property to update and sObjectName and - sObjectId must be provided as parameters. + Update an object in Salesforce. + + The body received must contain a JSON key-value pair for each property to update inside the payload attribute, for example: + + `{ "payload": { "Phone": "1234567890", "Name": "Antonia" } }` + + The body received must include the `sObjectName` and `sObjectId` properties, for example: - Example of key-value pair: { "Phone": "1234567890", "Name": "Antonia" } + `{ "payload": { "Phone": "1234567890", "Name": "Antonia" }, "sObjectId": "sObjectId", "sObjectName": "sObjectName" }` + required: - - sObjectName - - sObjectId - clientId - clientSecret - userName - password type: object properties: - sObjectName: - title: Object Name - description: Type of the object. Only required if using key-value pair. - type: string - example: Contact - sObjectId: - title: Object Id - description: Id of the object. Only required if using key-value pair. - type: string loginUrl: title: Login URL - description: The Salesforce instance login URL + description: The Salesforce instance login URL. type: string default: https://login.salesforce.com clientId: title: Consumer Key - description: The Salesforce application consumer key + description: The Salesforce application consumer key. type: string x-descriptors: - urn:camel:group:credentials clientSecret: title: Consumer Secret - description: The Salesforce application consumer secret + description: The Salesforce application consumer secret. type: string format: password x-descriptors: @@ -57,13 +69,13 @@ spec: - urn:camel:group:credentials userName: title: Username - description: The Salesforce username + description: The Salesforce username. type: string x-descriptors: - urn:camel:group:credentials password: title: Password - description: The Salesforce user password + description: The Salesforce user password. type: string format: password x-descriptors: @@ -73,6 +85,9 @@ spec: in: mediaType: application/json dependencies: + - "camel:core" + - "camel:jsonpath" + - "camel:jackson" - "camel:salesforce" - "camel:kamelet" template: @@ -88,8 +103,14 @@ spec: from: uri: kamelet:source steps: - - to: - uri: "{{local-salesforce}}:updateSObject" - parameters: - sObjectId: "{{sObjectId}}" - sObjectName: "{{sObjectName}}" + - set-property: + name: sObjectId + jsonpath: "$['sObjectId']" + - set-property: + name: sObjectName + jsonpath: "$['sObjectName']" + - transform: + jsonpath: "$['payload']" + - marshal: + json: {} + - toD: "{{local-salesforce}}:updateSObject?sObjectId=${exchangeProperty.sObjectId}&sObjectName=${exchangeProperty.sObjectName}&rawPayload=true" diff --git a/sftp-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/sftp-sink.kamelet.yaml similarity index 69% rename from sftp-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/sftp-sink.kamelet.yaml index 8089377a0..08158d215 100644 --- a/sftp-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/sftp-sink.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: sftp-sink annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "FTP" + camel.apache.org/kamelet.namespace: "File" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -15,35 +33,33 @@ spec: description: |- Send data to an SFTP Server. - The Kamelet expects the following headers to be set: + In the header, you can set the `file` / `ce-file` property to specify the filename to upload. - - `file` / `ce-file`: as the file name to upload - - If the header won't be set the exchange ID will be used as file name. + If you do not set the property in the header, the Kamelet uses the exchange ID for the filename. required: - connectionHost - connectionPort - - username - - password - directoryName type: object properties: connectionHost: title: Connection Host - description: Hostname of the FTP server + description: The hostname of the FTP server type: string connectionPort: title: Connection Port - description: Port of the FTP server + description: The port of the FTP server type: string default: 22 username: title: Username - description: The username to access the FTP server + description: The username to access the FTP server. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to access the FTP server + description: The password to access the FTP server. type: string format: password x-descriptors: @@ -51,20 +67,60 @@ spec: - urn:camel:group:credentials directoryName: title: Directory Name - description: The starting directory + description: The starting directory. type: string passiveMode: title: Passive Mode - description: Sets passive mode connection + description: Specifies to use passive mode connection. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' fileExist: title: File Existence - description: How to behave in case of file already existent. There are 4 enums and the value can be one of Override, Append, Fail or Ignore + description: How to behave in case of file already existent. type: string default: Override + enum: ["Override", "Append", "Fail", "Ignore"] + binary: + title: Binary + description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + privateKeyFile: + title: Private Key File + description: Set the private key file so that the SFTP endpoint can do private key verification. + type: string + privateKeyPassphrase: + title: Private Key Passphrase + description: Set the private key file passphrase so that the SFTP endpoint can do private key verification. + type: string + privateKeyUri: + title: Private Key URI + description: Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification. + type: string + pattern: "^(http|https|file|classpath)://.*" + strictHostKeyChecking: + title: Strict Host Checking + description: Sets whether to use strict host key checking. + type: string + default: no + useUserKnownHostsFile: + title: Use User Known Hosts File + description: If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreate: + title: Autocreate Missing Directories + description: Automatically create the directory the files should be written to. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "camel:ftp" - "camel:core" @@ -86,8 +142,16 @@ spec: name: CamelFileName simple: "${header[ce-file]}" - to: - uri: "sftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}" + uri: "sftp:{{connectionHost}}:{{connectionPort}}/{{directoryName}}" parameters: - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + privateKeyFile: "{{?privateKeyFile}}" + privateKeyPassphrase: "{{?privateKeyPassphrase}}" + privateKeyUri: "{{?privateKeyUri}}" + strictHostKeyChecking: "{{?strictHostKeyChecking}}" + useUserKnownHostsFile: "{{?useUserKnownHostsFile}}" passiveMode: "{{passiveMode}}" fileExist: "{{fileExist}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" diff --git a/sftp-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/sftp-source.kamelet.yaml similarity index 65% rename from sftp-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/sftp-source.kamelet.yaml index da378e27c..2004a4bbe 100644 --- a/sftp-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/sftp-source.kamelet.yaml @@ -1,43 +1,61 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: sftp-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDIyMS4xIDMwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzgzMkVBQjt9DQoJLnN0MXtmaWxsOiNCQUJBQkE7fQ0KCS5zdDJ7ZmlsbDpub25lO30NCgkuc3Qze2ZpbGw6IzhEQzYzRjt9DQoJLnN0NHtmaWxsOiMwRjlCRDc7fQ0KCS5zdDV7ZmlsbDojRkZGRkZGO30NCgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9DQoJLnN0N3tmaWxsOiMxREExRjI7fQ0KCS5zdDh7ZmlsbDojM0Q1QTk4O30NCgkuc3Q5e2ZpbGw6IzIzMUYyMDt9DQoJLnN0MTB7ZmlsbDojMDA3QkI1O30NCgkuc3QxMXtmaWxsOiNEQzRFNDE7fQ0KCS5zdDEye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzE4MTYxNjt9DQoJLnN0MTN7ZmlsbDojMTgxNjE2O30NCgkuc3QxNHtmaWxsOiNGMkYyRjI7fQ0KCS5zdDE1e2ZpbGw6I0UzRTNFMzt9DQoJLnN0MTZ7ZmlsbDojRDU0QjNEO30NCgkuc3QxN3tmaWxsOiNENzJCMjc7fQ0KCS5zdDE4e29wYWNpdHk6MC41NjtmaWxsOnVybCgjU1ZHSURfMV8pO30NCgkuc3QxOXtmaWxsOiM5MkQ0MDA7fQ0KCS5zdDIwe2ZpbGw6IzAwQjlFNDt9DQoJLnN0MjF7Zm9udC1mYW1pbHk6J09wZW5TYW5zLUJvbGQnO30NCgkuc3QyMntmb250LXNpemU6NDUuNDExNXB4O30NCgkuc3QyM3tmaWxsOiMyQjM5OTA7fQ0KCS5zdDI0e2ZpbGw6IzNGOUMzNTt9DQoJLnN0MjV7ZmlsbDojOEZDRUQ4O30NCgkuc3QyNntmaWxsOiNEMjFGMjE7fQ0KCS5zdDI3e2ZpbGw6I0Q2RDZENjt9DQoJLnN0Mjh7ZmlsbDojRjFGMUYxO30NCgkuc3QyOXtmaWxsOiNDMzIyNjU7fQ0KCS5zdDMwe2ZpbGw6IzhDMzEyMzt9DQoJLnN0MzF7ZmlsbDojRTA1MjQzO30NCgkuc3QzMntmaWxsOiM1RTFGMTg7fQ0KCS5zdDMze2ZpbGw6I0YyQjBBOTt9DQoJLnN0MzR7ZmlsbDojQ0FDQ0NFO30NCgkuc3QzNXtmaWxsOiNBMUFGREI7fQ0KCS5zdDM2e2ZpbGw6IzAwMjA4Nzt9DQo8L3N0eWxlPg0KPGc+DQoJPGc+DQoJCTxjaXJjbGUgY2xhc3M9InN0MjAiIGN4PSIxMTEuNiIgY3k9IjE5MS43IiByPSI4OC42Ii8+DQoJCTxnPg0KCQkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTExMC42LDk5LjljLTUwLjgsMC05Mi4yLDQxLjQtOTIuMiw5Mi4yYzAsNTAuOSw0MS40LDkyLjIsOTIuMiw5Mi4yaDBjNTAuOCwwLDkyLjItNDEuNCw5Mi4yLTkyLjINCgkJCQlDMjAyLjgsMTQxLjMsMTYxLjQsOTkuOSwxMTAuNiw5OS45eiBNMTgzLjIsMTQzLjljLTcsNi44LTEzLjMsMTQuNC0xOC42LDIyLjdjLTAuNS0wLjEtMC45LTAuMi0xLjQtMC4yYy0xLDAtMS45LDAuMy0yLjgsMC43DQoJCQkJYy00LjYtNi41LTguNC0xMy4xLTExLjMtMTkuNmMxLjctMS4xLDIuOC0zLDIuOC01LjJjMC0wLjYtMC4xLTEuMS0wLjMtMS43YzYuMy00LjQsMTEuNy05LjMsMTYtMTQuMw0KCQkJCUMxNzMuNiwxMzEuNCwxNzguOCwxMzcuMywxODMuMiwxNDMuOXogTTY4LjgsMTY5LjFjNC44LTAuNSw5LjYtMS4yLDE0LjUtMmMxLDIsMy4xLDMuNCw1LjUsMy40aDBjMC44LDAsMS43LTAuMiwyLjQtMC41DQoJCQkJYzYuMiw4LjksMTMuNSwxNy4xLDIxLjgsMjQuNGM4LjcsNy42LDE4LjIsMTQsMjguMSwxOS4xYy0wLjEsMC41LTAuMiwxLTAuMiwxLjVjMCwyLjQsMS40LDQuNSwzLjQsNS41DQoJCQkJYy0xLjEsNy4yLTEuNiwxNC41LTEuNSwyMS42Yy0xLjIsMC4zLTIuMywwLjgtMy4yLDEuNmMtOS4zLTYuNi0xOS40LTEyLjItMzAuMS0xNi41Yy0xMi45LTUuMi0yNi4yLTguNC0zOS41LTkuNw0KCQkJCWMtMC44LTMuNS0zLjktNi4xLTcuNi02LjJjLTEtNi4zLTEuNS0xMi43LTEuNS0xOS4yYzAtNS40LDAuNC0xMC43LDEuMS0xNS45QzY1LjUsMTc1LjcsNjguMywxNzIuOCw2OC44LDE2OS4xeiBNNjQuNywxNjEuMg0KCQkJCWMyLjMtOC43LDUuNS0xNyw5LjctMjQuN2MyLjYsNy45LDYsMTUuNywxMC4yLDIzLjFjLTEuMSwxLTEuOCwyLjMtMiwzLjhjLTQuOCwwLjgtOS41LDEuNS0xNC4zLDEuOQ0KCQkJCUM2Ny43LDE2My42LDY2LjQsMTYyLjEsNjQuNywxNjEuMnogTTE0Ni41LDIwOC45Yy0xLjgsMC4yLTMuNCwxLjEtNC40LDIuNGMtOS43LTUtMTktMTEuMi0yNy42LTE4LjdjLTguMi03LjItMTUuMy0xNS4zLTIxLjQtMjQNCgkJCQljMS0xLDEuNi0yLjQsMS43LTMuOWMxNy40LTQuMSwzMy40LTEwLjMsNDYuNy0xNy44YzEuMSwxLDIuNSwxLjYsNC4xLDEuNmgwYzAuNCwwLDAuOCwwLDEuMi0wLjFjMi45LDYuOCw2LjgsMTMuNiwxMS42LDIwLjMNCgkJCQljLTAuOSwxLjEtMS41LDIuNS0xLjUsNGMwLDEuNiwwLjYsMy4xLDEuNyw0LjJjLTMuNyw3LTYuOSwxNC40LTkuMywyMi4yQzE0OC4yLDIwMi4zLDE0Ny4zLDIwNS42LDE0Ni41LDIwOC45eiBNMTQ0LjQsMTExLjcNCgkJCQljNy40LDMuMSwxNC4yLDcuMiwyMC40LDEyLjFjLTQuMSw0LjctOS4yLDkuMy0xNS4zLDEzLjVjLTEuMS0wLjgtMi40LTEuNC0zLjgtMS40Yy0wLjIsMC0wLjMsMC0wLjUsMC4xDQoJCQkJQzE0Mi45LDEyNy4zLDE0Mi41LDExOC45LDE0NC40LDExMS43eiBNMTEwLjYsMTA0LjljMTEuMSwwLDIxLjcsMi4xLDMxLjUsNS45Yy0yLjEsNy43LTEuNywxNi42LDAuNywyNS45Yy0yLDEtMy40LDMuMS0zLjQsNS41DQoJCQkJYzAsMC41LDAuMSwwLjksMC4yLDEuNGMtMTMsNy40LTI4LjcsMTMuNS00NS42LDE3LjVjLTEuMS0xLjgtMy4xLTMuMS01LjMtMy4xYy0wLjcsMC0xLjQsMC4xLTIsMC40Yy00LjUtNy45LTguMS0xNi4zLTEwLjctMjQuOA0KCQkJCWM2LjQtMTEsMTQuNi0yMC41LDI0LjQtMjguMUMxMDMuOCwxMDUuMSwxMDcuMSwxMDQuOSwxMTAuNiwxMDQuOXogTTkzLjIsMTA2LjZjLTcuMSw2LjMtMTMuNCwxMy43LTE4LjUsMjINCgkJCQljLTEuMi00LjktMi4xLTkuOC0yLjctMTQuN0M3OC42LDExMC42LDg1LjgsMTA4LjEsOTMuMiwxMDYuNnogTTY5LjYsMTE1LjFjMC43LDUuNSwxLjgsMTEsMy4zLDE2LjVjLTUuMSw4LjgtOS4xLDE4LjQtMTEuOCwyOC41DQoJCQkJYy0wLjEsMC0wLjMsMC0wLjQsMGMtMy44LDAtNi45LDIuNi03LjgsNi4yYy04LjgsMC4xLTE3LjItMC41LTI1LjEtMS44QzM1LDE0My4yLDUwLjEsMTI1LjUsNjkuNiwxMTUuMXogTTIzLjMsMTkyLjENCgkJCQljMC04LjMsMS4yLTE2LjQsMy40LTI0YzcuNiwxLjMsMTUuNywyLDI0LjEsMmMwLjcsMCwxLjMsMCwyLTAuMWMwLjYsMi43LDIuNiw0LjksNS4yLDUuOGMtMC43LDUuMy0xLjEsMTAuOC0xLjEsMTYuMw0KCQkJCWMwLDYuOCwwLjUsMTMuNSwxLjYsMjBjLTIsMC45LTMuNiwyLjctNC4zLDQuOGMtOC45LDAuMS0xNy43LDEuMS0yNi40LDNDMjUsMjExLjIsMjMuMywyMDEuOCwyMy4zLDE5Mi4xeiBNMjkuMiwyMjMuNA0KCQkJCWM4LjItMS43LDE2LjUtMi42LDI0LjktMi44YzAuNiwzLjksMy45LDYuOCw4LDYuOGgwYzAsMCwwLjEsMCwwLjEsMGM1LjgsMTkuOCwxNi42LDM3LjIsMzEuMSw1MC4xDQoJCQkJQzYzLjgsMjcxLjYsMzkuOCwyNTAuOSwyOS4yLDIyMy40eiBNMTEwLjYsMjc5LjNMMTEwLjYsMjc5LjNjLTMuNCwwLTYuOC0wLjItMTAuMi0wLjZDODQsMjY2LDcyLDI0Ny43LDY1LjcsMjI2LjYNCgkJCQljMi0xLjEsMy42LTIuOSw0LjEtNS4yYzEyLjksMS4zLDI1LjcsNC40LDM4LjIsOS40YzEwLjQsNC4yLDIwLjIsOS42LDI5LjIsMTZjLTAuNSwxLTAuNywyLjEtMC43LDMuM2MwLDQuMiwzLjMsNy43LDcuNSw4DQoJCQkJYzAuNiw0LjUsMS41LDksMi43LDEzLjRDMTM1LjYsMjc2LjUsMTIzLjQsMjc5LjMsMTEwLjYsMjc5LjN6IE0xNTAsMjY5LjljLTEtNC4xLTEuOC04LjItMi40LTEyLjNjMC42LTAuMywxLjItMC42LDEuOC0xDQoJCQkJYzMuMSwyLjgsNiw1LjcsOC43LDguN0MxNTUuNSwyNjYuOSwxNTIuOCwyNjguNCwxNTAsMjY5Ljl6IE0xNjEuMywyNjNjLTMtMy4zLTYuMS02LjQtOS41LTkuNGMwLjUtMS4xLDAuOS0yLjMsMC45LTMuNg0KCQkJCWMwLTMuOC0yLjctNy02LjItNy44Yy0wLjEtNywwLjQtMTQsMS41LTIxYzEuOC0wLjIsMy4zLTEuMiw0LjMtMi42YzEyLjQsNC45LDI1LjMsNy44LDM4LjMsOC41QzE4NC4xLDI0MS41LDE3NCwyNTMuOSwxNjEuMywyNjMNCgkJCQl6IE0xOTEuNSwyMjQuNmMtMTMtMC42LTI1LjktMy40LTM4LjMtOC4zYzAuMS0wLjQsMC4xLTAuOCwwLjEtMS4yYzAtMi4zLTEuMy00LjMtMy4xLTUuNGMwLjgtMy4yLDEuNi02LjQsMi42LTkuNQ0KCQkJCWMyLjQtNy41LDUuNC0xNC42LDktMjEuNGMwLjQsMC4xLDAuOSwwLjEsMS4zLDAuMmgwYzEsMCwyLTAuMywyLjktMC43YzIuMSwyLjQsNC4zLDQuOCw2LjYsNy4xYzcuNiw3LjQsMTUuOCwxMy42LDI0LjMsMTguNg0KCQkJCUMxOTYsMjExLDE5NC4yLDIxOCwxOTEuNSwyMjQuNnogTTE3NC40LDE4My40Yy0yLjMtMi4yLTQuNC00LjUtNi41LTYuOGMwLjktMS4xLDEuNC0yLjQsMS40LTMuOWMwLTEuNi0wLjYtMy0xLjYtNC4xDQoJCQkJYzUuMS03LjgsMTAuOS0xNSwxNy41LTIxLjRjOCwxMy4xLDEyLjUsMjguNiwxMi41LDQ1YzAsMy0wLjIsNi0wLjUsOC45QzE4OS4zLDE5Ni4yLDE4MS42LDE5MC40LDE3NC40LDE4My40eiIvPg0KCQk8L2c+DQoJPC9nPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik0xNjguMSwxLjNjLTAuOC0wLjktMi0xLjMtMy4xLTEuM0g0LjRDMiwwLDAsMiwwLDQuNHYyOTEuM2MwLDIuNCwyLDQuNCw0LjQsNC40aDIxMi40YzIuNCwwLDQuNC0yLDQuNC00LjRWNTcuOA0KCQkJCWMwLTEuMS0wLjQtMi4yLTEuMi0zTDE2OC4xLDEuM3ogTTE2OS4zLDE1LjJsMzkuNSw0MC43aC0zOS41VjE1LjJ6IE04LjcsOC43aDE1MS44djQ5LjZjMCwwLjMsMC4xLDAuNiwwLjIsMC45DQoJCQkJYy0wLjEsMC4zLTAuMiwwLjYtMC4yLDAuOWMwLDIuNCwyLDQuNCw0LjQsNC40aDQ3LjV2MjI2LjdIOC43VjguN3oiLz4NCgkJPC9nPg0KCTwvZz4NCgk8cmVjdCB4PSIwIiB5PSI0OC40IiBjbGFzcz0ic3QyIiB3aWR0aD0iMjIxLjciIGhlaWdodD0iNzYiLz4NCgk8dGV4dCB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDc3LjgyNTIgODIuOTEyOCkiIGNsYXNzPSJzdDkgc3QyMSBzdDIyIj5mdHA8L3RleHQ+DQo8L2c+DQo8L3N2Zz4NCg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "FTP" + camel.apache.org/kamelet.namespace: "File" labels: camel.apache.org/kamelet.type: "source" spec: definition: title: "SFTP Source" description: |- - Receive data from an SFTP Server. + Receive data from an SFTP server. required: - connectionHost - connectionPort - - username - - password - directoryName type: object properties: connectionHost: title: Connection Host - description: Hostname of the SFTP server + description: The hostname of the SFTP server. type: string connectionPort: title: Connection Port - description: Port of the FTP server + description: The port of the FTP server. type: string default: 22 username: title: Username - description: The username to access the SFTP server + description: The username to access the SFTP server. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to access the SFTP server + description: The password to access the SFTP server. type: string format: password x-descriptors: @@ -45,48 +63,111 @@ spec: - urn:camel:group:credentials directoryName: title: Directory Name - description: The starting directory + description: The starting directory. type: string passiveMode: title: Passive Mode - description: Sets passive mode connection + description: Sets the passive mode connection. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' recursive: title: Recursive - description: If a directory, will look for files in all the sub-directories as well. + description: If a directory, look for files in all sub-directories as well. type: boolean default: false x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' idempotent: title: Idempotency - description: Skip already processed files. + description: Skip already-processed files. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + ignoreFileNotFoundOrPermissionError: + title: Ignore File Not Found Or Permission Error + description: Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + binary: + title: Binary + description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false). + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + privateKeyFile: + title: Private Key File + description: Set the private key file so that the SFTP endpoint can do private key verification. + type: string + privateKeyPassphrase: + title: Private Key Passphrase + description: Set the private key file passphrase so that the SFTP endpoint can do private key verification. + type: string + privateKeyUri: + title: Private Key URI + description: Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification. + type: string + pattern: "^(http|https|file|classpath)://.*" + strictHostKeyChecking: + title: Strict Host Checking + description: Sets whether to use strict host key checking. + type: string + default: no + useUserKnownHostsFile: + title: Use User Known Hosts File + description: If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts. type: boolean default: true x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + autoCreate: + title: Autocreate Missing Directories + description: Automatically create starting directory. + type: boolean + default: true + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + delete: + title: Delete + description: If true, the file will be deleted after it is processed successfully. + type: boolean + default: false + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - "camel:ftp" - "camel:core" - "camel:kamelet" template: from: - uri: "sftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}" + uri: "sftp:{{connectionHost}}:{{connectionPort}}/{{directoryName}}" parameters: - password: "{{password}}" + username: "{{?username}}" + password: "{{?password}}" + privateKeyFile: "{{?privateKeyFile}}" + privateKeyPassphrase: "{{?privateKeyPassphrase}}" + privateKeyUri: "{{?privateKeyUri}}" + strictHostKeyChecking: "{{?strictHostKeyChecking}}" + useUserKnownHostsFile: "{{?useUserKnownHostsFile}}" passiveMode: "{{passiveMode}}" recursive: "{{recursive}}" idempotent: "{{idempotent}}" + ignoreFileNotFoundOrPermissionError: "{{ignoreFileNotFoundOrPermissionError}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" + delete: "{{delete}}" steps: + - set-body: + simple: "${body.getBody()}" - set-header: name: file simple: "${header[CamelFileName]}" - set-header: name: ce-file simple: "${header[CamelFileName]}" - - convert-body-to: - type: "java.io.InputStream" - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/simple-filter-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/simple-filter-action.kamelet.yaml similarity index 95% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/simple-filter-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/simple-filter-action.kamelet.yaml index 808e73115..21d4a9bab 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/simple-filter-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/simple-filter-action.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -14,17 +14,19 @@ # See the License for the specific language governing permissions and # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: simple-filter-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "EIP" spec: definition: title: "Simple Filter Action" diff --git a/slack-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/slack-source.kamelet.yaml similarity index 68% rename from slack-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/slack-source.kamelet.yaml index bd5915c22..c6f7699d8 100644 --- a/slack-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/slack-source.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: slack-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMyNUQzNjY7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQoJLnN0MntmaWxsOiNGRjAwMDA7fQoJLnN0M3tmaWxsOiMzRDVBOTg7fQoJLnN0NHtmaWxsOnVybCgjU1ZHSURfMV8pO30KCS5zdDV7ZmlsbDp1cmwoI1NWR0lEXzJfKTt9Cgkuc3Q2e2ZpbGw6IzU1QURFRTt9Cgkuc3Q3e2ZpbGw6IzFFOTZDODt9Cgkuc3Q4e2ZpbGw6I0E5QzlERDt9Cgkuc3Q5e2ZpbGw6I0M4REFFQTt9Cgkuc3QxMHtmaWxsOm5vbmU7fQoJLnN0MTF7ZmlsbDojNDc4N0YzO30KCS5zdDEye2ZpbGw6I0RDNDgzQzt9Cgkuc3QxM3tmaWxsOiNGRkNFNDM7fQoJLnN0MTR7ZmlsbDojMTQ5RjVDO30KCS5zdDE1e2ZpbGw6I0NFMUU1Qjt9Cgkuc3QxNntmaWxsOiM3MkM1Q0Q7fQoJLnN0MTd7ZmlsbDojREZBMjJGO30KCS5zdDE4e2ZpbGw6IzNDQjE4Nzt9Cgkuc3QxOXtmaWxsOiMyNDhDNzM7fQoJLnN0MjB7ZmlsbDojMzkyNTM4O30KCS5zdDIxe2ZpbGw6I0JCMjQyQTt9Cgkuc3QyMntmaWxsOm5vbmU7c3Ryb2tlOiMzQ0IxODc7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0MjN7ZmlsbDojMDA5QTU3O30KCS5zdDI0e2ZpbGw6I0ZDQ0QzNzt9Cgkuc3QyNXtmaWxsOiMyNzcxRjA7fQo8L3N0eWxlPjxnPjxwYXRoIGNsYXNzPSJzdDE1IiBkPSJNNTAxLjgsMjc0TDUwMS44LDI3NGMtNy42LTIzLjMtMzIuNi0zNi4xLTU2LTI4LjVMOTYuMiwzNTkuMWMtMjMuMyw3LjYtMzYuMSwzMi42LTI4LjUsNTZsMCwwICAgYzcuNiwyMy4zLDMyLjYsMzYuMSw1NiwyOC41bDM0OS42LTExMy42QzQ5Ni42LDMyMi40LDUwOS40LDI5Ny4zLDUwMS44LDI3NHoiLz48cGF0aCBjbGFzcz0ic3QxNiIgZD0iTTQ0My41LDk3LjdsLTAuMi0wLjVjLTcuNi0yMy4zLTMyLjYtMzYuMS01Ni0yOC41TDM4LjcsMTgyLjFjLTIzLjMsNy42LTM2LjEsMzIuNi0yOC41LDU2bDAuMiwwLjUgICBjNy42LDIzLjMsMzIuNiwzNi4xLDU2LDI4LjVsMzQ4LjYtMTEzLjNDNDM4LjMsMTQ2LjEsNDUxLDEyMS4xLDQ0My41LDk3Ljd6Ii8+PHBhdGggY2xhc3M9InN0MTciIGQ9Ik00NDMuNiwzODguM0wzMjkuOSwzOC43Yy03LjYtMjMuMy0zMi42LTM2LjEtNTYtMjguNXYwYy0yMy4zLDcuNi0zNi4xLDMyLjYtMjguNSw1NmwxMTMuNiwzNDkuNiAgIGM3LjYsMjMuMywzMi42LDM2LjEsNTYsMjguNWgwQzQzOC40LDQzNi43LDQ1MS4yLDQxMS42LDQ0My42LDM4OC4zeiIvPjxwYXRoIGNsYXNzPSJzdDE4IiBkPSJNMjY3LDQ0NS43TDE1My43LDk3LjFjLTcuNi0yMy4zLTMyLjYtMzYuMS01Ni0yOC41bC0wLjUsMC4yYy0yMy4zLDcuNi0zNi4xLDMyLjYtMjguNSw1NmwxMTMuMywzNDguNiAgIGM3LjYsMjMuMywzMi42LDM2LjEsNTYsMjguNWwwLjUtMC4yQzI2MS45LDQ5NC4xLDI3NC42LDQ2OSwyNjcsNDQ1Ljd6Ii8+PHJlY3QgY2xhc3M9InN0MTkiIGhlaWdodD0iODkuNCIgdHJhbnNmb3JtPSJtYXRyaXgoLTAuOTUxIDAuMzA5MSAtMC4zMDkxIC0wLjk1MSAzMzEuOTg5NiAzNDAuMjQ1KSIgd2lkdGg9Ijg5LjQiIHg9Ijk0LjQiIHk9IjE1MS43Ii8+PHJlY3QgY2xhc3M9InN0MjAiIGhlaWdodD0iODguOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC45NTEgLTAuMzA5MSAwLjMwOTEgMC45NTEgLTEwNS43NDk4IDc5LjAzMDEpIiB3aWR0aD0iODkuNCIgeD0iMTUxLjgiIHk9IjMyOC44Ii8+PHJlY3QgY2xhc3M9InN0MjEiIGhlaWdodD0iODguOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC45NTEgLTAuMzA5MSAwLjMwOTEgMC45NTEgLTc5LjMyNSAxMzAuODY4OSkiIHdpZHRoPSI4OC44IiB4PSIzMjguOSIgeT0iMjcxLjMiLz48L2c+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Slack" + camel.apache.org/kamelet.namespace: "Social" labels: camel.apache.org/kamelet.type: "source" spec: @@ -21,30 +39,38 @@ spec: properties: channel: title: Channel - description: The Slack channel to receive messages from + description: The Slack channel to receive messages from. type: string example: "#myroom" token: title: Token - description: The token to access Slack. A Slack app is needed. This app needs to have channels:history and channels:read permissions. The Bot User OAuth Access Token is the kind of token needed. + description: "The Bot User OAuth Access Token to access Slack. A Slack app that has the following permissions is required: `channels:history`, `groups:history`, `im:history`, `mpim:history`, `channels:read`, `groups:read`, `im:read`, and `mpim:read`." type: string format: password x-descriptors: - urn:alm:descriptor:com.tectonic.ui:password - urn:camel:group:credentials + delay: + title: Delay + description: The delay between polls. If no unit provided, miliseconds is the default. + type: string + default: "60000" + example: "60s or 6000 or 1m" types: out: mediaType: application/json dependencies: - - "camel:kamelet" + - "camel:gson" - "camel:slack" - - "camel:jackson" + - "camel:kamelet" template: from: uri: "slack:{{channel}}" parameters: token: "{{token}}" + delay: "{{delay}}" steps: - marshal: - json: {} + json: + library: "Gson" - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml similarity index 73% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml index ed42c3a5c..599c0da3d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml @@ -1,13 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: sqlserver-sink annotations: - camel.apache.org/kamelet.support.level: "Preview" - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-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: "Red Hat" camel.apache.org/kamelet.group: "SQL" + camel.apache.org/kamelet.namespace: "Database" labels: camel.apache.org/kamelet.type: "sink" spec: @@ -16,11 +33,15 @@ spec: description: |- Send data to a Microsoft SQL Server 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: + In your KameletBinding file, you must explicitly declare the SQL Server driver dependency in spec->integration->dependencies + + - "mvn:com.microsoft.sqlserver:mssql-jdbc:" + + This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For example, here is a query: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)' - The Kamelet needs to receive as input something like: + Here is example input for the example query: '{ "username":"oscerd", "city":"Rome"}' required: @@ -33,21 +54,23 @@ spec: properties: serverName: title: Server Name - description: Server Name for the data source + description: The server name for the data source. type: string example: localhost serverPort: title: Server Port - description: Server Port for the data source + description: The server port for the data source. type: string default: 1433 username: title: Username - description: The username to use for accessing a secured SQL Server Database + description: The username to access a secured SQL Server Database. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured SQL Server Database + description: The password to access a secured SQL Server Database. type: string format: password x-descriptors: @@ -55,13 +78,27 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the SQL Server Database + 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 + description: The name of the SQL Server Database. type: string + encrypt: + title: Encrypt Connection + description: Encrypt the connection to SQL Server. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: false + trustServerCertificate: + title: Trust Server Certificate + description: Trust Server Certificate + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true types: in: mediaType: application/json @@ -69,21 +106,16 @@ spec: - "camel:jackson" - "camel:kamelet" - "camel:sql" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" - - "mvn:com.microsoft.sqlserver:mssql-jdbc:9.2.1.jre11" + - "mvn:org.apache.commons:commons-dbcp2:2.10.0" template: 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}}:{{serverPort}};databaseName={{databaseName}}' - - key: driverClassName - value: 'com.microsoft.sqlserver.jdbc.SQLServerDriver' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:sqlserver://{{serverName}}:{{serverPort}};databaseName={{databaseName}};encrypt={{encrypt}};trustServerCertificate={{trustServerCertificate}};' + driverClassName: 'com.microsoft.sqlserver.jdbc.SQLServerDriver' from: uri: "kamelet:source" steps: diff --git a/telegram-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/telegram-source.kamelet.yaml similarity index 62% rename from telegram-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/telegram-source.kamelet.yaml index 94e13065f..f7750bb3e 100644 --- a/telegram-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/telegram-source.kamelet.yaml @@ -1,12 +1,30 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: telegram-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIuNjY3IiB4Mj0iLjQxNyIgeTE9Ii4xNjciIHkyPSIuNzUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzM3YWVlMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFlOTZjOCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iLjY2IiB4Mj0iLjg1MSIgeTE9Ii40MzciIHkyPSIuODAyIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNlZmY3ZmMiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjEyMCIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGZpbGw9IiNjOGRhZWEiIGQ9Ik05OCAxNzVjLTMuODg4IDAtMy4yMjctMS40NjgtNC41NjgtNS4xN0w4MiAxMzIuMjA3IDE3MCA4MCIvPjxwYXRoIGZpbGw9IiNhOWM5ZGQiIGQ9Ik05OCAxNzVjMyAwIDQuMzI1LTEuMzcyIDYtM2wxNi0xNS41NTgtMTkuOTU4LTEyLjAzNSIvPjxwYXRoIGZpbGw9InVybCgjYikiIGQ9Ik0xMDAuMDQgMTQ0LjQxbDQ4LjM2IDM1LjcyOWM1LjUxOSAzLjA0NSA5LjUwMSAxLjQ2OCAxMC44NzYtNS4xMjNsMTkuNjg1LTkyLjc2M2MyLjAxNS04LjA4LTMuMDgtMTEuNzQ2LTguMzYtOS4zNDlsLTExNS41OSA0NC41NzFjLTcuODkgMy4xNjUtNy44NDMgNy41NjctMS40MzggOS41MjhsMjkuNjYzIDkuMjU5IDY4LjY3My00My4zMjVjMy4yNDItMS45NjYgNi4yMTgtLjkxIDMuNzc2IDEuMjU4Ii8+PC9zdmc+" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Telegram" + camel.apache.org/kamelet.namespace: "Social" labels: camel.apache.org/kamelet.type: "source" spec: @@ -15,11 +33,11 @@ spec: description: |- Receive all messages that people send to your Telegram bot. - To create a bot, contact the @botfather account using the Telegram app. + To create a bot, contact the @botfather account by using the Telegram app. - The source attaches the following headers to the messages: + The source attaches the following header to the messages: - - `chat-id` / `ce-chatid`: the ID of the chat where the message comes from + - `chat-id` / `ce-chatid`: The ID of the chat where the message comes from. required: - authorizationToken @@ -27,7 +45,7 @@ spec: properties: authorizationToken: title: Token - description: The token to access your bot on Telegram. You you can obtain it from the Telegram @botfather. + description: "The token to access your bot on Telegram. You can obtain it from the Telegram @botfather." type: string format: password x-descriptors: diff --git a/timer-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/timer-source.kamelet.yaml similarity index 89% rename from timer-source.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/timer-source.kamelet.yaml index e6dbb9ec4..cdd8fe2de 100644 --- a/timer-source.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/timer-source.kamelet.yaml @@ -1,5 +1,5 @@ # --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more +# Licensed to the Red Hat (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 @@ -15,38 +15,41 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: timer-source annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPG1ldGFkYXRhPiBTdmcgVmVjdG9yIEljb25zIDogaHR0cDovL3d3dy5vbmxpbmV3ZWJmb250cy5jb20vaWNvbiA8L21ldGFkYXRhPg0KPGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsNTExLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSI+PHBhdGggZD0iTTM4ODguMSw0Nzc0Ljl2LTIzNS4xaDQxMS40aDQxNC4zbC04LjgtMzI5LjFsLTguOC0zMzJsLTExNy41LTguOGMtMjI5LjItMTQuNy02MjAtOTkuOS05MjUuNi0xOTYuOUMyMjU3LjQsMzIyMC42LDExNjcuMiwyMDY1LjgsODAyLjksNjQ5LjZjLTUxMS4zLTE5ODYuMywzODQuOS00MDAyLDIyMDYuNy00OTY1LjhjMzAyLjYtMTYxLjYsNzU4LjEtMzIwLjIsMTE1NC44LTQwNS41YzQyNi4xLTkxLjEsMTI1MS43LTkxLjEsMTY4MC43LDBjMTc2OC45LDM4MiwzMDQ0LjEsMTY1Ny4yLDM0MjYuMSwzNDI2LjFjOTEuMSw0MjYuMSw5MS4xLDEyNTQuNiwwLDE2NzcuOGMtNDIwLjIsMTk0Mi4yLTE5MzYuNCwzMzAyLjYtMzg5MC4zLDM0OTYuNmwtMTk5LjgsMjAuNnYzMjAuM3YzMjAuM2g0MTEuNGg0MTEuNHYyMzUuMVY1MDEwSDQ5NDUuOUgzODg4LjFWNDc3NC45eiBNNTc1My45LDMzNDkuOWM3NzguNy0xNjEuNiwxNDE5LjItNTA4LjMsMTk4My40LTEwNzIuNWM1NjQuMi01NjEuMiw4ODcuNC0xMTU3LjcsMTA2MC43LTE5NDIuMmM5OS45LTQzNy44LDk5LjktMTE0MywzLTE1ODAuOEM4NTYzLTIzMDYuNCw3OTY2LjUtMzE1OC41LDcwNDMuOS0zNzUyYy0zMzUtMjE0LjUtNzg3LjUtMzk2LjctMTI0OC44LTQ5OS41Yy00MzcuOC05Ny0xMTQzLTk3LTE1ODAuOCwyLjljLTc4NC41LDE3My4zLTEzODEsNDk2LjYtMTk0Mi4yLDEwNjAuN2MtNTcwLDU2Ny4xLTkwNy45LDExOTguOC0xMDc4LjQsMTk5OC4xYy03My41LDM0Ni43LTczLjUsMTEyMi40LDAsMTQ2OS4yYzE3MC40LDc5OS4yLDUwOC4zLDE0MzEsMTA3OC40LDE5OThDMjg5NSwyOTAwLjMsMzYzOC40LDMyNzMuNSw0NDkzLjQsMzM5MUM0Nzc4LjQsMzQzMi4xLDU0NzQuOCwzNDA4LjYsNTc1My45LDMzNDkuOXoiLz48cGF0aCBkPSJNNDcxMC44LDEzNzUuM1YyMDUuOUw0NTUyLjIsNjcuOGMtMzE3LjMtMjc5LjEtMzQwLjgtNjc4LjctNTUuOC05OTMuMWMyODcuOS0zMjAuMyw2OTMuNC0zMTcuMywxMDEzLjcsNS45bDE3MC40LDE3MC40aDEwNDMuMWgxMDQzLjFWLTUxNFYtMjc5SDY3MjkuNUg1NjkyLjJsLTQ5LjksMTE0LjZjLTU4LjgsMTMyLjItMjUyLjcsMzE3LjMtMzc2LjEsMzYxLjRsLTg1LjIsMjkuNHYxMTU3Ljd2MTE1Ny43aC0yMzUuMWgtMjM1LjFWMTM3NS4zeiBNNTE2Ni4zLTI5My42YzE0Ni45LTE0NCw0NC4xLTM5Ni43LTE2MS42LTM5Ni43Yy01NS44LDAtMTE3LjUsMjYuNC0xNjEuNiw3My40Yy00Nyw0NC4xLTczLjUsMTA1LjgtNzMuNSwxNjEuNnMyNi40LDExNy41LDczLjUsMTYxLjZjNDQuMSw0NywxMDUuOCw3My41LDE2MS42LDczLjVDNTA2MC41LTIyMC4yLDUxMjIuMi0yNDYuNyw1MTY2LjMtMjkzLjZ6Ii8+PC9nPjwvZz4NCjwvc3ZnPg== camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Timer" + camel.apache.org/kamelet.namespace: "Scheduling" labels: camel.apache.org/kamelet.type: source + camel.apache.org/kamelet.verified: "true" spec: definition: title: Timer Source - description: Produces periodic events with a custom payload. + description: Produces periodic messages with a custom payload. required: - message type: object properties: period: title: Period - description: The interval between two events in milliseconds + description: "The interval (in milliseconds) to wait between producing the next message." type: integer default: 1000 message: title: Message - description: The message to generate + description: The message to generate. type: string example: hello world contentType: title: Content Type - description: The content type of the message being generated + description: The content type of the generated message. type: string default: text/plain repeatCount: diff --git a/timestamp-router-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml similarity index 81% rename from timestamp-router-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml index 2e256c505..323345397 100644 --- a/timestamp-router-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml @@ -1,14 +1,32 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: timestamp-router-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Timestamp Router Action" @@ -31,7 +49,7 @@ spec: default: "kafka.TIMESTAMP" type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:kamelet" - "camel:core" template: diff --git a/library/camel-kamelets/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml new file mode 100644 index 000000000..845472824 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/topic-name-matches-filter-action.kamelet.yaml @@ -0,0 +1,52 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: topic-name-matches-filter-action + labels: + camel.apache.org/kamelet.type: "action" + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" +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" + template: + from: + uri: kamelet:source + steps: + - filter: + simple: "${header[kafka.TOPIC]} !regex '{{regex}}'" + steps: + - stop: {} diff --git a/library/camel-kamelets/src/main/resources/kamelets/twitter-directmessage-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/twitter-directmessage-source.kamelet.yaml new file mode 100644 index 000000000..b890e18a1 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/twitter-directmessage-source.kamelet.yaml @@ -0,0 +1,101 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: twitter-directmessage-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMjI1LjgzNDE1NiwzMy43MjAyMzMzIEMyMzYuNjc4NTAzLDI3LjIxOTgwNTMgMjQ1LjAwNTgzLDE2LjkyNjk5MjkgMjQ4LjkyNzQzNyw0LjY2MzA3Njg1IEMyMzguNzc5NzY1LDEwLjY4MTI2MzMgMjI3LjUzOTMyNSwxNS4wNTIzMzc2IDIxNS41NzU5OSwxNy40MDgyOTggQzIwNS45OTQ4MzUsNy4yMDA2OTcxIDE5Mi4zNDUwNiwwLjgyMiAxNzcuMjM5MTk3LDAuODIyIEMxNDguMjMyNjA1LDAuODIyIDEyNC43MTYwNzYsMjQuMzM3NTkzMSAxMjQuNzE2MDc2LDUzLjM0MjMxMTYgQzEyNC43MTYwNzYsNTcuNDU4Njg3NSAxMjUuMTgxNDYyLDYxLjQ2NzM3ODQgMTI2LjA3NjY1Miw2NS4zMTEyNjQ0IEM4Mi40MjU4Mzg1LDYzLjEyMTA0NTMgNDMuNzI1NzI1Miw0Mi4yMTE0MjkgMTcuODIxMzk4LDEwLjQzNTkyODggQzEzLjMwMDUwMTEsMTguMTkyOTkzOCAxMC43MTA0NDMsMjcuMjE1MTIzNCAxMC43MTA0NDMsMzYuODQwMjg4OSBDMTAuNzEwNDQzLDU1LjA2MTUyNiAxOS45ODM1MjU0LDcxLjEzNzQ5MDcgMzQuMDc2MjEzNSw4MC41NTU3MTM3IEMyNS40NjYwOTYxLDgwLjI4MzIyMzkgMTcuMzY4MTg0Niw3Ny45MjA3MDg4IDEwLjI4NjI1NzcsNzMuOTg2OTI5MiBDMTAuMjgyNTEyMiw3NC4yMDYwNDQ4IDEwLjI4MjUxMjIsNzQuNDI2MDk2NyAxMC4yODI1MTIyLDc0LjY0NzA4NSBDMTAuMjgyNTEyMiwxMDAuMDk0NDUzIDI4LjM4NjcwMDMsMTIxLjMyMjQ0MyA1Mi40MTM1NjMsMTI2LjE0NjczIEM0OC4wMDU5Njk1LDEyNy4zNDcxODQgNDMuMzY2MTUwOSwxMjcuOTg4NjEyIDM4LjU3NTU3MzQsMTI3Ljk4ODYxMiBDMzUuMTkxNDU1NCwxMjcuOTg4NjEyIDMxLjkwMDk3NjYsMTI3LjY1OTkzOCAyOC42OTQ3NzMsMTI3LjA0NjYwMiBDMzUuMzc3Nzk3MywxNDcuOTEzMTQ1IDU0Ljc3NDIwNTMsMTYzLjA5NzY2NSA3Ny43NTY5OTE4LDE2My41MjE4NSBDNTkuNzgyMDI1NywxNzcuNjA3OTgzIDM3LjEzNTQwMzYsMTg2LjAwNDYwNCAxMi41Mjg5MTQ3LDE4Ni4wMDQ2MDQgQzguMjg5ODcxNjEsMTg2LjAwNDYwNCA0LjEwODg4NDc0LDE4NS43NTY0NiAwLDE4NS4yNzE0MDkgQzIzLjI0MzEwMzMsMjAwLjE3MzEzOSA1MC44NTA3MjYxLDIwOC44Njc1MzIgODAuNTEwOTE4NSwyMDguODY3NTMyIEMxNzcuMTE2NTI5LDIwOC44Njc1MzIgMjI5Ljk0Mzk3NywxMjguODM2OTgyIDIyOS45NDM5NzcsNTkuNDMyNjAwMiBDMjI5Ljk0Mzk3Nyw1Ny4xNTUyOTY4IDIyOS44OTM0MTIsNTQuODkwMTY2NCAyMjkuNzkyMjgyLDUyLjYzODE0NTQgQzI0MC4wNTMyNTcsNDUuMjMzMTYzNSAyNDguOTU4MzM4LDM1Ljk4MjU1NDUgMjU2LDI1LjQ1MDAyNTkiIGZpbGw9IiM1NWFjZWUiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Twitter" + camel.apache.org/kamelet.namespace: "Social" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Twitter Direct Message Source" + description: |- + Allows to get all direct messages for your Twitter account. + + It requires tokens that can be obtained by creating an application + in the Twitter developer portal: https://developer.twitter.com/. + required: + - user + - apiKey + - apiKeySecret + - accessToken + - accessTokenSecret + type: object + properties: + user: + title: User + description: The user we want to read the direct messages + type: string + example: "ApacheCamel" + apiKey: + title: API Key + description: The API Key from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + apiKeySecret: + title: API Key Secret + description: The API Key Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessToken: + title: Access Token + description: The Access Token from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessTokenSecret: + title: Access Token Secret + description: The Access Token Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + types: + out: + mediaType: application/json + dependencies: + - "camel:jackson" + - "camel:twitter" + - "camel:kamelet" + template: + from: + uri: "twitter-directmessage:{{user}}" + parameters: + accessToken: "{{accessToken}}" + accessTokenSecret: "{{accessTokenSecret}}" + consumerKey: "{{apiKey}}" + consumerSecret: "{{apiKeySecret}}" + steps: + - marshal: + json: {} + - to: "kamelet:sink" diff --git a/library/camel-kamelets/src/main/resources/kamelets/twitter-search-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/twitter-search-source.kamelet.yaml new file mode 100644 index 000000000..70c7afd34 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/twitter-search-source.kamelet.yaml @@ -0,0 +1,101 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: twitter-search-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMjI1LjgzNDE1NiwzMy43MjAyMzMzIEMyMzYuNjc4NTAzLDI3LjIxOTgwNTMgMjQ1LjAwNTgzLDE2LjkyNjk5MjkgMjQ4LjkyNzQzNyw0LjY2MzA3Njg1IEMyMzguNzc5NzY1LDEwLjY4MTI2MzMgMjI3LjUzOTMyNSwxNS4wNTIzMzc2IDIxNS41NzU5OSwxNy40MDgyOTggQzIwNS45OTQ4MzUsNy4yMDA2OTcxIDE5Mi4zNDUwNiwwLjgyMiAxNzcuMjM5MTk3LDAuODIyIEMxNDguMjMyNjA1LDAuODIyIDEyNC43MTYwNzYsMjQuMzM3NTkzMSAxMjQuNzE2MDc2LDUzLjM0MjMxMTYgQzEyNC43MTYwNzYsNTcuNDU4Njg3NSAxMjUuMTgxNDYyLDYxLjQ2NzM3ODQgMTI2LjA3NjY1Miw2NS4zMTEyNjQ0IEM4Mi40MjU4Mzg1LDYzLjEyMTA0NTMgNDMuNzI1NzI1Miw0Mi4yMTE0MjkgMTcuODIxMzk4LDEwLjQzNTkyODggQzEzLjMwMDUwMTEsMTguMTkyOTkzOCAxMC43MTA0NDMsMjcuMjE1MTIzNCAxMC43MTA0NDMsMzYuODQwMjg4OSBDMTAuNzEwNDQzLDU1LjA2MTUyNiAxOS45ODM1MjU0LDcxLjEzNzQ5MDcgMzQuMDc2MjEzNSw4MC41NTU3MTM3IEMyNS40NjYwOTYxLDgwLjI4MzIyMzkgMTcuMzY4MTg0Niw3Ny45MjA3MDg4IDEwLjI4NjI1NzcsNzMuOTg2OTI5MiBDMTAuMjgyNTEyMiw3NC4yMDYwNDQ4IDEwLjI4MjUxMjIsNzQuNDI2MDk2NyAxMC4yODI1MTIyLDc0LjY0NzA4NSBDMTAuMjgyNTEyMiwxMDAuMDk0NDUzIDI4LjM4NjcwMDMsMTIxLjMyMjQ0MyA1Mi40MTM1NjMsMTI2LjE0NjczIEM0OC4wMDU5Njk1LDEyNy4zNDcxODQgNDMuMzY2MTUwOSwxMjcuOTg4NjEyIDM4LjU3NTU3MzQsMTI3Ljk4ODYxMiBDMzUuMTkxNDU1NCwxMjcuOTg4NjEyIDMxLjkwMDk3NjYsMTI3LjY1OTkzOCAyOC42OTQ3NzMsMTI3LjA0NjYwMiBDMzUuMzc3Nzk3MywxNDcuOTEzMTQ1IDU0Ljc3NDIwNTMsMTYzLjA5NzY2NSA3Ny43NTY5OTE4LDE2My41MjE4NSBDNTkuNzgyMDI1NywxNzcuNjA3OTgzIDM3LjEzNTQwMzYsMTg2LjAwNDYwNCAxMi41Mjg5MTQ3LDE4Ni4wMDQ2MDQgQzguMjg5ODcxNjEsMTg2LjAwNDYwNCA0LjEwODg4NDc0LDE4NS43NTY0NiAwLDE4NS4yNzE0MDkgQzIzLjI0MzEwMzMsMjAwLjE3MzEzOSA1MC44NTA3MjYxLDIwOC44Njc1MzIgODAuNTEwOTE4NSwyMDguODY3NTMyIEMxNzcuMTE2NTI5LDIwOC44Njc1MzIgMjI5Ljk0Mzk3NywxMjguODM2OTgyIDIyOS45NDM5NzcsNTkuNDMyNjAwMiBDMjI5Ljk0Mzk3Nyw1Ny4xNTUyOTY4IDIyOS44OTM0MTIsNTQuODkwMTY2NCAyMjkuNzkyMjgyLDUyLjYzODE0NTQgQzI0MC4wNTMyNTcsNDUuMjMzMTYzNSAyNDguOTU4MzM4LDM1Ljk4MjU1NDUgMjU2LDI1LjQ1MDAyNTkiIGZpbGw9IiM1NWFjZWUiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Twitter" + camel.apache.org/kamelet.namespace: "Social" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Twitter Search Source" + description: |- + Allows to get all tweets on particular keywords from Twitter. + + It requires tokens that can be obtained by creating an application + in the Twitter developer portal: https://developer.twitter.com/. + required: + - keywords + - apiKey + - apiKeySecret + - accessToken + - accessTokenSecret + type: object + properties: + keywords: + title: Keywords + description: The keywords to use in the Twitter search (Supports Twitter standard operators) + type: string + example: "Apache Camel" + apiKey: + title: API Key + description: The API Key from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + apiKeySecret: + title: API Key Secret + description: The API Key Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessToken: + title: Access Token + description: The Access Token from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessTokenSecret: + title: Access Token Secret + description: The Access Token Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + types: + out: + mediaType: application/json + dependencies: + - "camel:jackson" + - "camel:twitter" + - "camel:kamelet" + template: + from: + uri: "twitter-search:{{keywords}}" + parameters: + accessToken: "{{accessToken}}" + accessTokenSecret: "{{accessTokenSecret}}" + consumerKey: "{{apiKey}}" + consumerSecret: "{{apiKeySecret}}" + steps: + - marshal: + json: {} + - to: "kamelet:sink" diff --git a/library/camel-kamelets/src/main/resources/kamelets/twitter-timeline-source.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/twitter-timeline-source.kamelet.yaml new file mode 100644 index 000000000..8d4ec4226 --- /dev/null +++ b/library/camel-kamelets/src/main/resources/kamelets/twitter-timeline-source.kamelet.yaml @@ -0,0 +1,102 @@ +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: twitter-timeline-source + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMjI1LjgzNDE1NiwzMy43MjAyMzMzIEMyMzYuNjc4NTAzLDI3LjIxOTgwNTMgMjQ1LjAwNTgzLDE2LjkyNjk5MjkgMjQ4LjkyNzQzNyw0LjY2MzA3Njg1IEMyMzguNzc5NzY1LDEwLjY4MTI2MzMgMjI3LjUzOTMyNSwxNS4wNTIzMzc2IDIxNS41NzU5OSwxNy40MDgyOTggQzIwNS45OTQ4MzUsNy4yMDA2OTcxIDE5Mi4zNDUwNiwwLjgyMiAxNzcuMjM5MTk3LDAuODIyIEMxNDguMjMyNjA1LDAuODIyIDEyNC43MTYwNzYsMjQuMzM3NTkzMSAxMjQuNzE2MDc2LDUzLjM0MjMxMTYgQzEyNC43MTYwNzYsNTcuNDU4Njg3NSAxMjUuMTgxNDYyLDYxLjQ2NzM3ODQgMTI2LjA3NjY1Miw2NS4zMTEyNjQ0IEM4Mi40MjU4Mzg1LDYzLjEyMTA0NTMgNDMuNzI1NzI1Miw0Mi4yMTE0MjkgMTcuODIxMzk4LDEwLjQzNTkyODggQzEzLjMwMDUwMTEsMTguMTkyOTkzOCAxMC43MTA0NDMsMjcuMjE1MTIzNCAxMC43MTA0NDMsMzYuODQwMjg4OSBDMTAuNzEwNDQzLDU1LjA2MTUyNiAxOS45ODM1MjU0LDcxLjEzNzQ5MDcgMzQuMDc2MjEzNSw4MC41NTU3MTM3IEMyNS40NjYwOTYxLDgwLjI4MzIyMzkgMTcuMzY4MTg0Niw3Ny45MjA3MDg4IDEwLjI4NjI1NzcsNzMuOTg2OTI5MiBDMTAuMjgyNTEyMiw3NC4yMDYwNDQ4IDEwLjI4MjUxMjIsNzQuNDI2MDk2NyAxMC4yODI1MTIyLDc0LjY0NzA4NSBDMTAuMjgyNTEyMiwxMDAuMDk0NDUzIDI4LjM4NjcwMDMsMTIxLjMyMjQ0MyA1Mi40MTM1NjMsMTI2LjE0NjczIEM0OC4wMDU5Njk1LDEyNy4zNDcxODQgNDMuMzY2MTUwOSwxMjcuOTg4NjEyIDM4LjU3NTU3MzQsMTI3Ljk4ODYxMiBDMzUuMTkxNDU1NCwxMjcuOTg4NjEyIDMxLjkwMDk3NjYsMTI3LjY1OTkzOCAyOC42OTQ3NzMsMTI3LjA0NjYwMiBDMzUuMzc3Nzk3MywxNDcuOTEzMTQ1IDU0Ljc3NDIwNTMsMTYzLjA5NzY2NSA3Ny43NTY5OTE4LDE2My41MjE4NSBDNTkuNzgyMDI1NywxNzcuNjA3OTgzIDM3LjEzNTQwMzYsMTg2LjAwNDYwNCAxMi41Mjg5MTQ3LDE4Ni4wMDQ2MDQgQzguMjg5ODcxNjEsMTg2LjAwNDYwNCA0LjEwODg4NDc0LDE4NS43NTY0NiAwLDE4NS4yNzE0MDkgQzIzLjI0MzEwMzMsMjAwLjE3MzEzOSA1MC44NTA3MjYxLDIwOC44Njc1MzIgODAuNTEwOTE4NSwyMDguODY3NTMyIEMxNzcuMTE2NTI5LDIwOC44Njc1MzIgMjI5Ljk0Mzk3NywxMjguODM2OTgyIDIyOS45NDM5NzcsNTkuNDMyNjAwMiBDMjI5Ljk0Mzk3Nyw1Ny4xNTUyOTY4IDIyOS44OTM0MTIsNTQuODkwMTY2NCAyMjkuNzkyMjgyLDUyLjYzODE0NTQgQzI0MC4wNTMyNTcsNDUuMjMzMTYzNSAyNDguOTU4MzM4LDM1Ljk4MjU1NDUgMjU2LDI1LjQ1MDAyNTkiIGZpbGw9IiM1NWFjZWUiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+" + camel.apache.org/provider: "Red Hat" + camel.apache.org/kamelet.group: "Twitter" + camel.apache.org/kamelet.namespace: "Social" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Twitter Timeline Source" + description: |- + Allows to get tweets from the timeline of a specific user from Twitter. + + It requires tokens that can be obtained by creating an application + in the Twitter developer portal: https://developer.twitter.com/. + required: + - user + - apiKey + - apiKeySecret + - accessToken + - accessTokenSecret + type: object + properties: + user: + title: User + description: The user we want to read the timeline + type: string + example: "ApacheCamel" + apiKey: + title: API Key + description: The API Key from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + apiKeySecret: + title: API Key Secret + description: The API Key Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessToken: + title: Access Token + description: The Access Token from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + accessTokenSecret: + title: Access Token Secret + description: The Access Token Secret from the Twitter application in the developer portal + type: string + format: password + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + - urn:camel:group:credentials + types: + out: + mediaType: application/json + dependencies: + - "camel:jackson" + - "camel:twitter" + - "camel:kamelet" + template: + from: + uri: "twitter-timeline:user" + parameters: + user: "{{user}}" + accessToken: "{{accessToken}}" + accessTokenSecret: "{{accessTokenSecret}}" + consumerKey: "{{apiKey}}" + consumerSecret: "{{apiKeySecret}}" + steps: + - marshal: + json: {} + - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/value-to-key-action.kamelet.yaml b/library/camel-kamelets/src/main/resources/kamelets/value-to-key-action.kamelet.yaml similarity index 80% rename from library/camel-kamelets-catalog/src/main/resources/kamelets/value-to-key-action.kamelet.yaml rename to library/camel-kamelets/src/main/resources/kamelets/value-to-key-action.kamelet.yaml index af5f49262..9fcfa87ff 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/value-to-key-action.kamelet.yaml +++ b/library/camel-kamelets/src/main/resources/kamelets/value-to-key-action.kamelet.yaml @@ -1,18 +1,36 @@ -apiVersion: camel.apache.org/v1alpha1 +# --------------------------------------------------------------------------- +# Licensed to the Red Hat (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. +# --------------------------------------------------------------------------- +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: value-to-key-action labels: camel.apache.org/kamelet.type: "action" annotations: - camel.apache.org/catalog.version: "2.2.0" + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "2.2.0-SNAPSHOT" camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" camel.apache.org/provider: "Red Hat" camel.apache.org/kamelet.group: "Actions" + camel.apache.org/kamelet.namespace: "Kafka" spec: definition: title: "Value to Key Action" - description: "Replace the Kafka record key with a new key formed from a subset of fields in the body" + description: "Replace the Kafka record key with a new key formed from a fields subset coming from the message body" required: - fields properties: @@ -22,7 +40,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:4.0.3" - "camel:core" - "camel:jackson" - "camel:kamelet" @@ -38,7 +56,7 @@ spec: name: deserialized constant: "true" - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-property: @@ -50,7 +68,7 @@ spec: - simple: "${exchangeProperty[deserialized]} == 'true'" steps: - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: diff --git a/library/kamelets-maven-plugin/pom.xml b/library/kamelets-maven-plugin/pom.xml index 1fd327cf5..818d27094 100644 --- a/library/kamelets-maven-plugin/pom.xml +++ b/library/kamelets-maven-plugin/pom.xml @@ -25,7 +25,7 @@ org.apache.camel.kamelets camel-kamelets-parent - 2.2.0 + 2.2.0-SNAPSHOT ../../pom.xml @@ -34,49 +34,69 @@ Camel Kamelets Maven Plugin Camel Kamelets Maven Plugin + + + + org.apache.camel + camel-bom + ${camel.version} + pom + import + + + + org.apache.camel camel-util - ${camel.version} org.apache.camel camel-tooling-util - ${camel.version} + + org.apache.camel + camel-catalog + + + org.apache.camel.kamelets + camel-kamelets-catalog + ${project.version} + + org.apache.maven.resolver maven-resolver-api - 1.8.0 + ${maven-resolver-version} org.apache.maven maven-core - 3.8.5 + ${maven-version} provided org.apache.maven maven-artifact - 3.8.5 + ${maven-version} provided org.apache.maven maven-plugin-api - 3.8.5 + ${maven-version} provided org.apache.maven.plugin-tools maven-plugin-annotations - 3.6.4 + ${maven-plugin-annotations-version} org.apache.maven maven-compat - 3.8.5 + ${maven-version} provided @@ -89,21 +109,11 @@ plexus-utils 3.4.1 - + diff --git a/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/ValidateKameletsMojo.java b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/ValidateKameletsMojo.java index da50c43a2..63f3950f9 100644 --- a/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/ValidateKameletsMojo.java +++ b/library/kamelets-maven-plugin/src/main/java/org/apache/camel/kamelets/maven/plugin/ValidateKameletsMojo.java @@ -17,13 +17,18 @@ package org.apache.camel.kamelets.maven.plugin; import java.io.File; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.Map; import java.util.function.Predicate; import java.util.stream.Collectors; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.catalog.DefaultCamelCatalog; import org.apache.camel.kamelets.catalog.KameletsCatalog; import org.apache.camel.tooling.model.ComponentModel; +import org.apache.camel.v1.kameletspec.Template; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -58,18 +63,21 @@ public class ValidateKameletsMojo extends AbstractMojo { @Override public void execute() throws MojoExecutionException, MojoFailureException { - String[] bannedDeps = {"mvn:", "camel:gson", "camel:core", "camel:kamelet", "github:apache.camel-kamelets:camel-kamelets-utils:main-SNAPSHOT"}; + String[] bannedDeps = {"mvn:", "camel:gson", "camel:core", "camel:kamelet"}; List bannedDepsList = Arrays.asList(bannedDeps); KameletsCatalog catalog = new KameletsCatalog(); DefaultCamelCatalog cc = new DefaultCamelCatalog(); List names = catalog.getKameletsName(); - for (String name: - names) { - Map kd = catalog.getKameletTemplate(name); - Map f = (Map) kd.get("from"); + ObjectMapper om = new ObjectMapper(); + for (String name: names) { + Map templateJson; + Template kd = catalog.getKameletTemplate(name); + templateJson = om.convertValue(kd, new TypeReference>(){}); + Map f = (Map) templateJson.get("from"); Map p = (Map) f.get("parameters"); List deps = catalog.getKameletDependencies(name).stream() - .filter(Predicate.not(bannedDepsList::contains)).collect(Collectors.toList()); + .filter(Predicate.not(bannedDepsList::contains)) + .collect(Collectors.toList()); String cleanName; if (!deps.isEmpty()) { if (deps.get(0).equals("camel:jackson") && deps.size() > 1) { @@ -99,14 +107,18 @@ public void execute() throws MojoExecutionException, MojoFailureException { List ceInternal = ce.stream() .map(ComponentModel.EndpointOptionModel::getName) + .sorted() .collect(Collectors.toList()); + StringBuilder availableParams = new StringBuilder(); + ceInternal.forEach(_param -> availableParams.append(_param).append(" ")); for (Map.Entry entry : p.entrySet()) { - if (!entry.getKey().equals("period") && (!name.equals("kafka-ssl-source") && !name.equals("timer-source") && !name.equals("cron-source") && !name.equals("fhir-source"))) { + if (!entry.getKey().equals("period") && (!name.equals("set-kafka-key-action") && !name.equals("sftp-source") && !name.equals("kafka-ssl-source") && !name.equals("timer-source") && !name.equals("cron-source") && !name.equals("fhir-source") && !name.equals("beer-source") && !name.equals("cassandra-source") && !name.equals("cassandra-sink"))) { if (!ceInternal.contains(entry.getKey())) { getLog().error("Kamelet Name: " + name); getLog().error("Scheme Name: " + cleanName); getLog().error("Parameter: " + entry.getKey()); getLog().error("The parameter " + entry.getKey() + " doesn't exist in the endpoint options of " + cleanName + " component"); + getLog().error("Available endpoint options: " + availableParams); if (failOnError) { throw new MojoExecutionException("The Kamelets Validation failed. See logs for more information." + "\n"); } diff --git a/log-sink.kamelet.yaml b/log-sink.kamelet.yaml deleted file mode 100644 index 845249820..000000000 --- a/log-sink.kamelet.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: log-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Logging" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Log Sink" - description: |- - A sink that logs all data that it receives, useful for debugging purposes. - type: object - properties: - showHeaders: - title: Show Headers - description: Show the headers received - type: boolean - default: false - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - showStreams: - title: Show Streams - description: Show the stream bodies (they may not be available in following steps) - type: boolean - default: true - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - dependencies: - - "camel:kamelet" - - "camel:log" - template: - from: - uri: "kamelet:source" - steps: - - to: - uri: "log:info" - parameters: - showHeaders: "{{?showHeaders}}" - showStreams: "{{?showStreams}}" diff --git a/mongodb-source.kamelet.yaml b/mongodb-source.kamelet.yaml deleted file mode 100644 index 3a8ea0c69..000000000 --- a/mongodb-source.kamelet.yaml +++ /dev/null @@ -1,85 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: mongodb-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "MongoDB" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "MongoDB Source" - description: |- - Consume documents from MongoDB. - - If the persistentTailTracking option will be enabled, the consumer will keep track of the last consumed message and on the next restart, the consumption will restart from that message. In case of persistentTailTracking enabled, the tailTrackIncreasingField must be provided (by default it is optional). - - If the persistentTailTracking option won't be enabled, the consumer will consume the whole collection and wait in idle for new documents to consume. - required: - - hosts - - collection - - password - - username - - database - type: object - properties: - hosts: - title: MongoDB Hosts - description: Comma separated list of MongoDB Host Addresses in host:port format. - type: string - collection: - title: MongoDB Collection - description: Sets the name of the MongoDB collection to bind to this endpoint. - type: string - password: - title: MongoDB Password - description: User password for accessing MongoDB. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - username: - title: MongoDB Username - description: Username for accessing MongoDB. The username must be present in the MongoDB's authentication database (authenticationDatabase). By default, the MongoDB authenticationDatabase is 'admin'. - type: string - database: - title: MongoDB Database - description: Sets the name of the MongoDB database to target. - type: string - persistentTailTracking: - title: MongoDB Persistent Tail Tracking - description: Enable persistent tail tracking, which is a mechanism to keep track of the last consumed message across system restarts. The next time the system is up, the endpoint will recover the cursor from the point where it last stopped slurping records. - type: boolean - x-descriptors: - - 'urn:alm:descriptor:com.tectonic.ui:checkbox' - default: false - tailTrackIncreasingField: - title: MongoDB Tail Track Increasing Field - description: Correlation field in the incoming record which is of increasing nature and will be used to position the tailing cursor every time it is generated. - type: string - dependencies: - - "camel:kamelet" - - "camel:mongodb" - - "camel:jackson" - template: - beans: - - name: local-mongodb - type: "#class:org.apache.camel.component.mongodb.MongoDbComponent" - from: - uri: "{{local-mongodb}}:test" - parameters: - hosts: "{{hosts}}" - collection: "{{collection}}" - password: "{{password}}" - username: "{{username}}" - database: "{{database}}" - persistentTailTracking: "{{persistentTailTracking}}" - tailTrackIncreasingField: "{{?tailTrackIncreasingField}}" - steps: - - marshal: - json: {} - - to: kamelet:sink diff --git a/mysql-sink.kamelet.yaml b/mysql-sink.kamelet.yaml deleted file mode 100644 index 461202602..000000000 --- a/mysql-sink.kamelet.yaml +++ /dev/null @@ -1,95 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: mysql-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmVyc2lvbj0iMSI+CiA8cmVjdCBmaWxsPSIjMjY1NTdjIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHg9Ii0zMCIgeT0iLTMwIiByeD0iMS40IiByeT0iMS40IiB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLC0xLDAsMCwwKSIvPgogPHBhdGggb3BhY2l0eT0iLjIiIGQ9Im04LjAyNTQgOC4wMDAxYy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43Mjk5IDAuODgyOCAxLjQ0MTkgMC42MzEyMiAwLjc5MDkgMC44ODUxNCAxLjIyMjcgMS4xNjAyIDEuOTcwNyAwLjQzMzYgMS4xNzkzIDAuNjM0MDMgMS41NzQ4IDAuOTg2MzMgMS45NDM0IDAuMjczNjYgMC4yODYzIDAuMjczNjkgMC4yODcxMiAwLjA4OTg0IDAuODcxMDktMC4yODUwNyAwLjkwNTU2LTAuMzQ0MDcgMi43MjA3LTAuMTE1MjMgMy41NzQyIDAuMzQyNDggMS4yNzc0IDAuNzY0MDIgMS44NTc0IDEuMzUxNiAxLjg1NzQgMC40MTk2OCAwIDAuNzYzNjQtMC4zNTA5MiAwLjg4NjcyLTAuOTA0MyAwLjA0MjY4LTAuMTkxODYgMC4xMjI0OS0wLjQ2NjA3IDAuMTc3NzMtMC42MDkzOCAwLjA5NTM1LTAuMjQ3MjggMC4xMjA5My0wLjIyODE4IDAuNDk0MTQgMC4zODA4NiAwLjIxNjI4IDAuMzUyOTYgMC42Mjg2NiAwLjg3ODYxIDAuOTE2MDIgMS4xNjggMC42NjM4IDAuNjY4NDUgMS41NzQ5IDEuNDIxNyAxLjY0MDYgMS4zNTc0IDAuMDI3NzUtMC4wMjcxMy0wLjIzOC0wLjQyMTc3LTAuNTg5ODQtMC44Nzg5MXMtMS4wMTUxLTEuNTE4OS0xLjQ3NDYtMi4zNTk0Yy0wLjUzNTkzLTAuOTgwMjktMC44OTk3LTEuNTI4Ni0xLjAxMzctMS41MjkzLTAuMzcwNDUtMC4wMDI1LTAuNzE1ODggMC41ODAwNC0wLjkxNjAyIDEuNTQ2OS0wLjIzMDU2IDEuMTEzOC0wLjYzNjc1IDAuOTI3MDgtMC45NjY4LTAuNDQ1MzEtMC4xOTAxOS0wLjc5MDg1LTAuMDkxMDYtMS44NTYgMC4yNjM2Ny0yLjg1MzUgMC4xNjEzNy0wLjQ1Mzc2IDAuMjkyOTctMC44NzM3MyAwLjI5Mjk3LTAuOTMxNjRzLTAuMjU3MzEtMC41NDM0OC0wLjU3MjI3LTEuMDgwMWMtMC4zMTUtMC41MzctMC42ODUxLTEuMjk3LTAuODIyLTEuNjktMC4zMzI2LTAuOTU0LTAuNDkwNS0xLjIzMi0xLjE1ODItMi4wNDMtMC42ODc5LTAuODM0Ni0wLjc1My0xLjIyMDMtMC4yMDUxLTEuMjE2NiAwLjQyNTU0IDAuMDAyODEgMS4xMTIzIDAuMjg5NDQgMS44MDI3IDAuNzUzOTEgMC40MzcxIDAuMjk0MDQgMC41ODUyMyAwLjMzMzk4IDEuMjg3MSAwLjMzMzk4IDAuODgxNDIgMCAxLjA3MDkgMC4wNzIyIDIuMjkzIDAuODc2OTUgMS4yNDQ1IDAuODE5NTggMi4xNzIyIDEuNTgxMyAyLjgxNDUgMi4zMTI1IDAuNTcwNCAwLjY0OTM3IDAuODgyMDEgMS4yMTM4IDIuNTYwNSA0LjY1NjIgMC42NDQzMyAxLjMyMTQgMS4yMTU4IDEuOTU5MyAyLjAwMzkgMi4yMzI0IDEuMjE3MyAwLjQyMTg1IDEuNjMxNyAwLjYxMzE0IDIuMTY4IDAuOTk4MDVsMC41NjY0MSAwLjQwNjI1LTAuMzgwODYgMC4wNzQyMmMtMC4yMTAzIDAuMDQwMzMtMC42Njg0NyAwLjEwNjE2LTEuMDE3NiAwLjE0NjQ4LTAuNzI3NDEgMC4wODQtMS4yMDMxIDAuMzg1NzMtMS4yMDMxIDAuNzYzNjcgMCAwLjQyNTkyIDEuNDUxMyAxLjY0NTMgMi45MDYyIDIuNDQxNCAwLjY5OTAzIDAuMzgyNDcgMS4zNzE2IDAuNzU5MjcgMS40OTQxIDAuODM3ODkgMC4zMjU5OCAwLjIwOTIyIDAuNDE0MjQgMC4xODM4OSAwLjMzMDA4LTAuMDkxOC0wLjE3NjI0LTAuNTc3MzgtMC43NzI3OS0xLjEzOTgtMi40Mjk3LTIuMjk0OS0wLjk3MTk3LTAuNjc3Ni0wLjk4MTk5LTAuNjUyNDQgMC4zMTY0MS0wLjc4MTI1IDAuOTI1LTAuMDkxIDEuMzkyLTAuMjQ5IDEuMzkyLTAuNDcyIDAtMC4xMDItMC40Ny0wLjY0NC0xLjA0NS0xLjIwMy0wLjktMC44NzYtMS4yMDQtMS4wOTQtMi4xOTUtMS41NzctMS4zNS0wLjY1Ni0xLjg0Mi0xLjE3Ny0yLjE1My0yLjI4My0wLjQ2NC0xLjY0OS0xLjcxMi0zLjU4Ny0zLjM3MS01LjIzLTEuNzEyLTEuNjk2LTMuMzQ3LTIuNjM0NC00Ljg0NS0yLjc4MTQtMC42MDktMC4wNTk4LTAuOTI0LTAuMTUyMi0xLjIzOS0wLjM2NTMtMC41MzMyLTAuMzYxMS0xLjc3MTctMC43Njg0LTIuMzc2Ni0wLjc4MTJ6bTIuOTYyOSAzLjAwMmMtMC4xMjI2Ni0wLjAwNzktMC4yMjk0NSAwLjAwODUtMC4zMDI3MyAwLjA1ODU5LTAuMjczNDEgMC4xODY5OS0wLjI0MDk5IDAuNDE1MDQgMC4wODAwOCAwLjU1NjY0IDAuMTUwOTIgMC4wNjY1NiAwLjM2NTAxIDAuMzAxNDcgMC40NzY1NiAwLjUyMTQ4IDAuMzc1MSAwLjczOTc4IDAuOTQ5ODUgMC4yNDQ1IDAuNjkzMzYtMC41OTc2Ni0wLjA4MDg1LTAuMjY1NDYtMC41NzkzLTAuNTE1NDctMC45NDcyNy0wLjUzOTA2eiIvPgogPHBhdGggZmlsbD0iI2ZmZiIgZD0ibTguMDI1NCA3Yy0wLjc4MjUtMC4wMTY2LTEuMTQ5NCAwLjUyNDQtMC45ODgzIDEuNDU3IDAuMDUyIDAuMzAwNiAwLjMxNTIgMC43MzAyIDAuODgyOCAxLjQ0MTQgMC42MzEyIDAuNzkwNiAwLjg4NTIgMS4yMjI2IDEuMTYwMiAxLjk3MDYgMC40MzM2IDEuMTc5IDAuNjM0IDEuNTc1IDAuOTg1OSAxLjk0MyAwLjI3NCAwLjI4NyAwLjI3NCAwLjI4OCAwLjA5IDAuODcyLTAuMjg0OCAwLjkwNS0wLjM0MzggMi43Mi0wLjExNSAzLjU3NCAwLjM0MiAxLjI3NyAwLjc2NCAxLjg1NyAxLjM1MiAxLjg1NyAwLjQxOSAwIDAuNzYzLTAuMzUxIDAuODg2LTAuOTA0IDAuMDQzLTAuMTkyIDAuMTIzLTAuNDY2IDAuMTc4LTAuNjA5IDAuMDk1LTAuMjQ4IDAuMTIxLTAuMjI5IDAuNDk0IDAuMzggMC4yMTYgMC4zNTMgMC42MjkgMC44NzkgMC45MTYgMS4xNjggMC42NjQgMC42NjkgMS41NzUgMS40MjIgMS42NDEgMS4zNTggMC4wMjgtMC4wMjctMC4yMzgtMC40MjItMC41OS0wLjg3OXMtMS4wMTUtMS41MTktMS40NzUtMi4zNTljLTAuNTM2LTAuOTgxLTAuODk5LTEuNTI5LTEuMDEzLTEuNTMtMC4zNzEtMC4wMDItMC43MTYgMC41OC0wLjkxNiAxLjU0Ny0wLjIzMSAxLjExNC0wLjYzNyAwLjkyNy0wLjk2Ny0wLjQ0NS0wLjE5LTAuNzkxLTAuMDkxLTEuODU2IDAuMjY0LTIuODU0IDAuMTYxLTAuNDUzIDAuMjkzLTAuODczIDAuMjkzLTAuOTMxcy0wLjI1OC0wLjU0NC0wLjU3My0xLjA4Yy0wLjMxNS0wLjUzNy0wLjY4NTEtMS4yOTctMC44MjItMS42OS0wLjMzMjYtMC45NTQtMC40OTA1LTEuMjMyLTEuMTU4Mi0yLjA0MjktMC42ODc5LTAuODM0OC0wLjc1My0xLjIyMDQtMC4yMDUxLTEuMjE2OCAwLjQyNTUgMC4wMDI5IDEuMTEyMyAwLjI4OTUgMS44MDIzIDAuNzUzOSAwLjQzOCAwLjI5NDEgMC41ODYgMC4zMzQgMS4yODggMC4zMzQgMC44ODEgMCAxLjA3IDAuMDcyMiAyLjI5MyAwLjg3NyAxLjI0NCAwLjgxOTggMi4xNzIgMS41ODE4IDIuODE0IDIuMzEyOCAwLjU3IDAuNjQ5IDAuODgyIDEuMjE0IDIuNTYxIDQuNjU2IDAuNjQ0IDEuMzIxIDEuMjE1IDEuOTU5IDIuMDAzIDIuMjMyIDEuMjE4IDAuNDIyIDEuNjMyIDAuNjEzIDIuMTY4IDAuOTk4bDAuNTY3IDAuNDA3LTAuMzgxIDAuMDc0Yy0wLjIxIDAuMDQtMC42NjkgMC4xMDYtMS4wMTggMC4xNDYtMC43MjcgMC4wODQtMS4yMDMgMC4zODYtMS4yMDMgMC43NjQgMCAwLjQyNiAxLjQ1MSAxLjY0NSAyLjkwNiAyLjQ0MSAwLjcgMC4zODMgMS4zNzIgMC43NiAxLjQ5NSAwLjgzOCAwLjMyNiAwLjIxIDAuNDE0IDAuMTg0IDAuMzMtMC4wOTEtMC4xNzctMC41NzgtMC43NzMtMS4xNC0yLjQzLTIuMjk1LTAuOTcyLTAuNjc4LTAuOTgyLTAuNjUzIDAuMzE2LTAuNzgyIDAuOTI2LTAuMDkyIDEuMzkzLTAuMjUgMS4zOTMtMC40NzIgMC0wLjEwMi0wLjQ3LTAuNjQ0LTEuMDQ1LTEuMjAzLTAuOS0wLjg3Ny0xLjIwNC0xLjA5NC0yLjE5NS0xLjU3Ny0xLjM1LTAuNjU2LTEuODQyLTEuMTc3LTIuMTUzLTIuMjgzLTAuNDY0LTEuNjUtMS43MTItMy41ODctMy4zNzEtNS4yMy0xLjcxMi0xLjY5NjUtMy4zNDctMi42MzQ1LTQuODQ1LTIuNzgxNS0wLjYwOS0wLjA1OTgtMC45MjQtMC4xNTIyLTEuMjM5LTAuMzY1My0wLjUzMzItMC4zNjExLTEuNzcxNy0wLjc2ODQtMi4zNzY2LTAuNzgxMnptMi45NjI2IDMuMDAyYy0wLjEyMi0wLjAwNzktMC4yMjkgMC4wMDgtMC4zMDIgMC4wNTktMC4yNzQgMC4xODctMC4yNDEgMC40MTUgMC4wOCAwLjU1NiAwLjE1MSAwLjA2NyAwLjM2NSAwLjMwMiAwLjQ3NiAwLjUyMiAwLjM3NSAwLjczOSAwLjk1IDAuMjQ0IDAuNjk0LTAuNTk4LTAuMDgxLTAuMjY1LTAuNTgtMC41MTUtMC45NDgtMC41Mzl6Ii8+CiA8cGF0aCBmaWxsPSIjZmZmIiBvcGFjaXR5PSIuMSIgZD0ibTMuNDAwNCAyYy0wLjc3NTYgMC0xLjQwMDQgMC42MjQ4LTEuNDAwNCAxLjQwMDR2MWMwLTAuNzc1NiAwLjYyNDgtMS40MDA0IDEuNDAwNC0xLjQwMDRoMjUuMmMwLjc3NSAwIDEuNCAwLjYyNDggMS40IDEuNDAwNHYtMWMwLTAuNzc1Ni0wLjYyNS0xLjQwMDQtMS40LTEuNDAwNGgtMjUuMnoiLz4KIDxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJtMiAyOC42djFjMCAwLjc3NSAwLjYyNDggMS40IDEuNDAwNCAxLjRoMjUuMmMwLjc3NSAwIDEuNC0wLjYyNSAxLjQtMS40di0xYzAgMC43NzUtMC42MjUgMS40LTEuNCAxLjRoLTI1LjJjLTAuNzc1MiAwLTEuNC0wLjYyNS0xLjQtMS40eiIvPgo8L3N2Zz4K" - camel.apache.org/provider: "Red Hat" - 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. - - 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: - title: Server Name - description: Server Name for the data source - type: string - example: localhost - serverPort: - title: Server Port - description: Server Port for the data source - type: string - default: 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 - - urn:camel:group:credentials - query: - 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 - type: string - types: - in: - mediaType: application/json - dependencies: - - "camel:jackson" - - "camel:kamelet" - - "camel:sql" - - "mvn:org.apache.commons:commons-dbcp2:2.7.0" - - "mvn:mysql:mysql-connector-java" - template: - 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}}:{{serverPort}}/{{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}}" diff --git a/pom.xml b/pom.xml index f6def6c47..03547a700 100644 --- a/pom.xml +++ b/pom.xml @@ -21,19 +21,20 @@ 4.0.0 - org.apache - apache - 23 + org.apache.camel + camel-dependencies + 4.0.3 org.apache.camel.kamelets camel-kamelets-parent pom - 2.2.0 + 2.2.0-SNAPSHOT Camel Kamelets Parent Camel Kamelets Library Parent + library/camel-kamelets library/camel-kamelets-catalog library/kamelets-maven-plugin library/camel-kamelets-utils @@ -47,30 +48,28 @@ false UTF-8 2.1.1 - 1.6 - 3.0.0-M1 - 3.0.0-M4 - 3.1.1 - 3.1.1 - 3.1.0 - 1.7 + 3.0.1 + 3.0.0 + 3.1.2 + 3.6.0 + 3.2.1 + 1.11 - 3.18.3 - 2.17.2 - 2.14.2 - 5.12.1 - 2.11.0 - 5.8.1 - 4.8.138 + + 4.0.3 + 2.2.0 + io.quarkus.platform + + 3.2.9.Final - 9.2.1.jre11 - 2.7.0 - 0.55.0 - 42.5.1 - 2.1.0.5 - 9.2.5.0 + 11.2.3.jre17 + 2.10.0 + 2.4.0 + 42.6.0 + 2.1.0.18 + 9.3.4.1 @@ -257,10 +256,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 8 - 8 - org.codehaus.gmaven @@ -284,7 +279,7 @@ - --add-opens java.base/java.lang=ALL-UNNAMED + ${project.basedir}/script/version diff --git a/predicate-filter-action.kamelet.yaml b/predicate-filter-action.kamelet.yaml deleted file mode 100644 index 67f7381bf..000000000 --- a/predicate-filter-action.kamelet.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: predicate-filter-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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/' - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - - "camel:jsonpath" - template: - from: - uri: kamelet:source - steps: - - filter: - jsonpath: "$[?(!({{expression}}))]" - steps: - - stop: {} diff --git a/protobuf-deserialize-action.kamelet.yaml b/protobuf-deserialize-action.kamelet.yaml deleted file mode 100644 index 3d6bedc5e..000000000 --- a/protobuf-deserialize-action.kamelet.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: protobuf-deserialize-action - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" - - "camel:kamelet" - - "camel:core" - - "camel:jackson-protobuf" - template: - from: - uri: kamelet:source - steps: - - set-property: - name: schema - constant: "{{schema}}" - - unmarshal: - protobuf: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" - - remove-property: - name: schema - - remove-header: - name: "Content-Type" diff --git a/protobuf-serialize-action.kamelet.yaml b/protobuf-serialize-action.kamelet.yaml deleted file mode 100644 index 8320fccd6..000000000 --- a/protobuf-serialize-action.kamelet.yaml +++ /dev/null @@ -1,46 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: protobuf-serialize-action - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" - - "camel:kamelet" - - "camel:core" - - "camel:jackson-protobuf" - template: - from: - uri: kamelet:source - steps: - - set-property: - name: schema - constant: "{{schema}}" - - marshal: - protobuf: - library: Jackson - unmarshalType: com.fasterxml.jackson.databind.JsonNode - schemaResolver: "#class:org.apache.camel.kamelets.utils.serialization.InflightProtobufSchemaResolver" - - remove-property: - name: schema - - set-header: - name: "Content-Type" - constant: "application/protobuf" diff --git a/regex-router-action.kamelet.yaml b/regex-router-action.kamelet.yaml deleted file mode 100644 index 14e80b7e4..000000000 --- a/regex-router-action.kamelet.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: regex-router-action - labels: - camel.apache.org/kamelet.type: "action" - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "Actions" -spec: - definition: - title: "Regex Router Action" - description: "Update the destination using the configured regular expression and replacement string" - required: - - regex - - replacement - properties: - regex: - title: Regex - description: Regular Expression for destination - type: string - replacement: - title: Replacement - description: Replacement when matching - type: string - type: object - dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" - - "camel:kamelet" - - "camel:core" - template: - from: - uri: kamelet:source - steps: - - set-property: - name: "regex" - constant: "{{regex}}" - - set-property: - name: "replacement" - constant: "{{replacement}}" - - bean: "org.apache.camel.kamelets.utils.transform.RegexRouter" diff --git a/script/generator/generator.go b/script/generator/generator.go index de0d4d600..8f5803223 100644 --- a/script/generator/generator.go +++ b/script/generator/generator.go @@ -17,7 +17,7 @@ import ( "strings" "text/template" - camel "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" + camel "github.com/apache/camel-k/v2/pkg/apis/camel/v1" "github.com/iancoleman/strcase" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" @@ -66,7 +66,7 @@ func main() { coreYamlTemplate, err := template.New("kamelet-core-binding.yaml.tmpl").Funcs(funcMap).ParseFiles(coreYamlTemplateFile, kameletBindingFile, parameterListFile) handleGeneralError(fmt.Sprintf("cannot load template file from %s", templateFile), err) - kamelets := listKamelets(projectBaseDir) + kamelets := listKamelets(filepath.Join(projectBaseDir, "kamelets")) links := make([]string, 0) for _, k := range kamelets { @@ -75,7 +75,7 @@ func main() { ctx := NewTemplateContext(k, img) // check if the kamelet binding example should be generated - bindingFile := path.Join(projectBaseDir, "templates/bindings/camel-k", k.Name + "-binding.yaml") + bindingFile := path.Join(projectBaseDir, "templates/bindings/camel-k", k.Name+"-binding.yaml") generateExampleBinding = shouldGenerateKameletBindingExample(bindingFile) ctx.SetVal("GenerateExampleBinding", strconv.FormatBool(generateExampleBinding)) @@ -120,15 +120,15 @@ func updateImageLink(k camel.Kamelet, img string, links []string) []string { } type TemplateContext struct { - Kamelet camel.Kamelet - Image string + Kamelet camel.Kamelet + Image string TemplateProperties map[string]string } func NewTemplateContext(kamelet camel.Kamelet, image string) TemplateContext { return TemplateContext{ - Kamelet: kamelet, - Image: image, + Kamelet: kamelet, + Image: image, TemplateProperties: map[string]string{}, } } @@ -218,10 +218,10 @@ func (ctx *TemplateContext) PropertyList() string { sampleConfig = append(sampleConfig, fmt.Sprintf("%s: %s", key, ex)) } } - + /* - Creates the properties list in the YAML format. - */ + Creates the properties list in the YAML format. + */ props := "" if len(sampleConfig) > 0 { props = fmt.Sprintf("\n %s:\n %s", "properties", strings.Join(sampleConfig, "\n ")) @@ -360,7 +360,7 @@ func (ctx *TemplateContext) GenerateExampleBinding() bool { // this is called from kamelet.adoc.tmpl to source the kamelet binding example from a file // skip the first line and replace the sink kind when the kind is a knative channel func (ctx *TemplateContext) ReadKameletBindingExample(kameletName string) string { - f := path.Join(projectBaseDir, "templates/bindings/camel-k/", kameletName + "-binding.yaml") + f := path.Join(projectBaseDir, "templates/bindings/camel-k/", kameletName+"-binding.yaml") file, _ := os.Open(f) defer file.Close() // skip the first line, as it contains the comment marker @@ -381,7 +381,7 @@ func (ctx *TemplateContext) ReadKameletBindingExample(kameletName string) string // this is called from kamelet.adoc.tmpl to source the "kamel bind" command example from the kamelet binding example file // replace the sink kind when the kind is a knative channel func (ctx *TemplateContext) ReadKamelBindExample(kameletName string, ref string) string { - f := path.Join(projectBaseDir, "templates/bindings/camel-k/", kameletName + "-binding.yaml") + f := path.Join(projectBaseDir, "templates/bindings/camel-k/", kameletName+"-binding.yaml") file, _ := os.Open(f) defer file.Close() // skip the first line, as it contains the comment marker @@ -433,17 +433,17 @@ func saveImage(k camel.Kamelet, out string) string { func produceDocFile(k camel.Kamelet, baseDir string, content string) { outputDir := filepath.Join(baseDir, "pages") - produceOutputFile(k, outputDir, content,".adoc") + produceOutputFile(k, outputDir, content, ".adoc") } func produceBindingFile(k camel.Kamelet, baseDir string, projectName string, content string) { camelKOutputDir := filepath.Join(baseDir, "templates", "bindings", projectName) - produceOutputFile(k, camelKOutputDir, content,"-binding.yaml") + produceOutputFile(k, camelKOutputDir, content, "-binding.yaml") } func produceOutputFile(k camel.Kamelet, outputDir string, content string, extension string) { - outputFile := filepath.Join(outputDir, k.Name + extension) + outputFile := filepath.Join(outputDir, k.Name+extension) if _, err := os.Stat(outputFile); err == nil { err = os.Remove(outputFile) handleGeneralError(fmt.Sprintf("cannot remove file %q", outputFile), err) diff --git a/script/generator/go.mod b/script/generator/go.mod index a7b074634..405d7c291 100644 --- a/script/generator/go.mod +++ b/script/generator/go.mod @@ -1,9 +1,29 @@ module github.com/apache/camel-kamelets/docs/generator -go 1.14 +go 1.20 require ( - github.com/apache/camel-k/pkg/apis/camel v1.4.0 + github.com/apache/camel-k/v2 v2.2.0 github.com/iancoleman/strcase v0.1.3 - k8s.io/apimachinery v0.19.8 + k8s.io/apimachinery v0.27.7 +) + +require ( + github.com/go-logr/logr v1.3.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/imdario/mergo v0.3.13 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/text v0.14.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + k8s.io/api v0.27.7 // indirect + k8s.io/klog/v2 v2.110.1 // indirect + k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/script/generator/go.sum b/script/generator/go.sum index f657a0153..3bc08ffd5 100644 --- a/script/generator/go.sum +++ b/script/generator/go.sum @@ -1,176 +1,90 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/apache/camel-k/pkg/apis/camel v1.4.0 h1:iXa6uCVvMUItFejc+7WuLvcRyfQaRYWtg+9pEexgcM8= -github.com/apache/camel-k/pkg/apis/camel v1.4.0/go.mod h1:uv2KugsT0kfLiRJZS15UqQ3gHsvuhmOax9+0Rs9L1wY= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/apache/camel-k/v2 v2.2.0 h1:CfkGyktRvwfEqag0ET6ctkLCdO9edHVGYPrmMCE0wp4= +github.com/apache/camel-k/v2 v2.2.0/go.mod h1:pNFotFFhljq+p3qqu/WzEuN0MRrJn6bR47mmmUF/hIs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/iancoleman/strcase v0.1.3 h1:dJBk1m2/qjL1twPLf68JND55vvivMupZ4wIzE8CTdBw= github.com/iancoleman/strcase v0.1.3/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.19.8 h1:U50vBUCb5kc2J483mnITLKfdyoITaC7PnaOJwT7oRRM= -k8s.io/api v0.19.8/go.mod h1:9TMGoKoidvicOK0LSqj+Mj98pugQycbViPKyZHqutBc= -k8s.io/apimachinery v0.19.8 h1:MaehcNcx8brsgvMsqspcI0bi22E1np/DACnjf2mhJ5A= -k8s.io/apimachinery v0.19.8/go.mod h1:6sRbGRAVY5DOCuZwB5XkqguBqpqLU6q/kOaOdk29z6Q= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +k8s.io/api v0.27.7 h1:7yG4D3t/q4utJe2ptlRw9aPuxcSmroTsYxsofkQNl/A= +k8s.io/api v0.27.7/go.mod h1:ZNExI/Lhrs9YrLgVWx6jjHZdoWCTXfBXuFjt1X6olro= +k8s.io/apimachinery v0.27.7 h1:Gxgtb7Y/Rsu8ymgmUEaiErkxa6RY4oTd8kNUI6SUR58= +k8s.io/apimachinery v0.27.7/go.mod h1:jBGQgTjkw99ef6q5hv1YurDd3BqKDk9YRxmX0Ozo0i8= +k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= +k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= +k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= +k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/script/validator/README.md b/script/validator/README.md index 32c3a1d7c..f529a534a 100644 --- a/script/validator/README.md +++ b/script/validator/README.md @@ -4,5 +4,5 @@ To validate the Kamelets: ``` # From the script/validator directory -go run . ../../ +go run . ../../kamelets ``` diff --git a/script/validator/go.mod b/script/validator/go.mod index 0ee0fecc1..27c3faa51 100644 --- a/script/validator/go.mod +++ b/script/validator/go.mod @@ -1,19 +1,109 @@ module github.com/apache/camel-kamelets/docs/generator -go 1.15 +go 1.20 require ( - github.com/apache/camel-k v1.6.0 - github.com/apache/camel-k/pkg/apis/camel v1.6.0 + github.com/apache/camel-k/v2 v2.2.0 github.com/bbalet/stopwords v1.0.0 github.com/pkg/errors v0.9.1 - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b - k8s.io/apimachinery v0.21.4 - k8s.io/client-go v12.0.0+incompatible // indirect + gopkg.in/yaml.v3 v3.0.1 + k8s.io/apimachinery v0.27.7 ) -replace ( - k8s.io/api => k8s.io/api v0.19.8 - k8s.io/apimachinery => k8s.io/apimachinery v0.19.8 - k8s.io/client-go => k8s.io/client-go v0.19.8 +require ( + contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d // indirect + contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/blang/semver/v4 v4.0.0 // indirect + github.com/blendle/zapdriver v1.3.1 // indirect + github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cloudevents/sdk-go/sql/v2 v2.13.0 // indirect + github.com/cloudevents/sdk-go/v2 v2.13.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.10.2 // indirect + github.com/evanphx/json-patch v5.7.0+incompatible // indirect + github.com/evanphx/json-patch/v5 v5.7.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.5.1 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/zapr v1.2.4 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.1 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/gnostic v0.6.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-containerregistry v0.16.1 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/uuid v1.5.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/imdario/mergo v0.3.13 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/kelseyhightower/envconfig v1.4.0 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect + github.com/moby/spdystream v0.2.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/openshift/api v0.0.0-20230817133225-564be9ddb58e // indirect + github.com/operator-framework/api v0.20.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.67.1 // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.45.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect + github.com/prometheus/statsd_exporter v0.22.7 // indirect + github.com/rickb777/date v1.13.0 // indirect + github.com/rickb777/plural v1.2.1 // indirect + github.com/robfig/cron/v3 v3.0.1 // indirect + github.com/rs/xid v1.5.0 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/stoewer/go-strcase v1.3.0 // indirect + github.com/stretchr/testify v1.8.4 // indirect + go.opencensus.io v0.24.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/oauth2 v0.15.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/time v0.5.0 // indirect + gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect + google.golang.org/api v0.153.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect + google.golang.org/grpc v1.59.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + k8s.io/api v0.27.7 // indirect + k8s.io/client-go v0.27.7 // indirect + k8s.io/component-base v0.27.7 // indirect + k8s.io/klog/v2 v2.110.1 // indirect + k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect + k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect + knative.dev/eventing v0.39.1 // indirect + knative.dev/networking v0.0.0-20231017124814-2a7676e912b7 // indirect + knative.dev/pkg v0.0.0-20231023151236-29775d7c9e5c // indirect + knative.dev/serving v0.39.2 // indirect + sigs.k8s.io/controller-runtime v0.15.2 // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/script/validator/go.sum b/script/validator/go.sum index 2bfdcad70..d37c20f9c 100644 --- a/script/validator/go.sum +++ b/script/validator/go.sum @@ -1,4 +1,3 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -7,7 +6,6 @@ cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxK cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= @@ -15,8 +13,6 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -25,7 +21,6 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -37,415 +32,117 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d h1:LblfooH1lKOpp1hIhukktmSAxFkqMPFk9KR6iZ0MJNI= contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d/go.mod h1:IshRmMJBhDfFj5Y67nVhMYTTIze91RUeT73ipWKs/GY= -contrib.go.opencensus.io/exporter/prometheus v0.3.0 h1:08FMdJYpItzsknogU6PiiNo7XQZg/25GjH236+YCwD0= -contrib.go.opencensus.io/exporter/prometheus v0.3.0/go.mod h1:rpCPVQKhiyH8oomWgm34ZmgIdZa8OVYO5WAIygPbBBE= -contrib.go.opencensus.io/exporter/stackdriver v0.13.5 h1:TNaexHK16gPUoc7uzELKOU7JULqccn1NDuqUxmxSqfo= -contrib.go.opencensus.io/exporter/stackdriver v0.13.5/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= -contrib.go.opencensus.io/exporter/zipkin v0.1.2/go.mod h1:mP5xM3rrgOjpn79MM8fZbj3gsxcuytSqtH0dxSWW1RE= +contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= +contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v43.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v50.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= -github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/adal v0.9.10/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= -github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= -github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= -github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20200415212048-7901bc822317/go.mod h1:DF8FZRxMHMGv/vP2lQP6h+dYzzjpuRn24VeRiYn3qjQ= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= -github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= -github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= -github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= -github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= -github.com/ahmetb/gen-crd-api-reference-docs v0.3.1-0.20210420163308-c1402a70e2f1/go.mod h1:TdjdkYhlOifCQWPs1UdTma97kQQMozf5h26hTuG70u8= -github.com/alecthomas/jsonschema v0.0.0-20180308105923-f2c93856175a/go.mod h1:qpebaTNSsyUn5rPSJMsfqEtDw71TTggXM6stUDI16HA= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/camel-k v1.6.0 h1:yFb5/X5N9kjbx5BNUzuixNL3YIyyB86eyGJbEi2+bWk= -github.com/apache/camel-k v1.6.0/go.mod h1:N/5NifRKwjsy9265l1OQIpppxY4UdzkMBZUwTaYIBZc= -github.com/apache/camel-k/pkg/apis/camel v1.6.0 h1:Tn/0cfrxqBlXWQ7i1yuZkmyae8QocA25/axqF/GDOgM= -github.com/apache/camel-k/pkg/apis/camel v1.6.0/go.mod h1:Hhz357DYpDkok7owIXAsn0RKfZwQmL+3rCiNu8jqkpY= -github.com/apache/camel-k/pkg/client/camel v1.6.0 h1:01xpmflh1uyBUBk93gsAr6wzgzza1o1E54xaxYj4yQQ= -github.com/apache/camel-k/pkg/client/camel v1.6.0/go.mod h1:gRtr2SaPYNz2cF60nHmw3BjJW+2ZiM5vSW4lcKXQJYI= -github.com/apache/camel-k/pkg/kamelet/repository v1.6.0/go.mod h1:X6RSSqQgiBJ8RNic3JfRczDJw7SsQ9yjc8XWPLgmaJQ= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.31.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.37.1 h1:BTHmuN+gzhxkvU9sac2tZvaY0gV9ihbHw+KxZOecYvY= -github.com/aws/aws-sdk-go v1.37.1/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= +github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/apache/camel-k/v2 v2.2.0 h1:CfkGyktRvwfEqag0ET6ctkLCdO9edHVGYPrmMCE0wp4= +github.com/apache/camel-k/v2 v2.2.0/go.mod h1:pNFotFFhljq+p3qqu/WzEuN0MRrJn6bR47mmmUF/hIs= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/bbalet/stopwords v1.0.0 h1:0TnGycCtY0zZi4ltKoOGRFIlZHv0WqpoIGUsObjztfo= github.com/bbalet/stopwords v1.0.0/go.mod h1:sAWrQoDMfqARGIn4s6dp7OW7ISrshUD8IP2q3KoqPjc= -github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q= -github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= -github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= -github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudevents/conformance v0.2.0/go.mod h1:rHKDwylBH89Rns6U3wL9ww8bg9/4GbwRCDNuyoC6bcc= -github.com/cloudevents/sdk-go/observability/opencensus/v2 v2.4.1/go.mod h1:lhEpxMrIUkeu9rVRgoAbyqZ8GR8Hd3DUy+thHUxAHoI= -github.com/cloudevents/sdk-go/v2 v2.4.1 h1:rZJoz9QVLbWQmnvLPDFEmv17Czu+CfSPwMO6lhJ72xQ= -github.com/cloudevents/sdk-go/v2 v2.4.1/go.mod h1:MZiMwmAh5tGj+fPFvtHv9hKurKqXtdB9haJYMJ/7GJY= +github.com/cloudevents/sdk-go/sql/v2 v2.13.0 h1:gMJvQ3XFkygY9JmrusgK80d9yRAb8+J3X8IA1OC+oc0= +github.com/cloudevents/sdk-go/sql/v2 v2.13.0/go.mod h1:XZRQBCgRreddIpQrdjBJQUrRg3BCs3aikplJQkHrK44= +github.com/cloudevents/sdk-go/v2 v2.13.0 h1:2zxDS8RyY1/wVPULGGbdgniGXSzLaRJVl136fLXGsYw= +github.com/cloudevents/sdk-go/v2 v2.13.0/go.mod h1:xDmKfzNjM8gBvjaF8ijFjM1VYOVUEeUfapHMUX1T5To= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/container-tools/spectrum v0.3.4/go.mod h1:hsogRHNfGQLysCyDiGT4SAioTS8LGLbyC4b0Ep2Iw+o= -github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= -github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= -github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= -github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= -github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= -github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= -github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= -github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= -github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= -github.com/containerd/stargz-snapshotter/estargz v0.0.0-20201223015020-a9a0c2d64694/go.mod h1:E9uVkkBKf0EaC39j2JVW9EzdNhYvpz6eQIjILHebruk= -github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= -github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= -github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= -github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= -github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= -github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= -github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= -github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= -github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-gk v0.0.0-20140819190930-201884a44051/go.mod h1:qm+vckxRlDt0aOla0RYJJVeqHZlWfOm2UIxHaqPB46E= -github.com/dgryski/go-gk v0.0.0-20200319235926-a69029f61654/go.mod h1:qm+vckxRlDt0aOla0RYJJVeqHZlWfOm2UIxHaqPB46E= -github.com/dgryski/go-lttb v0.0.0-20180810165845-318fcdf10a77/go.mod h1:Va5MyIzkU0rAM92tn3hb3Anb7oz7KcnixF49+2wOMe4= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v20.10.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= -github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.15.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/emicklei/go-restful/v3 v3.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= +github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA= -github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= +github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc= +github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= -github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/gertd/go-pluralize v0.1.1/go.mod h1:t5DfHcumb6m0RqyVJDrDLEzL2AGeaiqUXIcDNwLaeAs= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-bindata/go-bindata/v3 v3.1.3/go.mod h1:1/zrpXsLD8YDIbhZRqXzm1Ghc7NhEvIN9+Z6R5/xH4I= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= -github.com/go-logr/zapr v0.3.0 h1:iyiCRZ29uPmbO7mWIjOEiYMXrTxZWTyK4tCatLyGpUY= -github.com/go-logr/zapr v0.3.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= -github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= -github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/spec v0.19.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/spec v0.20.2/go.mod h1:RW6Xcbs6LOyWLU/mXGdzn2Qc+3aj+ASfI7rvSZh1Vls= -github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= -github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= +github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= +github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80= -github.com/gobuffalo/flect v0.2.2/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= -github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= -github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -453,8 +150,6 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -470,23 +165,13 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= -github.com/golangplus/fmt v1.0.0/go.mod h1:zpM0OfbMCjPtd2qkTD/jX2MgiFCqklhSUFyDW44gVQE= -github.com/golangplus/testing v1.0.0/go.mod h1:ZDreixUV3YzhoVraIDyOzHrr76p6NUh6k/pPg/Q3gYA= -github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= -github.com/gonum/diff v0.0.0-20181124234638-500114f11e71/go.mod h1:22dM4PLscQl+Nzf64qNBurVJvfyvZELT0iRW2l/NN70= -github.com/gonum/floats v0.0.0-20181209220543-c233463c7e82/go.mod h1:PxC8OnwL11+aosOB5+iEPoV3picfs8tUpkVd0pDo+Kg= -github.com/gonum/integrate v0.0.0-20181209220457-a422b5c0fdf2/go.mod h1:pDgmNM6seYpwvPos3q+zxlXMsbve6mOIPucUnUOrI7Y= -github.com/gonum/internal v0.0.0-20181124074243-f884aa714029/go.mod h1:Pu4dmpkhSyOzRwuXkOgAvijx4o+4YMUJJo9OvPYMkks= -github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9/go.mod h1:XA3DeT6rxh2EAE789SSiSJNqxPaC0aE9J8NTOI0Jo/A= -github.com/gonum/mathext v0.0.0-20181121095525-8a4bf007ea55/go.mod h1:fmo8aiSEWkJeiGXUJf+sPvuDgEFgqIoZSs843ePKrGg= -github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9/go.mod h1:0EXg4mc1CNP0HCqCz+K4ts155PXIlUywf0wqN+GfPZw= -github.com/gonum/stat v0.0.0-20181125101827-41a0da705a5b/go.mod h1:Z4GIJBJO3Wa4gD4vbwQxXXZ+WHmW6E9ixmNrwvs0iZs= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= +github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -494,29 +179,20 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-containerregistry v0.0.0-20200220215334-221517453cf9/go.mod h1:m8YvHwSOuBCq25yrj1DaX/fIMrv6ec3CNg8jY8+5PEA= -github.com/google/go-containerregistry v0.4.1-0.20210128200529-19c2b639fab1/go.mod h1:GU9FUA/X9rd2cV3ZoUNaWihp27tki6/38EsVzL2Dyzc= -github.com/google/go-containerregistry v0.5.0 h1:eb9sinv4PKm0AUwQGov0mvIdA4pyBGjRofxN4tWnMwM= -github.com/google/go-containerregistry v0.5.0/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= -github.com/google/go-containerregistry/pkg/authn/k8schain v0.0.0-20210430144454-9cf3ed4ac182/go.mod h1:n9wRxRfKkHy6ZFyj0jJQHw11P+mGLnED4sqegwrXxDk= -github.com/google/go-github/v27 v27.0.6/go.mod h1:/0Gr8pJ55COkmv+S/yPKCczSkUPIM/LnFyubufRNIS0= -github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-containerregistry v0.16.1 h1:rUEt426sR6nyrL3gt+18ibRcvYpKYdpsa5ZW7MA08dQ= +github.com/google/go-containerregistry v0.16.1/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/licenseclassifier v0.0.0-20200708223521-3d09a0ea2f39/go.mod h1:qsqn2hxC+vURpyBRygGUuinTO42MFRLcsmQ/P8v94+M= -github.com/google/mako v0.0.0-20190821191249-122f8dcef9e3/go.mod h1:YzLcVlL+NqWnmUEPuhS1LxDDwGO9WNbVlEXaF4IH35g= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -524,546 +200,205 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= +github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/googleapis/gnostic v0.5.3 h1:2qsuRm+bzgwSIKikigPASa2GhW8H2Dn4Qq7UxD8K/48= -github.com/googleapis/gnostic v0.5.3/go.mod h1:TRWw1s4gxBGjSe301Dai3c7wXJAZy57+/6tawkOvqHQ= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= -github.com/grpc-ecosystem/grpc-gateway v1.14.8 h1:hXClj+iFpmLM8i3lkO6i4Psli4P2qObQuQReiII26U8= -github.com/grpc-ecosystem/grpc-gateway v1.14.8/go.mod h1:NZE8t6vs6TnwLL/ITkaK8W3ecMLGAbh2jXTclvpiwYo= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-retryablehttp v0.6.7/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 h1:lLT7ZLSzGLI08vc9cpd+tYmNWjdKDqyr/2L+f6U12Fk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10 h1:6q5mVkdH/vYmqngx7kZQTjJ5HRsx+ImorDIEQ+beJgc= -github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/tdigest v0.0.0-20180711151920-a7d76c6f093a/go.mod h1:9GkyshztGufsdPQWjH+ifgnIr3xNUL5syI70g2dzU1o= -github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= -github.com/influxdata/tdigest v0.0.0-20191024211133-5d87a7585faa/go.mod h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y= -github.com/influxdata/tdigest v0.0.1/go.mod h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y= -github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lightstep/tracecontext.go v0.0.0-20181129014701-1757c391b1ac/go.mod h1:Frd2bnT3w5FB5q49ENTfVlztJES+1k/7lyWX2+9gq/M= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.1-0.20191009090205-6c0755d89d1e/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.17/go.mod h1:WgzbA6oji13JREwiNsRDNfl7jYdPnmz+VEuLrA+/48M= -github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/mikefarah/yaml/v2 v2.4.0/go.mod h1:ahVqZF4n1W4NqwvVnZzC4es67xsW9uR/RRf2RRxieJU= -github.com/mikefarah/yq/v2 v2.4.1/go.mod h1:i8SYf1XdgUvY2OFwSqGAtWOOgimD2McJ6iutoxRm4k0= -github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= +github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M= -github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/onsi/gomega v1.10.4 h1:NiTx7EEvBzu9sFOD1zORteLSt3o8gnlvZZwSE9TnY9U= -github.com/onsi/gomega v1.10.4/go.mod h1:g/HbgYopi++010VEqkFgJHKC09uJiW9UkXvMUuKHUCQ= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= -github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= -github.com/openshift/api v3.9.1-0.20190927182313-d4a64ec2cbd8+incompatible h1:YwFnUQ5RQ17CmkxHyjpQnWAQOGkLKXY0shOUEyqaCGk= -github.com/openshift/api v3.9.1-0.20190927182313-d4a64ec2cbd8+incompatible/go.mod h1:dh9o4Fs58gpFXGSYfnVxGR9PnV53I8TW84pQaJDdGiY= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= -github.com/operator-framework/api v0.3.8 h1:tJykTCmwGKZBsPVTCfxbwz6nTF6dzmKydWJtC40erc8= -github.com/operator-framework/api v0.3.8/go.mod h1:Xbje9x0SHmh0nihE21kpesB38vk3cyxnE6JdDS8Jo1Q= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/openshift/api v0.0.0-20230817133225-564be9ddb58e h1:Hbw58VzpO9SktwYwXhiiubgvGmNTNeK6mxGtjPQ0uy4= +github.com/openshift/api v0.0.0-20230817133225-564be9ddb58e/go.mod h1:aQ6LDasvHMvHZXqLHnX2GRmnfTWCF/iIwz8EMTTIE9A= +github.com/operator-framework/api v0.20.0 h1:A2YCRhr+6s0k3pRJacnwjh1Ue8BqjIGuQ2jvPg9XCB4= +github.com/operator-framework/api v0.20.0/go.mod h1:rXPOhrQ6mMeXqCmpDgt1ALoar9ZlHL+Iy5qut9R99a4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.42.1 h1:/CZyIylkTNOiVdzTtHwkTHTMOCGJXuLtu3ZLAQrH4u0= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.42.1/go.mod h1:iIz0gzBgsmUvH3POupwMevtm74XmRcEBx8w/tE3sl4k= -github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.67.1 h1:u1Mw9irznvsBPxQxjUmCel1ufP3UgzA1CILj7/2tpNw= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.67.1/go.mod h1:KZHvrby65G+rA4V/vMTUXDV22TI+GgLIrCigYClpjzk= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= -github.com/prometheus/client_golang v1.10.0 h1:/o0BDeWzLWXNZ+4q5gXltUvaMpJqckTa+jTNoB+z4cg= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.20.0 h1:pfeDeUdQcIxOMutNjCejsEFp7qeP+/iltHSSmLpE+hU= -github.com/prometheus/common v0.20.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/statsd_exporter v0.20.0 h1:M0hQphnq2WyWKS5CefQL8PqWwBOBPhiAkyLo5l4ZYvE= -github.com/prometheus/statsd_exporter v0.20.0/go.mod h1:YL3FWCG8JBBtaUSxAg4Gz2ZYu22bS84XM89ZQXXTWmQ= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/radovskyb/watcher v1.0.6/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/redhat-developer/service-binding-operator v0.8.0 h1:33nrUwKm+Osr8I/g9qZZ6Hf41dfePfZndS02/xyAYiI= -github.com/redhat-developer/service-binding-operator v0.8.0/go.mod h1:Z3fFouJGqy08JVWBFgb9ZyDcddcqx+AUIuMOeMFU8pQ= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= +github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= github.com/rickb777/date v1.13.0 h1:+8AmwLuY1d/rldzdqvqTEg7107bZ8clW37x4nsdG3Hs= github.com/rickb777/date v1.13.0/go.mod h1:GZf3LoGnxPWjX+/1TXOuzHefZFDovTyNLHDMd3qH70k= github.com/rickb777/plural v1.2.1 h1:UitRAgR70+yHFt26Tmj/F9dU9aV6UfjGXSbO1DcC9/U= github.com/rickb777/plural v1.2.1/go.mod h1:j058+3M5QQFgcZZ2oKIOekcygoZUL8gKW5yRO14BuAw= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rs/dnscache v0.0.0-20210201191234-295bba877686/go.mod h1:qe5TWALJ8/a1Lqznoc5BDHpYX/8HU60Hm2AwRmqzxqA= -github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= -github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= -github.com/scylladb/go-set v1.0.2 h1:SkvlMCKhP0wyyct6j+0IHJkBkSZL+TDzZ4E7f7BCcRE= -github.com/scylladb/go-set v1.0.2/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/sqs/goreturns v0.0.0-20181028201513-538ac6014518/go.mod h1:CKI4AZ4XmGV240rTHfO0hfE83S6/a3/Q1siZJ/vXf7A= -github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/streadway/quantile v0.0.0-20150917103942-b0c588724d25/go.mod h1:lbP8tGiBjZ5YWIc2fzuRpTaz0b/53vT6PEs3QuAWzuU= -github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= +github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tsenart/go-tsz v0.0.0-20180814232043-cdeb9e1e981e/go.mod h1:SWZznP1z5Ki7hDT2ioqiFKEse8K9tU2OUvaRI0NeGQo= -github.com/tsenart/go-tsz v0.0.0-20180814235614-0bd30b3df1c3/go.mod h1:SWZznP1z5Ki7hDT2ioqiFKEse8K9tU2OUvaRI0NeGQo= -github.com/tsenart/vegeta v12.7.1-0.20190725001342-b5f4fca92137+incompatible/go.mod h1:Smz/ZWfhKRcyDDChZkG3CyTHdj87lHzio/HOCkbndXM= -github.com/tsenart/vegeta/v12 v12.8.4/go.mod h1:ZiJtwLn/9M4fTPdMY7bdbIeyNeFVE8/AHbWFqCsUuho= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44238/go.mod h1:JwQJCMWpUDqjZrB5jpw0f5VbN7U95zxFy1ZDpoEarGo= -github.com/vdemeester/k8s-pkg-credentialprovider v1.19.7/go.mod h1:K2nMO14cgZitdwBqdQps9tInJgcaXcU/7q5F59lpbNI= -github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= -github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= -github.com/wavesoftware/go-ensure v1.0.0/go.mod h1:K2UAFSwMTvpiRGay/M3aEYYuurcR8S4A6HkQlJPV8k4= -github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/otel v0.16.0/go.mod h1:e4GKElweB8W2gWUqbghw0B8t5MCTccc9212eNHnOHwA= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.8.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210415154028-4f45737414dc h1:+q90ECDSAQirdykUN6sPEiBXBsp8Csjcca8Oy7bgLTA= -golang.org/x/crypto v0.0.0-20210415154028-4f45737414dc/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= @@ -1084,8 +419,6 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -1094,40 +427,24 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1143,27 +460,24 @@ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210415231046-e915ea6b2b7d h1:BgJvlyh+UqCUaPlscHJ+PN8GcpfrFdr7NHjd1JL0+Gs= -golang.org/x/net v0.0.0-20210415231046-e915ea6b2b7d/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78 h1:rPRtHfUb0UKZeZ6GH4K4Nt4YRbE9V1u+QZX5upZXqJQ= -golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= +golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1174,165 +488,105 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44 h1:Bli41pIlzTzf3KEY06n+xnzK/BESIg2ze4Pgfh/aI8c= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf h1:MZ2shdL+ZM/XzY3ZGOnh4Nlpnxz5GSOhOmtHo3iPU6M= -golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191030203535-5e247c9ad0a0/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200210192313-1ace956b0e17/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1340,49 +594,30 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512001501-aaeff5de670a/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= -gomodules.xyz/jsonpatch/v2 v2.1.0 h1:Phva6wqu+xR//Njw6iorylFFgn/z547tw5Ne3HZPQ+k= -gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= -google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= +gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.1-0.20200106000736-b8fc810ca6b5/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.1/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= @@ -1393,27 +628,21 @@ google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0 h1:l2Nfbl2GPXdWorv+dT2XfinX2jOOw4zv1VhLstx+6rE= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= +google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -1422,7 +651,6 @@ google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1441,24 +669,17 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210416161957-9910b6c460de h1:+nG/xknR+Gc5ByHOtK1dT0Pl3LYo8NLR+Jz3XeBeGEg= -google.golang.org/genproto v0.0.0-20210416161957-9910b6c460de/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1467,11 +688,12 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1483,40 +705,23 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= -gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/evanphx/json-patch.v4 v4.9.0 h1:T7W7A7+DTEpLTC11pkf8yfaeRfqhRj/gOPf+LtaJdNY= -gopkg.in/evanphx/json-patch.v4 v4.9.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/imdario/mergo.v0 v0.3.7/go.mod h1:9qPP6AGrlC1G2PTNXko614FwGZvorN7MiBU0Eppok+U= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473/go.mod h1:N1eN2tsCx0Ydtgjl4cqmbRCsY4/+z4cYDeqwZTk6zog= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1526,14 +731,11 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1541,129 +743,37 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.5 h1:nI5egYTGJakVyOryqLs1cQO5dO0ksin5XXs2pspk75k= -honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.19.8 h1:U50vBUCb5kc2J483mnITLKfdyoITaC7PnaOJwT7oRRM= -k8s.io/api v0.19.8/go.mod h1:9TMGoKoidvicOK0LSqj+Mj98pugQycbViPKyZHqutBc= -k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY= -k8s.io/apiextensions-apiserver v0.18.6/go.mod h1:lv89S7fUysXjLZO7ke783xOwVTm6lKizADfvUM/SS/M= -k8s.io/apiextensions-apiserver v0.19.2/go.mod h1:EYNjpqIAvNZe+svXVx9j4uBaVhTB4C94HkY3w058qcg= -k8s.io/apiextensions-apiserver v0.19.7/go.mod h1:XJNNtjISNNePDEUClHt/igzMpQcmjVVh88QH+PKztPU= -k8s.io/apiextensions-apiserver v0.20.1/go.mod h1:ntnrZV+6a3dB504qwC5PN/Yg9PBiDNt1EVqbW2kORVk= -k8s.io/apiextensions-apiserver v0.20.2 h1:rfrMWQ87lhd8EzQWRnbQ4gXrniL/yTRBgYH1x1+BLlo= -k8s.io/apiextensions-apiserver v0.20.2/go.mod h1:F6TXp389Xntt+LUq3vw6HFOLttPa0V8821ogLGwb6Zs= -k8s.io/apimachinery v0.19.8 h1:MaehcNcx8brsgvMsqspcI0bi22E1np/DACnjf2mhJ5A= -k8s.io/apimachinery v0.19.8/go.mod h1:6sRbGRAVY5DOCuZwB5XkqguBqpqLU6q/kOaOdk29z6Q= -k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= -k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw= -k8s.io/apiserver v0.18.6/go.mod h1:Zt2XvTHuaZjBz6EFYzpp+X4hTmgWGy8AthNVnTdm3Wg= -k8s.io/apiserver v0.19.2/go.mod h1:FreAq0bJ2vtZFj9Ago/X0oNGC51GfubKK/ViOKfVAOA= -k8s.io/apiserver v0.19.7/go.mod h1:DmWVQggNePspa+vSsVytVbS3iBSDTXdJVt0akfHacKk= -k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= -k8s.io/apiserver v0.20.2/go.mod h1:2nKd93WyMhZx4Hp3RfgH2K5PhwyTrprrkWYnI7id7jA= -k8s.io/cli-runtime v0.20.2/go.mod h1:FjH6uIZZZP3XmwrXWeeYCbgxcrD6YXxoAykBaWH0VdM= -k8s.io/client-go v0.19.8 h1:rcb2BrXb1HUBiBCoP3m/9Q2VZIMWhZUAmH49EmAyRUA= -k8s.io/client-go v0.19.8/go.mod h1:5Op2bSbK+COBz8mwH62rrRgqhA9wOcORkWZ03+GL0Ow= -k8s.io/cloud-provider v0.17.0/go.mod h1:Ze4c3w2C0bRsjkBUoHpFi+qWe3ob1wI2/7cUn+YQIDE= -k8s.io/cloud-provider v0.19.7/go.mod h1:aO/VpUwkG+JQN7ZXc5WBLZ5NBXuq/Y5B6vri6U94PZ8= -k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= -k8s.io/code-generator v0.18.6/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c= -k8s.io/code-generator v0.19.2/go.mod h1:moqLn7w0t9cMs4+5CQyxnfA/HV8MF6aAVENF+WZZhgk= -k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= -k8s.io/code-generator v0.20.1/go.mod h1:UsqdF+VX4PU2g46NC2JRs4gc+IfrctnwHb76RNbWHJg= -k8s.io/code-generator v0.20.2/go.mod h1:UsqdF+VX4PU2g46NC2JRs4gc+IfrctnwHb76RNbWHJg= -k8s.io/code-generator v0.21.1/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= -k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= -k8s.io/component-base v0.18.2/go.mod h1:kqLlMuhJNHQ9lz8Z7V5bxUUtjFZnrypArGl58gmDfUM= -k8s.io/component-base v0.18.6/go.mod h1:knSVsibPR5K6EW2XOjEHik6sdU5nCvKMrzMt2D4In14= -k8s.io/component-base v0.19.2/go.mod h1:g5LrsiTiabMLZ40AR6Hl45f088DevyGY+cCE2agEIVo= -k8s.io/component-base v0.19.7/go.mod h1:YX8spPBgwl3I6UGcSdQiEMAqRMSUsGQOW7SEr4+Qa3U= -k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= -k8s.io/component-base v0.20.2 h1:LMmu5I0pLtwjpp5009KLuMGFqSc2S2isGw8t1hpYKLE= -k8s.io/component-base v0.20.2/go.mod h1:pzFtCiwe/ASD0iV7ySMu8SYVJjCapNM9bjvk7ptpKh0= -k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= -k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/csi-translation-lib v0.17.0/go.mod h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls= -k8s.io/csi-translation-lib v0.19.7/go.mod h1:WghizPQuzuygr2WdpgN2EjcNpDD2V4EAbxFXsgHgSBk= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20201203183100-97869a43a9d9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.2.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.5.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/klog/v2 v2.8.0 h1:Q3gmuM9hKEjefWFFYF0Mat+YyFJvsUyYuwyNNJ5C9Ts= -k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= -k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= -k8s.io/kube-openapi v0.0.0-20210113233702-8566a335510f/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= -k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7 h1:vEx13qjvaZ4yfObSSXW7BrMc/KQBBT/Jyee8XtLf4x0= -k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= -k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8= -k8s.io/legacy-cloud-providers v0.19.7/go.mod h1:dsZk4gH9QIwAtHQ8CK0Ps257xlfgoXE3tMkMNhW2xDU= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210111153108-fddb29f9d009 h1:0T5IaWHO3sJTEmCP6mUlBvMukxPKUQWqiI/YuiBNMiQ= -k8s.io/utils v0.0.0-20210111153108-fddb29f9d009/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -knative.dev/caching v0.0.0-20210512050647-922782660f7c/go.mod h1:d+fIY/LkAZAM6HsRJwmfirNDMCc1+hqGlQctLP1CmzE= -knative.dev/eventing v0.23.2 h1:0gjYSMq3jNoXInQOMiI6Bfh7X4xmfYL9HwgbAuv9rtY= -knative.dev/eventing v0.23.2/go.mod h1:RIUlBsCp/DoISbw7ryUsdWvFkFO8DYtpB4dlXL/o1u4= -knative.dev/hack v0.0.0-20210428122153-93ad9129c268/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI= -knative.dev/hack v0.0.0-20210602212444-509255f29a24/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI= -knative.dev/hack/schema v0.0.0-20210602212444-509255f29a24/go.mod h1:ffjwmdcrH5vN3mPhO8RrF2KfNnbHeCE2C60A+2cv3U0= -knative.dev/networking v0.0.0-20210512050647-ace2d3306f0b h1:Ea6ym1Jfd/Hci1EGj+uPaE3d6SS1s/Br+6fFAWdJCeM= -knative.dev/networking v0.0.0-20210512050647-ace2d3306f0b/go.mod h1:y7RmP2/dHO/DAC1QmpUtgTVF6/Z8whaL+wjgey+HthU= -knative.dev/pkg v0.0.0-20210510175900-4564797bf3b7 h1:i4P8emOPrLctmbaPHp5eRIOqz+XTOkit7KgZeS+onKs= -knative.dev/pkg v0.0.0-20210510175900-4564797bf3b7/go.mod h1:fIl4l4OmZodkElyaHoT0LCF5wT+3+P/kinawQ4XlLtE= -knative.dev/reconciler-test v0.0.0-20210512062647-d5adf72546be/go.mod h1:ZHvzjwe5aUnWDx+u5y9EPaZ++5PM9Yapp/IvBDiS+Yk= -knative.dev/serving v0.23.1 h1:5fead16AKU0OjN//2FOhfUamuOHWfnl149BEmwjkPDI= -knative.dev/serving v0.23.1/go.mod h1:1j9Kv89CFB671mXbVRsbbyhlBh7d3BfksOtSy9j8jQ4= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= -pgregory.net/rapid v0.3.3/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= +k8s.io/api v0.27.7 h1:7yG4D3t/q4utJe2ptlRw9aPuxcSmroTsYxsofkQNl/A= +k8s.io/api v0.27.7/go.mod h1:ZNExI/Lhrs9YrLgVWx6jjHZdoWCTXfBXuFjt1X6olro= +k8s.io/apiextensions-apiserver v0.27.7 h1:YqIOwZAUokzxJIjunmUd4zS1v3JhK34EPXn+pP0/bsU= +k8s.io/apimachinery v0.27.7 h1:Gxgtb7Y/Rsu8ymgmUEaiErkxa6RY4oTd8kNUI6SUR58= +k8s.io/apimachinery v0.27.7/go.mod h1:jBGQgTjkw99ef6q5hv1YurDd3BqKDk9YRxmX0Ozo0i8= +k8s.io/client-go v0.27.7 h1:+Xgh9OOKv6A3qdD4Dnl/0VOI5EvAv+0s/OseDxVVTwQ= +k8s.io/client-go v0.27.7/go.mod h1:dZ2kqcalYp5YZ2EV12XIMc77G6PxHWOJp/kclZr4+5Q= +k8s.io/component-base v0.27.7 h1:kngM58HR9W9Nqpv7e4rpdRyWnKl/ABpUhLAZ+HoliMs= +k8s.io/component-base v0.27.7/go.mod h1:YGjlCVL1oeKvG3HSciyPHFh+LCjIEqsxz4BDR3cfHRs= +k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= +k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= +k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg= +k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg= +k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= +k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +knative.dev/eventing v0.39.1 h1:HMBLfvAZ/LZVXQW4cUqOSM/cmdfNKqQXqJWRe2o1JDU= +knative.dev/eventing v0.39.1/go.mod h1:MlEiEcHALqZnu0OFMuWdJfjBzM7HlSJfk8pQbTcIy4o= +knative.dev/networking v0.0.0-20231017124814-2a7676e912b7 h1:6+1icZuxiZO1paFZ4d/ysKWVG2M4WB7OxNJNyLG0P/E= +knative.dev/networking v0.0.0-20231017124814-2a7676e912b7/go.mod h1:1gcHoIVG47ekQWjkddqRq+/7tWRh+CB9W4k/NAcdRbk= +knative.dev/pkg v0.0.0-20231023151236-29775d7c9e5c h1:xyPoEToTWeBdn6tinhLxXfnhJhTNQt5WzHiTNiFphRw= +knative.dev/pkg v0.0.0-20231023151236-29775d7c9e5c/go.mod h1:HHRXEd7ZlFpthgE+rwAZ6MUVnuJOAeolnaFSthXloUQ= +knative.dev/serving v0.39.2 h1:qxUdop3fGNAuBwAzutCU1HSszoO1nezKbV2I0HgTh4k= +knative.dev/serving v0.39.2/go.mod h1:0QIp5mvgWa1oUC2MxMf+Q/JWgG8JhAsSdJKc6iTRlvE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/controller-runtime v0.6.0/go.mod h1:CpYf5pdNY/B352A1TFLAS2JVSlnGQ5O2cftPHndTroo= -sigs.k8s.io/controller-runtime v0.6.4/go.mod h1:WlZNXcM0++oyaQt4B7C2lEE5JYRs8vJUzRP4N4JpdAY= -sigs.k8s.io/controller-runtime v0.8.3 h1:GMHvzjTmaWHQB8HadW+dIvBoJuLvZObYJ5YoZruPRao= -sigs.k8s.io/controller-runtime v0.8.3/go.mod h1:U/l+DUopBc1ecfRZ5aviA9JDmGFQKvLf5YkZNx2e0sU= -sigs.k8s.io/controller-tools v0.3.0/go.mod h1:enhtKGfxZD1GFEoMgP8Fdbu+uKQ/cq1/WGJhdVChfvI= -sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06 h1:zD2IemQ4LmOcAumeiyDWXKUI2SO0NYDe3H6QGvPOVgU= -sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.0 h1:C4r9BgJ98vrKnnVCjwCSXcWjWe0NKcUQkmzDXZXGwH8= -sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sigs.k8s.io/controller-runtime v0.15.2 h1:9V7b7SDQSJ08IIsJ6CY1CE85Okhp87dyTMNDG0FS7f4= +sigs.k8s.io/controller-runtime v0.15.2/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/script/validator/validator.go b/script/validator/validator.go index 6c1cd0d4d..d252c5bbe 100644 --- a/script/validator/validator.go +++ b/script/validator/validator.go @@ -10,11 +10,11 @@ import ( "sort" "strings" - camelapiv1 "github.com/apache/camel-k/pkg/apis/camel/v1" - camelapi "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" - "github.com/apache/camel-k/pkg/metadata" - "github.com/apache/camel-k/pkg/util/camel" - "github.com/apache/camel-k/pkg/util/dsl" + "github.com/apache/camel-k/v2/pkg/metadata" + "github.com/apache/camel-k/v2/pkg/util/camel" + "github.com/apache/camel-k/v2/pkg/util/dsl" + + camelapiv1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" "github.com/bbalet/stopwords" perrors "github.com/pkg/errors" yamlv3 "gopkg.in/yaml.v3" @@ -27,12 +27,7 @@ import ( "k8s.io/apimachinery/pkg/util/yaml" ) -var ( - // Needed until this is fixed: https://issues.apache.org/jira/browse/CAMEL-16788 - forbiddenParameterNames = []string{"home", "hostname", "language", "lang", "namespace", "path", "podname", "pod-name", "port", "pwd", "shell", "term"} - - paramRegexp = regexp.MustCompile(`{{[?]?([A-Za-z0-9-._]+)(?:[:][^}]*)?}}`) -) +var paramRegexp = regexp.MustCompile(`{{[?]?([A-Za-z0-9-._]+)(?:[:][^}]*)?}}`) func main() { if len(os.Args) != 2 { @@ -40,6 +35,7 @@ func main() { os.Exit(1) } + // dir := "/home/claudio/alphaworks/projects/kamelet-catalog/kamelets" dir := os.Args[1] kamelets := listKamelets(dir) @@ -78,6 +74,7 @@ func main() { } func verifyMissingDependencies(kamelets []KameletInfo) (errors []error) { + catalog, _ := camel.DefaultCatalog() for _, kamelet := range kamelets { yamlDslTemplate, err := dsl.TemplateToYamlDSL(*kamelet.Kamelet.Spec.Template, kamelet.Kamelet.Name) if err != nil { @@ -92,15 +89,15 @@ func verifyMissingDependencies(kamelets []KameletInfo) (errors []error) { Language: camelapiv1.LanguageYaml, } - catalog, _ := camel.DefaultCatalog() - meta := metadata.Extract(catalog, code) - - meta.Dependencies.Each(func(extractedDep string) bool { - if !containsDependency(kamelet, extractedDep) { - errors = append(errors, fmt.Errorf("kamelet %q need dependency %q", kamelet.Name, extractedDep)) - } - return true - }) + meta, _ := metadata.Extract(catalog, code) + if meta.Metadata.Dependencies != nil { + meta.Dependencies.Each(func(extractedDep string) bool { + if !containsDependency(kamelet, extractedDep) { + errors = append(errors, fmt.Errorf("kamelet %q need dependency %q", kamelet.Name, extractedDep)) + } + return true + }) + } } return errors @@ -169,7 +166,7 @@ func verifyDescriptors(kamelets []KameletInfo) (errors []error) { return errors } -func hasXDescriptor(p camelapi.JSONSchemaProp, desc string) bool { +func hasXDescriptor(p camelapiv1.JSONSchemaProp, desc string) bool { for _, d := range p.XDescriptors { if d == desc { return true @@ -178,7 +175,7 @@ func hasXDescriptor(p camelapi.JSONSchemaProp, desc string) bool { return false } -func hasXDescriptorPrefix(p camelapi.JSONSchemaProp, prefix string) bool { +func hasXDescriptorPrefix(p camelapiv1.JSONSchemaProp, prefix string) bool { for _, d := range p.XDescriptors { if strings.HasPrefix(d, prefix) { return true @@ -237,10 +234,6 @@ func verifyParameters(kamelets []KameletInfo) (errors []error) { errors = append(errors, fmt.Errorf("kamelet %q does not contain the JSON schema definition", kamelet.Name)) continue } - if kamelet.Spec.Flow != nil { - errors = append(errors, fmt.Errorf("kamelet %q contain the deprecated Flow specification, must use Template instead", kamelet.Name)) - continue - } if kamelet.Spec.Template == nil { errors = append(errors, fmt.Errorf("kamelet %q does not contain the Template specification", kamelet.Name)) continue @@ -270,11 +263,6 @@ func verifyParameters(kamelets []KameletInfo) (errors []error) { errors = append(errors, fmt.Errorf("kamelet %q does not contain a definition of type \"object\"", kamelet.Name)) } for k, p := range kamelet.Spec.Definition.Properties { - for _, f := range forbiddenParameterNames { - if strings.EqualFold(k, f) { - errors = append(errors, fmt.Errorf("property name %q is using a reserved keyword in kamelet %q", k, kamelet.Name)) - } - } if p.Type == "" { errors = append(errors, fmt.Errorf("property %q in kamelet %q does not contain type", k, kamelet.Name)) } @@ -366,11 +354,11 @@ func verifyFileNames(kamelets []KameletInfo) (errors []error) { func listKamelets(dir string) []KameletInfo { scheme := runtime.NewScheme() - err := camelapi.AddToScheme(scheme) + err := camelapiv1.AddToScheme(scheme) handleGeneralError("cannot to add camel APIs to scheme", err) codecs := serializer.NewCodecFactory(scheme) - gv := camelapi.SchemeGroupVersion + gv := camelapiv1.SchemeGroupVersion gvk := schema.GroupVersionKind{ Group: gv.Group, Version: gv.Version, @@ -396,7 +384,7 @@ func listKamelets(dir string) []KameletInfo { json, err := yaml.ToJSON(content) handleGeneralError(fmt.Sprintf("cannot convert file %q to JSON", fileName), err) - kamelet := camelapi.Kamelet{} + kamelet := camelapiv1.Kamelet{} _, _, err = decoder.Decode(json, &gvk, &kamelet) handleGeneralError(fmt.Sprintf("cannot unmarshal file %q into Kamelet", fileName), err) kameletInfo := KameletInfo{ @@ -410,25 +398,28 @@ func listKamelets(dir string) []KameletInfo { func verifyUsedParams(kamelets []KameletInfo) (errors []error) { for _, k := range kamelets { - if (k.FileName != "../../azure-storage-blob-source.kamelet.yaml") { - used := getUsedParams(k.Kamelet) - declared := getDeclaredParams(k.Kamelet) - for p := range used { - if _, ok := declared[p]; !ok { - errors = append(errors, fmt.Errorf("parameter %q is not declared in the definition of kamelet %q", p, k.Kamelet.Name)) + if k.FileName != "../../kamelets/azure-storage-blob-source.kamelet.yaml" && k.FileName != "../../kamelets/aws-s3-cdc-source.kamelet.yaml" && + k.FileName != "../../kamelets/set-kafka-key-action.kamelet.yaml" && k.FileName != "../../kamelets/azure-storage-blob-cdc-source.kamelet.yaml" && + k.FileName != "../../kamelets/google-storage-cdc-source.kamelet.yaml" && k.FileName != "../../kamelets/elasticsearch-search-source.kamelet.yaml" && + k.FileName != "../../kamelets/opensearch-search-source.kamelet.yaml" { + used := getUsedParams(k.Kamelet) + declared := getDeclaredParams(k.Kamelet) + for p := range used { + if _, ok := declared[p]; !ok { + errors = append(errors, fmt.Errorf("parameter %q is not declared in the definition of kamelet %q", p, k.Kamelet.Name)) + } } - } - for p := range declared { - if _, ok := used[p]; !ok { - errors = append(errors, fmt.Errorf("parameter %q is declared in kamelet %q but never used", p, k.Kamelet.Name)) + for p := range declared { + if _, ok := used[p]; !ok { + errors = append(errors, fmt.Errorf("parameter %q is declared in kamelet %q but never used", p, k.Kamelet.Name)) + } } } - } } return errors } -func getDeclaredParams(k camelapi.Kamelet) map[string]bool { +func getDeclaredParams(k camelapiv1.Kamelet) map[string]bool { res := make(map[string]bool) if k.Spec.Definition != nil { for p := range k.Spec.Definition.Properties { @@ -456,7 +447,7 @@ func getDeclaredParams(k camelapi.Kamelet) map[string]bool { return res } -func getUsedParams(k camelapi.Kamelet) map[string]bool { +func getUsedParams(k camelapiv1.Kamelet) map[string]bool { if k.Spec.Template != nil { var templateData interface{} if err := json.Unmarshal(k.Spec.Template.RawMessage, &templateData); err != nil { @@ -500,7 +491,7 @@ func inspectTemplateParams(v interface{}, params map[string]bool) { } type KameletInfo struct { - camelapi.Kamelet + camelapiv1.Kamelet FileName string } diff --git a/splunk-hec-sink.kamelet.yaml b/splunk-hec-sink.kamelet.yaml deleted file mode 100644 index a54360918..000000000 --- a/splunk-hec-sink.kamelet.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: splunk-hec-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3BsdW5rIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMy4zNDggMTEuOTExbC0yLjI0MS0xLjA5MXYtLjY1TDI0IDExLjYyMXYuNTkzbC0yLjg5MyAxLjQzOHYtLjYzNnptLTUuMzk3IDEuODQxaC0uOTYxdi01LjMxaC45NjF2My4xMTZoLjEwMmwxLjI4LTEuNDgxLjcyMy4zMS0xLjIzIDEuMzE2IDEuNDUzIDEuODA5LS44ODguMzExLTEuNDQtMS45OTZ6bS0yLjU3Ny0uMDAydi0yLjA2OGEyLjY4NSAyLjY4NSAwIDAgMC0uMDI2LS40Mi43OTEuNzkxIDAgMCAwLS4wOS0uMjZjLS4xMTMtLjIwMi0uMzA4LS4zMDQtLjU5LS4zMDRhLjg4OC44ODggMCAwIDAtLjQ2MS4xMTMuNjczLjY3MyAwIDAgMC0uMjg2LjMzIDEuMDEyIDEuMDEyIDAgMCAwLS4wNy4yNjNjLS4wMTIuMTMtLjAxOS4yNjItLjAxNy4zOTV2MS45NWgtLjk2MXYtMy42MTRoLjk2MWwuMDAyLjQ4NWMuMTg1LS4yLjM3My0uMzQ4LjU2Ni0uNDM3LjE5Mi0uMDg5LjQxOC0uMTM0LjY3My0uMTM0LjI4NiAwIC41MjcuMDU4LjcyMS4xNzdhMS4wMTYgMS4wMTYgMCAwIDEgLjQ3NS42NjUgMS45NzIgMS45NzIgMCAwIDEgLjA1NC40NDhjLjAwMi4xLjAwNC4yMi4wMDQuMzU4djIuMDUzem0tNC4xMTUuMDAybC0uMDAyLS40ODVhMS43ODMgMS43ODMgMCAwIDEtLjU2NS40MzcgMS41OTcgMS41OTcgMCAwIDEtLjY3NC4xMzVjLS4yODUgMC0uNTI0LS4wNTctLjcyLS4xN2EuOTcyLjk3MiAwIDAgMS0uNDI1LS41MDQuNzUuNzUgMCAwIDEtLjA1NC0uMTY3IDEuOTE4IDEuOTE4IDAgMCAxLS4wMzMtLjE5OSAyLjAzMyAyLjAzMyAwIDAgMS0uMDE3LS4yNTggMTUuNTE2IDE1LjUxNiAwIDAgMS0uMDA1LS4zNTVWMTAuMTNoLjk1NnYyLjA3Yy0uMDAzLjE0MS4wMDYuMjgyLjAyNi40Mi4wMTUuMDkyLjA0NS4xOC4wOS4yNi4xMTMuMjA0LjMwOC4zMDYuNTkuMzA2LjM2IDAgLjYwNi0uMTUuNzQtLjQ0OS4wMzUtLjA4Mi4wNi0uMTY4LjA3NC0uMjU3LjAxNy0uMTM0LjAyNC0uMjY5LjAyMi0uNDAzdi0xLjk1aC45NTV2My42MjR6TTcuMTg0IDguNDRoLjk1NXY1LjMxaC0uOTU1ek01Ljc1OSAxMS45YzAtLjM5Ni0uMDgtLjcwOC0uMjQtLjkzN2EuNzU5Ljc1OSAwIDAgMC0uNjU3LS4zNDUuODA0LjgwNCAwIDAgMC0uNjkzLjM2NmMtLjE3MS4yNDUtLjI1Ni41NzQtLjI1My45OSAwIC40MDUuMDg0LjcyMy4yNS45NTdhLjc5Ni43OTYgMCAwIDAgLjY5LjM0Ny42ODUuNjg1IDAgMCAwIC40MzMtLjEzNS45ODUuOTg1IDAgMCAwIC4yNzctLjM0Yy4wNzEtLjE0LjEyMS0uMjkyLjE0Ny0uNDQ4LjAzLS4xNTEuMDQzLS4zLjA0Ni0uNDU1bTEuMDEtLjAzNmMuMDAzLjI2Ni0uMDQuNTMyLS4xMjkuNzg2LS4wODIuMjMtLjIwNC40NDEtLjM2NC42MjYtLjMxLjM2MS0uNzY0LjU2Ny0xLjI0LjU2M2ExLjY3IDEuNjcgMCAwIDEtLjMxMy0uMDI4IDEuMDQxIDEuMDQxIDAgMCAxLS4yNzUtLjA5OCAxLjMzIDEuMzMgMCAwIDEtLjI1Ny0uMTc4IDIuMzc5IDIuMzc5IDAgMCAxLS4yNjUtLjI2OHYyLjI5M2gtLjkyOXYtNS40MjVoLjkzbC4wMDQuNTI5Yy4xNjktLjIxMi4zNTMtLjM2OC41NS0uNDY4LjE5Ny0uMS40MjYtLjE1LjY4OC0uMTQ3YTEuNTA5IDEuNTA5IDAgMCAxIDEuMTU2LjUwN2MuMTQ4LjE2Ni4yNTkuMzYxLjMzLjU3MS4wOC4yMzYuMTIuNDg1LjExNS43MzdtLTQuMjEuODlhLjk0Ni45NDYgMCAwIDEtLjEwMi40NDEgMS4wMDcgMS4wMDcgMCAwIDEtLjI4Mi4zNDVjLS4xMy4xLS4yNzUuMTczLS40My4yMmExLjggMS44IDAgMCAxLS41NDYuMDggMS45ODUgMS45ODUgMCAwIDEtLjYzNy0uMDk3IDEuOTY0IDEuOTY0IDAgMCAxLS41NjMtLjMybC4zMTItLjUwNWMuMTUuMTI2LjI4NC4yMTcuNDA1LjI3NS4xMTUuMDU3LjI0LjA4Ny4zNjguMDg3YS41NTcuNTU3IDAgMCAwIC4zNzMtLjEyLjM5Ni4zOTYgMCAwIDAgLjE0LS4zMjIuNDc1LjQ3NSAwIDAgMC0uMTItLjMxOCAxLjMwNiAxLjMwNiAwIDAgMC0uMTg3LS4xNzMgOS4yMzEgOS4yMzEgMCAwIDAtLjMwOC0uMjMyIDYuNzg3IDYuNzg3IDAgMCAxLS4yODEtLjIxIDIuMTEgMi4xMSAwIDAgMS0uMjUyLS4yMzIgMS4wMzkgMS4wMzkgMCAwIDEtLjE4LS4yNzUuODI2LjgyNiAwIDAgMS0uMDY5LS4zNDcuODkzLjg5MyAwIDAgMSAuMDk0LS40MDkuOTM1LjkzNSAwIDAgMSAuMjU1LS4zMTQgMS4yMiAxLjIyIDAgMCAxIC4zOS0uMjAzYy4xNi0uMDUuMzI3LS4wNzQuNDk0LS4wNzIuMTg0IDAgLjM2OC4wMjYuNTQ1LjA3Ni4xNzQuMDUuMzM4LjEyMy40ODguMjE5bC0uMjgyLjQ1NGExLjA1IDEuMDUgMCAwIDAtLjYwOC0uMjAxLjUwNC41MDQgMCAwIDAtLjMyMy4xMDIuMzA3LjMwNyAwIDAgMC0uMTI2LjI1M2MwIC4wOTguMDQxLjE5My4xMTMuMjYuMDc0LjA3OC4yMDMuMTg2LjM4NS4zMjUuMTg1LjEzNi4zMzYuMjUzLjQ1Ny4zNTUuMTA0LjA4NS4yMDIuMTgyLjI4Ni4yODYuMDY1LjA4LjExNS4xNzMuMTQ1LjI3M2EuODA4LjgwOCAwIDAgMSAuMDQ2LjI5OVoiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "SPLUNK" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Splunk HEC Sink" - description: |- - The Splunk HEC sink allows to send data to Splunk using the https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector[HTTP Event Collector]. - - required: - - splunkUrl - - token - type: object - properties: - splunkUrl: - title: Splunk URL - description: The URL of your Splunk server. No need to set the protocol prefix. - type: string - example: my_server.splunkcloud.com:8088 - token: - title: Token - description: The Token of the HEC. Note it is not the user's authentication token. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - hostPayload: - title: Host of the Event - description: The host field set in the data sent to Splunk, it is not related to the Splunk URL or the connection to Splunk server. - type: string - bodyOnly: - title: Body Only - description: Send to Splunk only data contained in the body. - type: boolean - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:checkbox - default: false - headersOnly: - title: Headers Only - description: Send to Splunk only data contained in the headers. - type: boolean - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:checkbox - default: false - index: - title: Index - description: Splunk index to write to. - type: string - source: - title: Source - description: The source named field of the data. - type: string - sourceType: - title: Source Type - description: The source named field of the data. - type: string - skipTlsVerify: - title: Skip TLS Verification - description: Skip TLS verification. - type: boolean - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:checkbox - default: false - https: - title: Secure - description: Use a secure HTTPS connection. - type: boolean - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:checkbox - default: true - time: - title: Time - description: Time this even occurred. By default, the time will be when this event hits the splunk server. - type: string - types: - in: - mediaType: application/json - dependencies: - - "camel:core" - - "camel:splunk-hec" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - to: - uri: "splunk-hec:{{splunkUrl}}/{{token}}" - parameters: - host: "{{?hostPayload}}" - bodyOnly: "{{?bodyOnly}}" - headersOnly: "{{?headersOnly}}" - index: "{{?index}}" - source: "{{?source}}" - sourceType: "{{?sourceType}}" - skipTlsVerify: "{{?skipTlsVerify}}" - https: "{{?https}}" - time: "{{?time}}" diff --git a/splunk-sink.kamelet.yaml b/splunk-sink.kamelet.yaml deleted file mode 100644 index 5ab21cba5..000000000 --- a/splunk-sink.kamelet.yaml +++ /dev/null @@ -1,105 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: splunk-sink - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3BsdW5rIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMy4zNDggMTEuOTExbC0yLjI0MS0xLjA5MXYtLjY1TDI0IDExLjYyMXYuNTkzbC0yLjg5MyAxLjQzOHYtLjYzNnptLTUuMzk3IDEuODQxaC0uOTYxdi01LjMxaC45NjF2My4xMTZoLjEwMmwxLjI4LTEuNDgxLjcyMy4zMS0xLjIzIDEuMzE2IDEuNDUzIDEuODA5LS44ODguMzExLTEuNDQtMS45OTZ6bS0yLjU3Ny0uMDAydi0yLjA2OGEyLjY4NSAyLjY4NSAwIDAgMC0uMDI2LS40Mi43OTEuNzkxIDAgMCAwLS4wOS0uMjZjLS4xMTMtLjIwMi0uMzA4LS4zMDQtLjU5LS4zMDRhLjg4OC44ODggMCAwIDAtLjQ2MS4xMTMuNjczLjY3MyAwIDAgMC0uMjg2LjMzIDEuMDEyIDEuMDEyIDAgMCAwLS4wNy4yNjNjLS4wMTIuMTMtLjAxOS4yNjItLjAxNy4zOTV2MS45NWgtLjk2MXYtMy42MTRoLjk2MWwuMDAyLjQ4NWMuMTg1LS4yLjM3My0uMzQ4LjU2Ni0uNDM3LjE5Mi0uMDg5LjQxOC0uMTM0LjY3My0uMTM0LjI4NiAwIC41MjcuMDU4LjcyMS4xNzdhMS4wMTYgMS4wMTYgMCAwIDEgLjQ3NS42NjUgMS45NzIgMS45NzIgMCAwIDEgLjA1NC40NDhjLjAwMi4xLjAwNC4yMi4wMDQuMzU4djIuMDUzem0tNC4xMTUuMDAybC0uMDAyLS40ODVhMS43ODMgMS43ODMgMCAwIDEtLjU2NS40MzcgMS41OTcgMS41OTcgMCAwIDEtLjY3NC4xMzVjLS4yODUgMC0uNTI0LS4wNTctLjcyLS4xN2EuOTcyLjk3MiAwIDAgMS0uNDI1LS41MDQuNzUuNzUgMCAwIDEtLjA1NC0uMTY3IDEuOTE4IDEuOTE4IDAgMCAxLS4wMzMtLjE5OSAyLjAzMyAyLjAzMyAwIDAgMS0uMDE3LS4yNTggMTUuNTE2IDE1LjUxNiAwIDAgMS0uMDA1LS4zNTVWMTAuMTNoLjk1NnYyLjA3Yy0uMDAzLjE0MS4wMDYuMjgyLjAyNi40Mi4wMTUuMDkyLjA0NS4xOC4wOS4yNi4xMTMuMjA0LjMwOC4zMDYuNTkuMzA2LjM2IDAgLjYwNi0uMTUuNzQtLjQ0OS4wMzUtLjA4Mi4wNi0uMTY4LjA3NC0uMjU3LjAxNy0uMTM0LjAyNC0uMjY5LjAyMi0uNDAzdi0xLjk1aC45NTV2My42MjR6TTcuMTg0IDguNDRoLjk1NXY1LjMxaC0uOTU1ek01Ljc1OSAxMS45YzAtLjM5Ni0uMDgtLjcwOC0uMjQtLjkzN2EuNzU5Ljc1OSAwIDAgMC0uNjU3LS4zNDUuODA0LjgwNCAwIDAgMC0uNjkzLjM2NmMtLjE3MS4yNDUtLjI1Ni41NzQtLjI1My45OSAwIC40MDUuMDg0LjcyMy4yNS45NTdhLjc5Ni43OTYgMCAwIDAgLjY5LjM0Ny42ODUuNjg1IDAgMCAwIC40MzMtLjEzNS45ODUuOTg1IDAgMCAwIC4yNzctLjM0Yy4wNzEtLjE0LjEyMS0uMjkyLjE0Ny0uNDQ4LjAzLS4xNTEuMDQzLS4zLjA0Ni0uNDU1bTEuMDEtLjAzNmMuMDAzLjI2Ni0uMDQuNTMyLS4xMjkuNzg2LS4wODIuMjMtLjIwNC40NDEtLjM2NC42MjYtLjMxLjM2MS0uNzY0LjU2Ny0xLjI0LjU2M2ExLjY3IDEuNjcgMCAwIDEtLjMxMy0uMDI4IDEuMDQxIDEuMDQxIDAgMCAxLS4yNzUtLjA5OCAxLjMzIDEuMzMgMCAwIDEtLjI1Ny0uMTc4IDIuMzc5IDIuMzc5IDAgMCAxLS4yNjUtLjI2OHYyLjI5M2gtLjkyOXYtNS40MjVoLjkzbC4wMDQuNTI5Yy4xNjktLjIxMi4zNTMtLjM2OC41NS0uNDY4LjE5Ny0uMS40MjYtLjE1LjY4OC0uMTQ3YTEuNTA5IDEuNTA5IDAgMCAxIDEuMTU2LjUwN2MuMTQ4LjE2Ni4yNTkuMzYxLjMzLjU3MS4wOC4yMzYuMTIuNDg1LjExNS43MzdtLTQuMjEuODlhLjk0Ni45NDYgMCAwIDEtLjEwMi40NDEgMS4wMDcgMS4wMDcgMCAwIDEtLjI4Mi4zNDVjLS4xMy4xLS4yNzUuMTczLS40My4yMmExLjggMS44IDAgMCAxLS41NDYuMDggMS45ODUgMS45ODUgMCAwIDEtLjYzNy0uMDk3IDEuOTY0IDEuOTY0IDAgMCAxLS41NjMtLjMybC4zMTItLjUwNWMuMTUuMTI2LjI4NC4yMTcuNDA1LjI3NS4xMTUuMDU3LjI0LjA4Ny4zNjguMDg3YS41NTcuNTU3IDAgMCAwIC4zNzMtLjEyLjM5Ni4zOTYgMCAwIDAgLjE0LS4zMjIuNDc1LjQ3NSAwIDAgMC0uMTItLjMxOCAxLjMwNiAxLjMwNiAwIDAgMC0uMTg3LS4xNzMgOS4yMzEgOS4yMzEgMCAwIDAtLjMwOC0uMjMyIDYuNzg3IDYuNzg3IDAgMCAxLS4yODEtLjIxIDIuMTEgMi4xMSAwIDAgMS0uMjUyLS4yMzIgMS4wMzkgMS4wMzkgMCAwIDEtLjE4LS4yNzUuODI2LjgyNiAwIDAgMS0uMDY5LS4zNDcuODkzLjg5MyAwIDAgMSAuMDk0LS40MDkuOTM1LjkzNSAwIDAgMSAuMjU1LS4zMTQgMS4yMiAxLjIyIDAgMCAxIC4zOS0uMjAzYy4xNi0uMDUuMzI3LS4wNzQuNDk0LS4wNzIuMTg0IDAgLjM2OC4wMjYuNTQ1LjA3Ni4xNzQuMDUuMzM4LjEyMy40ODguMjE5bC0uMjgyLjQ1NGExLjA1IDEuMDUgMCAwIDAtLjYwOC0uMjAxLjUwNC41MDQgMCAwIDAtLjMyMy4xMDIuMzA3LjMwNyAwIDAgMC0uMTI2LjI1M2MwIC4wOTguMDQxLjE5My4xMTMuMjYuMDc0LjA3OC4yMDMuMTg2LjM4NS4zMjUuMTg1LjEzNi4zMzYuMjUzLjQ1Ny4zNTUuMTA0LjA4NS4yMDIuMTgyLjI4Ni4yODYuMDY1LjA4LjExNS4xNzMuMTQ1LjI3M2EuODA4LjgwOCAwIDAgMSAuMDQ2LjI5OVoiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "SPLUNK" - labels: - camel.apache.org/kamelet.type: "sink" -spec: - definition: - title: "Splunk Sink" - description: |- - Send data to Splunk either by using "submit" or "stream" mode. - - The payload MUST be in json format. - - required: - - serverHostname - - username - - password - type: object - properties: - serverHostname: - title: Splunk Server Address - description: The address of your Splunk server. - type: string - example: my_server_splunk.com - serverPort: - title: Splunk Server Port - description: The address of your Splunk server. - type: integer - default: 8089 - username: - title: Username - description: The username to authenticate to Splunk Server. - type: string - password: - title: Password - description: The password to authenticate to Splunk Server. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - index: - title: Index - description: Splunk index to write to. - type: string - protocol: - title: Protocol - description: Connection Protocol to Splunk server. - type: string - default: https - enum: ["http", "https"] - source: - title: Source - description: The source named field of the data. - type: string - sourceType: - title: Source Type - description: The source named field of the data. - type: string - app: - title: Splunk App - description: The app name in Splunk. - type: string - connectionTimeout: - title: Connection Timeout - description: Timeout in milliseconds when connecting to Splunk server - type: integer - default: 5000 - mode: - title: Mode - description: The mode to publish events to Splunk. - type: string - default: stream - enum: ["submit", "stream"] - types: - in: - mediaType: application/json - dependencies: - - "camel:core" - - "camel:splunk" - - "camel:kamelet" - template: - from: - uri: "kamelet:source" - steps: - - to: - uri: "splunk:{{mode}}" - parameters: - host: "{{serverHostname}}" - port: "{{serverPort}}" - username: "{{username}}" - password: "{{password}}" - source: "{{?source}}" - sourceType: "{{?sourceType}}" - scheme: "{{?protocol}}" - index: "{{?index}}" - app: "{{?app}}" - connectionTimeout: "{{?connectionTimeout}}" - raw: true diff --git a/splunk-source.kamelet.yaml b/splunk-source.kamelet.yaml deleted file mode 100644 index 8dfd15cef..000000000 --- a/splunk-source.kamelet.yaml +++ /dev/null @@ -1,143 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: Kamelet -metadata: - name: splunk-source - annotations: - camel.apache.org/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3BsdW5rIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMy4zNDggMTEuOTExbC0yLjI0MS0xLjA5MXYtLjY1TDI0IDExLjYyMXYuNTkzbC0yLjg5MyAxLjQzOHYtLjYzNnptLTUuMzk3IDEuODQxaC0uOTYxdi01LjMxaC45NjF2My4xMTZoLjEwMmwxLjI4LTEuNDgxLjcyMy4zMS0xLjIzIDEuMzE2IDEuNDUzIDEuODA5LS44ODguMzExLTEuNDQtMS45OTZ6bS0yLjU3Ny0uMDAydi0yLjA2OGEyLjY4NSAyLjY4NSAwIDAgMC0uMDI2LS40Mi43OTEuNzkxIDAgMCAwLS4wOS0uMjZjLS4xMTMtLjIwMi0uMzA4LS4zMDQtLjU5LS4zMDRhLjg4OC44ODggMCAwIDAtLjQ2MS4xMTMuNjczLjY3MyAwIDAgMC0uMjg2LjMzIDEuMDEyIDEuMDEyIDAgMCAwLS4wNy4yNjNjLS4wMTIuMTMtLjAxOS4yNjItLjAxNy4zOTV2MS45NWgtLjk2MXYtMy42MTRoLjk2MWwuMDAyLjQ4NWMuMTg1LS4yLjM3My0uMzQ4LjU2Ni0uNDM3LjE5Mi0uMDg5LjQxOC0uMTM0LjY3My0uMTM0LjI4NiAwIC41MjcuMDU4LjcyMS4xNzdhMS4wMTYgMS4wMTYgMCAwIDEgLjQ3NS42NjUgMS45NzIgMS45NzIgMCAwIDEgLjA1NC40NDhjLjAwMi4xLjAwNC4yMi4wMDQuMzU4djIuMDUzem0tNC4xMTUuMDAybC0uMDAyLS40ODVhMS43ODMgMS43ODMgMCAwIDEtLjU2NS40MzcgMS41OTcgMS41OTcgMCAwIDEtLjY3NC4xMzVjLS4yODUgMC0uNTI0LS4wNTctLjcyLS4xN2EuOTcyLjk3MiAwIDAgMS0uNDI1LS41MDQuNzUuNzUgMCAwIDEtLjA1NC0uMTY3IDEuOTE4IDEuOTE4IDAgMCAxLS4wMzMtLjE5OSAyLjAzMyAyLjAzMyAwIDAgMS0uMDE3LS4yNTggMTUuNTE2IDE1LjUxNiAwIDAgMS0uMDA1LS4zNTVWMTAuMTNoLjk1NnYyLjA3Yy0uMDAzLjE0MS4wMDYuMjgyLjAyNi40Mi4wMTUuMDkyLjA0NS4xOC4wOS4yNi4xMTMuMjA0LjMwOC4zMDYuNTkuMzA2LjM2IDAgLjYwNi0uMTUuNzQtLjQ0OS4wMzUtLjA4Mi4wNi0uMTY4LjA3NC0uMjU3LjAxNy0uMTM0LjAyNC0uMjY5LjAyMi0uNDAzdi0xLjk1aC45NTV2My42MjR6TTcuMTg0IDguNDRoLjk1NXY1LjMxaC0uOTU1ek01Ljc1OSAxMS45YzAtLjM5Ni0uMDgtLjcwOC0uMjQtLjkzN2EuNzU5Ljc1OSAwIDAgMC0uNjU3LS4zNDUuODA0LjgwNCAwIDAgMC0uNjkzLjM2NmMtLjE3MS4yNDUtLjI1Ni41NzQtLjI1My45OSAwIC40MDUuMDg0LjcyMy4yNS45NTdhLjc5Ni43OTYgMCAwIDAgLjY5LjM0Ny42ODUuNjg1IDAgMCAwIC40MzMtLjEzNS45ODUuOTg1IDAgMCAwIC4yNzctLjM0Yy4wNzEtLjE0LjEyMS0uMjkyLjE0Ny0uNDQ4LjAzLS4xNTEuMDQzLS4zLjA0Ni0uNDU1bTEuMDEtLjAzNmMuMDAzLjI2Ni0uMDQuNTMyLS4xMjkuNzg2LS4wODIuMjMtLjIwNC40NDEtLjM2NC42MjYtLjMxLjM2MS0uNzY0LjU2Ny0xLjI0LjU2M2ExLjY3IDEuNjcgMCAwIDEtLjMxMy0uMDI4IDEuMDQxIDEuMDQxIDAgMCAxLS4yNzUtLjA5OCAxLjMzIDEuMzMgMCAwIDEtLjI1Ny0uMTc4IDIuMzc5IDIuMzc5IDAgMCAxLS4yNjUtLjI2OHYyLjI5M2gtLjkyOXYtNS40MjVoLjkzbC4wMDQuNTI5Yy4xNjktLjIxMi4zNTMtLjM2OC41NS0uNDY4LjE5Ny0uMS40MjYtLjE1LjY4OC0uMTQ3YTEuNTA5IDEuNTA5IDAgMCAxIDEuMTU2LjUwN2MuMTQ4LjE2Ni4yNTkuMzYxLjMzLjU3MS4wOC4yMzYuMTIuNDg1LjExNS43MzdtLTQuMjEuODlhLjk0Ni45NDYgMCAwIDEtLjEwMi40NDEgMS4wMDcgMS4wMDcgMCAwIDEtLjI4Mi4zNDVjLS4xMy4xLS4yNzUuMTczLS40My4yMmExLjggMS44IDAgMCAxLS41NDYuMDggMS45ODUgMS45ODUgMCAwIDEtLjYzNy0uMDk3IDEuOTY0IDEuOTY0IDAgMCAxLS41NjMtLjMybC4zMTItLjUwNWMuMTUuMTI2LjI4NC4yMTcuNDA1LjI3NS4xMTUuMDU3LjI0LjA4Ny4zNjguMDg3YS41NTcuNTU3IDAgMCAwIC4zNzMtLjEyLjM5Ni4zOTYgMCAwIDAgLjE0LS4zMjIuNDc1LjQ3NSAwIDAgMC0uMTItLjMxOCAxLjMwNiAxLjMwNiAwIDAgMC0uMTg3LS4xNzMgOS4yMzEgOS4yMzEgMCAwIDAtLjMwOC0uMjMyIDYuNzg3IDYuNzg3IDAgMCAxLS4yODEtLjIxIDIuMTEgMi4xMSAwIDAgMS0uMjUyLS4yMzIgMS4wMzkgMS4wMzkgMCAwIDEtLjE4LS4yNzUuODI2LjgyNiAwIDAgMS0uMDY5LS4zNDcuODkzLjg5MyAwIDAgMSAuMDk0LS40MDkuOTM1LjkzNSAwIDAgMSAuMjU1LS4zMTQgMS4yMiAxLjIyIDAgMCAxIC4zOS0uMjAzYy4xNi0uMDUuMzI3LS4wNzQuNDk0LS4wNzIuMTg0IDAgLjM2OC4wMjYuNTQ1LjA3Ni4xNzQuMDUuMzM4LjEyMy40ODguMjE5bC0uMjgyLjQ1NGExLjA1IDEuMDUgMCAwIDAtLjYwOC0uMjAxLjUwNC41MDQgMCAwIDAtLjMyMy4xMDIuMzA3LjMwNyAwIDAgMC0uMTI2LjI1M2MwIC4wOTguMDQxLjE5My4xMTMuMjYuMDc0LjA3OC4yMDMuMTg2LjM4NS4zMjUuMTg1LjEzNi4zMzYuMjUzLjQ1Ny4zNTUuMTA0LjA4NS4yMDIuMTgyLjI4Ni4yODYuMDY1LjA4LjExNS4xNzMuMTQ1LjI3M2EuODA4LjgwOCAwIDAgMSAuMDQ2LjI5OVoiLz48L3N2Zz4=" - camel.apache.org/provider: "Red Hat" - camel.apache.org/kamelet.group: "SPLUNK" - labels: - camel.apache.org/kamelet.type: "source" -spec: - definition: - title: "Splunk Source" - description: |- - Retrieve data from Splunk and outputs in json format. - - For the fields accepting time specifiers like `earliestTime`, it accepts a wide variety of formats, please check https://docs.splunk.com/Documentation/Splunk/9.0.0/Search/Specifytimemodifiersinyoursearch[Splunk documentation] for more information. - - required: - - serverHostname - - username - - password - - query - - initEarliestTime - type: object - properties: - serverHostname: - title: Splunk Server Address - description: The address of your Splunk server. - type: string - example: my_server_splunk.com - serverPort: - title: Splunk Server Port - description: The address of your Splunk server. - type: integer - default: 8089 - username: - title: Username - description: The username to authenticate to Splunk Server. - type: string - password: - title: Password - description: The password to authenticate to Splunk Server. - type: string - format: password - x-descriptors: - - urn:alm:descriptor:com.tectonic.ui:password - - urn:camel:group:credentials - index: - title: Index - description: Splunk index to write to. - type: string - protocol: - title: Protocol - description: Connection Protocol to Splunk server. - type: string - default: https - enum: ["http", "https"] - source: - title: Source - description: The source named field of the data. - type: string - sourceType: - title: Source Type - description: The source named field of the data. - type: string - app: - title: Splunk App - description: The app name in Splunk. - type: string - connectionTimeout: - title: Connection Timeout - description: Timeout in milliseconds when connecting to Splunk server - type: integer - count: - title: Count - description: The maximum number of entities to return. - type: integer - repeat: - title: Repeat - description: The maximum number of fires. - type: integer - delay: - title: Delay - description: Milliseconds before the next poll. - type: integer - query: - title: Query - description: The Splunk query to run. - type: string - earliestTime: - title: Earliest Time - description: Earliest time of the search time window. - type: string - example: "05/17/22 08:35:46:456" - initEarliestTime: - title: Init Earliest Time - description: Initial start offset of the first search. - type: string - example: "05/17/22 08:35:46:456" - latestTime: - title: Latest Time - description: Latest time of the search time window. - type: string - example: "05/17/22 08:35:46:456" - types: - out: - mediaType: application/json - dependencies: - - "camel:jackson" - - "camel:core" - - "camel:splunk" - - "camel:kamelet" - - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.4.redhat-00001" - template: - from: - uri: "splunk:normal" - parameters: - host: "{{serverHostname}}" - port: "{{serverPort}}" - username: "{{username}}" - password: "{{password}}" - index: "{{?index}}" - scheme: "{{?protocol}}" - source: "{{?source}}" - sourceType: "{{?sourceType}}" - app: "{{?app}}" - connectionTimeout: "{{?connectionTimeout}}" - count: "{{?count}}" - repeatCount: "{{?repeat}}" - delay: "{{?delay}}" - search: "{{?query}}" - earliestTime: "{{?earliestTime}}" - initEarliestTime: "{{initEarliestTime}}" - latestTime: "{{?latestTime}}" - raw: true - steps: - - marshal: - json: - library: Jackson - module-class-names: com.fasterxml.jackson.datatype.joda.JodaModule - - to: "kamelet:sink" diff --git a/templates/bindings/camel-k/avro-deserialize-action-binding.yaml b/templates/bindings/camel-k/avro-deserialize-action-binding.yaml index b1ecf9d15..5f735078d 100644 --- a/templates/bindings/camel-k/avro-deserialize-action-binding.yaml +++ b/templates/bindings/camel-k/avro-deserialize-action-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name avro-deserialize-action-binding timer-source?message='{"first":"Ada","last":"Lovelace"}' --step json-deserialize-action --step avro-serialize-action -p step-1.schema='{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}' --step avro-deserialize-action -p step-2.schema='{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}' --step json-serialize-action log:info -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: avro-deserialize-action-binding @@ -7,30 +7,30 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first":"Ada","last":"Lovelace"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: avro-serialize-action properties: schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: avro-deserialize-action properties: schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-serialize-action sink: ref: diff --git a/templates/bindings/camel-k/avro-serialize-action-binding.yaml b/templates/bindings/camel-k/avro-serialize-action-binding.yaml index a9bc4e40b..fa5419587 100644 --- a/templates/bindings/camel-k/avro-serialize-action-binding.yaml +++ b/templates/bindings/camel-k/avro-serialize-action-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name avro-serialize-action-binding timer-source?message='{"first":"Ada","last":"Lovelace"}' --step json-deserialize-action --step avro-serialize-action -p step-1.schema='{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}' log:info -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: avro-serialize-action-binding @@ -7,18 +7,18 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first":"Ada","last":"Lovelace"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: avro-serialize-action properties: schema: "{\"type\": \"record\", \"namespace\": \"com.example\", \"name\": \"FullName\", \"fields\": [{\"name\": \"first\", \"type\": \"string\"},{\"name\": \"last\", \"type\": \"string\"}]}" diff --git a/templates/bindings/camel-k/aws-cloudtrail-source-binding.yaml b/templates/bindings/camel-k/aws-cloudtrail-source-binding.yaml new file mode 100644 index 000000000..b8e02d754 --- /dev/null +++ b/templates/bindings/camel-k/aws-cloudtrail-source-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-cloudtrail-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-cloudtrail-source + properties: + region: "The AWS Region" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-cloudwatch-sink-binding.yaml b/templates/bindings/camel-k/aws-cloudwatch-sink-binding.yaml index 3506d9c9b..34d7a34fa 100644 --- a/templates/bindings/camel-k/aws-cloudwatch-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-cloudwatch-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-cloudwatch-sink-binding @@ -11,11 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-cloudwatch-sink properties: - accessKey: "The Access Key" - cw_namespace: "The Cloud Watch Namespace" - region: "eu-west-1" - secretKey: "The Secret Key" + cwNamespace: "The Cloud Watch Namespace" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-ddb-sink-binding.yaml b/templates/bindings/camel-k/aws-ddb-sink-binding.yaml index 29d6c8a56..50d2aa5b9 100644 --- a/templates/bindings/camel-k/aws-ddb-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-ddb-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-ddb-sink-binding @@ -11,9 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-ddb-sink properties: - region: "eu-west-1" + region: "The AWS Region" table: "The Table" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-ddb-streams-source-binding.yaml b/templates/bindings/camel-k/aws-ddb-streams-source-binding.yaml index c4aa90fe6..909ed2695 100644 --- a/templates/bindings/camel-k/aws-ddb-streams-source-binding.yaml +++ b/templates/bindings/camel-k/aws-ddb-streams-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-ddb-streams-source-binding @@ -6,10 +6,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-ddb-streams-source properties: - region: "eu-west-1" + region: "The AWS Region" table: "The Table" sink: ref: diff --git a/templates/bindings/camel-k/aws-ec2-sink-binding.yaml b/templates/bindings/camel-k/aws-ec2-sink-binding.yaml new file mode 100644 index 000000000..f1cba6a1e --- /dev/null +++ b/templates/bindings/camel-k/aws-ec2-sink-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-ec2-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-ec2-sink + properties: + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-eventbridge-sink-binding.yaml b/templates/bindings/camel-k/aws-eventbridge-sink-binding.yaml new file mode 100644 index 000000000..1d0bdd078 --- /dev/null +++ b/templates/bindings/camel-k/aws-eventbridge-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-eventbridge-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-eventbridge-sink + properties: + eventbusNameOrArn: "The Eventbus Name" + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-kinesis-firehose-sink-binding.yaml b/templates/bindings/camel-k/aws-kinesis-firehose-sink-binding.yaml index fbdf90ea6..d7dc654ff 100644 --- a/templates/bindings/camel-k/aws-kinesis-firehose-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-kinesis-firehose-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-kinesis-firehose-sink-binding @@ -11,11 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-kinesis-firehose-sink properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" - streamName: "The Stream name" + region: "The AWS Region" + streamName: "The Stream Name" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-kinesis-sink-binding.yaml b/templates/bindings/camel-k/aws-kinesis-sink-binding.yaml index d272322d0..b29c24d81 100644 --- a/templates/bindings/camel-k/aws-kinesis-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-kinesis-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-kinesis-sink-binding @@ -11,11 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-kinesis-sink properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" stream: "The Stream Name" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-kinesis-source-binding.yaml b/templates/bindings/camel-k/aws-kinesis-source-binding.yaml index f610bbfc6..65ef922a6 100644 --- a/templates/bindings/camel-k/aws-kinesis-source-binding.yaml +++ b/templates/bindings/camel-k/aws-kinesis-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-kinesis-source-binding @@ -6,12 +6,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-kinesis-source properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" stream: "The Stream Name" sink: ref: diff --git a/templates/bindings/camel-k/aws-lambda-sink-binding.yaml b/templates/bindings/camel-k/aws-lambda-sink-binding.yaml index 23484934b..5de626ad3 100644 --- a/templates/bindings/camel-k/aws-lambda-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-lambda-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-lambda-sink-binding @@ -11,11 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-lambda-sink properties: - accessKey: "The Access Key" function: "The Function Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-redshift-sink-binding.yaml b/templates/bindings/camel-k/aws-redshift-sink-binding.yaml index 3b535365b..6dc990eba 100644 --- a/templates/bindings/camel-k/aws-redshift-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-redshift-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-redshift-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-redshift-sink properties: databaseName: "The Database Name" diff --git a/templates/bindings/camel-k/aws-redshift-source-binding.yaml b/templates/bindings/camel-k/aws-redshift-source-binding.yaml new file mode 100644 index 000000000..0cd8eb8eb --- /dev/null +++ b/templates/bindings/camel-k/aws-redshift-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-redshift-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-redshift-source + properties: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-s3-cdc-source-binding.yaml b/templates/bindings/camel-k/aws-s3-cdc-source-binding.yaml new file mode 100644 index 000000000..7a17eed1d --- /dev/null +++ b/templates/bindings/camel-k/aws-s3-cdc-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-s3-cdc-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-s3-cdc-source + properties: + accessKey: "The Access Key" + queueNameOrArn: "The Queue Name" + region: "The AWS Region" + secretKey: "The Secret Key" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-s3-sink-binding.yaml b/templates/bindings/camel-k/aws-s3-sink-binding.yaml index 9df609d61..d563904c0 100644 --- a/templates/bindings/camel-k/aws-s3-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-s3-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-s3-sink-binding @@ -11,11 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-s3-sink properties: - accessKey: "The Access Key" bucketNameOrArn: "The Bucket Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-s3-source-binding.yaml b/templates/bindings/camel-k/aws-s3-source-binding.yaml index 03f9684cd..ab88a59d1 100644 --- a/templates/bindings/camel-k/aws-s3-source-binding.yaml +++ b/templates/bindings/camel-k/aws-s3-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-s3-source-binding @@ -6,13 +6,11 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-s3-source properties: - accessKey: "The Access Key" bucketNameOrArn: "The Bucket Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" sink: ref: kind: KafkaTopic diff --git a/templates/bindings/camel-k/aws-s3-streaming-upload-sink-binding.yaml b/templates/bindings/camel-k/aws-s3-streaming-upload-sink-binding.yaml index 1ced5feb9..b69639512 100644 --- a/templates/bindings/camel-k/aws-s3-streaming-upload-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-s3-streaming-upload-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-s3-streaming-upload-sink-binding @@ -11,12 +11,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 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" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-secrets-manager-sink-binding.yaml b/templates/bindings/camel-k/aws-secrets-manager-sink-binding.yaml new file mode 100644 index 000000000..912646c49 --- /dev/null +++ b/templates/bindings/camel-k/aws-secrets-manager-sink-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-secrets-manager-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-secrets-manager-sink + properties: + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-ses-sink-binding.yaml b/templates/bindings/camel-k/aws-ses-sink-binding.yaml new file mode 100644 index 000000000..c332ff192 --- /dev/null +++ b/templates/bindings/camel-k/aws-ses-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-ses-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-ses-sink + properties: + from: "user@example.com" + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-sns-fifo-sink-binding.yaml b/templates/bindings/camel-k/aws-sns-fifo-sink-binding.yaml new file mode 100644 index 000000000..da346e61d --- /dev/null +++ b/templates/bindings/camel-k/aws-sns-fifo-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-sns-fifo-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-sns-fifo-sink + properties: + region: "The AWS Region" + topicNameOrArn: "The Topic Name" + \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-sns-sink-binding.yaml b/templates/bindings/camel-k/aws-sns-sink-binding.yaml index d63c4229b..c257d3127 100644 --- a/templates/bindings/camel-k/aws-sns-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-sns-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sns-sink-binding @@ -11,11 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sns-sink properties: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" topicNameOrArn: "The Topic Name" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-sqs-batch-sink-binding.yaml b/templates/bindings/camel-k/aws-sqs-batch-sink-binding.yaml new file mode 100644 index 000000000..04b57323a --- /dev/null +++ b/templates/bindings/camel-k/aws-sqs-batch-sink-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-sqs-batch-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-sqs-batch-sink + properties: + batchSeparator: "," + queueNameOrArn: "The Queue Name" + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-sqs-fifo-sink-binding.yaml b/templates/bindings/camel-k/aws-sqs-fifo-sink-binding.yaml index 8c6e06d6c..393761479 100644 --- a/templates/bindings/camel-k/aws-sqs-fifo-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-sqs-fifo-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-fifo-sink-binding @@ -11,11 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-fifo-sink properties: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-sqs-sink-binding.yaml b/templates/bindings/camel-k/aws-sqs-sink-binding.yaml index 3e97fe05e..ee7eb9e85 100644 --- a/templates/bindings/camel-k/aws-sqs-sink-binding.yaml +++ b/templates/bindings/camel-k/aws-sqs-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-sink-binding @@ -11,11 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-sink properties: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/camel-k/aws-sqs-source-binding.yaml b/templates/bindings/camel-k/aws-sqs-source-binding.yaml index 006835aeb..585c40bbf 100644 --- a/templates/bindings/camel-k/aws-sqs-source-binding.yaml +++ b/templates/bindings/camel-k/aws-sqs-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-source-binding @@ -6,13 +6,11 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-source properties: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" sink: ref: kind: KafkaTopic diff --git a/templates/bindings/camel-k/aws-translate-action-binding.yaml b/templates/bindings/camel-k/aws-translate-action-binding.yaml new file mode 100644 index 000000000..5dcb28594 --- /dev/null +++ b/templates/bindings/camel-k/aws-translate-action-binding.yaml @@ -0,0 +1,26 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: aws-translate-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: aws-translate-action + properties: + region: "The AWS Region" + sourceLanguage: "it" + targetLanguage: "it" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/azure-cosmosdb-sink-binding.yaml b/templates/bindings/camel-k/azure-cosmosdb-sink-binding.yaml new file mode 100644 index 000000000..3c1a7d750 --- /dev/null +++ b/templates/bindings/camel-k/azure-cosmosdb-sink-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-cosmosdb-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-cosmosdb-sink + properties: + accountKey: "The Account Key" + containerName: "The Container Name" + databaseEndpoint: "The Database Endpoint" + databaseName: "The Database Name" + \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-cosmosdb-source-binding.yaml b/templates/bindings/camel-k/azure-cosmosdb-source-binding.yaml new file mode 100644 index 000000000..7fc7c6421 --- /dev/null +++ b/templates/bindings/camel-k/azure-cosmosdb-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-cosmosdb-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-cosmosdb-source + properties: + accountKey: "The Account Key" + containerName: "The Container Name" + databaseEndpoint: "The Database Endpoint" + databaseName: "The Database Name" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-eventhubs-sink-binding.yaml b/templates/bindings/camel-k/azure-eventhubs-sink-binding.yaml new file mode 100644 index 000000000..ed9ae9644 --- /dev/null +++ b/templates/bindings/camel-k/azure-eventhubs-sink-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-eventhubs-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-eventhubs-sink + properties: + eventhubName: "The Eventhubs Name" + namespaceName: "The Eventhubs Namespace" + sharedAccessKey: "The Share Access Key" + sharedAccessName: "The Share Access Name" + \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-eventhubs-source-binding.yaml b/templates/bindings/camel-k/azure-eventhubs-source-binding.yaml new file mode 100644 index 000000000..e1d43c5f1 --- /dev/null +++ b/templates/bindings/camel-k/azure-eventhubs-source-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-eventhubs-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-eventhubs-source + properties: + blobAccessKey: "The Azure Storage Blob Access Key" + blobAccountName: "The Azure Storage Blob Account Name" + blobContainerName: "The Azure Storage Blob Container Name" + eventhubName: "The Eventhubs Name" + namespaceName: "The Eventhubs Namespace" + sharedAccessKey: "The Share Access Key" + sharedAccessName: "The Share Access Name" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-functions-sink-binding.yaml b/templates/bindings/camel-k/azure-functions-sink-binding.yaml new file mode 100644 index 000000000..fd67636dd --- /dev/null +++ b/templates/bindings/camel-k/azure-functions-sink-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-functions-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-functions-sink + properties: + url: "https://azure-function-demo-12234.azurewebsites.net/api/httpexample" + \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-servicebus-sink-binding.yaml b/templates/bindings/camel-k/azure-servicebus-sink-binding.yaml index b687fcb92..b34ef87a0 100644 --- a/templates/bindings/camel-k/azure-servicebus-sink-binding.yaml +++ b/templates/bindings/camel-k/azure-servicebus-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-servicebus-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-servicebus-sink properties: connectionString: "The Connection String" diff --git a/templates/bindings/camel-k/azure-servicebus-source-binding.yaml b/templates/bindings/camel-k/azure-servicebus-source-binding.yaml index 3058497af..de28eb2b6 100644 --- a/templates/bindings/camel-k/azure-servicebus-source-binding.yaml +++ b/templates/bindings/camel-k/azure-servicebus-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-servicebus-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-servicebus-source properties: connectionString: "The Connection String" diff --git a/templates/bindings/camel-k/azure-storage-blob-append-sink-binding.yaml b/templates/bindings/camel-k/azure-storage-blob-append-sink-binding.yaml index 68b199e18..f3bf82b39 100644 --- a/templates/bindings/camel-k/azure-storage-blob-append-sink-binding.yaml +++ b/templates/bindings/camel-k/azure-storage-blob-append-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-blob-append-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-blob-append-sink properties: accountName: "The Account Name" diff --git a/templates/bindings/camel-k/azure-storage-blob-cdc-source-binding.yaml b/templates/bindings/camel-k/azure-storage-blob-cdc-source-binding.yaml new file mode 100644 index 000000000..d91fb665a --- /dev/null +++ b/templates/bindings/camel-k/azure-storage-blob-cdc-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-storage-blob-cdc-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-storage-blob-cdc-source + properties: + accessKey: "The Access Key" + accountName: "The Account Name" + connectionString: "The Connection String" + containerName: "The Container Name" + topicOrQueueName: "The Topic Or Queue Name" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-storage-blob-changefeed-source-binding.yaml b/templates/bindings/camel-k/azure-storage-blob-changefeed-source-binding.yaml new file mode 100644 index 000000000..95c524fe3 --- /dev/null +++ b/templates/bindings/camel-k/azure-storage-blob-changefeed-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-storage-blob-changefeed-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-storage-blob-changefeed-source + properties: + accessKey: "The Access Key" + accountName: "The Account Name" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-storage-blob-sink-binding.yaml b/templates/bindings/camel-k/azure-storage-blob-sink-binding.yaml index 493fbd86b..8329eb365 100644 --- a/templates/bindings/camel-k/azure-storage-blob-sink-binding.yaml +++ b/templates/bindings/camel-k/azure-storage-blob-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-blob-sink-binding @@ -11,10 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-blob-sink properties: - accessKey: "The Access Key" accountName: "The Account Name" containerName: "The Container Name" \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-storage-blob-source-binding.yaml b/templates/bindings/camel-k/azure-storage-blob-source-binding.yaml index 86f36c5f3..41e055eb0 100644 --- a/templates/bindings/camel-k/azure-storage-blob-source-binding.yaml +++ b/templates/bindings/camel-k/azure-storage-blob-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-blob-source-binding @@ -6,10 +6,9 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-blob-source properties: - accessKey: "The Access Key" accountName: "The Account Name" containerName: "The Container Name" sink: diff --git a/templates/bindings/camel-k/azure-storage-datalake-sink-binding.yaml b/templates/bindings/camel-k/azure-storage-datalake-sink-binding.yaml new file mode 100644 index 000000000..008d2e364 --- /dev/null +++ b/templates/bindings/camel-k/azure-storage-datalake-sink-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-storage-datalake-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-storage-datalake-sink + properties: + accountName: "The Account Name" + clientId: "The Client Id" + clientSecret: "The Client Secret" + fileSystemName: "The File System Name" + tenantId: "The Tenant Id" + \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-storage-datalake-source-binding.yaml b/templates/bindings/camel-k/azure-storage-datalake-source-binding.yaml new file mode 100644 index 000000000..2845466a6 --- /dev/null +++ b/templates/bindings/camel-k/azure-storage-datalake-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: azure-storage-datalake-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: azure-storage-datalake-source + properties: + accountName: "The Account Name" + clientId: "The Client Id" + clientSecret: "The Client Secret" + fileSystemName: "The File System Name" + tenantId: "The Tenant Id" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-storage-queue-sink-binding.yaml b/templates/bindings/camel-k/azure-storage-queue-sink-binding.yaml index aebb8a343..81bff68ff 100644 --- a/templates/bindings/camel-k/azure-storage-queue-sink-binding.yaml +++ b/templates/bindings/camel-k/azure-storage-queue-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-queue-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-queue-sink properties: accessKey: "The Access Key" diff --git a/templates/bindings/camel-k/azure-storage-queue-source-binding.yaml b/templates/bindings/camel-k/azure-storage-queue-source-binding.yaml index 67cd36159..fa241652f 100644 --- a/templates/bindings/camel-k/azure-storage-queue-source-binding.yaml +++ b/templates/bindings/camel-k/azure-storage-queue-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: azure-storage-queue-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: azure-storage-queue-source properties: accessKey: "The Access Key" diff --git a/templates/bindings/camel-k/beer-source-binding.yaml b/templates/bindings/camel-k/beer-source-binding.yaml new file mode 100644 index 000000000..5c74af03b --- /dev/null +++ b/templates/bindings/camel-k/beer-source-binding.yaml @@ -0,0 +1,16 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: beer-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: beer-source + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/bitcoin-source-binding.yaml b/templates/bindings/camel-k/bitcoin-source-binding.yaml new file mode 100644 index 000000000..4f3ad5c8b --- /dev/null +++ b/templates/bindings/camel-k/bitcoin-source-binding.yaml @@ -0,0 +1,16 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: bitcoin-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: bitcoin-source + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/caffeine-action-binding.yaml b/templates/bindings/camel-k/caffeine-action-binding.yaml new file mode 100644 index 000000000..bea15c073 --- /dev/null +++ b/templates/bindings/camel-k/caffeine-action-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: caffeine-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: caffeine-action + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/cassandra-sink-binding.yaml b/templates/bindings/camel-k/cassandra-sink-binding.yaml index 2a5138eb4..b3e5da5de 100644 --- a/templates/bindings/camel-k/cassandra-sink-binding.yaml +++ b/templates/bindings/camel-k/cassandra-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: cassandra-sink-binding @@ -11,13 +11,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: cassandra-sink properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" - password: "The Password" query: "The Query" - username: "The Username" \ No newline at end of file diff --git a/templates/bindings/camel-k/cassandra-source-binding.yaml b/templates/bindings/camel-k/cassandra-source-binding.yaml index 328f174d2..af987625e 100644 --- a/templates/bindings/camel-k/cassandra-source-binding.yaml +++ b/templates/bindings/camel-k/cassandra-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: cassandra-source-binding @@ -6,15 +6,13 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: cassandra-source properties: connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" - password: "The Password" query: "The Query" - username: "The Username" sink: ref: kind: KafkaTopic diff --git a/templates/bindings/camel-k/ceph-sink-binding.yaml b/templates/bindings/camel-k/ceph-sink-binding.yaml index d45f2d3a6..d5df0e935 100644 --- a/templates/bindings/camel-k/ceph-sink-binding.yaml +++ b/templates/bindings/camel-k/ceph-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ceph-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ceph-sink properties: accessKey: "The Access Key" diff --git a/templates/bindings/camel-k/ceph-source-binding.yaml b/templates/bindings/camel-k/ceph-source-binding.yaml index c519af380..b3a86ab6f 100644 --- a/templates/bindings/camel-k/ceph-source-binding.yaml +++ b/templates/bindings/camel-k/ceph-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ceph-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ceph-source properties: accessKey: "The Access Key" diff --git a/templates/bindings/camel-k/chuck-norris-source-binding.yaml b/templates/bindings/camel-k/chuck-norris-source-binding.yaml new file mode 100644 index 000000000..fae0066d3 --- /dev/null +++ b/templates/bindings/camel-k/chuck-norris-source-binding.yaml @@ -0,0 +1,16 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: chuck-norris-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: chuck-norris-source + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/chunk-template-action-binding.yaml b/templates/bindings/camel-k/chunk-template-action-binding.yaml new file mode 100644 index 000000000..b1c1af4ec --- /dev/null +++ b/templates/bindings/camel-k/chunk-template-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: chunk-template-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: chunk-template-action + properties: + template: "The Template" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/couchbase-sink-binding.yaml b/templates/bindings/camel-k/couchbase-sink-binding.yaml new file mode 100644 index 000000000..8bd6a24cd --- /dev/null +++ b/templates/bindings/camel-k/couchbase-sink-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: couchbase-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: couchbase-sink + properties: + bucket: "The Bucket" + couchbaseHostname: "The Hostname" + protocol: "The Protocol" + \ No newline at end of file diff --git a/templates/bindings/camel-k/cron-source-binding.yaml b/templates/bindings/camel-k/cron-source-binding.yaml new file mode 100644 index 000000000..b12394c21 --- /dev/null +++ b/templates/bindings/camel-k/cron-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: cron-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: cron-source + properties: + message: "hello world" + schedule: "0/3 10 * * * ?" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/data-type-action-binding.yaml b/templates/bindings/camel-k/data-type-action-binding.yaml new file mode 100644 index 000000000..ec11a4089 --- /dev/null +++ b/templates/bindings/camel-k/data-type-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: data-type-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: data-type-action + properties: + format: "The Data Type Format" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/delay-action-binding.yaml b/templates/bindings/camel-k/delay-action-binding.yaml new file mode 100644 index 000000000..f15d8965d --- /dev/null +++ b/templates/bindings/camel-k/delay-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: delay-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: delay-action + properties: + milliseconds: 1000 + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/dns-dig-action-binding.yaml b/templates/bindings/camel-k/dns-dig-action-binding.yaml new file mode 100644 index 000000000..5b0310d55 --- /dev/null +++ b/templates/bindings/camel-k/dns-dig-action-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: dns-dig-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: dns-dig-action + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/dns-ip-action-binding.yaml b/templates/bindings/camel-k/dns-ip-action-binding.yaml new file mode 100644 index 000000000..cc0b82b60 --- /dev/null +++ b/templates/bindings/camel-k/dns-ip-action-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: dns-ip-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: dns-ip-action + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/dns-lookup-action-binding.yaml b/templates/bindings/camel-k/dns-lookup-action-binding.yaml new file mode 100644 index 000000000..2b8192b4b --- /dev/null +++ b/templates/bindings/camel-k/dns-lookup-action-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: dns-lookup-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: dns-lookup-action + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/drop-header-action-binding.yaml b/templates/bindings/camel-k/drop-header-action-binding.yaml new file mode 100644 index 000000000..b263023f3 --- /dev/null +++ b/templates/bindings/camel-k/drop-header-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: drop-header-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: drop-header-action + properties: + name: "headername" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/drop-headers-action-binding.yaml b/templates/bindings/camel-k/drop-headers-action-binding.yaml new file mode 100644 index 000000000..dea7d028a --- /dev/null +++ b/templates/bindings/camel-k/drop-headers-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: drop-headers-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: drop-headers-action + properties: + pattern: "Camel*" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/dropbox-sink-binding.yaml b/templates/bindings/camel-k/dropbox-sink-binding.yaml new file mode 100644 index 000000000..a09d63ec7 --- /dev/null +++ b/templates/bindings/camel-k/dropbox-sink-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: dropbox-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: dropbox-sink + properties: + accessToken: "The Dropbox Access Token" + clientIdentifier: "The Client Identifier" + remotePath: "The Remote Path" + \ No newline at end of file diff --git a/templates/bindings/camel-k/dropbox-source-binding.yaml b/templates/bindings/camel-k/dropbox-source-binding.yaml new file mode 100644 index 000000000..0f9fef4bf --- /dev/null +++ b/templates/bindings/camel-k/dropbox-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: dropbox-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: dropbox-source + properties: + accessToken: "The Dropbox Access Token" + clientIdentifier: "The Client Identifier" + query: "The Queries" + remotePath: "The Remote Path" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/earthquake-source-binding.yaml b/templates/bindings/camel-k/earthquake-source-binding.yaml new file mode 100644 index 000000000..2c2932e0e --- /dev/null +++ b/templates/bindings/camel-k/earthquake-source-binding.yaml @@ -0,0 +1,16 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: earthquake-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: earthquake-source + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/elasticsearch-index-sink-binding.yaml b/templates/bindings/camel-k/elasticsearch-index-sink-binding.yaml index b13b2898b..cb69b7391 100644 --- a/templates/bindings/camel-k/elasticsearch-index-sink-binding.yaml +++ b/templates/bindings/camel-k/elasticsearch-index-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: elasticsearch-index-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: elasticsearch-index-sink properties: clusterName: "quickstart" diff --git a/templates/bindings/camel-k/elasticsearch-search-source-binding.yaml b/templates/bindings/camel-k/elasticsearch-search-source-binding.yaml new file mode 100644 index 000000000..f63e8b316 --- /dev/null +++ b/templates/bindings/camel-k/elasticsearch-search-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: elasticsearch-search-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: elasticsearch-search-source + properties: + clusterName: "The ElasticSearch Cluster Name" + hostAddresses: "The Host Addresses" + indexName: "The Index in ElasticSearch" + query: "The Query" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/exec-sink-binding.yaml b/templates/bindings/camel-k/exec-sink-binding.yaml new file mode 100644 index 000000000..8551f7116 --- /dev/null +++ b/templates/bindings/camel-k/exec-sink-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: exec-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: exec-sink + properties: + executable: "The Executable Command" + \ No newline at end of file diff --git a/templates/bindings/camel-k/extract-field-action-binding.yaml b/templates/bindings/camel-k/extract-field-action-binding.yaml index 5257b8d1c..21ee8e14c 100644 --- a/templates/bindings/camel-k/extract-field-action-binding.yaml +++ b/templates/bindings/camel-k/extract-field-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: extract-field-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: extract-field-action properties: field: "The Field" diff --git a/templates/bindings/camel-k/fhir-sink-binding.yaml b/templates/bindings/camel-k/fhir-sink-binding.yaml new file mode 100644 index 000000000..a549db317 --- /dev/null +++ b/templates/bindings/camel-k/fhir-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: fhir-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: fhir-sink + properties: + methodName: "The Method Name" + serverUrl: "The Server URL" + \ No newline at end of file diff --git a/templates/bindings/camel-k/fhir-source-binding.yaml b/templates/bindings/camel-k/fhir-source-binding.yaml new file mode 100644 index 000000000..facfa6893 --- /dev/null +++ b/templates/bindings/camel-k/fhir-source-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: fhir-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: fhir-source + properties: + password: "The Password" + serverUrl: "The Server URL" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/file-watch-source-binding.yaml b/templates/bindings/camel-k/file-watch-source-binding.yaml new file mode 100644 index 000000000..ce0e6a58b --- /dev/null +++ b/templates/bindings/camel-k/file-watch-source-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: file-watch-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: file-watch-source + properties: + filePath: "The Path to Watch" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/freemarker-template-action-binding.yaml b/templates/bindings/camel-k/freemarker-template-action-binding.yaml new file mode 100644 index 000000000..caf9368c2 --- /dev/null +++ b/templates/bindings/camel-k/freemarker-template-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: freemarker-template-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: freemarker-template-action + properties: + template: "file:////template.ftl" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/ftp-sink-binding.yaml b/templates/bindings/camel-k/ftp-sink-binding.yaml index b75e36875..c3803ebfc 100644 --- a/templates/bindings/camel-k/ftp-sink-binding.yaml +++ b/templates/bindings/camel-k/ftp-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftp-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftp-sink properties: connectionHost: "The Connection Host" diff --git a/templates/bindings/camel-k/ftp-source-binding.yaml b/templates/bindings/camel-k/ftp-source-binding.yaml index 9201455f2..0061ff518 100644 --- a/templates/bindings/camel-k/ftp-source-binding.yaml +++ b/templates/bindings/camel-k/ftp-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftp-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftp-source properties: connectionHost: "The Connection Host" diff --git a/templates/bindings/camel-k/ftps-sink-binding.yaml b/templates/bindings/camel-k/ftps-sink-binding.yaml index 3708d27ca..8a9df099f 100644 --- a/templates/bindings/camel-k/ftps-sink-binding.yaml +++ b/templates/bindings/camel-k/ftps-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftps-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftps-sink properties: connectionHost: "The Connection Host" diff --git a/templates/bindings/camel-k/ftps-source-binding.yaml b/templates/bindings/camel-k/ftps-source-binding.yaml index e2e9d9296..e516a042c 100644 --- a/templates/bindings/camel-k/ftps-source-binding.yaml +++ b/templates/bindings/camel-k/ftps-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftps-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftps-source properties: connectionHost: "The Connection Host" diff --git a/templates/bindings/camel-k/github-commit-source-binding.yaml b/templates/bindings/camel-k/github-commit-source-binding.yaml new file mode 100644 index 000000000..a6b00c4d9 --- /dev/null +++ b/templates/bindings/camel-k/github-commit-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: github-commit-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: github-commit-source + properties: + branch: "The Branch" + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/github-event-source-binding.yaml b/templates/bindings/camel-k/github-event-source-binding.yaml new file mode 100644 index 000000000..367228907 --- /dev/null +++ b/templates/bindings/camel-k/github-event-source-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: github-event-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: github-event-source + properties: + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/github-pullrequest-comment-source-binding.yaml b/templates/bindings/camel-k/github-pullrequest-comment-source-binding.yaml new file mode 100644 index 000000000..52553d578 --- /dev/null +++ b/templates/bindings/camel-k/github-pullrequest-comment-source-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: github-pullrequest-comment-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: github-pullrequest-comment-source + properties: + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/github-pullrequest-source-binding.yaml b/templates/bindings/camel-k/github-pullrequest-source-binding.yaml new file mode 100644 index 000000000..b5ac654dd --- /dev/null +++ b/templates/bindings/camel-k/github-pullrequest-source-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: github-pullrequest-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: github-pullrequest-source + properties: + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/github-tag-source-binding.yaml b/templates/bindings/camel-k/github-tag-source-binding.yaml new file mode 100644 index 000000000..ad7dfe22a --- /dev/null +++ b/templates/bindings/camel-k/github-tag-source-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: github-tag-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: github-tag-source + properties: + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-bigquery-sink-binding.yaml b/templates/bindings/camel-k/google-bigquery-sink-binding.yaml new file mode 100644 index 000000000..8a0ef8380 --- /dev/null +++ b/templates/bindings/camel-k/google-bigquery-sink-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-bigquery-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-bigquery-sink + properties: + dataset: "The Big Query Dataset Id" + projectId: "The Google Cloud Project Id" + serviceAccountKey: "The Service Account Key" + table: "The Big Query Table Id" + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-calendar-source-binding.yaml b/templates/bindings/camel-k/google-calendar-source-binding.yaml new file mode 100644 index 000000000..cbf1f9fe3 --- /dev/null +++ b/templates/bindings/camel-k/google-calendar-source-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-calendar-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-calendar-source + properties: + accessToken: "The Access Token" + applicationName: "The Application name" + calendarId: "The Calendar ID" + clientId: "The Client Id" + clientSecret: "The Client Secret" + index: "The Index" + refreshToken: "The Refresh Token" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-functions-sink-binding.yaml b/templates/bindings/camel-k/google-functions-sink-binding.yaml new file mode 100644 index 000000000..bec63aa81 --- /dev/null +++ b/templates/bindings/camel-k/google-functions-sink-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-functions-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-functions-sink + properties: + functionName: "The Function Name" + projectId: "The Project Id" + region: "The Region" + serviceAccountKey: "The Service Account Key" + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-mail-source-binding.yaml b/templates/bindings/camel-k/google-mail-source-binding.yaml new file mode 100644 index 000000000..d4ada05e7 --- /dev/null +++ b/templates/bindings/camel-k/google-mail-source-binding.yaml @@ -0,0 +1,23 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-mail-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-mail-source + properties: + accessToken: "The Access Token" + applicationName: "The Application name" + clientId: "The Client ID" + clientSecret: "The Client Secret" + index: "The Index" + refreshToken: "The Refresh Token" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-pubsub-sink-binding.yaml b/templates/bindings/camel-k/google-pubsub-sink-binding.yaml new file mode 100644 index 000000000..59ec0e840 --- /dev/null +++ b/templates/bindings/camel-k/google-pubsub-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-pubsub-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-pubsub-sink + properties: + destinationName: "The Destination Name" + projectId: "The Project Id" + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-pubsub-source-binding.yaml b/templates/bindings/camel-k/google-pubsub-source-binding.yaml new file mode 100644 index 000000000..985a5b50b --- /dev/null +++ b/templates/bindings/camel-k/google-pubsub-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-pubsub-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-pubsub-source + properties: + projectId: "The Project Id" + subscriptionName: "The Subscription Name" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-sheets-source-binding.yaml b/templates/bindings/camel-k/google-sheets-source-binding.yaml new file mode 100644 index 000000000..476e50635 --- /dev/null +++ b/templates/bindings/camel-k/google-sheets-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-sheets-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-sheets-source + properties: + accessToken: "The Access Token" + clientId: "The Client Id" + clientSecret: "The Client Secret" + refreshToken: "The Refresh Token" + spreadsheetId: "The Spreadsheet ID" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-storage-cdc-source-binding.yaml b/templates/bindings/camel-k/google-storage-cdc-source-binding.yaml new file mode 100644 index 000000000..a37edbaee --- /dev/null +++ b/templates/bindings/camel-k/google-storage-cdc-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-storage-cdc-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-storage-cdc-source + properties: + bucketNameOrArn: "The Bucket Name Or ARN" + projectId: "The Project Id" + serviceAccountKey: "The Service Account Key" + subscriptionName: "The Subscription Name" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-storage-sink-binding.yaml b/templates/bindings/camel-k/google-storage-sink-binding.yaml new file mode 100644 index 000000000..66d0d1a73 --- /dev/null +++ b/templates/bindings/camel-k/google-storage-sink-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-storage-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-storage-sink + properties: + bucketNameOrArn: "The Bucket Name Or ARN" + \ No newline at end of file diff --git a/templates/bindings/camel-k/google-storage-source-binding.yaml b/templates/bindings/camel-k/google-storage-source-binding.yaml new file mode 100644 index 000000000..21cd40edd --- /dev/null +++ b/templates/bindings/camel-k/google-storage-source-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: google-storage-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: google-storage-source + properties: + bucketNameOrArn: "The Bucket Name Or ARN" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/graphql-sink-binding.yaml b/templates/bindings/camel-k/graphql-sink-binding.yaml new file mode 100644 index 000000000..831aa5a91 --- /dev/null +++ b/templates/bindings/camel-k/graphql-sink-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: graphql-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: graphql-sink + properties: + url: "http://example.com/graphql" + \ No newline at end of file diff --git a/templates/bindings/camel-k/has-header-filter-action-binding.yaml b/templates/bindings/camel-k/has-header-filter-action-binding.yaml index 7f12c1e49..d522a50c9 100644 --- a/templates/bindings/camel-k/has-header-filter-action-binding.yaml +++ b/templates/bindings/camel-k/has-header-filter-action-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name has-header-filter-action-binding timer-source?message="Hello" --step insert-header-action -p "step-0.name=my-header" -p "step-0.value=my-value" --step has-header-filter-action -p "step-1.name=my-header" log:info -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: has-header-filter-action-binding @@ -7,21 +7,21 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "my-header" value: "my-value" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: has-header-filter-action properties: name: "my-header" diff --git a/templates/bindings/camel-k/header-matches-filter-action-binding.yaml b/templates/bindings/camel-k/header-matches-filter-action-binding.yaml new file mode 100644 index 000000000..d45216886 --- /dev/null +++ b/templates/bindings/camel-k/header-matches-filter-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: header-matches-filter-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: header-matches-filter-action + properties: + regex: "The Regex" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/hoist-field-action-binding.yaml b/templates/bindings/camel-k/hoist-field-action-binding.yaml index 53df5473f..0ba51bb2f 100644 --- a/templates/bindings/camel-k/hoist-field-action-binding.yaml +++ b/templates/bindings/camel-k/hoist-field-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: hoist-field-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: hoist-field-action properties: field: "The Field" diff --git a/templates/bindings/camel-k/http-secured-sink-binding.yaml b/templates/bindings/camel-k/http-secured-sink-binding.yaml new file mode 100644 index 000000000..253fa2ba0 --- /dev/null +++ b/templates/bindings/camel-k/http-secured-sink-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: http-secured-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: http-secured-sink + properties: + url: "https://my-service/path" + \ No newline at end of file diff --git a/templates/bindings/camel-k/http-secured-source-binding.yaml b/templates/bindings/camel-k/http-secured-source-binding.yaml new file mode 100644 index 000000000..298b1f281 --- /dev/null +++ b/templates/bindings/camel-k/http-secured-source-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: http-secured-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: http-secured-source + properties: + url: "https://gist.githubusercontent.com/nicolaferraro/e3c72ace3c751f9f88273896611ce5fe/raw/3b6f54060bacb56b6719b7386a4645cb59ad6cc1/quote.json" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/http-sink-binding.yaml b/templates/bindings/camel-k/http-sink-binding.yaml index b6db07c62..2dc6d9cea 100644 --- a/templates/bindings/camel-k/http-sink-binding.yaml +++ b/templates/bindings/camel-k/http-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: http-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: http-sink properties: url: "https://my-service/path" diff --git a/templates/bindings/camel-k/http-source-binding.yaml b/templates/bindings/camel-k/http-source-binding.yaml new file mode 100644 index 000000000..00e5aad65 --- /dev/null +++ b/templates/bindings/camel-k/http-source-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: http-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: http-source + properties: + url: "https://gist.githubusercontent.com/nicolaferraro/e3c72ace3c751f9f88273896611ce5fe/raw/3b6f54060bacb56b6719b7386a4645cb59ad6cc1/quote.json" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/infinispan-sink-binding.yaml b/templates/bindings/camel-k/infinispan-sink-binding.yaml new file mode 100644 index 000000000..a12b9a99e --- /dev/null +++ b/templates/bindings/camel-k/infinispan-sink-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: infinispan-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: infinispan-sink + properties: + cacheName: "The Cache Name" + hosts: "The Hosts" + password: "The Password" + username: "The Username" + \ No newline at end of file diff --git a/templates/bindings/camel-k/infinispan-source-binding.yaml b/templates/bindings/camel-k/infinispan-source-binding.yaml new file mode 100644 index 000000000..9b49ba35c --- /dev/null +++ b/templates/bindings/camel-k/infinispan-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: infinispan-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: infinispan-source + properties: + cacheName: "The Cache Name" + hosts: "The Hosts" + password: "The Password" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/insert-field-action-binding.yaml b/templates/bindings/camel-k/insert-field-action-binding.yaml index 97816b922..a4f20b2de 100644 --- a/templates/bindings/camel-k/insert-field-action-binding.yaml +++ b/templates/bindings/camel-k/insert-field-action-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name insert-field-action-binding timer-source?message='{"foo":"John"}' --step json-deserialize-action --step insert-field-action -p step-1.field='The Field' -p step-1.value='The Value' log:info -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: insert-field-action-binding @@ -7,18 +7,18 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"foo":"John"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-field-action properties: field: "The Field" diff --git a/templates/bindings/camel-k/insert-header-action-binding.yaml b/templates/bindings/camel-k/insert-header-action-binding.yaml index 1b192cfdd..392b155cf 100644 --- a/templates/bindings/camel-k/insert-header-action-binding.yaml +++ b/templates/bindings/camel-k/insert-header-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: insert-header-action-binding @@ -6,17 +6,17 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: - name: "The Name" + name: "headername" value: "The Value" sink: ref: diff --git a/templates/bindings/camel-k/is-tombstone-filter-action-binding.yaml b/templates/bindings/camel-k/is-tombstone-filter-action-binding.yaml index 848938f49..2f0200f01 100644 --- a/templates/bindings/camel-k/is-tombstone-filter-action-binding.yaml +++ b/templates/bindings/camel-k/is-tombstone-filter-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: is-tombstone-filter-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: is-tombstone-filter-action sink: ref: diff --git a/templates/bindings/camel-k/jira-add-comment-sink-binding.yaml b/templates/bindings/camel-k/jira-add-comment-sink-binding.yaml index 47091387a..32e338038 100644 --- a/templates/bindings/camel-k/jira-add-comment-sink-binding.yaml +++ b/templates/bindings/camel-k/jira-add-comment-sink-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name jira-add-comment-sink-binding timer-source?message="The new comment"\&period=60000 --step insert-header-action -p step-0.name=issueKey -p step-0.value=MYP-167 jira-add-comment-sink?password="password"\&username="username"\&jiraUrl="jira url" -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-add-comment-sink-binding @@ -12,7 +12,7 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueKey" @@ -20,7 +20,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-add-comment-sink properties: jiraUrl: "jira server url" diff --git a/templates/bindings/camel-k/jira-add-issue-sink-binding.yaml b/templates/bindings/camel-k/jira-add-issue-sink-binding.yaml index d3f27f814..76883eae4 100644 --- a/templates/bindings/camel-k/jira-add-issue-sink-binding.yaml +++ b/templates/bindings/camel-k/jira-add-issue-sink-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name jira-add-issue-sink-binding timer-source?message="The new comment"\&period=60000 --step insert-header-action -p step-0.name=projectKey -p step-0.value=MYP --step insert-header-action -p step-1.name=issueTypeName -p step-1.value=Bug --step insert-header-action -p step-2.name=issueSummary -p step-2.value="This is a bug" --step insert-header-action -p step-3.name=issuePriorityName -p step-3.value=Low jira-add-issue-sink?jiraUrl="jira url"\&username="username"\&password="password" -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-add-issue-sink-binding @@ -12,28 +12,28 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "projectKey" value: "MYP" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueTypeName" value: "Bug" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueSummary" value: "The issue summary" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issuePriorityName" @@ -41,7 +41,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-add-issue-sink properties: jiraUrl: "jira server url" diff --git a/templates/bindings/camel-k/jira-oauth-source-binding.yaml b/templates/bindings/camel-k/jira-oauth-source-binding.yaml new file mode 100644 index 000000000..6e58ceac7 --- /dev/null +++ b/templates/bindings/camel-k/jira-oauth-source-binding.yaml @@ -0,0 +1,23 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: jira-oauth-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: jira-oauth-source + properties: + accessToken: "The Username" + consumerKey: "The Password" + jiraUrl: "http://my_jira.com:8081" + jql: "project=MyProject" + privateKey: "The Password" + verificationCode: "The Password" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/jira-source-binding.yaml b/templates/bindings/camel-k/jira-source-binding.yaml index dcb351134..ec2c0c057 100644 --- a/templates/bindings/camel-k/jira-source-binding.yaml +++ b/templates/bindings/camel-k/jira-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-source-binding @@ -6,12 +6,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-source properties: jiraUrl: "http://my_jira.com:8081" - password: "The Password" - username: "The Username" sink: ref: kind: KafkaTopic diff --git a/templates/bindings/camel-k/jira-transition-issue-sink-binding.yaml b/templates/bindings/camel-k/jira-transition-issue-sink-binding.yaml index fc7e0b6fd..b8b1dc458 100644 --- a/templates/bindings/camel-k/jira-transition-issue-sink-binding.yaml +++ b/templates/bindings/camel-k/jira-transition-issue-sink-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name jira-transition-issue-sink-binding timer-source?message="The new comment 123"\&period=60000 --step insert-header-action -p step-0.name=issueKey -p step-0.value=MYP-170 --step insert-header-action -p step-1.name=issueTransitionId -p step-1.value=5 jira-transition-issue-sink?jiraUrl="jira url"\&username="username"\&password="password" -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-transition-issue-sink-binding @@ -12,14 +12,14 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueTransitionId" value: 701 - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueKey" @@ -27,7 +27,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-transition-issue-sink properties: jiraUrl: "jira server url" diff --git a/templates/bindings/camel-k/jira-update-issue-sink-binding.yaml b/templates/bindings/camel-k/jira-update-issue-sink-binding.yaml index aea8e1115..d741ed388 100644 --- a/templates/bindings/camel-k/jira-update-issue-sink-binding.yaml +++ b/templates/bindings/camel-k/jira-update-issue-sink-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name jira-update-issue-sink-binding timer-source?message="The new comment"\&period=60000 --step insert-header-action -p step-0.name=issueKey -p step-0.value=MYP-170 --step insert-header-action -p step-1.name=issueTypeName -p step-1.value=Story --step insert-header-action -p step-2.name=issueSummary -p step-2.value="This is a story 123" --step insert-header-action -p step-3.name=issuePriorityName -p step-3.value=Highest jira-update-issue-sink?jiraUrl="jira url"\&username="username"\&password="password" -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-update-issue-sink-binding @@ -12,28 +12,28 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueKey" value: "MYP-163" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueTypeName" value: "Bug" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issueSummary" value: "The issue summary" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: "issuePriorityName" @@ -41,7 +41,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-update-issue-sink properties: jiraUrl: "jira server url" diff --git a/templates/bindings/camel-k/jms-amqp-10-sink-binding.yaml b/templates/bindings/camel-k/jms-amqp-10-sink-binding.yaml index bc8515bd0..05b13c89d 100644 --- a/templates/bindings/camel-k/jms-amqp-10-sink-binding.yaml +++ b/templates/bindings/camel-k/jms-amqp-10-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-amqp-10-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-amqp-10-sink properties: destinationName: "The Destination Name" diff --git a/templates/bindings/camel-k/jms-amqp-10-source-binding.yaml b/templates/bindings/camel-k/jms-amqp-10-source-binding.yaml index fc1aa99ad..88be89ccd 100644 --- a/templates/bindings/camel-k/jms-amqp-10-source-binding.yaml +++ b/templates/bindings/camel-k/jms-amqp-10-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-amqp-10-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-amqp-10-source properties: destinationName: "The Destination Name" diff --git a/templates/bindings/camel-k/jms-apache-artemis-sink-binding.yaml b/templates/bindings/camel-k/jms-apache-artemis-sink-binding.yaml new file mode 100644 index 000000000..e8d31943c --- /dev/null +++ b/templates/bindings/camel-k/jms-apache-artemis-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: jms-apache-artemis-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: jms-apache-artemis-sink + properties: + brokerURL: "tcp://my-host:61616" + destinationName: "person" + \ No newline at end of file diff --git a/templates/bindings/camel-k/jms-apache-artemis-source-binding.yaml b/templates/bindings/camel-k/jms-apache-artemis-source-binding.yaml new file mode 100644 index 000000000..fab36d93f --- /dev/null +++ b/templates/bindings/camel-k/jms-apache-artemis-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: jms-apache-artemis-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: jms-apache-artemis-source + properties: + brokerURL: "tcp://k3s-node-master.usersys.redhat.com:31616" + destinationName: "The Destination Name" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/jms-ibm-mq-sink-binding.yaml b/templates/bindings/camel-k/jms-ibm-mq-sink-binding.yaml index e9f08a929..9f2947e47 100644 --- a/templates/bindings/camel-k/jms-ibm-mq-sink-binding.yaml +++ b/templates/bindings/camel-k/jms-ibm-mq-sink-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name jms-ibm-mq-sink-binding timer-source?message="Hello IBM MQ!" 'jms-ibm-mq-sink?serverName=10.103.41.245&serverPort=1414&destinationType=queue&destinationName=DEV.QUEUE.1&queueManager=QM1&channel=DEV.APP.SVRCONN&username=app&password=passw0rd' -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-ibm-mq-sink-binding @@ -12,7 +12,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-ibm-mq-sink properties: serverName: "10.103.41.245" diff --git a/templates/bindings/camel-k/jms-ibm-mq-source-binding.yaml b/templates/bindings/camel-k/jms-ibm-mq-source-binding.yaml index 2d897d785..53f8b823f 100644 --- a/templates/bindings/camel-k/jms-ibm-mq-source-binding.yaml +++ b/templates/bindings/camel-k/jms-ibm-mq-source-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name jms-ibm-mq-source-binding 'jms-ibm-mq-source?serverName=10.103.41.245&serverPort=1414&destinationType=queue&destinationName=DEV.QUEUE.1&queueManager=QM1&channel=DEV.APP.SVRCONN&username=app&password=passw0rd' log:info -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jms-ibm-mq-source-binding @@ -7,7 +7,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jms-ibm-mq-source properties: serverName: "10.103.41.245" diff --git a/templates/bindings/camel-k/jolt-transformation-action-binding.yaml b/templates/bindings/camel-k/jolt-transformation-action-binding.yaml new file mode 100644 index 000000000..29252ecd9 --- /dev/null +++ b/templates/bindings/camel-k/jolt-transformation-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: jolt-transformation-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: jolt-transformation-action + properties: + template: "file:////template.json" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/jslt-action-binding.yaml b/templates/bindings/camel-k/jslt-action-binding.yaml index f175b4c65..72c74561b 100644 --- a/templates/bindings/camel-k/jslt-action-binding.yaml +++ b/templates/bindings/camel-k/jslt-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jslt-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jslt-action properties: template: "file://template.json" diff --git a/templates/bindings/camel-k/json-deserialize-action-binding.yaml b/templates/bindings/camel-k/json-deserialize-action-binding.yaml index 864302a4a..90464f8ed 100644 --- a/templates/bindings/camel-k/json-deserialize-action-binding.yaml +++ b/templates/bindings/camel-k/json-deserialize-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: json-deserialize-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action sink: ref: diff --git a/templates/bindings/camel-k/json-patch-action-binding.yaml b/templates/bindings/camel-k/json-patch-action-binding.yaml new file mode 100644 index 000000000..647cfbf14 --- /dev/null +++ b/templates/bindings/camel-k/json-patch-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: json-patch-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: json-patch-action + properties: + template: "file:////template.json" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/json-schema-validator-action-binding.yaml b/templates/bindings/camel-k/json-schema-validator-action-binding.yaml new file mode 100644 index 000000000..4a201660d --- /dev/null +++ b/templates/bindings/camel-k/json-schema-validator-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: json-schema-validator-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: json-schema-validator-action + properties: + template: "file:////template.json" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/json-serialize-action-binding.yaml b/templates/bindings/camel-k/json-serialize-action-binding.yaml index 14b4755a4..7546de273 100644 --- a/templates/bindings/camel-k/json-serialize-action-binding.yaml +++ b/templates/bindings/camel-k/json-serialize-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: json-serialize-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-serialize-action sink: ref: diff --git a/templates/bindings/camel-k/jsonata-action-binding.yaml b/templates/bindings/camel-k/jsonata-action-binding.yaml new file mode 100644 index 000000000..1e64b2031 --- /dev/null +++ b/templates/bindings/camel-k/jsonata-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: jsonata-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: jsonata-action + properties: + template: "file:////template.spec" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/kafka-manual-commit-action-binding.yaml b/templates/bindings/camel-k/kafka-manual-commit-action-binding.yaml index 0a1265c3d..b07550330 100644 --- a/templates/bindings/camel-k/kafka-manual-commit-action-binding.yaml +++ b/templates/bindings/camel-k/kafka-manual-commit-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: kafka-manual-commit-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: kafka-manual-commit-action sink: ref: diff --git a/templates/bindings/camel-k/kafka-not-secured-sink-binding.yaml b/templates/bindings/camel-k/kafka-not-secured-sink-binding.yaml new file mode 100644 index 000000000..edec1e200 --- /dev/null +++ b/templates/bindings/camel-k/kafka-not-secured-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-not-secured-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-not-secured-sink + properties: + bootstrapServers: "The Bootstrap Servers" + topic: "The Topic Names" + \ No newline at end of file diff --git a/templates/bindings/camel-k/kafka-not-secured-source-binding.yaml b/templates/bindings/camel-k/kafka-not-secured-source-binding.yaml new file mode 100644 index 000000000..e1f9b04f4 --- /dev/null +++ b/templates/bindings/camel-k/kafka-not-secured-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-not-secured-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-not-secured-source + properties: + bootstrapServers: "The Bootstrap Servers" + topic: "The Topic Names" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/kafka-scram-sink-binding.yaml b/templates/bindings/camel-k/kafka-scram-sink-binding.yaml new file mode 100644 index 000000000..e1ee08125 --- /dev/null +++ b/templates/bindings/camel-k/kafka-scram-sink-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-scram-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-scram-sink + properties: + bootstrapServers: "The Bootstrap Servers" + password: "The Password" + topic: "The Topic Names" + user: "The Username" + \ No newline at end of file diff --git a/templates/bindings/camel-k/kafka-scram-source-binding.yaml b/templates/bindings/camel-k/kafka-scram-source-binding.yaml new file mode 100644 index 000000000..25da59a23 --- /dev/null +++ b/templates/bindings/camel-k/kafka-scram-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-scram-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-scram-source + properties: + bootstrapServers: "The Bootstrap Servers" + password: "The Password" + topic: "The Topic Names" + user: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/kafka-sink-binding.yaml b/templates/bindings/camel-k/kafka-sink-binding.yaml index acb775d7f..c90c1e83c 100644 --- a/templates/bindings/camel-k/kafka-sink-binding.yaml +++ b/templates/bindings/camel-k/kafka-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: kafka-sink-binding @@ -11,10 +11,10 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: kafka-sink properties: - bootstrapServers: "The Brokers" + bootstrapServers: "The Bootstrap Servers" password: "The Password" topic: "The Topic Names" user: "The Username" diff --git a/templates/bindings/camel-k/kafka-source-binding.yaml b/templates/bindings/camel-k/kafka-source-binding.yaml index ef5359cf3..8fe61da2f 100644 --- a/templates/bindings/camel-k/kafka-source-binding.yaml +++ b/templates/bindings/camel-k/kafka-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: kafka-source-binding @@ -6,10 +6,10 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: kafka-source properties: - bootstrapServers: "The Brokers" + bootstrapServers: "The Bootstrap Servers" password: "The Password" topic: "The Topic Names" user: "The Username" diff --git a/templates/bindings/camel-k/kafka-ssl-sink-binding.yaml b/templates/bindings/camel-k/kafka-ssl-sink-binding.yaml new file mode 100644 index 000000000..0c3deca39 --- /dev/null +++ b/templates/bindings/camel-k/kafka-ssl-sink-binding.yaml @@ -0,0 +1,23 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-ssl-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-ssl-sink + properties: + bootstrapServers: "The Brokers" + sslKeyPassword: "The SSL Key Password" + sslKeystoreLocation: "The SSL Keystore Location" + sslKeystorePassword: "The SSL Keystore Password" + sslTruststoreLocation: "The SSL Truststore Location" + topic: "The Topic Names" + \ No newline at end of file diff --git a/templates/bindings/camel-k/kafka-ssl-source-binding.yaml b/templates/bindings/camel-k/kafka-ssl-source-binding.yaml new file mode 100644 index 000000000..869c63116 --- /dev/null +++ b/templates/bindings/camel-k/kafka-ssl-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kafka-ssl-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kafka-ssl-source + properties: + bootstrapServers: "The Bootstrap Servers" + sslKeyPassword: "The SSL Key Password" + sslTruststoreLocation: "The SSL Truststore Location" + topic: "The Topic Names" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/kubernetes-namespaces-source-binding.yaml b/templates/bindings/camel-k/kubernetes-namespaces-source-binding.yaml new file mode 100644 index 000000000..82c92e2eb --- /dev/null +++ b/templates/bindings/camel-k/kubernetes-namespaces-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kubernetes-namespaces-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kubernetes-namespaces-source + properties: + masterUrl: "The Kubernetes Master URL" + token: "The Oauth Token" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/kubernetes-nodes-source-binding.yaml b/templates/bindings/camel-k/kubernetes-nodes-source-binding.yaml new file mode 100644 index 000000000..eb31e9983 --- /dev/null +++ b/templates/bindings/camel-k/kubernetes-nodes-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kubernetes-nodes-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kubernetes-nodes-source + properties: + masterUrl: "The Kubernetes Master URL" + token: "The Oauth Token" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/kubernetes-pods-source-binding.yaml b/templates/bindings/camel-k/kubernetes-pods-source-binding.yaml new file mode 100644 index 000000000..ad928dc37 --- /dev/null +++ b/templates/bindings/camel-k/kubernetes-pods-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: kubernetes-pods-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: kubernetes-pods-source + properties: + masterUrl: "The Kubernetes Master URL" + token: "The Oauth Token" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/log-action-binding.yaml b/templates/bindings/camel-k/log-action-binding.yaml new file mode 100644 index 000000000..cb44b2d10 --- /dev/null +++ b/templates/bindings/camel-k/log-action-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: log-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: log-action + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/log-sink-binding.yaml b/templates/bindings/camel-k/log-sink-binding.yaml index 0069daaac..b6ffcca2d 100644 --- a/templates/bindings/camel-k/log-sink-binding.yaml +++ b/templates/bindings/camel-k/log-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: log-sink-binding @@ -11,6 +11,6 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: log-sink \ No newline at end of file diff --git a/templates/bindings/camel-k/mail-imap-source-binding.yaml b/templates/bindings/camel-k/mail-imap-source-binding.yaml new file mode 100644 index 000000000..316fa2574 --- /dev/null +++ b/templates/bindings/camel-k/mail-imap-source-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mail-imap-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mail-imap-source + properties: + connectionHost: "imap.gmail.com" + password: "The Password" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/mail-sink-binding.yaml b/templates/bindings/camel-k/mail-sink-binding.yaml new file mode 100644 index 000000000..7d831abdf --- /dev/null +++ b/templates/bindings/camel-k/mail-sink-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mail-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mail-sink + properties: + connectionHost: "smtp.gmail.com" + password: "The Password" + username: "The Username" + \ No newline at end of file diff --git a/templates/bindings/camel-k/mariadb-sink-binding.yaml b/templates/bindings/camel-k/mariadb-sink-binding.yaml index 67c5e2612..290aa598a 100644 --- a/templates/bindings/camel-k/mariadb-sink-binding.yaml +++ b/templates/bindings/camel-k/mariadb-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mariadb-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mariadb-sink properties: databaseName: "The Database Name" diff --git a/templates/bindings/camel-k/mariadb-source-binding.yaml b/templates/bindings/camel-k/mariadb-source-binding.yaml new file mode 100644 index 000000000..a0a811184 --- /dev/null +++ b/templates/bindings/camel-k/mariadb-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mariadb-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mariadb-source + properties: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/mask-field-action-binding.yaml b/templates/bindings/camel-k/mask-field-action-binding.yaml index 5bb25b394..f7c2b2b4b 100644 --- a/templates/bindings/camel-k/mask-field-action-binding.yaml +++ b/templates/bindings/camel-k/mask-field-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mask-field-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mask-field-action properties: fields: "The Fields" diff --git a/templates/bindings/camel-k/message-timestamp-router-action-binding.yaml b/templates/bindings/camel-k/message-timestamp-router-action-binding.yaml index 36b427a95..854e02d51 100644 --- a/templates/bindings/camel-k/message-timestamp-router-action-binding.yaml +++ b/templates/bindings/camel-k/message-timestamp-router-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: message-timestamp-router-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: message-timestamp-router-action properties: timestampKeys: "The Timestamp Keys" diff --git a/templates/bindings/camel-k/minio-sink-binding.yaml b/templates/bindings/camel-k/minio-sink-binding.yaml new file mode 100644 index 000000000..f828cb909 --- /dev/null +++ b/templates/bindings/camel-k/minio-sink-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: minio-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: minio-sink + properties: + accessKey: "The Access Key" + bucketName: "The Bucket Name" + endpoint: "http://localhost:9000" + secretKey: "The Secret Key" + \ No newline at end of file diff --git a/templates/bindings/camel-k/minio-source-binding.yaml b/templates/bindings/camel-k/minio-source-binding.yaml new file mode 100644 index 000000000..2fa1c5b03 --- /dev/null +++ b/templates/bindings/camel-k/minio-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: minio-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: minio-source + properties: + accessKey: "The Access Key" + bucketName: "The Bucket Name" + endpoint: "http://localhost:9000" + secretKey: "The Secret Key" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/mongodb-changes-stream-source-binding.yaml b/templates/bindings/camel-k/mongodb-changes-stream-source-binding.yaml new file mode 100644 index 000000000..b7d115b95 --- /dev/null +++ b/templates/bindings/camel-k/mongodb-changes-stream-source-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mongodb-changes-stream-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mongodb-changes-stream-source + properties: + collection: "The MongoDB Collection" + database: "The MongoDB Database" + hosts: "The MongoDB Hosts" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/mongodb-sink-binding.yaml b/templates/bindings/camel-k/mongodb-sink-binding.yaml index 57e25aed5..0b59ad056 100644 --- a/templates/bindings/camel-k/mongodb-sink-binding.yaml +++ b/templates/bindings/camel-k/mongodb-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mongodb-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mongodb-sink properties: collection: "The MongoDB Collection" diff --git a/templates/bindings/camel-k/mongodb-source-binding.yaml b/templates/bindings/camel-k/mongodb-source-binding.yaml index 84b7c4fda..ea56e3f88 100644 --- a/templates/bindings/camel-k/mongodb-source-binding.yaml +++ b/templates/bindings/camel-k/mongodb-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mongodb-source-binding @@ -6,14 +6,12 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mongodb-source properties: collection: "The MongoDB Collection" database: "The MongoDB Database" hosts: "The MongoDB Hosts" - password: "The MongoDB Password" - username: "The MongoDB Username" sink: ref: kind: KafkaTopic diff --git a/templates/bindings/camel-k/mqtt-sink-binding.yaml b/templates/bindings/camel-k/mqtt-sink-binding.yaml new file mode 100644 index 000000000..04a1c24a1 --- /dev/null +++ b/templates/bindings/camel-k/mqtt-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mqtt-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mqtt-sink + properties: + brokerUrl: "tcp://mosquitto:1883" + topic: "mytopic" + \ No newline at end of file diff --git a/templates/bindings/camel-k/mqtt-source-binding.yaml b/templates/bindings/camel-k/mqtt-source-binding.yaml new file mode 100644 index 000000000..965b4e0df --- /dev/null +++ b/templates/bindings/camel-k/mqtt-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mqtt-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mqtt-source + properties: + brokerUrl: "tcp://mosquitto:1883" + topic: "mytopic" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/mqtt5-sink-binding.yaml b/templates/bindings/camel-k/mqtt5-sink-binding.yaml new file mode 100644 index 000000000..0f75f0b71 --- /dev/null +++ b/templates/bindings/camel-k/mqtt5-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mqtt5-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mqtt5-sink + properties: + brokerUrl: "tcp://mosquitto:1883" + topic: "mytopic" + \ No newline at end of file diff --git a/templates/bindings/camel-k/mqtt5-source-binding.yaml b/templates/bindings/camel-k/mqtt5-source-binding.yaml new file mode 100644 index 000000000..a5a2984f1 --- /dev/null +++ b/templates/bindings/camel-k/mqtt5-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mqtt5-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mqtt5-source + properties: + brokerUrl: "tcp://mosquitto:1883" + topic: "mytopic" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/ms-exchange-online-imap-oauth-source-binding.yaml b/templates/bindings/camel-k/ms-exchange-online-imap-oauth-source-binding.yaml new file mode 100644 index 000000000..a145bf5d8 --- /dev/null +++ b/templates/bindings/camel-k/ms-exchange-online-imap-oauth-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: ms-exchange-online-imap-oauth-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: ms-exchange-online-imap-oauth-source + properties: + clientId: "The Client ID" + clientSecret: "The Client Secret" + tenantId: "The Tenant ID" + username: "arthur@mycompany.com" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/mustache-template-action-binding.yaml b/templates/bindings/camel-k/mustache-template-action-binding.yaml new file mode 100644 index 000000000..e42fc0157 --- /dev/null +++ b/templates/bindings/camel-k/mustache-template-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mustache-template-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mustache-template-action + properties: + template: "file:////template.mustache" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/mvel-template-action-binding.yaml b/templates/bindings/camel-k/mvel-template-action-binding.yaml new file mode 100644 index 000000000..a81f62fdf --- /dev/null +++ b/templates/bindings/camel-k/mvel-template-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mvel-template-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mvel-template-action + properties: + template: "file:////template.mvel" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/mysql-sink-binding.yaml b/templates/bindings/camel-k/mysql-sink-binding.yaml index 5ce32e920..b28e95f72 100644 --- a/templates/bindings/camel-k/mysql-sink-binding.yaml +++ b/templates/bindings/camel-k/mysql-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: mysql-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: mysql-sink properties: databaseName: "The Database Name" diff --git a/templates/bindings/camel-k/mysql-source-binding.yaml b/templates/bindings/camel-k/mysql-source-binding.yaml new file mode 100644 index 000000000..5f0b6df54 --- /dev/null +++ b/templates/bindings/camel-k/mysql-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: mysql-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: mysql-source + properties: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/nats-sink-binding.yaml b/templates/bindings/camel-k/nats-sink-binding.yaml new file mode 100644 index 000000000..59736b7a8 --- /dev/null +++ b/templates/bindings/camel-k/nats-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: nats-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: nats-sink + properties: + servers: "The Servers" + topic: "The Topic" + \ No newline at end of file diff --git a/templates/bindings/camel-k/nats-source-binding.yaml b/templates/bindings/camel-k/nats-source-binding.yaml new file mode 100644 index 000000000..10ce948ca --- /dev/null +++ b/templates/bindings/camel-k/nats-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: nats-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: nats-source + properties: + servers: "The Servers" + topic: "The Topic" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/nominatim-geocode-action-binding.yaml b/templates/bindings/camel-k/nominatim-geocode-action-binding.yaml new file mode 100644 index 000000000..c20347b31 --- /dev/null +++ b/templates/bindings/camel-k/nominatim-geocode-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: nominatim-geocode-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: nominatim-geocode-action + properties: + serverUrl: "https://nominatim.openstreetmap.org" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/ogcapi-features-action-binding.yaml b/templates/bindings/camel-k/ogcapi-features-action-binding.yaml new file mode 100644 index 000000000..a23f375cb --- /dev/null +++ b/templates/bindings/camel-k/ogcapi-features-action-binding.yaml @@ -0,0 +1,25 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: ogcapi-features-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: ogcapi-features-action + properties: + collection: "The Collection" + url: "https://emotional.byteroad.net" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/openai-classification-action-binding.yaml b/templates/bindings/camel-k/openai-classification-action-binding.yaml new file mode 100644 index 000000000..e221ff1a9 --- /dev/null +++ b/templates/bindings/camel-k/openai-classification-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: openai-classification-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: openai-classification-action + properties: + authorizationToken: "The Authorization Token" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/openai-completion-action-binding.yaml b/templates/bindings/camel-k/openai-completion-action-binding.yaml new file mode 100644 index 000000000..424748693 --- /dev/null +++ b/templates/bindings/camel-k/openai-completion-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: openai-completion-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: openai-completion-action + properties: + authorizationToken: "The Authorization Token" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/opensearch-index-sink-binding.yaml b/templates/bindings/camel-k/opensearch-index-sink-binding.yaml new file mode 100644 index 000000000..5200178a4 --- /dev/null +++ b/templates/bindings/camel-k/opensearch-index-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: opensearch-index-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: opensearch-index-sink + properties: + clusterName: "quickstart" + hostAddresses: "quickstart-es-http:9200" + \ No newline at end of file diff --git a/templates/bindings/camel-k/opensearch-search-source-binding.yaml b/templates/bindings/camel-k/opensearch-search-source-binding.yaml new file mode 100644 index 000000000..712a3dc50 --- /dev/null +++ b/templates/bindings/camel-k/opensearch-search-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: opensearch-search-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: opensearch-search-source + properties: + clusterName: "The OpenSearch Cluster Name" + hostAddresses: "The Host Addresses" + indexName: "The Index in OpenSearch" + query: "The Query" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/oracle-database-sink-binding.yaml b/templates/bindings/camel-k/oracle-database-sink-binding.yaml new file mode 100644 index 000000000..0bb09d998 --- /dev/null +++ b/templates/bindings/camel-k/oracle-database-sink-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: oracle-database-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: oracle-database-sink + properties: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + \ No newline at end of file diff --git a/templates/bindings/camel-k/oracle-database-source-binding.yaml b/templates/bindings/camel-k/oracle-database-source-binding.yaml new file mode 100644 index 000000000..c6b9089cb --- /dev/null +++ b/templates/bindings/camel-k/oracle-database-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: oracle-database-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: oracle-database-source + properties: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/pdf-action-binding.yaml b/templates/bindings/camel-k/pdf-action-binding.yaml new file mode 100644 index 000000000..2e82b2915 --- /dev/null +++ b/templates/bindings/camel-k/pdf-action-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: pdf-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: pdf-action + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/postgresql-sink-binding.yaml b/templates/bindings/camel-k/postgresql-sink-binding.yaml index d90472d4b..8e0462ce9 100644 --- a/templates/bindings/camel-k/postgresql-sink-binding.yaml +++ b/templates/bindings/camel-k/postgresql-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: postgresql-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: postgresql-sink properties: databaseName: "The Database Name" diff --git a/templates/bindings/camel-k/postgresql-source-binding.yaml b/templates/bindings/camel-k/postgresql-source-binding.yaml new file mode 100644 index 000000000..cafebfd9b --- /dev/null +++ b/templates/bindings/camel-k/postgresql-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: postgresql-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: postgresql-source + properties: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/predicate-filter-action-binding.yaml b/templates/bindings/camel-k/predicate-filter-action-binding.yaml index 33025259a..7f262c818 100644 --- a/templates/bindings/camel-k/predicate-filter-action-binding.yaml +++ b/templates/bindings/camel-k/predicate-filter-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: predicate-filter-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: predicate-filter-action properties: expression: "@.foo =~ /.*John/" diff --git a/templates/bindings/camel-k/protobuf-deserialize-action-binding.yaml b/templates/bindings/camel-k/protobuf-deserialize-action-binding.yaml index 0f561c5b3..d52dbaa41 100644 --- a/templates/bindings/camel-k/protobuf-deserialize-action-binding.yaml +++ b/templates/bindings/camel-k/protobuf-deserialize-action-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name protobuf-deserialize-action-binding timer-source?message='{"first":"John","last":"Doe"}' --step json-deserialize-action --step protobuf-serialize-action -p step-1.schema='message Person { required string first = 1; required string last = 2; }' --step protobuf-deserialize-action -p step-2.schema='message Person { required string first = 1; required string last = 2; }' log:info -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: protobuf-deserialize-action-binding @@ -7,24 +7,24 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first": "John", "last":"Doe"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: protobuf-serialize-action properties: schema: "message Person { required string first = 1; required string last = 2; }" - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: protobuf-deserialize-action properties: schema: "message Person { required string first = 1; required string last = 2; }" diff --git a/templates/bindings/camel-k/protobuf-serialize-action-binding.yaml b/templates/bindings/camel-k/protobuf-serialize-action-binding.yaml index 0beb1c877..5cd2a603b 100644 --- a/templates/bindings/camel-k/protobuf-serialize-action-binding.yaml +++ b/templates/bindings/camel-k/protobuf-serialize-action-binding.yaml @@ -1,5 +1,5 @@ # kamel bind --name protobuf-serialize-action-binding timer-source?message='{"first":"John","last":"Doe"}' --step json-deserialize-action --step protobuf-serialize-action -p step-1.schema='message Person { required string first = 1; required string last = 2; }' log:info -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: protobuf-serialize-action-binding @@ -7,18 +7,18 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: '{"first": "John", "last":"Doe"}' steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: json-deserialize-action - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: protobuf-serialize-action properties: schema: "message Person { required string first = 1; required string last = 2; }" diff --git a/templates/bindings/camel-k/pulsar-sink-binding.yaml b/templates/bindings/camel-k/pulsar-sink-binding.yaml new file mode 100644 index 000000000..361945071 --- /dev/null +++ b/templates/bindings/camel-k/pulsar-sink-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: pulsar-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: pulsar-sink + properties: + namespaceName: "The Pulsar Namespace Name" + serviceUrl: "The Service URL" + tenant: "The Tenant Name" + topic: "The Topic Name" + topicType: "The Topic Type" + \ No newline at end of file diff --git a/templates/bindings/camel-k/pulsar-source-binding.yaml b/templates/bindings/camel-k/pulsar-source-binding.yaml new file mode 100644 index 000000000..bfd0f4ffe --- /dev/null +++ b/templates/bindings/camel-k/pulsar-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: pulsar-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: pulsar-source + properties: + namespaceName: "The Pulsar Namespace Name" + serviceUrl: "The Service URL" + tenant: "The Tenant Name" + topic: "The Topic Name" + topicType: "The Topic Type" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/redis-sink-binding.yaml b/templates/bindings/camel-k/redis-sink-binding.yaml new file mode 100644 index 000000000..bd283c1c1 --- /dev/null +++ b/templates/bindings/camel-k/redis-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: redis-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: redis-sink + properties: + redisHost: "The Redis Host" + redisPort: "The Redis Port" + \ No newline at end of file diff --git a/templates/bindings/camel-k/redis-source-binding.yaml b/templates/bindings/camel-k/redis-source-binding.yaml new file mode 100644 index 000000000..6ba8de400 --- /dev/null +++ b/templates/bindings/camel-k/redis-source-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: redis-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: redis-source + properties: + redisHost: "The Redis Host" + redisPort: "The Redis Port" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/regex-router-action-binding.yaml b/templates/bindings/camel-k/regex-router-action-binding.yaml index 5c268f103..bcdcef4d7 100644 --- a/templates/bindings/camel-k/regex-router-action-binding.yaml +++ b/templates/bindings/camel-k/regex-router-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: regex-router-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: regex-router-action properties: regex: "The Regex" diff --git a/templates/bindings/camel-k/replace-field-action-binding.yaml b/templates/bindings/camel-k/replace-field-action-binding.yaml index a06ce255d..92ef8c619 100644 --- a/templates/bindings/camel-k/replace-field-action-binding.yaml +++ b/templates/bindings/camel-k/replace-field-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: replace-field-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: replace-field-action properties: renames: "foo:bar,c1:c2" diff --git a/templates/bindings/camel-k/resolve-pojo-schema-action-binding.yaml b/templates/bindings/camel-k/resolve-pojo-schema-action-binding.yaml new file mode 100644 index 000000000..7a1ba5f67 --- /dev/null +++ b/templates/bindings/camel-k/resolve-pojo-schema-action-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: resolve-pojo-schema-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: resolve-pojo-schema-action + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/rest-openapi-sink-binding.yaml b/templates/bindings/camel-k/rest-openapi-sink-binding.yaml new file mode 100644 index 000000000..0c64c6e9c --- /dev/null +++ b/templates/bindings/camel-k/rest-openapi-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: rest-openapi-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: rest-openapi-sink + properties: + operation: "The Operation ID" + specification: "https://api.example.com/openapi.json" + \ No newline at end of file diff --git a/templates/bindings/camel-k/salesforce-composite-upsert-sink-binding.yaml b/templates/bindings/camel-k/salesforce-composite-upsert-sink-binding.yaml new file mode 100644 index 000000000..a041fd0c4 --- /dev/null +++ b/templates/bindings/camel-k/salesforce-composite-upsert-sink-binding.yaml @@ -0,0 +1,23 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: salesforce-composite-upsert-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: salesforce-composite-upsert-sink + properties: + clientId: "The Consumer Key" + clientSecret: "The Consumer Secret" + password: "The Password" + sObjectIdName: "The Object Id Name" + sObjectName: "Contact" + userName: "The Username" + \ No newline at end of file diff --git a/templates/bindings/camel-k/salesforce-create-sink-binding.yaml b/templates/bindings/camel-k/salesforce-create-sink-binding.yaml index a8fbf336e..79a02cf11 100644 --- a/templates/bindings/camel-k/salesforce-create-sink-binding.yaml +++ b/templates/bindings/camel-k/salesforce-create-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-create-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-create-sink properties: clientId: "The Consumer Key" diff --git a/templates/bindings/camel-k/salesforce-delete-sink-binding.yaml b/templates/bindings/camel-k/salesforce-delete-sink-binding.yaml index 2127b1547..6babc8c3e 100644 --- a/templates/bindings/camel-k/salesforce-delete-sink-binding.yaml +++ b/templates/bindings/camel-k/salesforce-delete-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-delete-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-delete-sink properties: clientId: "The Consumer Key" diff --git a/templates/bindings/camel-k/salesforce-source-binding.yaml b/templates/bindings/camel-k/salesforce-source-binding.yaml index 38c25a3a9..4e86692d1 100644 --- a/templates/bindings/camel-k/salesforce-source-binding.yaml +++ b/templates/bindings/camel-k/salesforce-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-source properties: clientId: "The Consumer Key" diff --git a/templates/bindings/camel-k/salesforce-update-sink-binding.yaml b/templates/bindings/camel-k/salesforce-update-sink-binding.yaml index 9ec88aefd..ad42846dc 100644 --- a/templates/bindings/camel-k/salesforce-update-sink-binding.yaml +++ b/templates/bindings/camel-k/salesforce-update-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-update-sink-binding @@ -11,13 +11,11 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-update-sink properties: clientId: "The Consumer Key" clientSecret: "The Consumer Secret" password: "The Password" - sObjectId: "The Object Id" - sObjectName: "Contact" userName: "The Username" \ No newline at end of file diff --git a/templates/bindings/camel-k/scp-sink-binding.yaml b/templates/bindings/camel-k/scp-sink-binding.yaml new file mode 100644 index 000000000..1bb47b63b --- /dev/null +++ b/templates/bindings/camel-k/scp-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: scp-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: scp-sink + properties: + serverName: "The Hostname" + serverPort: "The Port" + \ No newline at end of file diff --git a/templates/bindings/camel-k/set-kafka-key-action-binding.yaml b/templates/bindings/camel-k/set-kafka-key-action-binding.yaml new file mode 100644 index 000000000..ce2d8d53b --- /dev/null +++ b/templates/bindings/camel-k/set-kafka-key-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: set-kafka-key-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: set-kafka-key-action + properties: + headerName: "The Field" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/sftp-sink-binding.yaml b/templates/bindings/camel-k/sftp-sink-binding.yaml index 9fcf63e5f..9c2cb3c7f 100644 --- a/templates/bindings/camel-k/sftp-sink-binding.yaml +++ b/templates/bindings/camel-k/sftp-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: sftp-sink-binding @@ -11,11 +11,9 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: sftp-sink properties: connectionHost: "The Connection Host" directoryName: "The Directory Name" - password: "The Password" - username: "The Username" \ No newline at end of file diff --git a/templates/bindings/camel-k/sftp-source-binding.yaml b/templates/bindings/camel-k/sftp-source-binding.yaml index 64f351c1f..a87b77f30 100644 --- a/templates/bindings/camel-k/sftp-source-binding.yaml +++ b/templates/bindings/camel-k/sftp-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: sftp-source-binding @@ -6,13 +6,11 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: sftp-source properties: connectionHost: "The Connection Host" directoryName: "The Directory Name" - password: "The Password" - username: "The Username" sink: ref: kind: KafkaTopic diff --git a/templates/bindings/camel-k/simple-filter-action-binding.yaml b/templates/bindings/camel-k/simple-filter-action-binding.yaml index cff0cbffd..40acd4f63 100644 --- a/templates/bindings/camel-k/simple-filter-action-binding.yaml +++ b/templates/bindings/camel-k/simple-filter-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: simple-filter-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: simple-filter-action properties: expression: "The Simple Expression" diff --git a/templates/bindings/camel-k/slack-sink-binding.yaml b/templates/bindings/camel-k/slack-sink-binding.yaml new file mode 100644 index 000000000..e09879a10 --- /dev/null +++ b/templates/bindings/camel-k/slack-sink-binding.yaml @@ -0,0 +1,19 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: slack-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: slack-sink + properties: + channel: "#myroom" + webhookUrl: "The Webhook URL" + \ No newline at end of file diff --git a/templates/bindings/camel-k/slack-source-binding.yaml b/templates/bindings/camel-k/slack-source-binding.yaml index 58a2ca32a..802fc581c 100644 --- a/templates/bindings/camel-k/slack-source-binding.yaml +++ b/templates/bindings/camel-k/slack-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: slack-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: slack-source properties: channel: "#myroom" diff --git a/templates/bindings/camel-k/splunk-hec-sink-binding.yaml b/templates/bindings/camel-k/splunk-hec-sink-binding.yaml index 1af61c8c8..54a4654c9 100644 --- a/templates/bindings/camel-k/splunk-hec-sink-binding.yaml +++ b/templates/bindings/camel-k/splunk-hec-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: splunk-hec-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: splunk-hec-sink properties: splunkUrl: "my_server.splunkcloud.com:8088" diff --git a/templates/bindings/camel-k/splunk-sink-binding.yaml b/templates/bindings/camel-k/splunk-sink-binding.yaml index 6d4a9f434..787886e12 100644 --- a/templates/bindings/camel-k/splunk-sink-binding.yaml +++ b/templates/bindings/camel-k/splunk-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: splunk-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: splunk-sink properties: password: "The Password" diff --git a/templates/bindings/camel-k/splunk-source-binding.yaml b/templates/bindings/camel-k/splunk-source-binding.yaml index 36ba5cb0c..5643ca4ce 100644 --- a/templates/bindings/camel-k/splunk-source-binding.yaml +++ b/templates/bindings/camel-k/splunk-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: splunk-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: splunk-source properties: initEarliestTime: "05/17/22 08:35:46:456" diff --git a/templates/bindings/camel-k/sqlserver-sink-binding.yaml b/templates/bindings/camel-k/sqlserver-sink-binding.yaml index 78f68d3d1..602230c39 100644 --- a/templates/bindings/camel-k/sqlserver-sink-binding.yaml +++ b/templates/bindings/camel-k/sqlserver-sink-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: sqlserver-sink-binding @@ -11,7 +11,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: sqlserver-sink properties: databaseName: "The Database Name" diff --git a/templates/bindings/camel-k/sqlserver-source-binding.yaml b/templates/bindings/camel-k/sqlserver-source-binding.yaml new file mode 100644 index 000000000..c912eeaea --- /dev/null +++ b/templates/bindings/camel-k/sqlserver-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: sqlserver-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: sqlserver-source + properties: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/ssh-sink-binding.yaml b/templates/bindings/camel-k/ssh-sink-binding.yaml new file mode 100644 index 000000000..eaa4b92dc --- /dev/null +++ b/templates/bindings/camel-k/ssh-sink-binding.yaml @@ -0,0 +1,20 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: ssh-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: ssh-sink + properties: + connectionHost: "The Connection Host" + password: "The Password" + username: "The Username" + \ No newline at end of file diff --git a/templates/bindings/camel-k/ssh-source-binding.yaml b/templates/bindings/camel-k/ssh-source-binding.yaml new file mode 100644 index 000000000..40dc616dc --- /dev/null +++ b/templates/bindings/camel-k/ssh-source-binding.yaml @@ -0,0 +1,21 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: ssh-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: ssh-source + properties: + connectionHost: "The Connection Host" + password: "The Password" + pollCommand: "date" + username: "The Username" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/string-template-action-binding.yaml b/templates/bindings/camel-k/string-template-action-binding.yaml new file mode 100644 index 000000000..f56b7ac2a --- /dev/null +++ b/templates/bindings/camel-k/string-template-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: string-template-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: string-template-action + properties: + template: "file:////template.tm" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/telegram-sink-binding.yaml b/templates/bindings/camel-k/telegram-sink-binding.yaml new file mode 100644 index 000000000..2e6fa15c1 --- /dev/null +++ b/templates/bindings/camel-k/telegram-sink-binding.yaml @@ -0,0 +1,18 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: telegram-sink-binding +spec: + source: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + sink: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: telegram-sink + properties: + authorizationToken: "The Token" + \ No newline at end of file diff --git a/templates/bindings/camel-k/telegram-source-binding.yaml b/templates/bindings/camel-k/telegram-source-binding.yaml index 358474385..cac56893d 100644 --- a/templates/bindings/camel-k/telegram-source-binding.yaml +++ b/templates/bindings/camel-k/telegram-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: telegram-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: telegram-source properties: authorizationToken: "The Token" diff --git a/templates/bindings/camel-k/throttle-action-binding.yaml b/templates/bindings/camel-k/throttle-action-binding.yaml index d1d704db2..6fb7d48c6 100644 --- a/templates/bindings/camel-k/throttle-action-binding.yaml +++ b/templates/bindings/camel-k/throttle-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: throttle-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: throttle-action properties: messages: 10 diff --git a/templates/bindings/camel-k/timer-source-binding.yaml b/templates/bindings/camel-k/timer-source-binding.yaml index d8954e34c..0e1484216 100644 --- a/templates/bindings/camel-k/timer-source-binding.yaml +++ b/templates/bindings/camel-k/timer-source-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: timer-source-binding @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "hello world" diff --git a/templates/bindings/camel-k/timestamp-router-action-binding.yaml b/templates/bindings/camel-k/timestamp-router-action-binding.yaml index de0745c88..e5e4ad995 100644 --- a/templates/bindings/camel-k/timestamp-router-action-binding.yaml +++ b/templates/bindings/camel-k/timestamp-router-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: timestamp-router-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timestamp-router-action sink: ref: diff --git a/templates/bindings/camel-k/topic-name-matches-filter-action-binding.yaml b/templates/bindings/camel-k/topic-name-matches-filter-action-binding.yaml index 95efebb33..e425c579a 100644 --- a/templates/bindings/camel-k/topic-name-matches-filter-action-binding.yaml +++ b/templates/bindings/camel-k/topic-name-matches-filter-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: topic-name-matches-filter-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: topic-name-matches-filter-action properties: regex: "The Regex" diff --git a/templates/bindings/camel-k/twitter-directmessage-source-binding.yaml b/templates/bindings/camel-k/twitter-directmessage-source-binding.yaml new file mode 100644 index 000000000..bbfba64c8 --- /dev/null +++ b/templates/bindings/camel-k/twitter-directmessage-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: twitter-directmessage-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: twitter-directmessage-source + properties: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + user: "ApacheCamel" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/twitter-search-source-binding.yaml b/templates/bindings/camel-k/twitter-search-source-binding.yaml new file mode 100644 index 000000000..b7f3dc7ed --- /dev/null +++ b/templates/bindings/camel-k/twitter-search-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: twitter-search-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: twitter-search-source + properties: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + keywords: "Apache Camel" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/twitter-timeline-source-binding.yaml b/templates/bindings/camel-k/twitter-timeline-source-binding.yaml new file mode 100644 index 000000000..c0e774b15 --- /dev/null +++ b/templates/bindings/camel-k/twitter-timeline-source-binding.yaml @@ -0,0 +1,22 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: twitter-timeline-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: twitter-timeline-source + properties: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + user: "ApacheCamel" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/value-to-key-action-binding.yaml b/templates/bindings/camel-k/value-to-key-action-binding.yaml index 7b2dbace6..02c5d001c 100644 --- a/templates/bindings/camel-k/value-to-key-action-binding.yaml +++ b/templates/bindings/camel-k/value-to-key-action-binding.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: value-to-key-action-binding @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: "Hello" steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: value-to-key-action properties: fields: "The Fields" diff --git a/templates/bindings/camel-k/velocity-template-action-binding.yaml b/templates/bindings/camel-k/velocity-template-action-binding.yaml new file mode 100644 index 000000000..d4dc91b7a --- /dev/null +++ b/templates/bindings/camel-k/velocity-template-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: velocity-template-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: velocity-template-action + properties: + template: "file:////template.vm" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/webhook-source-binding.yaml b/templates/bindings/camel-k/webhook-source-binding.yaml new file mode 100644 index 000000000..a9731e2df --- /dev/null +++ b/templates/bindings/camel-k/webhook-source-binding.yaml @@ -0,0 +1,16 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: webhook-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: webhook-source + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/wttrin-source-binding.yaml b/templates/bindings/camel-k/wttrin-source-binding.yaml new file mode 100644 index 000000000..cd3f7babf --- /dev/null +++ b/templates/bindings/camel-k/wttrin-source-binding.yaml @@ -0,0 +1,16 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: wttrin-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: wttrin-source + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic + \ No newline at end of file diff --git a/templates/bindings/camel-k/xj-identity-action-binding.yaml b/templates/bindings/camel-k/xj-identity-action-binding.yaml new file mode 100644 index 000000000..ce2d0e254 --- /dev/null +++ b/templates/bindings/camel-k/xj-identity-action-binding.yaml @@ -0,0 +1,24 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: xj-identity-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: xj-identity-action + properties: + direction: "The Direction" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/camel-k/xj-template-action-binding.yaml b/templates/bindings/camel-k/xj-template-action-binding.yaml new file mode 100644 index 000000000..270b234b6 --- /dev/null +++ b/templates/bindings/camel-k/xj-template-action-binding.yaml @@ -0,0 +1,25 @@ +apiVersion: camel.apache.org/v1 +kind: KameletBinding +metadata: + name: xj-template-action-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: timer-source + properties: + message: "Hello" + steps: + - ref: + kind: Kamelet + apiVersion: camel.apache.org/v1 + name: xj-template-action + properties: + direction: "The Direction" + template: "file:////template.vm" + sink: + ref: + kind: KafkaTopic + apiVersion: kafka.strimzi.io/v1beta1 + name: my-topic diff --git a/templates/bindings/core/aws-cloudtrail-source-binding.yaml b/templates/bindings/core/aws-cloudtrail-source-binding.yaml new file mode 100644 index 000000000..db666291e --- /dev/null +++ b/templates/bindings/core/aws-cloudtrail-source-binding.yaml @@ -0,0 +1,9 @@ +- route: + from: + uri: "kamelet:aws-cloudtrail-source" + parameters: + region: "The AWS Region" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/aws-cloudwatch-sink-binding.yaml b/templates/bindings/core/aws-cloudwatch-sink-binding.yaml index 61182e5c7..31298b23e 100644 --- a/templates/bindings/core/aws-cloudwatch-sink-binding.yaml +++ b/templates/bindings/core/aws-cloudwatch-sink-binding.yaml @@ -8,8 +8,6 @@ - to: uri: "kamelet:aws-cloudwatch-sink" parameters: - accessKey: "The Access Key" - cw_namespace: "The Cloud Watch Namespace" - region: "eu-west-1" - secretKey: "The Secret Key" + cwNamespace: "The Cloud Watch Namespace" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/core/aws-ddb-sink-binding.yaml b/templates/bindings/core/aws-ddb-sink-binding.yaml index a0fb39bee..227b6a6c4 100644 --- a/templates/bindings/core/aws-ddb-sink-binding.yaml +++ b/templates/bindings/core/aws-ddb-sink-binding.yaml @@ -8,6 +8,6 @@ - to: uri: "kamelet:aws-ddb-sink" parameters: - region: "eu-west-1" + region: "The AWS Region" table: "The Table" \ No newline at end of file diff --git a/templates/bindings/core/aws-ddb-streams-source-binding.yaml b/templates/bindings/core/aws-ddb-streams-source-binding.yaml index 3a40921c6..4b9919f9d 100644 --- a/templates/bindings/core/aws-ddb-streams-source-binding.yaml +++ b/templates/bindings/core/aws-ddb-streams-source-binding.yaml @@ -2,7 +2,7 @@ from: uri: "kamelet:aws-ddb-streams-source" parameters: - region: "eu-west-1" + region: "The AWS Region" table: "The Table" steps: - to: diff --git a/templates/bindings/core/aws-ec2-sink-binding.yaml b/templates/bindings/core/aws-ec2-sink-binding.yaml new file mode 100644 index 000000000..e4531b684 --- /dev/null +++ b/templates/bindings/core/aws-ec2-sink-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:aws-ec2-sink" + parameters: + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/core/aws-eventbridge-sink-binding.yaml b/templates/bindings/core/aws-eventbridge-sink-binding.yaml new file mode 100644 index 000000000..0be853670 --- /dev/null +++ b/templates/bindings/core/aws-eventbridge-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:aws-eventbridge-sink" + parameters: + eventbusNameOrArn: "The Eventbus Name" + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/core/aws-kinesis-firehose-sink-binding.yaml b/templates/bindings/core/aws-kinesis-firehose-sink-binding.yaml index 30d8e9417..3a1320794 100644 --- a/templates/bindings/core/aws-kinesis-firehose-sink-binding.yaml +++ b/templates/bindings/core/aws-kinesis-firehose-sink-binding.yaml @@ -8,8 +8,6 @@ - to: uri: "kamelet:aws-kinesis-firehose-sink" parameters: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" - streamName: "The Stream name" + region: "The AWS Region" + streamName: "The Stream Name" \ No newline at end of file diff --git a/templates/bindings/core/aws-kinesis-sink-binding.yaml b/templates/bindings/core/aws-kinesis-sink-binding.yaml index c31d10780..3b34795d3 100644 --- a/templates/bindings/core/aws-kinesis-sink-binding.yaml +++ b/templates/bindings/core/aws-kinesis-sink-binding.yaml @@ -8,8 +8,6 @@ - to: uri: "kamelet:aws-kinesis-sink" parameters: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" stream: "The Stream Name" \ No newline at end of file diff --git a/templates/bindings/core/aws-kinesis-source-binding.yaml b/templates/bindings/core/aws-kinesis-source-binding.yaml index 22db6b20b..40a411370 100644 --- a/templates/bindings/core/aws-kinesis-source-binding.yaml +++ b/templates/bindings/core/aws-kinesis-source-binding.yaml @@ -2,9 +2,7 @@ from: uri: "kamelet:aws-kinesis-source" parameters: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" stream: "The Stream Name" steps: - to: diff --git a/templates/bindings/core/aws-lambda-sink-binding.yaml b/templates/bindings/core/aws-lambda-sink-binding.yaml index 67d014a4b..cdd6a677d 100644 --- a/templates/bindings/core/aws-lambda-sink-binding.yaml +++ b/templates/bindings/core/aws-lambda-sink-binding.yaml @@ -8,8 +8,6 @@ - to: uri: "kamelet:aws-lambda-sink" parameters: - accessKey: "The Access Key" function: "The Function Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/core/aws-redshift-source-binding.yaml b/templates/bindings/core/aws-redshift-source-binding.yaml new file mode 100644 index 000000000..d7e5ac7ff --- /dev/null +++ b/templates/bindings/core/aws-redshift-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:aws-redshift-source" + parameters: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/aws-s3-cdc-source-binding.yaml b/templates/bindings/core/aws-s3-cdc-source-binding.yaml new file mode 100644 index 000000000..9de88a805 --- /dev/null +++ b/templates/bindings/core/aws-s3-cdc-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:aws-s3-cdc-source" + parameters: + accessKey: "The Access Key" + queueNameOrArn: "The Queue Name" + region: "The AWS Region" + secretKey: "The Secret Key" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/aws-s3-sink-binding.yaml b/templates/bindings/core/aws-s3-sink-binding.yaml index 6e6576835..89cb1580d 100644 --- a/templates/bindings/core/aws-s3-sink-binding.yaml +++ b/templates/bindings/core/aws-s3-sink-binding.yaml @@ -8,8 +8,6 @@ - to: uri: "kamelet:aws-s3-sink" parameters: - accessKey: "The Access Key" bucketNameOrArn: "The Bucket Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/core/aws-s3-source-binding.yaml b/templates/bindings/core/aws-s3-source-binding.yaml index 461ef4c7b..cd3624023 100644 --- a/templates/bindings/core/aws-s3-source-binding.yaml +++ b/templates/bindings/core/aws-s3-source-binding.yaml @@ -2,10 +2,8 @@ from: uri: "kamelet:aws-s3-source" parameters: - accessKey: "The Access Key" bucketNameOrArn: "The Bucket Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" steps: - to: uri: "log:info" diff --git a/templates/bindings/core/aws-s3-streaming-upload-sink-binding.yaml b/templates/bindings/core/aws-s3-streaming-upload-sink-binding.yaml index c1c04648d..65ce71c16 100644 --- a/templates/bindings/core/aws-s3-streaming-upload-sink-binding.yaml +++ b/templates/bindings/core/aws-s3-streaming-upload-sink-binding.yaml @@ -8,9 +8,7 @@ - to: uri: "kamelet:aws-s3-streaming-upload-sink" parameters: - accessKey: "The Access Key" bucketNameOrArn: "The Bucket Name" keyName: "The Key Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/core/aws-secrets-manager-sink-binding.yaml b/templates/bindings/core/aws-secrets-manager-sink-binding.yaml new file mode 100644 index 000000000..051477a8f --- /dev/null +++ b/templates/bindings/core/aws-secrets-manager-sink-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:aws-secrets-manager-sink" + parameters: + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/core/aws-ses-sink-binding.yaml b/templates/bindings/core/aws-ses-sink-binding.yaml new file mode 100644 index 000000000..6b2a0ee1e --- /dev/null +++ b/templates/bindings/core/aws-ses-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:aws-ses-sink" + parameters: + from: "user@example.com" + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/core/aws-sns-fifo-sink-binding.yaml b/templates/bindings/core/aws-sns-fifo-sink-binding.yaml new file mode 100644 index 000000000..9dbc6e1e2 --- /dev/null +++ b/templates/bindings/core/aws-sns-fifo-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:aws-sns-fifo-sink" + parameters: + region: "The AWS Region" + topicNameOrArn: "The Topic Name" + \ No newline at end of file diff --git a/templates/bindings/core/aws-sns-sink-binding.yaml b/templates/bindings/core/aws-sns-sink-binding.yaml index 6d412f8c6..e27021986 100644 --- a/templates/bindings/core/aws-sns-sink-binding.yaml +++ b/templates/bindings/core/aws-sns-sink-binding.yaml @@ -8,8 +8,6 @@ - to: uri: "kamelet:aws-sns-sink" parameters: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" topicNameOrArn: "The Topic Name" \ No newline at end of file diff --git a/templates/bindings/core/aws-sqs-batch-sink-binding.yaml b/templates/bindings/core/aws-sqs-batch-sink-binding.yaml new file mode 100644 index 000000000..52abcdf3d --- /dev/null +++ b/templates/bindings/core/aws-sqs-batch-sink-binding.yaml @@ -0,0 +1,14 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:aws-sqs-batch-sink" + parameters: + batchSeparator: "," + queueNameOrArn: "The Queue Name" + region: "The AWS Region" + \ No newline at end of file diff --git a/templates/bindings/core/aws-sqs-fifo-sink-binding.yaml b/templates/bindings/core/aws-sqs-fifo-sink-binding.yaml index 432ed4ae5..ced6afa33 100644 --- a/templates/bindings/core/aws-sqs-fifo-sink-binding.yaml +++ b/templates/bindings/core/aws-sqs-fifo-sink-binding.yaml @@ -8,8 +8,6 @@ - to: uri: "kamelet:aws-sqs-fifo-sink" parameters: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/core/aws-sqs-sink-binding.yaml b/templates/bindings/core/aws-sqs-sink-binding.yaml index cf8240338..f7629b66a 100644 --- a/templates/bindings/core/aws-sqs-sink-binding.yaml +++ b/templates/bindings/core/aws-sqs-sink-binding.yaml @@ -8,8 +8,6 @@ - to: uri: "kamelet:aws-sqs-sink" parameters: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" \ No newline at end of file diff --git a/templates/bindings/core/aws-sqs-source-binding.yaml b/templates/bindings/core/aws-sqs-source-binding.yaml index 286ae8cb4..1e959f6cc 100644 --- a/templates/bindings/core/aws-sqs-source-binding.yaml +++ b/templates/bindings/core/aws-sqs-source-binding.yaml @@ -2,10 +2,8 @@ from: uri: "kamelet:aws-sqs-source" parameters: - accessKey: "The Access Key" queueNameOrArn: "The Queue Name" - region: "eu-west-1" - secretKey: "The Secret Key" + region: "The AWS Region" steps: - to: uri: "log:info" diff --git a/templates/bindings/core/aws-translate-action-binding.yaml b/templates/bindings/core/aws-translate-action-binding.yaml new file mode 100644 index 000000000..d99200493 --- /dev/null +++ b/templates/bindings/core/aws-translate-action-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:aws-translate-action" + parameters: + region: "The AWS Region" + sourceLanguage: "it" + targetLanguage: "it" + - to: + uri: "log:info" diff --git a/templates/bindings/core/azure-cosmosdb-sink-binding.yaml b/templates/bindings/core/azure-cosmosdb-sink-binding.yaml new file mode 100644 index 000000000..4f4d1fe32 --- /dev/null +++ b/templates/bindings/core/azure-cosmosdb-sink-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:azure-cosmosdb-sink" + parameters: + accountKey: "The Account Key" + containerName: "The Container Name" + databaseEndpoint: "The Database Endpoint" + databaseName: "The Database Name" + \ No newline at end of file diff --git a/templates/bindings/core/azure-cosmosdb-source-binding.yaml b/templates/bindings/core/azure-cosmosdb-source-binding.yaml new file mode 100644 index 000000000..bc3dd8c1a --- /dev/null +++ b/templates/bindings/core/azure-cosmosdb-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:azure-cosmosdb-source" + parameters: + accountKey: "The Account Key" + containerName: "The Container Name" + databaseEndpoint: "The Database Endpoint" + databaseName: "The Database Name" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/azure-eventhubs-sink-binding.yaml b/templates/bindings/core/azure-eventhubs-sink-binding.yaml new file mode 100644 index 000000000..cde60002d --- /dev/null +++ b/templates/bindings/core/azure-eventhubs-sink-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:azure-eventhubs-sink" + parameters: + eventhubName: "The Eventhubs Name" + namespaceName: "The Eventhubs Namespace" + sharedAccessKey: "The Share Access Key" + sharedAccessName: "The Share Access Name" + \ No newline at end of file diff --git a/templates/bindings/core/azure-eventhubs-source-binding.yaml b/templates/bindings/core/azure-eventhubs-source-binding.yaml new file mode 100644 index 000000000..673259dee --- /dev/null +++ b/templates/bindings/core/azure-eventhubs-source-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:azure-eventhubs-source" + parameters: + blobAccessKey: "The Azure Storage Blob Access Key" + blobAccountName: "The Azure Storage Blob Account Name" + blobContainerName: "The Azure Storage Blob Container Name" + eventhubName: "The Eventhubs Name" + namespaceName: "The Eventhubs Namespace" + sharedAccessKey: "The Share Access Key" + sharedAccessName: "The Share Access Name" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/azure-functions-sink-binding.yaml b/templates/bindings/core/azure-functions-sink-binding.yaml new file mode 100644 index 000000000..7fcfb6959 --- /dev/null +++ b/templates/bindings/core/azure-functions-sink-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:azure-functions-sink" + parameters: + url: "https://azure-function-demo-12234.azurewebsites.net/api/httpexample" + \ No newline at end of file diff --git a/templates/bindings/core/azure-storage-blob-cdc-source-binding.yaml b/templates/bindings/core/azure-storage-blob-cdc-source-binding.yaml new file mode 100644 index 000000000..fdc069438 --- /dev/null +++ b/templates/bindings/core/azure-storage-blob-cdc-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:azure-storage-blob-cdc-source" + parameters: + accessKey: "The Access Key" + accountName: "The Account Name" + connectionString: "The Connection String" + containerName: "The Container Name" + topicOrQueueName: "The Topic Or Queue Name" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/azure-storage-blob-changefeed-source-binding.yaml b/templates/bindings/core/azure-storage-blob-changefeed-source-binding.yaml new file mode 100644 index 000000000..e96bd048e --- /dev/null +++ b/templates/bindings/core/azure-storage-blob-changefeed-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:azure-storage-blob-changefeed-source" + parameters: + accessKey: "The Access Key" + accountName: "The Account Name" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/azure-storage-blob-sink-binding.yaml b/templates/bindings/core/azure-storage-blob-sink-binding.yaml index 00976e54f..7ed077cbb 100644 --- a/templates/bindings/core/azure-storage-blob-sink-binding.yaml +++ b/templates/bindings/core/azure-storage-blob-sink-binding.yaml @@ -8,7 +8,6 @@ - to: uri: "kamelet:azure-storage-blob-sink" parameters: - accessKey: "The Access Key" accountName: "The Account Name" containerName: "The Container Name" \ No newline at end of file diff --git a/templates/bindings/core/azure-storage-blob-source-binding.yaml b/templates/bindings/core/azure-storage-blob-source-binding.yaml index 25f76c49d..667a4ec54 100644 --- a/templates/bindings/core/azure-storage-blob-source-binding.yaml +++ b/templates/bindings/core/azure-storage-blob-source-binding.yaml @@ -2,7 +2,6 @@ from: uri: "kamelet:azure-storage-blob-source" parameters: - accessKey: "The Access Key" accountName: "The Account Name" containerName: "The Container Name" steps: diff --git a/templates/bindings/core/azure-storage-datalake-sink-binding.yaml b/templates/bindings/core/azure-storage-datalake-sink-binding.yaml new file mode 100644 index 000000000..cadb1da53 --- /dev/null +++ b/templates/bindings/core/azure-storage-datalake-sink-binding.yaml @@ -0,0 +1,16 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:azure-storage-datalake-sink" + parameters: + accountName: "The Account Name" + clientId: "The Client Id" + clientSecret: "The Client Secret" + fileSystemName: "The File System Name" + tenantId: "The Tenant Id" + \ No newline at end of file diff --git a/templates/bindings/core/azure-storage-datalake-source-binding.yaml b/templates/bindings/core/azure-storage-datalake-source-binding.yaml new file mode 100644 index 000000000..56e7ef007 --- /dev/null +++ b/templates/bindings/core/azure-storage-datalake-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:azure-storage-datalake-source" + parameters: + accountName: "The Account Name" + clientId: "The Client Id" + clientSecret: "The Client Secret" + fileSystemName: "The File System Name" + tenantId: "The Tenant Id" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/beer-source-binding.yaml b/templates/bindings/core/beer-source-binding.yaml new file mode 100644 index 000000000..f99b148df --- /dev/null +++ b/templates/bindings/core/beer-source-binding.yaml @@ -0,0 +1,7 @@ +- route: + from: + uri: "kamelet:beer-source" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/bitcoin-source-binding.yaml b/templates/bindings/core/bitcoin-source-binding.yaml new file mode 100644 index 000000000..6ce4fc7d8 --- /dev/null +++ b/templates/bindings/core/bitcoin-source-binding.yaml @@ -0,0 +1,7 @@ +- route: + from: + uri: "kamelet:bitcoin-source" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/caffeine-action-binding.yaml b/templates/bindings/core/caffeine-action-binding.yaml new file mode 100644 index 000000000..efe7c0cf9 --- /dev/null +++ b/templates/bindings/core/caffeine-action-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:caffeine-action" + - to: + uri: "log:info" diff --git a/templates/bindings/core/cassandra-sink-binding.yaml b/templates/bindings/core/cassandra-sink-binding.yaml index a3e71a997..327a6e4eb 100644 --- a/templates/bindings/core/cassandra-sink-binding.yaml +++ b/templates/bindings/core/cassandra-sink-binding.yaml @@ -11,7 +11,5 @@ connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" - password: "The Password" query: "The Query" - username: "The Username" \ No newline at end of file diff --git a/templates/bindings/core/cassandra-source-binding.yaml b/templates/bindings/core/cassandra-source-binding.yaml index f37ed7720..d2adf90ac 100644 --- a/templates/bindings/core/cassandra-source-binding.yaml +++ b/templates/bindings/core/cassandra-source-binding.yaml @@ -5,9 +5,7 @@ connectionHost: "localhost" connectionPort: 9042 keyspace: "customers" - password: "The Password" query: "The Query" - username: "The Username" steps: - to: uri: "log:info" diff --git a/templates/bindings/core/chuck-norris-source-binding.yaml b/templates/bindings/core/chuck-norris-source-binding.yaml new file mode 100644 index 000000000..7c4ba9d13 --- /dev/null +++ b/templates/bindings/core/chuck-norris-source-binding.yaml @@ -0,0 +1,7 @@ +- route: + from: + uri: "kamelet:chuck-norris-source" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/chunk-template-action-binding.yaml b/templates/bindings/core/chunk-template-action-binding.yaml new file mode 100644 index 000000000..5fdd376f6 --- /dev/null +++ b/templates/bindings/core/chunk-template-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:chunk-template-action" + parameters: + template: "The Template" + - to: + uri: "log:info" diff --git a/templates/bindings/core/couchbase-sink-binding.yaml b/templates/bindings/core/couchbase-sink-binding.yaml new file mode 100644 index 000000000..4f8948cfc --- /dev/null +++ b/templates/bindings/core/couchbase-sink-binding.yaml @@ -0,0 +1,14 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:couchbase-sink" + parameters: + bucket: "The Bucket" + couchbaseHostname: "The Hostname" + protocol: "The Protocol" + \ No newline at end of file diff --git a/templates/bindings/core/cron-source-binding.yaml b/templates/bindings/core/cron-source-binding.yaml new file mode 100644 index 000000000..fa82cc290 --- /dev/null +++ b/templates/bindings/core/cron-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:cron-source" + parameters: + message: "hello world" + schedule: "0/3 10 * * * ?" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/data-type-action-binding.yaml b/templates/bindings/core/data-type-action-binding.yaml new file mode 100644 index 000000000..bad63440d --- /dev/null +++ b/templates/bindings/core/data-type-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:data-type-action" + parameters: + format: "The Data Type Format" + - to: + uri: "log:info" diff --git a/templates/bindings/core/delay-action-binding.yaml b/templates/bindings/core/delay-action-binding.yaml new file mode 100644 index 000000000..b9f4d73e1 --- /dev/null +++ b/templates/bindings/core/delay-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:delay-action" + parameters: + milliseconds: 1000 + - to: + uri: "log:info" diff --git a/templates/bindings/core/dns-dig-action-binding.yaml b/templates/bindings/core/dns-dig-action-binding.yaml new file mode 100644 index 000000000..ba18d0e65 --- /dev/null +++ b/templates/bindings/core/dns-dig-action-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:dns-dig-action" + - to: + uri: "log:info" diff --git a/templates/bindings/core/dns-ip-action-binding.yaml b/templates/bindings/core/dns-ip-action-binding.yaml new file mode 100644 index 000000000..cfbdba146 --- /dev/null +++ b/templates/bindings/core/dns-ip-action-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:dns-ip-action" + - to: + uri: "log:info" diff --git a/templates/bindings/core/dns-lookup-action-binding.yaml b/templates/bindings/core/dns-lookup-action-binding.yaml new file mode 100644 index 000000000..0a67fa800 --- /dev/null +++ b/templates/bindings/core/dns-lookup-action-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:dns-lookup-action" + - to: + uri: "log:info" diff --git a/templates/bindings/core/drop-header-action-binding.yaml b/templates/bindings/core/drop-header-action-binding.yaml new file mode 100644 index 000000000..5d0c9de96 --- /dev/null +++ b/templates/bindings/core/drop-header-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:drop-header-action" + parameters: + name: "headername" + - to: + uri: "log:info" diff --git a/templates/bindings/core/drop-headers-action-binding.yaml b/templates/bindings/core/drop-headers-action-binding.yaml new file mode 100644 index 000000000..497483350 --- /dev/null +++ b/templates/bindings/core/drop-headers-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:drop-headers-action" + parameters: + pattern: "Camel*" + - to: + uri: "log:info" diff --git a/templates/bindings/core/dropbox-sink-binding.yaml b/templates/bindings/core/dropbox-sink-binding.yaml new file mode 100644 index 000000000..edd821f9d --- /dev/null +++ b/templates/bindings/core/dropbox-sink-binding.yaml @@ -0,0 +1,14 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:dropbox-sink" + parameters: + accessToken: "The Dropbox Access Token" + clientIdentifier: "The Client Identifier" + remotePath: "The Remote Path" + \ No newline at end of file diff --git a/templates/bindings/core/dropbox-source-binding.yaml b/templates/bindings/core/dropbox-source-binding.yaml new file mode 100644 index 000000000..488229f36 --- /dev/null +++ b/templates/bindings/core/dropbox-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:dropbox-source" + parameters: + accessToken: "The Dropbox Access Token" + clientIdentifier: "The Client Identifier" + query: "The Queries" + remotePath: "The Remote Path" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/earthquake-source-binding.yaml b/templates/bindings/core/earthquake-source-binding.yaml new file mode 100644 index 000000000..6793c5d0d --- /dev/null +++ b/templates/bindings/core/earthquake-source-binding.yaml @@ -0,0 +1,7 @@ +- route: + from: + uri: "kamelet:earthquake-source" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/elasticsearch-search-source-binding.yaml b/templates/bindings/core/elasticsearch-search-source-binding.yaml new file mode 100644 index 000000000..4126542d0 --- /dev/null +++ b/templates/bindings/core/elasticsearch-search-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:elasticsearch-search-source" + parameters: + clusterName: "The ElasticSearch Cluster Name" + hostAddresses: "The Host Addresses" + indexName: "The Index in ElasticSearch" + query: "The Query" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/exec-sink-binding.yaml b/templates/bindings/core/exec-sink-binding.yaml new file mode 100644 index 000000000..d22266895 --- /dev/null +++ b/templates/bindings/core/exec-sink-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:exec-sink" + parameters: + executable: "The Executable Command" + \ No newline at end of file diff --git a/templates/bindings/core/fhir-sink-binding.yaml b/templates/bindings/core/fhir-sink-binding.yaml new file mode 100644 index 000000000..5f0f42de4 --- /dev/null +++ b/templates/bindings/core/fhir-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:fhir-sink" + parameters: + methodName: "The Method Name" + serverUrl: "The Server URL" + \ No newline at end of file diff --git a/templates/bindings/core/fhir-source-binding.yaml b/templates/bindings/core/fhir-source-binding.yaml new file mode 100644 index 000000000..14de0319f --- /dev/null +++ b/templates/bindings/core/fhir-source-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:fhir-source" + parameters: + password: "The Password" + serverUrl: "The Server URL" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/file-watch-source-binding.yaml b/templates/bindings/core/file-watch-source-binding.yaml new file mode 100644 index 000000000..243a7d4ed --- /dev/null +++ b/templates/bindings/core/file-watch-source-binding.yaml @@ -0,0 +1,9 @@ +- route: + from: + uri: "kamelet:file-watch-source" + parameters: + filePath: "The Path to Watch" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/freemarker-template-action-binding.yaml b/templates/bindings/core/freemarker-template-action-binding.yaml new file mode 100644 index 000000000..eab87d5f3 --- /dev/null +++ b/templates/bindings/core/freemarker-template-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:freemarker-template-action" + parameters: + template: "file:////template.ftl" + - to: + uri: "log:info" diff --git a/templates/bindings/core/github-commit-source-binding.yaml b/templates/bindings/core/github-commit-source-binding.yaml new file mode 100644 index 000000000..a4479eb6a --- /dev/null +++ b/templates/bindings/core/github-commit-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:github-commit-source" + parameters: + branch: "The Branch" + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/github-event-source-binding.yaml b/templates/bindings/core/github-event-source-binding.yaml new file mode 100644 index 000000000..eee3262ea --- /dev/null +++ b/templates/bindings/core/github-event-source-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:github-event-source" + parameters: + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/github-pullrequest-comment-source-binding.yaml b/templates/bindings/core/github-pullrequest-comment-source-binding.yaml new file mode 100644 index 000000000..920534180 --- /dev/null +++ b/templates/bindings/core/github-pullrequest-comment-source-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:github-pullrequest-comment-source" + parameters: + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/github-pullrequest-source-binding.yaml b/templates/bindings/core/github-pullrequest-source-binding.yaml new file mode 100644 index 000000000..41615c215 --- /dev/null +++ b/templates/bindings/core/github-pullrequest-source-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:github-pullrequest-source" + parameters: + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/github-tag-source-binding.yaml b/templates/bindings/core/github-tag-source-binding.yaml new file mode 100644 index 000000000..b6e32f888 --- /dev/null +++ b/templates/bindings/core/github-tag-source-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:github-tag-source" + parameters: + oauthToken: "The OAuth Token" + repoName: "The Repository Name" + repoOwner: "The Repository Owner" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/google-bigquery-sink-binding.yaml b/templates/bindings/core/google-bigquery-sink-binding.yaml new file mode 100644 index 000000000..212662a6e --- /dev/null +++ b/templates/bindings/core/google-bigquery-sink-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:google-bigquery-sink" + parameters: + dataset: "The Big Query Dataset Id" + projectId: "The Google Cloud Project Id" + serviceAccountKey: "The Service Account Key" + table: "The Big Query Table Id" + \ No newline at end of file diff --git a/templates/bindings/core/google-calendar-source-binding.yaml b/templates/bindings/core/google-calendar-source-binding.yaml new file mode 100644 index 000000000..76fc7a8da --- /dev/null +++ b/templates/bindings/core/google-calendar-source-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:google-calendar-source" + parameters: + accessToken: "The Access Token" + applicationName: "The Application name" + calendarId: "The Calendar ID" + clientId: "The Client Id" + clientSecret: "The Client Secret" + index: "The Index" + refreshToken: "The Refresh Token" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/google-functions-sink-binding.yaml b/templates/bindings/core/google-functions-sink-binding.yaml new file mode 100644 index 000000000..ad5c22607 --- /dev/null +++ b/templates/bindings/core/google-functions-sink-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:google-functions-sink" + parameters: + functionName: "The Function Name" + projectId: "The Project Id" + region: "The Region" + serviceAccountKey: "The Service Account Key" + \ No newline at end of file diff --git a/templates/bindings/core/google-mail-source-binding.yaml b/templates/bindings/core/google-mail-source-binding.yaml new file mode 100644 index 000000000..478dc2322 --- /dev/null +++ b/templates/bindings/core/google-mail-source-binding.yaml @@ -0,0 +1,14 @@ +- route: + from: + uri: "kamelet:google-mail-source" + parameters: + accessToken: "The Access Token" + applicationName: "The Application name" + clientId: "The Client ID" + clientSecret: "The Client Secret" + index: "The Index" + refreshToken: "The Refresh Token" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/google-pubsub-sink-binding.yaml b/templates/bindings/core/google-pubsub-sink-binding.yaml new file mode 100644 index 000000000..7c84cbb2c --- /dev/null +++ b/templates/bindings/core/google-pubsub-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:google-pubsub-sink" + parameters: + destinationName: "The Destination Name" + projectId: "The Project Id" + \ No newline at end of file diff --git a/templates/bindings/core/google-pubsub-source-binding.yaml b/templates/bindings/core/google-pubsub-source-binding.yaml new file mode 100644 index 000000000..a4e2a0bb7 --- /dev/null +++ b/templates/bindings/core/google-pubsub-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:google-pubsub-source" + parameters: + projectId: "The Project Id" + subscriptionName: "The Subscription Name" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/google-sheets-source-binding.yaml b/templates/bindings/core/google-sheets-source-binding.yaml new file mode 100644 index 000000000..7c0cf7533 --- /dev/null +++ b/templates/bindings/core/google-sheets-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:google-sheets-source" + parameters: + accessToken: "The Access Token" + clientId: "The Client Id" + clientSecret: "The Client Secret" + refreshToken: "The Refresh Token" + spreadsheetId: "The Spreadsheet ID" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/google-storage-cdc-source-binding.yaml b/templates/bindings/core/google-storage-cdc-source-binding.yaml new file mode 100644 index 000000000..6e16e4846 --- /dev/null +++ b/templates/bindings/core/google-storage-cdc-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:google-storage-cdc-source" + parameters: + bucketNameOrArn: "The Bucket Name Or ARN" + projectId: "The Project Id" + serviceAccountKey: "The Service Account Key" + subscriptionName: "The Subscription Name" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/google-storage-sink-binding.yaml b/templates/bindings/core/google-storage-sink-binding.yaml new file mode 100644 index 000000000..3afdc80cb --- /dev/null +++ b/templates/bindings/core/google-storage-sink-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:google-storage-sink" + parameters: + bucketNameOrArn: "The Bucket Name Or ARN" + \ No newline at end of file diff --git a/templates/bindings/core/google-storage-source-binding.yaml b/templates/bindings/core/google-storage-source-binding.yaml new file mode 100644 index 000000000..08309dda4 --- /dev/null +++ b/templates/bindings/core/google-storage-source-binding.yaml @@ -0,0 +1,9 @@ +- route: + from: + uri: "kamelet:google-storage-source" + parameters: + bucketNameOrArn: "The Bucket Name Or ARN" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/graphql-sink-binding.yaml b/templates/bindings/core/graphql-sink-binding.yaml new file mode 100644 index 000000000..5e1de456f --- /dev/null +++ b/templates/bindings/core/graphql-sink-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:graphql-sink" + parameters: + url: "http://example.com/graphql" + \ No newline at end of file diff --git a/templates/bindings/core/header-matches-filter-action-binding.yaml b/templates/bindings/core/header-matches-filter-action-binding.yaml new file mode 100644 index 000000000..240315d52 --- /dev/null +++ b/templates/bindings/core/header-matches-filter-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:header-matches-filter-action" + parameters: + regex: "The Regex" + - to: + uri: "log:info" diff --git a/templates/bindings/core/http-secured-sink-binding.yaml b/templates/bindings/core/http-secured-sink-binding.yaml new file mode 100644 index 000000000..fdbaa0df2 --- /dev/null +++ b/templates/bindings/core/http-secured-sink-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:http-secured-sink" + parameters: + url: "https://my-service/path" + \ No newline at end of file diff --git a/templates/bindings/core/http-secured-source-binding.yaml b/templates/bindings/core/http-secured-source-binding.yaml new file mode 100644 index 000000000..00dc8a0d4 --- /dev/null +++ b/templates/bindings/core/http-secured-source-binding.yaml @@ -0,0 +1,9 @@ +- route: + from: + uri: "kamelet:http-secured-source" + parameters: + url: "https://gist.githubusercontent.com/nicolaferraro/e3c72ace3c751f9f88273896611ce5fe/raw/3b6f54060bacb56b6719b7386a4645cb59ad6cc1/quote.json" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/http-source-binding.yaml b/templates/bindings/core/http-source-binding.yaml new file mode 100644 index 000000000..fef980b29 --- /dev/null +++ b/templates/bindings/core/http-source-binding.yaml @@ -0,0 +1,9 @@ +- route: + from: + uri: "kamelet:http-source" + parameters: + url: "https://gist.githubusercontent.com/nicolaferraro/e3c72ace3c751f9f88273896611ce5fe/raw/3b6f54060bacb56b6719b7386a4645cb59ad6cc1/quote.json" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/infinispan-sink-binding.yaml b/templates/bindings/core/infinispan-sink-binding.yaml new file mode 100644 index 000000000..2b9b88eed --- /dev/null +++ b/templates/bindings/core/infinispan-sink-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:infinispan-sink" + parameters: + cacheName: "The Cache Name" + hosts: "The Hosts" + password: "The Password" + username: "The Username" + \ No newline at end of file diff --git a/templates/bindings/core/infinispan-source-binding.yaml b/templates/bindings/core/infinispan-source-binding.yaml new file mode 100644 index 000000000..09226cf6c --- /dev/null +++ b/templates/bindings/core/infinispan-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:infinispan-source" + parameters: + cacheName: "The Cache Name" + hosts: "The Hosts" + password: "The Password" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/insert-header-action-binding.yaml b/templates/bindings/core/insert-header-action-binding.yaml index 886064ca1..35fde5003 100644 --- a/templates/bindings/core/insert-header-action-binding.yaml +++ b/templates/bindings/core/insert-header-action-binding.yaml @@ -8,7 +8,7 @@ - to: uri: "kamelet:insert-header-action" parameters: - name: "The Name" + name: "headername" value: "The Value" - to: uri: "log:info" diff --git a/templates/bindings/core/jira-oauth-source-binding.yaml b/templates/bindings/core/jira-oauth-source-binding.yaml new file mode 100644 index 000000000..aa4538f11 --- /dev/null +++ b/templates/bindings/core/jira-oauth-source-binding.yaml @@ -0,0 +1,14 @@ +- route: + from: + uri: "kamelet:jira-oauth-source" + parameters: + accessToken: "The Username" + consumerKey: "The Password" + jiraUrl: "http://my_jira.com:8081" + jql: "project=MyProject" + privateKey: "The Password" + verificationCode: "The Password" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/jira-source-binding.yaml b/templates/bindings/core/jira-source-binding.yaml index e963bb074..cd5f506d5 100644 --- a/templates/bindings/core/jira-source-binding.yaml +++ b/templates/bindings/core/jira-source-binding.yaml @@ -3,8 +3,6 @@ uri: "kamelet:jira-source" parameters: jiraUrl: "http://my_jira.com:8081" - password: "The Password" - username: "The Username" steps: - to: uri: "log:info" diff --git a/templates/bindings/core/jms-apache-artemis-sink-binding.yaml b/templates/bindings/core/jms-apache-artemis-sink-binding.yaml new file mode 100644 index 000000000..9ba27fc42 --- /dev/null +++ b/templates/bindings/core/jms-apache-artemis-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:jms-apache-artemis-sink" + parameters: + brokerURL: "tcp://my-host:61616" + destinationName: "person" + \ No newline at end of file diff --git a/templates/bindings/core/jms-apache-artemis-source-binding.yaml b/templates/bindings/core/jms-apache-artemis-source-binding.yaml new file mode 100644 index 000000000..a172c3983 --- /dev/null +++ b/templates/bindings/core/jms-apache-artemis-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:jms-apache-artemis-source" + parameters: + brokerURL: "tcp://k3s-node-master.usersys.redhat.com:31616" + destinationName: "The Destination Name" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/jolt-transformation-action-binding.yaml b/templates/bindings/core/jolt-transformation-action-binding.yaml new file mode 100644 index 000000000..9b9d9d415 --- /dev/null +++ b/templates/bindings/core/jolt-transformation-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:jolt-transformation-action" + parameters: + template: "file:////template.json" + - to: + uri: "log:info" diff --git a/templates/bindings/core/json-patch-action-binding.yaml b/templates/bindings/core/json-patch-action-binding.yaml new file mode 100644 index 000000000..99a4a790e --- /dev/null +++ b/templates/bindings/core/json-patch-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:json-patch-action" + parameters: + template: "file:////template.json" + - to: + uri: "log:info" diff --git a/templates/bindings/core/json-schema-validator-action-binding.yaml b/templates/bindings/core/json-schema-validator-action-binding.yaml new file mode 100644 index 000000000..fdf4d561d --- /dev/null +++ b/templates/bindings/core/json-schema-validator-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:json-schema-validator-action" + parameters: + template: "file:////template.json" + - to: + uri: "log:info" diff --git a/templates/bindings/core/jsonata-action-binding.yaml b/templates/bindings/core/jsonata-action-binding.yaml new file mode 100644 index 000000000..364285a66 --- /dev/null +++ b/templates/bindings/core/jsonata-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:jsonata-action" + parameters: + template: "file:////template.spec" + - to: + uri: "log:info" diff --git a/templates/bindings/core/kafka-not-secured-sink-binding.yaml b/templates/bindings/core/kafka-not-secured-sink-binding.yaml new file mode 100644 index 000000000..7b4e900cd --- /dev/null +++ b/templates/bindings/core/kafka-not-secured-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:kafka-not-secured-sink" + parameters: + bootstrapServers: "The Bootstrap Servers" + topic: "The Topic Names" + \ No newline at end of file diff --git a/templates/bindings/core/kafka-not-secured-source-binding.yaml b/templates/bindings/core/kafka-not-secured-source-binding.yaml new file mode 100644 index 000000000..c03aa3641 --- /dev/null +++ b/templates/bindings/core/kafka-not-secured-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:kafka-not-secured-source" + parameters: + bootstrapServers: "The Bootstrap Servers" + topic: "The Topic Names" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/kafka-scram-sink-binding.yaml b/templates/bindings/core/kafka-scram-sink-binding.yaml new file mode 100644 index 000000000..1f9df05fe --- /dev/null +++ b/templates/bindings/core/kafka-scram-sink-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:kafka-scram-sink" + parameters: + bootstrapServers: "The Bootstrap Servers" + password: "The Password" + topic: "The Topic Names" + user: "The Username" + \ No newline at end of file diff --git a/templates/bindings/core/kafka-scram-source-binding.yaml b/templates/bindings/core/kafka-scram-source-binding.yaml new file mode 100644 index 000000000..ee0d97435 --- /dev/null +++ b/templates/bindings/core/kafka-scram-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:kafka-scram-source" + parameters: + bootstrapServers: "The Bootstrap Servers" + password: "The Password" + topic: "The Topic Names" + user: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/kafka-sink-binding.yaml b/templates/bindings/core/kafka-sink-binding.yaml index e50a882e5..c2cc736e7 100644 --- a/templates/bindings/core/kafka-sink-binding.yaml +++ b/templates/bindings/core/kafka-sink-binding.yaml @@ -8,7 +8,7 @@ - to: uri: "kamelet:kafka-sink" parameters: - bootstrapServers: "The Brokers" + bootstrapServers: "The Bootstrap Servers" password: "The Password" topic: "The Topic Names" user: "The Username" diff --git a/templates/bindings/core/kafka-source-binding.yaml b/templates/bindings/core/kafka-source-binding.yaml index 2b0081440..d0c8f7d51 100644 --- a/templates/bindings/core/kafka-source-binding.yaml +++ b/templates/bindings/core/kafka-source-binding.yaml @@ -2,7 +2,7 @@ from: uri: "kamelet:kafka-source" parameters: - bootstrapServers: "The Brokers" + bootstrapServers: "The Bootstrap Servers" password: "The Password" topic: "The Topic Names" user: "The Username" diff --git a/templates/bindings/core/kafka-ssl-sink-binding.yaml b/templates/bindings/core/kafka-ssl-sink-binding.yaml new file mode 100644 index 000000000..ad1354abf --- /dev/null +++ b/templates/bindings/core/kafka-ssl-sink-binding.yaml @@ -0,0 +1,17 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:kafka-ssl-sink" + parameters: + bootstrapServers: "The Brokers" + sslKeyPassword: "The SSL Key Password" + sslKeystoreLocation: "The SSL Keystore Location" + sslKeystorePassword: "The SSL Keystore Password" + sslTruststoreLocation: "The SSL Truststore Location" + topic: "The Topic Names" + \ No newline at end of file diff --git a/templates/bindings/core/kafka-ssl-source-binding.yaml b/templates/bindings/core/kafka-ssl-source-binding.yaml new file mode 100644 index 000000000..0a7968e16 --- /dev/null +++ b/templates/bindings/core/kafka-ssl-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:kafka-ssl-source" + parameters: + bootstrapServers: "The Bootstrap Servers" + sslKeyPassword: "The SSL Key Password" + sslTruststoreLocation: "The SSL Truststore Location" + topic: "The Topic Names" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/kubernetes-namespaces-source-binding.yaml b/templates/bindings/core/kubernetes-namespaces-source-binding.yaml new file mode 100644 index 000000000..19a2e5e38 --- /dev/null +++ b/templates/bindings/core/kubernetes-namespaces-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:kubernetes-namespaces-source" + parameters: + masterUrl: "The Kubernetes Master URL" + token: "The Oauth Token" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/kubernetes-nodes-source-binding.yaml b/templates/bindings/core/kubernetes-nodes-source-binding.yaml new file mode 100644 index 000000000..22b420afd --- /dev/null +++ b/templates/bindings/core/kubernetes-nodes-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:kubernetes-nodes-source" + parameters: + masterUrl: "The Kubernetes Master URL" + token: "The Oauth Token" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/kubernetes-pods-source-binding.yaml b/templates/bindings/core/kubernetes-pods-source-binding.yaml new file mode 100644 index 000000000..369f16902 --- /dev/null +++ b/templates/bindings/core/kubernetes-pods-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:kubernetes-pods-source" + parameters: + masterUrl: "The Kubernetes Master URL" + token: "The Oauth Token" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/log-action-binding.yaml b/templates/bindings/core/log-action-binding.yaml new file mode 100644 index 000000000..5bfa00938 --- /dev/null +++ b/templates/bindings/core/log-action-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:log-action" + - to: + uri: "log:info" diff --git a/templates/bindings/core/mail-imap-source-binding.yaml b/templates/bindings/core/mail-imap-source-binding.yaml new file mode 100644 index 000000000..b55f9ba3c --- /dev/null +++ b/templates/bindings/core/mail-imap-source-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:mail-imap-source" + parameters: + connectionHost: "imap.gmail.com" + password: "The Password" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/mail-sink-binding.yaml b/templates/bindings/core/mail-sink-binding.yaml new file mode 100644 index 000000000..31bd4126f --- /dev/null +++ b/templates/bindings/core/mail-sink-binding.yaml @@ -0,0 +1,14 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:mail-sink" + parameters: + connectionHost: "smtp.gmail.com" + password: "The Password" + username: "The Username" + \ No newline at end of file diff --git a/templates/bindings/core/mariadb-source-binding.yaml b/templates/bindings/core/mariadb-source-binding.yaml new file mode 100644 index 000000000..8cbf70b1a --- /dev/null +++ b/templates/bindings/core/mariadb-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:mariadb-source" + parameters: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/minio-sink-binding.yaml b/templates/bindings/core/minio-sink-binding.yaml new file mode 100644 index 000000000..8a72ba6f5 --- /dev/null +++ b/templates/bindings/core/minio-sink-binding.yaml @@ -0,0 +1,15 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:minio-sink" + parameters: + accessKey: "The Access Key" + bucketName: "The Bucket Name" + endpoint: "http://localhost:9000" + secretKey: "The Secret Key" + \ No newline at end of file diff --git a/templates/bindings/core/minio-source-binding.yaml b/templates/bindings/core/minio-source-binding.yaml new file mode 100644 index 000000000..55b62e945 --- /dev/null +++ b/templates/bindings/core/minio-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:minio-source" + parameters: + accessKey: "The Access Key" + bucketName: "The Bucket Name" + endpoint: "http://localhost:9000" + secretKey: "The Secret Key" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/mongodb-changes-stream-source-binding.yaml b/templates/bindings/core/mongodb-changes-stream-source-binding.yaml new file mode 100644 index 000000000..cc6c7e679 --- /dev/null +++ b/templates/bindings/core/mongodb-changes-stream-source-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:mongodb-changes-stream-source" + parameters: + collection: "The MongoDB Collection" + database: "The MongoDB Database" + hosts: "The MongoDB Hosts" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/mongodb-source-binding.yaml b/templates/bindings/core/mongodb-source-binding.yaml index c40edc0cc..d09045bb9 100644 --- a/templates/bindings/core/mongodb-source-binding.yaml +++ b/templates/bindings/core/mongodb-source-binding.yaml @@ -5,8 +5,6 @@ collection: "The MongoDB Collection" database: "The MongoDB Database" hosts: "The MongoDB Hosts" - password: "The MongoDB Password" - username: "The MongoDB Username" steps: - to: uri: "log:info" diff --git a/templates/bindings/core/mqtt-sink-binding.yaml b/templates/bindings/core/mqtt-sink-binding.yaml new file mode 100644 index 000000000..624d3436d --- /dev/null +++ b/templates/bindings/core/mqtt-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:mqtt-sink" + parameters: + brokerUrl: "tcp://mosquitto:1883" + topic: "mytopic" + \ No newline at end of file diff --git a/templates/bindings/core/mqtt-source-binding.yaml b/templates/bindings/core/mqtt-source-binding.yaml new file mode 100644 index 000000000..600c897cf --- /dev/null +++ b/templates/bindings/core/mqtt-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:mqtt-source" + parameters: + brokerUrl: "tcp://mosquitto:1883" + topic: "mytopic" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/mqtt5-sink-binding.yaml b/templates/bindings/core/mqtt5-sink-binding.yaml new file mode 100644 index 000000000..e7d820fe2 --- /dev/null +++ b/templates/bindings/core/mqtt5-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:mqtt5-sink" + parameters: + brokerUrl: "tcp://mosquitto:1883" + topic: "mytopic" + \ No newline at end of file diff --git a/templates/bindings/core/mqtt5-source-binding.yaml b/templates/bindings/core/mqtt5-source-binding.yaml new file mode 100644 index 000000000..6c339de10 --- /dev/null +++ b/templates/bindings/core/mqtt5-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:mqtt5-source" + parameters: + brokerUrl: "tcp://mosquitto:1883" + topic: "mytopic" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/ms-exchange-online-imap-oauth-source-binding.yaml b/templates/bindings/core/ms-exchange-online-imap-oauth-source-binding.yaml new file mode 100644 index 000000000..6d75df748 --- /dev/null +++ b/templates/bindings/core/ms-exchange-online-imap-oauth-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:ms-exchange-online-imap-oauth-source" + parameters: + clientId: "The Client ID" + clientSecret: "The Client Secret" + tenantId: "The Tenant ID" + username: "arthur@mycompany.com" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/mustache-template-action-binding.yaml b/templates/bindings/core/mustache-template-action-binding.yaml new file mode 100644 index 000000000..4800b6152 --- /dev/null +++ b/templates/bindings/core/mustache-template-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:mustache-template-action" + parameters: + template: "file:////template.mustache" + - to: + uri: "log:info" diff --git a/templates/bindings/core/mvel-template-action-binding.yaml b/templates/bindings/core/mvel-template-action-binding.yaml new file mode 100644 index 000000000..9dc4b0b23 --- /dev/null +++ b/templates/bindings/core/mvel-template-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:mvel-template-action" + parameters: + template: "file:////template.mvel" + - to: + uri: "log:info" diff --git a/templates/bindings/core/mysql-source-binding.yaml b/templates/bindings/core/mysql-source-binding.yaml new file mode 100644 index 000000000..833d14b63 --- /dev/null +++ b/templates/bindings/core/mysql-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:mysql-source" + parameters: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/nats-sink-binding.yaml b/templates/bindings/core/nats-sink-binding.yaml new file mode 100644 index 000000000..d01570855 --- /dev/null +++ b/templates/bindings/core/nats-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:nats-sink" + parameters: + servers: "The Servers" + topic: "The Topic" + \ No newline at end of file diff --git a/templates/bindings/core/nats-source-binding.yaml b/templates/bindings/core/nats-source-binding.yaml new file mode 100644 index 000000000..a4a855505 --- /dev/null +++ b/templates/bindings/core/nats-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:nats-source" + parameters: + servers: "The Servers" + topic: "The Topic" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/nominatim-geocode-action-binding.yaml b/templates/bindings/core/nominatim-geocode-action-binding.yaml new file mode 100644 index 000000000..02d75a41d --- /dev/null +++ b/templates/bindings/core/nominatim-geocode-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:nominatim-geocode-action" + parameters: + serverUrl: "https://nominatim.openstreetmap.org" + - to: + uri: "log:info" diff --git a/templates/bindings/core/ogcapi-features-action-binding.yaml b/templates/bindings/core/ogcapi-features-action-binding.yaml new file mode 100644 index 000000000..4ffa23ed8 --- /dev/null +++ b/templates/bindings/core/ogcapi-features-action-binding.yaml @@ -0,0 +1,14 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:ogcapi-features-action" + parameters: + collection: "The Collection" + url: "https://emotional.byteroad.net" + - to: + uri: "log:info" diff --git a/templates/bindings/core/openai-classification-action-binding.yaml b/templates/bindings/core/openai-classification-action-binding.yaml new file mode 100644 index 000000000..dfd6c1e32 --- /dev/null +++ b/templates/bindings/core/openai-classification-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:openai-classification-action" + parameters: + authorizationToken: "The Authorization Token" + - to: + uri: "log:info" diff --git a/templates/bindings/core/openai-completion-action-binding.yaml b/templates/bindings/core/openai-completion-action-binding.yaml new file mode 100644 index 000000000..313f4cd4c --- /dev/null +++ b/templates/bindings/core/openai-completion-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:openai-completion-action" + parameters: + authorizationToken: "The Authorization Token" + - to: + uri: "log:info" diff --git a/templates/bindings/core/opensearch-index-sink-binding.yaml b/templates/bindings/core/opensearch-index-sink-binding.yaml new file mode 100644 index 000000000..fa0596fa6 --- /dev/null +++ b/templates/bindings/core/opensearch-index-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:opensearch-index-sink" + parameters: + clusterName: "quickstart" + hostAddresses: "quickstart-es-http:9200" + \ No newline at end of file diff --git a/templates/bindings/core/opensearch-search-source-binding.yaml b/templates/bindings/core/opensearch-search-source-binding.yaml new file mode 100644 index 000000000..57f48ffd5 --- /dev/null +++ b/templates/bindings/core/opensearch-search-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:opensearch-search-source" + parameters: + clusterName: "The OpenSearch Cluster Name" + hostAddresses: "The Host Addresses" + indexName: "The Index in OpenSearch" + query: "The Query" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/oracle-database-sink-binding.yaml b/templates/bindings/core/oracle-database-sink-binding.yaml new file mode 100644 index 000000000..691453205 --- /dev/null +++ b/templates/bindings/core/oracle-database-sink-binding.yaml @@ -0,0 +1,16 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:oracle-database-sink" + parameters: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + \ No newline at end of file diff --git a/templates/bindings/core/oracle-database-source-binding.yaml b/templates/bindings/core/oracle-database-source-binding.yaml new file mode 100644 index 000000000..1052737b2 --- /dev/null +++ b/templates/bindings/core/oracle-database-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:oracle-database-source" + parameters: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/pdf-action-binding.yaml b/templates/bindings/core/pdf-action-binding.yaml new file mode 100644 index 000000000..52d5cc578 --- /dev/null +++ b/templates/bindings/core/pdf-action-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:pdf-action" + - to: + uri: "log:info" diff --git a/templates/bindings/core/postgresql-source-binding.yaml b/templates/bindings/core/postgresql-source-binding.yaml new file mode 100644 index 000000000..2e5e248bf --- /dev/null +++ b/templates/bindings/core/postgresql-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:postgresql-source" + parameters: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/pulsar-sink-binding.yaml b/templates/bindings/core/pulsar-sink-binding.yaml new file mode 100644 index 000000000..b9ca6fad6 --- /dev/null +++ b/templates/bindings/core/pulsar-sink-binding.yaml @@ -0,0 +1,16 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:pulsar-sink" + parameters: + namespaceName: "The Pulsar Namespace Name" + serviceUrl: "The Service URL" + tenant: "The Tenant Name" + topic: "The Topic Name" + topicType: "The Topic Type" + \ No newline at end of file diff --git a/templates/bindings/core/pulsar-source-binding.yaml b/templates/bindings/core/pulsar-source-binding.yaml new file mode 100644 index 000000000..37ce79d5d --- /dev/null +++ b/templates/bindings/core/pulsar-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:pulsar-source" + parameters: + namespaceName: "The Pulsar Namespace Name" + serviceUrl: "The Service URL" + tenant: "The Tenant Name" + topic: "The Topic Name" + topicType: "The Topic Type" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/redis-sink-binding.yaml b/templates/bindings/core/redis-sink-binding.yaml new file mode 100644 index 000000000..2673c3073 --- /dev/null +++ b/templates/bindings/core/redis-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:redis-sink" + parameters: + redisHost: "The Redis Host" + redisPort: "The Redis Port" + \ No newline at end of file diff --git a/templates/bindings/core/redis-source-binding.yaml b/templates/bindings/core/redis-source-binding.yaml new file mode 100644 index 000000000..fb7eba418 --- /dev/null +++ b/templates/bindings/core/redis-source-binding.yaml @@ -0,0 +1,10 @@ +- route: + from: + uri: "kamelet:redis-source" + parameters: + redisHost: "The Redis Host" + redisPort: "The Redis Port" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/resolve-pojo-schema-action-binding.yaml b/templates/bindings/core/resolve-pojo-schema-action-binding.yaml new file mode 100644 index 000000000..be51a403b --- /dev/null +++ b/templates/bindings/core/resolve-pojo-schema-action-binding.yaml @@ -0,0 +1,11 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:resolve-pojo-schema-action" + - to: + uri: "log:info" diff --git a/templates/bindings/core/rest-openapi-sink-binding.yaml b/templates/bindings/core/rest-openapi-sink-binding.yaml new file mode 100644 index 000000000..4fb17524a --- /dev/null +++ b/templates/bindings/core/rest-openapi-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:rest-openapi-sink" + parameters: + operation: "The Operation ID" + specification: "https://api.example.com/openapi.json" + \ No newline at end of file diff --git a/templates/bindings/core/salesforce-composite-upsert-sink-binding.yaml b/templates/bindings/core/salesforce-composite-upsert-sink-binding.yaml new file mode 100644 index 000000000..2ed08457e --- /dev/null +++ b/templates/bindings/core/salesforce-composite-upsert-sink-binding.yaml @@ -0,0 +1,17 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:salesforce-composite-upsert-sink" + parameters: + clientId: "The Consumer Key" + clientSecret: "The Consumer Secret" + password: "The Password" + sObjectIdName: "The Object Id Name" + sObjectName: "Contact" + userName: "The Username" + \ No newline at end of file diff --git a/templates/bindings/core/salesforce-update-sink-binding.yaml b/templates/bindings/core/salesforce-update-sink-binding.yaml index 2ccf0367d..1a9ca2a40 100644 --- a/templates/bindings/core/salesforce-update-sink-binding.yaml +++ b/templates/bindings/core/salesforce-update-sink-binding.yaml @@ -11,7 +11,5 @@ clientId: "The Consumer Key" clientSecret: "The Consumer Secret" password: "The Password" - sObjectId: "The Object Id" - sObjectName: "Contact" userName: "The Username" \ No newline at end of file diff --git a/templates/bindings/core/scp-sink-binding.yaml b/templates/bindings/core/scp-sink-binding.yaml new file mode 100644 index 000000000..9affb18c1 --- /dev/null +++ b/templates/bindings/core/scp-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:scp-sink" + parameters: + serverName: "The Hostname" + serverPort: "The Port" + \ No newline at end of file diff --git a/templates/bindings/core/set-kafka-key-action-binding.yaml b/templates/bindings/core/set-kafka-key-action-binding.yaml new file mode 100644 index 000000000..c27da1f71 --- /dev/null +++ b/templates/bindings/core/set-kafka-key-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:set-kafka-key-action" + parameters: + headerName: "The Field" + - to: + uri: "log:info" diff --git a/templates/bindings/core/sftp-sink-binding.yaml b/templates/bindings/core/sftp-sink-binding.yaml index 9ccfc4481..9b1217650 100644 --- a/templates/bindings/core/sftp-sink-binding.yaml +++ b/templates/bindings/core/sftp-sink-binding.yaml @@ -10,6 +10,4 @@ parameters: connectionHost: "The Connection Host" directoryName: "The Directory Name" - password: "The Password" - username: "The Username" \ No newline at end of file diff --git a/templates/bindings/core/sftp-source-binding.yaml b/templates/bindings/core/sftp-source-binding.yaml index 9369845a3..e946e791d 100644 --- a/templates/bindings/core/sftp-source-binding.yaml +++ b/templates/bindings/core/sftp-source-binding.yaml @@ -4,8 +4,6 @@ parameters: connectionHost: "The Connection Host" directoryName: "The Directory Name" - password: "The Password" - username: "The Username" steps: - to: uri: "log:info" diff --git a/templates/bindings/core/slack-sink-binding.yaml b/templates/bindings/core/slack-sink-binding.yaml new file mode 100644 index 000000000..52822739c --- /dev/null +++ b/templates/bindings/core/slack-sink-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:slack-sink" + parameters: + channel: "#myroom" + webhookUrl: "The Webhook URL" + \ No newline at end of file diff --git a/templates/bindings/core/sqlserver-source-binding.yaml b/templates/bindings/core/sqlserver-source-binding.yaml new file mode 100644 index 000000000..779ac45ab --- /dev/null +++ b/templates/bindings/core/sqlserver-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:sqlserver-source" + parameters: + databaseName: "The Database Name" + password: "The Password" + query: "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" + serverName: "localhost" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/ssh-sink-binding.yaml b/templates/bindings/core/ssh-sink-binding.yaml new file mode 100644 index 000000000..2f439752d --- /dev/null +++ b/templates/bindings/core/ssh-sink-binding.yaml @@ -0,0 +1,14 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:ssh-sink" + parameters: + connectionHost: "The Connection Host" + password: "The Password" + username: "The Username" + \ No newline at end of file diff --git a/templates/bindings/core/ssh-source-binding.yaml b/templates/bindings/core/ssh-source-binding.yaml new file mode 100644 index 000000000..555e94a1e --- /dev/null +++ b/templates/bindings/core/ssh-source-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:ssh-source" + parameters: + connectionHost: "The Connection Host" + password: "The Password" + pollCommand: "date" + username: "The Username" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/string-template-action-binding.yaml b/templates/bindings/core/string-template-action-binding.yaml new file mode 100644 index 000000000..12b76e260 --- /dev/null +++ b/templates/bindings/core/string-template-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:string-template-action" + parameters: + template: "file:////template.tm" + - to: + uri: "log:info" diff --git a/templates/bindings/core/telegram-sink-binding.yaml b/templates/bindings/core/telegram-sink-binding.yaml new file mode 100644 index 000000000..e3a1a698b --- /dev/null +++ b/templates/bindings/core/telegram-sink-binding.yaml @@ -0,0 +1,12 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "Hello Camel JBang" + steps: + - to: + uri: "kamelet:telegram-sink" + parameters: + authorizationToken: "The Token" + \ No newline at end of file diff --git a/templates/bindings/core/twitter-directmessage-source-binding.yaml b/templates/bindings/core/twitter-directmessage-source-binding.yaml new file mode 100644 index 000000000..65f1543ae --- /dev/null +++ b/templates/bindings/core/twitter-directmessage-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:twitter-directmessage-source" + parameters: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + user: "ApacheCamel" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/twitter-search-source-binding.yaml b/templates/bindings/core/twitter-search-source-binding.yaml new file mode 100644 index 000000000..12442a26f --- /dev/null +++ b/templates/bindings/core/twitter-search-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:twitter-search-source" + parameters: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + keywords: "Apache Camel" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/twitter-timeline-source-binding.yaml b/templates/bindings/core/twitter-timeline-source-binding.yaml new file mode 100644 index 000000000..f8dae74d8 --- /dev/null +++ b/templates/bindings/core/twitter-timeline-source-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:twitter-timeline-source" + parameters: + accessToken: "The Access Token" + accessTokenSecret: "The Access Token Secret" + apiKey: "The API Key" + apiKeySecret: "The API Key Secret" + user: "ApacheCamel" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/velocity-template-action-binding.yaml b/templates/bindings/core/velocity-template-action-binding.yaml new file mode 100644 index 000000000..62d835ef1 --- /dev/null +++ b/templates/bindings/core/velocity-template-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:velocity-template-action" + parameters: + template: "file:////template.vm" + - to: + uri: "log:info" diff --git a/templates/bindings/core/webhook-source-binding.yaml b/templates/bindings/core/webhook-source-binding.yaml new file mode 100644 index 000000000..b01bf41ba --- /dev/null +++ b/templates/bindings/core/webhook-source-binding.yaml @@ -0,0 +1,7 @@ +- route: + from: + uri: "kamelet:webhook-source" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/wttrin-source-binding.yaml b/templates/bindings/core/wttrin-source-binding.yaml new file mode 100644 index 000000000..e19d39537 --- /dev/null +++ b/templates/bindings/core/wttrin-source-binding.yaml @@ -0,0 +1,7 @@ +- route: + from: + uri: "kamelet:wttrin-source" + steps: + - to: + uri: "log:info" + \ No newline at end of file diff --git a/templates/bindings/core/xj-identity-action-binding.yaml b/templates/bindings/core/xj-identity-action-binding.yaml new file mode 100644 index 000000000..90d4cf3b6 --- /dev/null +++ b/templates/bindings/core/xj-identity-action-binding.yaml @@ -0,0 +1,13 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:xj-identity-action" + parameters: + direction: "The Direction" + - to: + uri: "log:info" diff --git a/templates/bindings/core/xj-template-action-binding.yaml b/templates/bindings/core/xj-template-action-binding.yaml new file mode 100644 index 000000000..1e28e0c53 --- /dev/null +++ b/templates/bindings/core/xj-template-action-binding.yaml @@ -0,0 +1,14 @@ +- route: + from: + uri: "kamelet:timer-source" + parameters: + period: 1000 + message: "{ \"foo\": \"John\"}" + steps: + - to: + uri: "kamelet:xj-template-action" + parameters: + direction: "The Direction" + template: "file:////template.vm" + - to: + uri: "log:info" diff --git a/test/aws-kinesis/aws-kinesis-to-inmem.yaml b/test/aws-kinesis/aws-kinesis-to-inmem.yaml index 20bf4c008..678991d15 100644 --- a/test/aws-kinesis/aws-kinesis-to-inmem.yaml +++ b/test/aws-kinesis/aws-kinesis-to-inmem.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-kinesis-to-inmem @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-kinesis-source properties: stream: "${camel.kamelet.aws-kinesis-source.aws-kinesis-credentials.stream}" diff --git a/test/aws-kinesis/aws-kinesis-uri-binding.yaml b/test/aws-kinesis/aws-kinesis-uri-binding.yaml index 1e16fa203..7d32f7cd5 100644 --- a/test/aws-kinesis/aws-kinesis-uri-binding.yaml +++ b/test/aws-kinesis/aws-kinesis-uri-binding.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-kinesis-uri-binding @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-kinesis-source properties: stream: ${camel.kamelet.aws-kinesis-source.aws-kinesis-credentials.stream} diff --git a/test/aws-sqs/aws-sqs-to-inmem.yaml b/test/aws-sqs/aws-sqs-to-inmem.yaml index 2908c2a5f..5cee4f963 100644 --- a/test/aws-sqs/aws-sqs-to-inmem.yaml +++ b/test/aws-sqs/aws-sqs-to-inmem.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-to-inmem @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-source properties: queueNameOrArn: ${camel.kamelet.aws-sqs-source.aws-sqs-credentials.queueNameOrArn} diff --git a/test/aws-sqs/aws-sqs-uri-binding.yaml b/test/aws-sqs/aws-sqs-uri-binding.yaml index 9b32b0ad2..64da30f2a 100644 --- a/test/aws-sqs/aws-sqs-uri-binding.yaml +++ b/test/aws-sqs/aws-sqs-uri-binding.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: aws-sqs-uri-binding @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: aws-sqs-source properties: queueNameOrArn: ${camel.kamelet.aws-sqs-source.aws-sqs-credentials.queueNameOrArn} diff --git a/test/extract-field/extract-field-test.yaml b/test/extract-field/extract-field-test.yaml index b3f241489..93e41dbf0 100644 --- a/test/extract-field/extract-field-test.yaml +++ b/test/extract-field/extract-field-test.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: extract-field-test @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: period: 5000 @@ -16,7 +16,7 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: extract-field-action properties: field: ${field} diff --git a/test/ftp/sink/ftp-sink-test.yaml b/test/ftp/sink/ftp-sink-test.yaml index c675f21dd..60444bddd 100644 --- a/test/ftp/sink/ftp-sink-test.yaml +++ b/test/ftp/sink/ftp-sink-test.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftp-sink-test @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: period: 10000 @@ -14,7 +14,7 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-header-action properties: name: file @@ -22,7 +22,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftp-sink properties: connectionHost: ${ftp.server.host}.${YAKS_NAMESPACE} diff --git a/test/ftp/source/ftp-source-test.yaml b/test/ftp/source/ftp-source-test.yaml index 032ebbe1a..f44fcaa6a 100644 --- a/test/ftp/source/ftp-source-test.yaml +++ b/test/ftp/source/ftp-source-test.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: ftp-source-test @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: ftp-source properties: connectionHost: ${ftp.server.host}.${YAKS_NAMESPACE} diff --git a/test/http-sink/http-sink-test.yaml b/test/http-sink/http-sink-test.yaml index 820363f3f..99d59497d 100644 --- a/test/http-sink/http-sink-test.yaml +++ b/test/http-sink/http-sink-test.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: http-sink-test @@ -6,14 +6,14 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: message: ${message} sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: http-sink properties: url: http://sink-http-service.${YAKS_NAMESPACE}/result diff --git a/test/insert-field/insert-field-test.yaml b/test/insert-field/insert-field-test.yaml index be30c0021..1b6e451a6 100644 --- a/test/insert-field/insert-field-test.yaml +++ b/test/insert-field/insert-field-test.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: insert-field-test @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: period: 5000 @@ -16,7 +16,7 @@ spec: steps: - ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: insert-field-action properties: field: ${field} diff --git a/test/jira/inmem-to-log.yaml b/test/jira/inmem-to-log.yaml index bbecf85a7..aacd88569 100644 --- a/test/jira/inmem-to-log.yaml +++ b/test/jira/inmem-to-log.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: inmem-to-log @@ -11,5 +11,5 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: logger-sink diff --git a/test/jira/jira-to-inmem.yaml b/test/jira/jira-to-inmem.yaml index 0c52e2c43..c1ecd5912 100644 --- a/test/jira/jira-to-inmem.yaml +++ b/test/jira/jira-to-inmem.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-to-inmem @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-source properties: jql: ${camel.kamelet.jira-source.jira-credentials.jql} diff --git a/test/jira/jira-uri-binding.yaml b/test/jira/jira-uri-binding.yaml index ccff1342d..e761aba33 100644 --- a/test/jira/jira-uri-binding.yaml +++ b/test/jira/jira-uri-binding.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: jira-uri-binding @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: jira-source properties: jiraUrl: ${camel.kamelet.jira-source.jira-credentials.jiraUrl} diff --git a/test/jira/logger-sink.kamelet.yaml b/test/jira/logger-sink.kamelet.yaml index 2494bf61c..7c39d2836 100644 --- a/test/jira/logger-sink.kamelet.yaml +++ b/test/jira/logger-sink.kamelet.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: logger-sink diff --git a/test/kafka/kafka-sink-test.yaml b/test/kafka/kafka-sink-test.yaml index 763bd1e17..f43fe4751 100644 --- a/test/kafka/kafka-sink-test.yaml +++ b/test/kafka/kafka-sink-test.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: kafka-sink-test @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: period: 5000 @@ -15,7 +15,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: kafka-sink properties: bootstrapServers: ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port} diff --git a/test/kafka/kafka-source-test.yaml b/test/kafka/kafka-source-test.yaml index 1ff5ca9f3..0e68132fd 100644 --- a/test/kafka/kafka-source-test.yaml +++ b/test/kafka/kafka-source-test.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: kafka-source-test @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: kafka-source properties: bootstrapServers: ${bootstrap.server.host}.${YAKS_NAMESPACE}:${bootstrap.server.port} diff --git a/test/postgresql/postgresql-sink-test.yaml b/test/postgresql/postgresql-sink-test.yaml index 38be2b983..6b4af3ea7 100644 --- a/test/postgresql/postgresql-sink-test.yaml +++ b/test/postgresql/postgresql-sink-test.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: postgresql-sink-test @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: timer-source properties: period: 60000 @@ -15,7 +15,7 @@ spec: sink: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: postgresql-sink properties: serverName: ${YAKS_TESTCONTAINERS_POSTGRESQL_SERVICE_NAME}.${YAKS_NAMESPACE} diff --git a/test/salesforce/salesforce-to-inmem.yaml b/test/salesforce/salesforce-to-inmem.yaml index d858b6ece..022612ea2 100644 --- a/test/salesforce/salesforce-to-inmem.yaml +++ b/test/salesforce/salesforce-to-inmem.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-to-inmem @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-source properties: topicName: "${camel.kamelet.salesforce-source.salesforce-credentials.topicName}" diff --git a/test/salesforce/salesforce-to-uri.yaml b/test/salesforce/salesforce-to-uri.yaml index 86418fcd5..28d713304 100644 --- a/test/salesforce/salesforce-to-uri.yaml +++ b/test/salesforce/salesforce-to-uri.yaml @@ -1,4 +1,4 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: salesforce-to-uri @@ -6,7 +6,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: salesforce-source properties: topicName: "${camel.kamelet.salesforce-source.salesforce-credentials.topicName}" diff --git a/test/slack/slack-to-broker.yaml b/test/slack/slack-to-broker.yaml index 5b36b58ac..0fe3cb0fb 100644 --- a/test/slack/slack-to-broker.yaml +++ b/test/slack/slack-to-broker.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: slack-to-broker @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: slack-source properties: channel: ${camel.kamelet.slack-source.slack-credentials.channel} diff --git a/test/slack/slack-to-inmem.yaml b/test/slack/slack-to-inmem.yaml index 0615964dc..83109f102 100644 --- a/test/slack/slack-to-inmem.yaml +++ b/test/slack/slack-to-inmem.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: slack-to-inmem @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: slack-source properties: channel: ${camel.kamelet.slack-source.slack-credentials.channel} diff --git a/test/slack/slack-uri-binding.yaml b/test/slack/slack-uri-binding.yaml index 8df551233..101100bcb 100644 --- a/test/slack/slack-uri-binding.yaml +++ b/test/slack/slack-uri-binding.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: slack-uri-binding @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: slack-source properties: channel: ${camel.kamelet.slack-source.slack-credentials.channel} diff --git a/test/telegram/telegram-to-inmem.yaml b/test/telegram/telegram-to-inmem.yaml index ad61d058e..a83dd4298 100644 --- a/test/telegram/telegram-to-inmem.yaml +++ b/test/telegram/telegram-to-inmem.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: telegram-to-inmem @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: telegram-source properties: authorizationToken: ${camel.kamelet.telegram-source.telegram-credentials.authorizationToken} diff --git a/test/telegram/telegram-uri-binding.yaml b/test/telegram/telegram-uri-binding.yaml index abfdf6f90..13da70eb2 100644 --- a/test/telegram/telegram-uri-binding.yaml +++ b/test/telegram/telegram-uri-binding.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: telegram-uri-binding @@ -23,7 +23,7 @@ spec: source: ref: kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 + apiVersion: camel.apache.org/v1 name: telegram-source properties: authorizationToken: ${camel.kamelet.telegram-source.telegram-credentials.authorizationToken} diff --git a/test/utils/broker-to-log.yaml b/test/utils/broker-to-log.yaml index 31a6a1268..7590f05a1 100644 --- a/test/utils/broker-to-log.yaml +++ b/test/utils/broker-to-log.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: broker-to-log diff --git a/test/utils/inmem-to-log.yaml b/test/utils/inmem-to-log.yaml index 8b5dc51e7..bf6f47fa2 100644 --- a/test/utils/inmem-to-log.yaml +++ b/test/utils/inmem-to-log.yaml @@ -15,7 +15,7 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: KameletBinding metadata: name: inmem-to-log diff --git a/topic-name-matches-filter-action.kamelet.yaml b/topic-name-matches-filter-action.kamelet.yaml deleted file mode 100644 index 96da7f9e8..000000000 --- a/topic-name-matches-filter-action.kamelet.yaml +++ /dev/null @@ -1,34 +0,0 @@ -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/catalog.version: "2.2.0" - camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg==" - camel.apache.org/provider: "Red Hat" - 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" - template: - from: - uri: kamelet:source - steps: - - filter: - simple: "${header[kafka.TOPIC]} !regex '{{regex}}'" - steps: - - stop: {}