From 046399b3af8cfdbab0947f02aac8074a8104f07d Mon Sep 17 00:00:00 2001 From: Claudio Miranda Date: Wed, 28 Feb 2024 10:55:18 -0300 Subject: [PATCH] CMLK-1662 Update kamelet-catalog 2.2.x to Camel K 2.2.0 (#309) based on upstream: https://github.com/apache/camel-kamelets/pull/1617 --- avro-deserialize-action.kamelet.yaml | 30 +- avro-serialize-action.kamelet.yaml | 30 +- aws-cloudwatch-sink.kamelet.yaml | 151 -- aws-ddb-sink.kamelet.yaml | 76 +- aws-ddb-streams-source.kamelet.yaml | 101 -- aws-kinesis-firehose-sink.kamelet.yaml | 69 - aws-kinesis-sink.kamelet.yaml | 47 +- aws-kinesis-source.kamelet.yaml | 65 +- aws-lambda-sink.kamelet.yaml | 28 +- aws-redshift-sink.kamelet.yaml | 56 +- aws-s3-sink.kamelet.yaml | 83 +- aws-s3-source.kamelet.yaml | 87 +- aws-s3-streaming-upload-sink.kamelet.yaml | 47 +- aws-sns-sink.kamelet.yaml | 58 +- aws-sqs-fifo-sink.kamelet.yaml | 61 +- aws-sqs-sink.kamelet.yaml | 59 +- aws-sqs-source.kamelet.yaml | 108 +- azure-servicebus-sink.kamelet.yaml | 67 - azure-servicebus-source.kamelet.yaml | 82 - azure-storage-blob-append-sink.kamelet.yaml | 96 -- azure-storage-blob-sink.kamelet.yaml | 33 +- azure-storage-blob-source.kamelet.yaml | 53 +- azure-storage-queue-sink.kamelet.yaml | 22 +- azure-storage-queue-source.kamelet.yaml | 30 +- cassandra-sink.kamelet.yaml | 55 +- cassandra-source.kamelet.yaml | 42 +- ceph-sink.kamelet.yaml | 6 +- ceph-source.kamelet.yaml | 6 +- .../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 - .../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 +- .../kamelets/kafka-manual-commit-action.svg | 59 - .../assets/images/kamelets/mysql-sink.svg | 2 +- .../images/kamelets/simple-filter-action.svg | 59 - .../images/kamelets/splunk-hec-sink.svg | 1 - .../assets/images/kamelets/splunk-sink.svg | 1 - .../assets/images/kamelets/splunk-source.svg | 1 - .../images/kamelets/throttle-action.svg | 59 - .../ROOT/kamelet-binding-sink-source.tmpl | 10 +- docs/modules/ROOT/nav.adoc | 22 +- .../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 +- .../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 +- .../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-sink.adoc | 20 +- docs/modules/ROOT/pages/kafka-source.adoc | 24 +- 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 +- .../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 | 157 -- 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/throttle-action.adoc | 158 -- docs/modules/ROOT/pages/timer-source.adoc | 16 +- .../ROOT/pages/timestamp-router-action.adoc | 14 +- .../topic-name-matches-filter-action.adoc | 12 +- .../ROOT/pages/value-to-key-action.adoc | 16 +- elasticsearch-index-sink.kamelet.yaml | 47 +- extract-field-action.kamelet.yaml | 63 +- ftp-sink.kamelet.yaml | 47 +- ftp-source.kamelet.yaml | 48 +- ftps-sink.kamelet.yaml | 93 -- ftps-source.kamelet.yaml | 92 -- has-header-filter-action.kamelet.yaml | 10 +- hoist-field-action.kamelet.yaml | 8 +- http-sink.kamelet.yaml | 13 +- insert-field-action.kamelet.yaml | 30 +- insert-header-action.kamelet.yaml | 11 +- is-tombstone-filter-action.kamelet.yaml | 6 +- jira-add-comment-sink.kamelet.yaml | 25 +- jira-add-issue-sink.kamelet.yaml | 25 +- jira-source.kamelet.yaml | 34 +- jira-transition-issue-sink.kamelet.yaml | 25 +- jira-update-issue-sink.kamelet.yaml | 25 +- jms-amqp-10-sink.kamelet.yaml | 23 +- jms-amqp-10-source.kamelet.yaml | 23 +- jms-ibm-mq-sink.kamelet.yaml | 48 +- jms-ibm-mq-source.kamelet.yaml | 48 +- jslt-action.kamelet.yaml | 6 +- json-deserialize-action.kamelet.yaml | 9 +- json-serialize-action.kamelet.yaml | 9 +- kafka-manual-commit-action.kamelet.yaml | 24 - kafka-sink.kamelet.yaml | 22 +- kafka-source.kamelet.yaml | 53 +- library/camel-kamelets-bom/pom.xml | 4 +- library/camel-kamelets-catalog/pom.xml | 51 +- .../kamelets/catalog/KameletsCatalog.java | 91 +- .../model/KameletAnnotationsNames.java | 1 + .../model/KameletPrefixSchemeEnum.java | 127 ++ .../avro-deserialize-action.kamelet.yaml | 30 +- .../avro-serialize-action.kamelet.yaml | 30 +- .../kamelets/aws-cloudwatch-sink.kamelet.yaml | 151 -- .../kamelets/aws-ddb-sink.kamelet.yaml | 76 +- .../aws-ddb-streams-source.kamelet.yaml | 101 -- .../aws-kinesis-firehose-sink.kamelet.yaml | 69 - .../kamelets/aws-kinesis-sink.kamelet.yaml | 47 +- .../kamelets/aws-kinesis-source.kamelet.yaml | 65 +- .../kamelets/aws-lambda-sink.kamelet.yaml | 28 +- .../kamelets/aws-redshift-sink.kamelet.yaml | 56 +- .../kamelets/aws-s3-sink.kamelet.yaml | 83 +- .../kamelets/aws-s3-source.kamelet.yaml | 87 +- .../aws-s3-streaming-upload-sink.kamelet.yaml | 47 +- .../kamelets/aws-sns-sink.kamelet.yaml | 58 +- .../kamelets/aws-sqs-fifo-sink.kamelet.yaml | 61 +- .../kamelets/aws-sqs-sink.kamelet.yaml | 59 +- .../kamelets/aws-sqs-source.kamelet.yaml | 108 +- .../azure-servicebus-sink.kamelet.yaml | 67 - .../azure-servicebus-source.kamelet.yaml | 82 - ...zure-storage-blob-append-sink.kamelet.yaml | 96 -- .../azure-storage-blob-sink.kamelet.yaml | 33 +- .../azure-storage-blob-source.kamelet.yaml | 53 +- .../azure-storage-queue-sink.kamelet.yaml | 22 +- .../azure-storage-queue-source.kamelet.yaml | 30 +- .../kamelets/cassandra-sink.kamelet.yaml | 55 +- .../kamelets/cassandra-source.kamelet.yaml | 42 +- .../resources/kamelets/ceph-sink.kamelet.yaml | 6 +- .../kamelets/ceph-source.kamelet.yaml | 6 +- .../elasticsearch-index-sink.kamelet.yaml | 47 +- .../extract-field-action.kamelet.yaml | 63 +- .../resources/kamelets/ftp-sink.kamelet.yaml | 47 +- .../kamelets/ftp-source.kamelet.yaml | 48 +- .../resources/kamelets/ftps-sink.kamelet.yaml | 93 -- .../kamelets/ftps-source.kamelet.yaml | 92 -- .../has-header-filter-action.kamelet.yaml | 10 +- .../kamelets/hoist-field-action.kamelet.yaml | 8 +- .../resources/kamelets/http-sink.kamelet.yaml | 13 +- .../kamelets/insert-field-action.kamelet.yaml | 30 +- .../insert-header-action.kamelet.yaml | 11 +- .../is-tombstone-filter-action.kamelet.yaml | 6 +- .../jira-add-comment-sink.kamelet.yaml | 25 +- .../kamelets/jira-add-issue-sink.kamelet.yaml | 25 +- .../kamelets/jira-source.kamelet.yaml | 34 +- .../jira-transition-issue-sink.kamelet.yaml | 25 +- .../jira-update-issue-sink.kamelet.yaml | 25 +- .../kamelets/jms-amqp-10-sink.kamelet.yaml | 23 +- .../kamelets/jms-amqp-10-source.kamelet.yaml | 23 +- .../kamelets/jms-ibm-mq-sink.kamelet.yaml | 48 +- .../kamelets/jms-ibm-mq-source.kamelet.yaml | 48 +- .../kamelets/jslt-action.kamelet.yaml | 6 +- .../json-deserialize-action.kamelet.yaml | 9 +- .../json-serialize-action.kamelet.yaml | 9 +- .../kafka-manual-commit-action.kamelet.yaml | 24 - .../kamelets/kafka-sink.kamelet.yaml | 22 +- .../kamelets/kafka-source.kamelet.yaml | 53 +- .../resources/kamelets/log-sink.kamelet.yaml | 95 +- .../kamelets/mariadb-sink.kamelet.yaml | 45 +- .../kamelets/mask-field-action.kamelet.yaml | 8 +- ...ssage-timestamp-router-action.kamelet.yaml | 8 +- .../kamelets/mongodb-sink.kamelet.yaml | 66 +- .../kamelets/mongodb-source.kamelet.yaml | 63 +- .../kamelets/mysql-sink.kamelet.yaml | 51 +- .../kamelets/postgresql-sink.kamelet.yaml | 46 +- .../predicate-filter-action.kamelet.yaml | 12 +- .../protobuf-deserialize-action.kamelet.yaml | 23 +- .../protobuf-serialize-action.kamelet.yaml | 23 +- .../kamelets/regex-router-action.kamelet.yaml | 8 +- .../replace-field-action.kamelet.yaml | 24 +- .../salesforce-create-sink.kamelet.yaml | 24 +- .../salesforce-delete-sink.kamelet.yaml | 22 +- .../kamelets/salesforce-source.kamelet.yaml | 69 +- .../salesforce-update-sink.kamelet.yaml | 59 +- .../resources/kamelets/sftp-sink.kamelet.yaml | 82 +- .../kamelets/sftp-source.kamelet.yaml | 99 +- .../simple-filter-action.kamelet.yaml | 50 - .../kamelets/slack-source.kamelet.yaml | 24 +- .../kamelets/splunk-hec-sink.kamelet.yaml | 106 -- .../kamelets/splunk-sink.kamelet.yaml | 105 -- .../kamelets/splunk-source.kamelet.yaml | 143 -- .../kamelets/sqlserver-sink.kamelet.yaml | 64 +- .../kamelets/telegram-source.kamelet.yaml | 14 +- .../kamelets/throttle-action.kamelet.yaml | 55 - .../kamelets/timer-source.kamelet.yaml | 32 +- .../timestamp-router-action.kamelet.yaml | 8 +- ...ic-name-matches-filter-action.kamelet.yaml | 8 +- .../kamelets/value-to-key-action.kamelet.yaml | 10 +- .../kamelets/catalog/KameletsCatalogTest.java | 114 +- .../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/kamelets-maven-plugin/pom.xml | 52 +- .../maven/plugin/ValidateKameletsMojo.java | 28 +- log-sink.kamelet.yaml | 95 +- mariadb-sink.kamelet.yaml | 45 +- mask-field-action.kamelet.yaml | 8 +- message-timestamp-router-action.kamelet.yaml | 8 +- mongodb-sink.kamelet.yaml | 66 +- mongodb-source.kamelet.yaml | 63 +- mysql-sink.kamelet.yaml | 51 +- pom.xml | 52 +- postgresql-sink.kamelet.yaml | 46 +- predicate-filter-action.kamelet.yaml | 12 +- protobuf-deserialize-action.kamelet.yaml | 23 +- protobuf-serialize-action.kamelet.yaml | 23 +- regex-router-action.kamelet.yaml | 8 +- replace-field-action.kamelet.yaml | 24 +- salesforce-create-sink.kamelet.yaml | 24 +- salesforce-delete-sink.kamelet.yaml | 22 +- salesforce-source.kamelet.yaml | 69 +- salesforce-update-sink.kamelet.yaml | 59 +- script/generator/generator.go | 28 +- script/generator/go.mod | 26 +- script/generator/go.sum | 210 +-- script/validator/go.mod | 110 +- script/validator/go.sum | 1376 +++-------------- script/validator/validator.go | 87 +- sftp-sink.kamelet.yaml | 82 +- sftp-source.kamelet.yaml | 99 +- simple-filter-action.kamelet.yaml | 50 - slack-source.kamelet.yaml | 24 +- splunk-hec-sink.kamelet.yaml | 106 -- splunk-sink.kamelet.yaml | 105 -- splunk-source.kamelet.yaml | 143 -- sqlserver-sink.kamelet.yaml | 64 +- telegram-source.kamelet.yaml | 14 +- .../avro-deserialize-action-binding.yaml | 12 +- .../avro-serialize-action-binding.yaml | 8 +- .../camel-k/aws-cloudwatch-sink-binding.yaml | 21 - .../camel-k/aws-ddb-sink-binding.yaml | 6 +- .../aws-ddb-streams-source-binding.yaml | 19 - .../aws-kinesis-firehose-sink-binding.yaml | 21 - .../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 +- .../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 +- .../camel-k/aws-sns-sink-binding.yaml | 8 +- .../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 +- .../azure-servicebus-sink-binding.yaml | 19 - .../azure-servicebus-source-binding.yaml | 19 - ...zure-storage-blob-append-sink-binding.yaml | 19 - .../azure-storage-blob-sink-binding.yaml | 5 +- .../azure-storage-blob-source-binding.yaml | 5 +- .../azure-storage-queue-sink-binding.yaml | 4 +- .../azure-storage-queue-source-binding.yaml | 4 +- .../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 +- .../elasticsearch-index-sink-binding.yaml | 4 +- .../camel-k/extract-field-action-binding.yaml | 6 +- .../bindings/camel-k/ftp-sink-binding.yaml | 4 +- .../bindings/camel-k/ftp-source-binding.yaml | 4 +- .../bindings/camel-k/ftps-sink-binding.yaml | 21 - .../bindings/camel-k/ftps-source-binding.yaml | 21 - .../has-header-filter-action-binding.yaml | 8 +- .../camel-k/hoist-field-action-binding.yaml | 6 +- .../bindings/camel-k/http-sink-binding.yaml | 4 +- .../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 +- .../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 +- .../camel-k/jms-ibm-mq-sink-binding.yaml | 4 +- .../camel-k/jms-ibm-mq-source-binding.yaml | 4 +- .../bindings/camel-k/jslt-action-binding.yaml | 6 +- .../json-deserialize-action-binding.yaml | 6 +- .../json-serialize-action-binding.yaml | 6 +- .../kafka-manual-commit-action-binding.yaml | 22 - .../bindings/camel-k/kafka-sink-binding.yaml | 6 +- .../camel-k/kafka-source-binding.yaml | 6 +- .../bindings/camel-k/log-sink-binding.yaml | 4 +- .../camel-k/mariadb-sink-binding.yaml | 4 +- .../camel-k/mask-field-action-binding.yaml | 6 +- ...ssage-timestamp-router-action-binding.yaml | 6 +- .../camel-k/mongodb-sink-binding.yaml | 4 +- .../camel-k/mongodb-source-binding.yaml | 6 +- .../bindings/camel-k/mysql-sink-binding.yaml | 4 +- .../camel-k/postgresql-sink-binding.yaml | 4 +- .../predicate-filter-action-binding.yaml | 6 +- .../protobuf-deserialize-action-binding.yaml | 10 +- .../protobuf-serialize-action-binding.yaml | 8 +- .../camel-k/regex-router-action-binding.yaml | 6 +- .../camel-k/replace-field-action-binding.yaml | 6 +- .../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/sftp-sink-binding.yaml | 6 +- .../bindings/camel-k/sftp-source-binding.yaml | 6 +- .../camel-k/simple-filter-action-binding.yaml | 24 - .../camel-k/slack-source-binding.yaml | 4 +- .../camel-k/splunk-hec-sink-binding.yaml | 19 - .../bindings/camel-k/splunk-sink-binding.yaml | 20 - .../camel-k/splunk-source-binding.yaml | 22 - .../camel-k/sqlserver-sink-binding.yaml | 4 +- .../camel-k/telegram-source-binding.yaml | 4 +- .../camel-k/throttle-action-binding.yaml | 24 - .../camel-k/timer-source-binding.yaml | 4 +- .../timestamp-router-action-binding.yaml | 6 +- ...ic-name-matches-filter-action-binding.yaml | 6 +- .../camel-k/value-to-key-action-binding.yaml | 6 +- .../core/aws-cloudwatch-sink-binding.yaml | 15 - .../bindings/core/aws-ddb-sink-binding.yaml | 2 +- .../core/aws-ddb-streams-source-binding.yaml | 10 - .../aws-kinesis-firehose-sink-binding.yaml | 15 - .../core/aws-kinesis-sink-binding.yaml | 4 +- .../core/aws-kinesis-source-binding.yaml | 4 +- .../core/aws-lambda-sink-binding.yaml | 4 +- .../bindings/core/aws-s3-sink-binding.yaml | 4 +- .../bindings/core/aws-s3-source-binding.yaml | 4 +- .../aws-s3-streaming-upload-sink-binding.yaml | 4 +- .../bindings/core/aws-sns-sink-binding.yaml | 4 +- .../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/azure-servicebus-sink-binding.yaml | 13 - .../core/azure-servicebus-source-binding.yaml | 10 - ...zure-storage-blob-append-sink-binding.yaml | 13 - .../core/azure-storage-blob-sink-binding.yaml | 1 - .../azure-storage-blob-source-binding.yaml | 1 - .../bindings/core/cassandra-sink-binding.yaml | 2 - .../core/cassandra-source-binding.yaml | 2 - .../bindings/core/ftps-sink-binding.yaml | 15 - .../bindings/core/ftps-source-binding.yaml | 12 - .../core/insert-header-action-binding.yaml | 2 +- .../bindings/core/jira-source-binding.yaml | 2 - .../kafka-manual-commit-action-binding.yaml | 11 - .../bindings/core/kafka-sink-binding.yaml | 2 +- .../bindings/core/kafka-source-binding.yaml | 2 +- .../bindings/core/mongodb-source-binding.yaml | 2 - .../core/salesforce-update-sink-binding.yaml | 2 - .../bindings/core/sftp-sink-binding.yaml | 2 - .../bindings/core/sftp-source-binding.yaml | 2 - .../core/simple-filter-action-binding.yaml | 13 - .../core/splunk-hec-sink-binding.yaml | 13 - .../bindings/core/splunk-sink-binding.yaml | 14 - .../bindings/core/splunk-source-binding.yaml | 13 - .../core/throttle-action-binding.yaml | 13 - 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 +- throttle-action.kamelet.yaml | 55 - timer-source.kamelet.yaml | 32 +- timestamp-router-action.kamelet.yaml | 8 +- topic-name-matches-filter-action.kamelet.yaml | 8 +- value-to-key-action.kamelet.yaml | 10 +- 499 files changed, 8859 insertions(+), 10300 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 azure-servicebus-sink.kamelet.yaml delete mode 100644 azure-servicebus-source.kamelet.yaml delete mode 100644 azure-storage-blob-append-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 delete mode 100644 docs/modules/ROOT/assets/images/kamelets/ftps-sink.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/ftps-source.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/kafka-manual-commit-action.svg delete mode 100644 docs/modules/ROOT/assets/images/kamelets/simple-filter-action.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 delete mode 100644 docs/modules/ROOT/assets/images/kamelets/throttle-action.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 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 delete mode 100644 docs/modules/ROOT/pages/simple-filter-action.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 delete mode 100644 docs/modules/ROOT/pages/throttle-action.adoc delete mode 100644 ftps-sink.kamelet.yaml delete mode 100644 ftps-source.kamelet.yaml delete mode 100644 kafka-manual-commit-action.kamelet.yaml 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/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-append-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/kafka-manual-commit-action.kamelet.yaml delete mode 100644 library/camel-kamelets-catalog/src/main/resources/kamelets/simple-filter-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/throttle-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 delete mode 100644 simple-filter-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 delete mode 100644 templates/bindings/camel-k/aws-cloudwatch-sink-binding.yaml delete mode 100644 templates/bindings/camel-k/aws-ddb-streams-source-binding.yaml delete mode 100644 templates/bindings/camel-k/aws-kinesis-firehose-sink-binding.yaml delete mode 100644 templates/bindings/camel-k/azure-servicebus-sink-binding.yaml delete mode 100644 templates/bindings/camel-k/azure-servicebus-source-binding.yaml delete mode 100644 templates/bindings/camel-k/azure-storage-blob-append-sink-binding.yaml delete mode 100644 templates/bindings/camel-k/ftps-sink-binding.yaml delete mode 100644 templates/bindings/camel-k/ftps-source-binding.yaml delete mode 100644 templates/bindings/camel-k/kafka-manual-commit-action-binding.yaml delete mode 100644 templates/bindings/camel-k/simple-filter-action-binding.yaml delete mode 100644 templates/bindings/camel-k/splunk-hec-sink-binding.yaml delete mode 100644 templates/bindings/camel-k/splunk-sink-binding.yaml delete mode 100644 templates/bindings/camel-k/splunk-source-binding.yaml delete mode 100644 templates/bindings/camel-k/throttle-action-binding.yaml delete mode 100644 templates/bindings/core/aws-cloudwatch-sink-binding.yaml delete mode 100644 templates/bindings/core/aws-ddb-streams-source-binding.yaml delete mode 100644 templates/bindings/core/aws-kinesis-firehose-sink-binding.yaml delete mode 100644 templates/bindings/core/azure-servicebus-sink-binding.yaml delete mode 100644 templates/bindings/core/azure-servicebus-source-binding.yaml delete mode 100644 templates/bindings/core/azure-storage-blob-append-sink-binding.yaml delete mode 100644 templates/bindings/core/ftps-sink-binding.yaml delete mode 100644 templates/bindings/core/ftps-source-binding.yaml delete mode 100644 templates/bindings/core/kafka-manual-commit-action-binding.yaml delete mode 100644 templates/bindings/core/simple-filter-action-binding.yaml delete mode 100644 templates/bindings/core/splunk-hec-sink-binding.yaml delete mode 100644 templates/bindings/core/splunk-sink-binding.yaml delete mode 100644 templates/bindings/core/splunk-source-binding.yaml delete mode 100644 templates/bindings/core/throttle-action-binding.yaml delete mode 100644 throttle-action.kamelet.yaml diff --git a/avro-deserialize-action.kamelet.yaml b/avro-deserialize-action.kamelet.yaml index 0ed9541c5..87715be7f 100644 --- a/avro-deserialize-action.kamelet.yaml +++ b/avro-deserialize-action.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +16,6 @@ spec: title: "Avro Deserialize Action" description: "Deserialize payload to Avro" type: object - required: - - schema properties: schema: title: Schema @@ -30,28 +30,26 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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/avro-serialize-action.kamelet.yaml index 502abbd52..a5d469aaa 100644 --- a/avro-serialize-action.kamelet.yaml +++ b/avro-serialize-action.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +16,6 @@ spec: title: "Avro Serialize Action" description: "Serialize payload to Avro" type: object - required: - - schema properties: schema: title: Schema @@ -30,29 +30,27 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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-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-sink.kamelet.yaml b/aws-ddb-sink.kamelet.yaml index 7ab4a47a5..555c22c3b 100644 --- a/aws-ddb-sink.kamelet.yaml +++ b/aws-ddb-sink.kamelet.yaml @@ -1,46 +1,37 @@ -# --------------------------------------------------------------------------- -# 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 +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: + 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": {} + } required: - table - region @@ -48,11 +39,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 +51,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 +59,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 +91,7 @@ spec: in: mediaType: application/json dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - "camel:core" - "camel:jackson" - "camel:aws2-ddb" @@ -117,11 +103,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 +112,6 @@ spec: accessKey: "{{?accessKey}}" region: "{{region}}" operation: "{{operation}}" - writeCapacity: "{{?writeCapacity}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" uriEndpointOverride: "{{?uriEndpointOverride}}" overrideEndpoint: "{{overrideEndpoint}}" 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-sink.kamelet.yaml b/aws-kinesis-sink.kamelet.yaml index 829969ee5..6f7899150 100644 --- a/aws-kinesis-sink.kamelet.yaml +++ b/aws-kinesis-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,28 @@ spec: description: |- 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 + You can also set the `sequence-number` / `ce-sequencenumber` property in the header to specify 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 +46,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 +54,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 +64,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 +122,5 @@ spec: accessKey: "{{?accessKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/aws-kinesis-source.kamelet.yaml b/aws-kinesis-source.kamelet.yaml index ca3e7a7eb..691e007d8 100644 --- a/aws-kinesis-source.kamelet.yaml +++ b/aws-kinesis-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-kinesis-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,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: @@ -14,20 +16,24 @@ spec: 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 - - 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: @@ -35,7 +41,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 +49,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). @@ -53,14 +59,39 @@ 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 + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected stream. + type: integer + default: 500 types: out: - mediaType: application/json + mediaType: application/octet-stream dependencies: - - "camel:gson" - - "camel:kamelet" - - "camel:aws2-kinesis" + - "camel:aws2-kinesis" + - "camel:kamelet" + - "camel:core" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" 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: @@ -68,8 +99,10 @@ spec: accessKey: "{{?accessKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" steps: - - marshal: - json: - library: Gson + - process: + ref: "{{duplicateHeaders}}" - to: "kamelet:sink" diff --git a/aws-lambda-sink.kamelet.yaml b/aws-lambda-sink.kamelet.yaml index 1e5b40259..a07c88e43 100644 --- a/aws-lambda-sink.kamelet.yaml +++ b/aws-lambda-sink.kamelet.yaml @@ -1,33 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +39,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 +47,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 +58,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/aws-redshift-sink.kamelet.yaml index 11e23b953..c1fe17581 100644 --- a/aws-redshift-sink.kamelet.yaml +++ b/aws-redshift-sink.kamelet.yaml @@ -1,28 +1,14 @@ -# --------------------------------------------------------------------------- -# 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 +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 +17,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 +34,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 +58,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,21 +72,17 @@ 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: diff --git a/aws-s3-sink.kamelet.yaml b/aws-s3-sink.kamelet.yaml index ccd583ee6..af177d049 100644 --- a/aws-s3-sink.kamelet.yaml +++ b/aws-s3-sink.kamelet.yaml @@ -1,35 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-s3-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: definition: title: "AWS S3 Sink" description: |- - 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. required: - bucketNameOrArn - - accessKey - - secretKey - region 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 @@ -49,12 +51,12 @@ 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. + description: Specifies to automatically create the S3 bucket. type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' @@ -66,8 +68,23 @@ 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 + keyName: + title: Key Name + description: The key name for saving an element in the bucket. + type: string dependencies: - - camel:core + - "camel:core" - "camel:aws2-s3" - "camel:kamelet" template: @@ -75,27 +92,35 @@ spec: uri: "kamelet:source" steps: - choice: + precondition: true 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}" + - 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}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" autoCreateBucket: "{{autoCreateBucket}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + keyName: "{{?keyName}}" diff --git a/aws-s3-source.kamelet.yaml b/aws-s3-source.kamelet.yaml index 0538d0e2d..558b2d41b 100644 --- a/aws-s3-source.kamelet.yaml +++ b/aws-s3-source.kamelet.yaml @@ -1,40 +1,46 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-s3-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,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 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 required: - bucketNameOrArn - - accessKey - - secretKey - region 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 deleteAfterRead: title: Auto-delete Objects - description: Delete objects after consuming them + 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 + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -42,7 +48,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: @@ -50,12 +56,24 @@ 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. + 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' @@ -67,10 +85,41 @@ 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 + 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:kamelet" - - "camel:aws2-s3" + - "camel:core" + - "camel:aws2-s3" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" + - "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: @@ -78,7 +127,15 @@ spec: secretKey: "{{?secretKey}}" accessKey: "{{?accessKey}}" region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + 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/aws-s3-streaming-upload-sink.kamelet.yaml index 537b52706..9f19ceb5c 100644 --- a/aws-s3-streaming-upload-sink.kamelet.yaml +++ b/aws-s3-streaming-upload-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +16,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 +48,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,29 +66,44 @@ 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 type: string default: "progressive" - keyName: + keyName: title: Key Name description: Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this will be the base for the progressive creation of files. type: string 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 +117,6 @@ spec: secretKey: "{{?secretKey}}" accessKey: "{{?accessKey}}" region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" autoCreateBucket: "{{autoCreateBucket}}" streamingUploadMode: "true" restartingPolicy: "{{restartingPolicy}}" @@ -106,4 +124,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/aws-sns-sink.kamelet.yaml index 3db0c4ef0..39cee1af3 100644 --- a/aws-sns-sink.kamelet.yaml +++ b/aws-sns-sink.kamelet.yaml @@ -1,33 +1,39 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +41,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,12 +49,12 @@ 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. + description: Setting the autocreation of the SNS topic. type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' @@ -60,13 +66,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 +105,5 @@ spec: secretKey: "{{?secretKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/aws-sqs-fifo-sink.kamelet.yaml b/aws-sqs-fifo-sink.kamelet.yaml index 4df0cce14..68e5eab0a 100644 --- a/aws-sqs-fifo-sink.kamelet.yaml +++ b/aws-sqs-fifo-sink.kamelet.yaml @@ -1,23 +1,28 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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 - camel.apache.org/requires.runtime: "camel-quarkus" spec: definition: title: AWS SQS FIFO Sink - description: Send message to an AWS SQS FIFO Queue + 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 - - accessKey - - secretKey - region type: object properties: @@ -27,7 +32,7 @@ spec: 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 +40,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 +48,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"] contentBasedDeduplication: title: Content-Based Deduplication description: Use content-based deduplication (should be enabled in the SQS FIFO queue first) @@ -55,18 +60,40 @@ spec: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' autoCreateQueue: title: Autocreate Queue - description: Setting the autocreation of the SQS 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: 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). + 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" @@ -109,6 +136,10 @@ spec: useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" messageGroupIdStrategy: "usePropertyValue" messageDeduplicationIdStrategy: "useContentBasedDeduplication" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" otherwise: steps: - to: @@ -121,3 +152,7 @@ spec: useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" messageGroupIdStrategy: "usePropertyValue" messageDeduplicationIdStrategy: "useExchangeId" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/aws-sqs-sink.kamelet.yaml b/aws-sqs-sink.kamelet.yaml index c160ca025..2e7a9a0c9 100644 --- a/aws-sqs-sink.kamelet.yaml +++ b/aws-sqs-sink.kamelet.yaml @@ -1,33 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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 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. required: - queueNameOrArn - - accessKey - - secretKey - region type: object properties: queueNameOrArn: title: Queue Name - description: The SQS Queue name or ARN + description: The SQS Queue name or 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 +39,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,16 +47,27 @@ 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"] autoCreateQueue: title: Autocreate Queue - description: Setting the autocreation of the SQS 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). @@ -60,10 +75,20 @@ 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:aws2-sqs" - - "camel:core" - - "camel:kamelet" + - "camel:aws2-sqs" + - "camel:kamelet" template: from: uri: kamelet:source @@ -75,4 +100,8 @@ spec: accessKey: "{{?accessKey}}" secretKey: "{{?secretKey}}" region: "{{region}}" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/aws-sqs-source.kamelet.yaml b/aws-sqs-source.kamelet.yaml index 151e7a283..80145c764 100644 --- a/aws-sqs-source.kamelet.yaml +++ b/aws-sqs-source.kamelet.yaml @@ -1,12 +1,15 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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: @@ -14,16 +17,20 @@ spec: 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 - - accessKey - - secretKey - region type: object properties: queueNameOrArn: title: Queue Name - description: The SQS Queue name or ARN + description: The SQS Queue Name or ARN type: string deleteAfterRead: title: Auto-delete Messages @@ -34,32 +41,57 @@ spec: default: true accessKey: title: Access Key - description: The access key obtained from AWS + 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 + 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 connect to + description: The AWS region to access. type: string - example: eu-west-1 + 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. + 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). @@ -67,15 +99,43 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false - types: - out: - mediaType: application/json + 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:aws2-sqs" - - "camel:core" - - "camel:kamelet" - - "camel:jackson" + - "camel:core" + - "camel:aws2-sqs" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" + - "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: @@ -83,9 +143,15 @@ spec: secretKey: "{{?secretKey}}" accessKey: "{{?accessKey}}" region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" deleteAfterRead: "{{deleteAfterRead}}" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" + greedy: "{{greedy}}" steps: - - marshal: - json: {} + - process: + ref: "{{renameHeaders}}" - 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-append-sink.kamelet.yaml b/azure-storage-blob-append-sink.kamelet.yaml deleted file mode 100644 index f4ef2479f..000000000 --- a/azure-storage-blob-append-sink.kamelet.yaml +++ /dev/null @@ -1,96 +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-storage-blob-append-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 Append Sink" - description: |- - 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. - required: - - accountName - - containerName - 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. - 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. - type: string - enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] - 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: "commitAppendBlob" - blobType: "appendBlob" - credentialType: "{{credentialType}}" diff --git a/azure-storage-blob-sink.kamelet.yaml b/azure-storage-blob-sink.kamelet.yaml index 587dd9065..98b4a6e28 100644 --- a/azure-storage-blob-sink.kamelet.yaml +++ b/azure-storage-blob-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: 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: @@ -15,45 +17,38 @@ spec: 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. + 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: - 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 - 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 + description: Determines the credential strategy to adopt. type: string - default: SHARED_ACCOUNT_KEY + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + default: "SHARED_ACCOUNT_KEY" dependencies: - - camel:core + - "camel:core" - "camel:azure-storage-blob" - "camel:kamelet" template: @@ -80,6 +75,6 @@ spec: - to: uri: "azure-storage-blob://{{accountName}}/{{containerName}}" parameters: - accessKey: "{{accessKey}}" - operation: "{{operation}}" + accessKey: "{{?accessKey}}" + operation: "uploadBlockBlob" credentialType: "{{credentialType}}" diff --git a/azure-storage-blob-source.kamelet.yaml b/azure-storage-blob-source.kamelet.yaml index f53aaa417..c5731dd70 100644 --- a/azure-storage-blob-source.kamelet.yaml +++ b/azure-storage-blob-source.kamelet.yaml @@ -1,72 +1,89 @@ -apiVersion: camel.apache.org/v1alpha1 +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. type: integer default: 500 deleteAfterRead: - title: Auto-delete Blob + title: Auto-delete Blob description: Specifies to delete blobs after consuming them type: boolean 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" 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 +94,6 @@ spec: uri: "azure-storage-blob:{{accountName}}/{{containerName}}" parameters: operation: "deleteBlob" - accessKey: "{{accessKey}}" + accessKey: "{{?accessKey}}" credentialType: "{{credentialType}}" diff --git a/azure-storage-queue-sink.kamelet.yaml b/azure-storage-queue-sink.kamelet.yaml index f2ea7179d..546a3e2e8 100644 --- a/azure-storage-queue-sink.kamelet.yaml +++ b/azure-storage-queue-sink.kamelet.yaml @@ -1,27 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +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. + 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). required: - accountName - queueName @@ -32,20 +28,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/azure-storage-queue-source.kamelet.yaml index b4b1e31c5..0688ade16 100644 --- a/azure-storage-queue-source.kamelet.yaml +++ b/azure-storage-queue-source.kamelet.yaml @@ -1,19 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +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,13 +28,15 @@ 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: @@ -38,17 +44,29 @@ spec: - 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" + - "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/cassandra-sink.kamelet.yaml index d7d72354d..74c7a05f4 100644 --- a/cassandra-sink.kamelet.yaml +++ b/cassandra-sink.kamelet.yaml @@ -1,52 +1,54 @@ -apiVersion: camel.apache.org/v1alpha1 +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 + title: Keyspace + 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 +56,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 @@ -73,13 +88,15 @@ spec: uri: "kamelet:source" steps: - unmarshal: - json: + json: library: Jackson useList: true - - to: + - 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/cassandra-source.kamelet.yaml index befa15099..16252e1b9 100644 --- a/cassandra-source.kamelet.yaml +++ b/cassandra-source.kamelet.yaml @@ -1,50 +1,52 @@ -apiVersion: camel.apache.org/v1alpha1 +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 + title: Keyspace + 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 +54,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 +84,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/ceph-sink.kamelet.yaml index 1c761056d..4219a3534 100644 --- a/ceph-sink.kamelet.yaml +++ b/ceph-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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/ceph-source.kamelet.yaml index 9885e5764..f40123890 100644 --- a/ceph-source.kamelet.yaml +++ b/ceph-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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/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/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-manual-commit-action.svg b/docs/modules/ROOT/assets/images/kamelets/kafka-manual-commit-action.svg deleted file mode 100644 index fa06352da..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/kafka-manual-commit-action.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - 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/simple-filter-action.svg b/docs/modules/ROOT/assets/images/kamelets/simple-filter-action.svg deleted file mode 100644 index fa06352da..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/simple-filter-action.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - 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/throttle-action.svg b/docs/modules/ROOT/assets/images/kamelets/throttle-action.svg deleted file mode 100644 index fa06352da..000000000 --- a/docs/modules/ROOT/assets/images/kamelets/throttle-action.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - 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..ee48248aa 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,9 +13,6 @@ * 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-queue-sink.adoc[image:kamelets/azure-storage-queue-sink.svg[] Azure Storage Queue Sink] @@ -31,8 +25,6 @@ * 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,14 +36,13 @@ * 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-sink.adoc[image:kamelets/kafka-sink.svg[] Kafka Sink] * xref:ROOT:kafka-source.adoc[image:kamelets/kafka-source.svg[] Kafka Source] * xref:ROOT:log-sink.adoc[image:kamelets/log-sink.svg[] Log Sink] @@ -73,14 +64,9 @@ * xref:ROOT:salesforce-update-sink.adoc[image:kamelets/salesforce-update-sink.svg[] Salesforce Update Sink] * xref:ROOT:sftp-sink.adoc[image:kamelets/sftp-sink.svg[] SFTP Sink] * xref:ROOT:sftp-source.adoc[image:kamelets/sftp-source.svg[] SFTP Source] -* xref:ROOT: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] diff --git a/docs/modules/ROOT/pages/avro-deserialize-action.adoc b/docs/modules/ROOT/pages/avro-deserialize-action.adoc index beab9255a..63d802ec8 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..99014545e 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..2ad1c927a 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..f500e3adf 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT == 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..e8b775c93 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT +- 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..91e94b715 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT +- 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..d0c54a7a1 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT == 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-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..79656939e 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT +- 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/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..1c72cc2d2 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..9753b13d9 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..16cc2d050 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..2dd970ed4 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: +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..9749d223d 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: +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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-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..d8655398a 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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-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..bc471cbb4 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..c37f3ad10 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..a1461d5a5 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT == 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..2230d764c 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT == 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..7c9fb88be 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..5c932a252 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..9d44083ff 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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..bb8c14ac5 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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/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 deleted file mode 100644 index 5a4a3e501..000000000 --- a/docs/modules/ROOT/pages/simple-filter-action.adoc +++ /dev/null @@ -1,157 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/simple-filter-action.svg[] Simple Filter Action - -*Provided by: "Red Hat"* - -Filter based on simple expression - -== Configuration Options - -The following table summarizes the configuration options available for the `simple-filter-action` Kamelet: -[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] -|=== -| Property| Name| Description| Type| Default| Example -| *expression {empty}* *| Simple Expression| A simple expression to apply on the exchange to filter out some exchange| string| | -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `simple-filter-action` Kamelet relies upon the presence of the following dependencies: - -- camel:core -- camel:kamelet - -== Usage - -This section describes how you can use the `simple-filter-action`. - -=== Knative Action - -You can use the `simple-filter-action` Kamelet as an intermediate step in a Knative binding. - -.simple-filter-action-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: simple-filter-action-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: timer-source - properties: - message: "Hello" - steps: - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: simple-filter-action - properties: - expression: "The Simple Expression" - 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 `simple-filter-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 simple-filter-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 simple-filter-action -p "step-0.expression=The Simple Expression" channel:mychannel ----- - -This command creates the KameletBinding in the current namespace on the cluster. - -=== Kafka Action - -You can use the `simple-filter-action` Kamelet as an intermediate step in a Kafka binding. - -.simple-filter-action-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: simple-filter-action-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: timer-source - properties: - message: "Hello" - steps: - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: simple-filter-action - properties: - expression: "The Simple Expression" - 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 `simple-filter-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 simple-filter-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 simple-filter-action -p "step-0.expression=The Simple Expression" 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/simple-filter-action.kamelet.yaml - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT 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/throttle-action.adoc b/docs/modules/ROOT/pages/throttle-action.adoc deleted file mode 100644 index 3be740086..000000000 --- a/docs/modules/ROOT/pages/throttle-action.adoc +++ /dev/null @@ -1,158 +0,0 @@ -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT - -= image:kamelets/throttle-action.svg[] Throttle Action - -*Provided by: "Red Hat"* - -The Throttle action allows you to ensure that a specific sink does not get overloaded. - -== Configuration Options - -The following table summarizes the configuration options available for the `throttle-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"`| -|=== - -NOTE: Fields marked with an asterisk ({empty}*) are mandatory. - - -== Dependencies - -At runtime, the `throttle-action` Kamelet relies upon the presence of the following dependencies: - -- camel:core -- camel:kamelet - -== Usage - -This section describes how you can use the `throttle-action`. - -=== Knative Action - -You can use the `throttle-action` Kamelet as an intermediate step in a Knative binding. - -.throttle-action-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: throttle-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: throttle-action - properties: - messages: 10 - 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 `throttle-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 ----- - -==== *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 throttle-action -p step-0.messages=10 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. - -.throttle-action-binding.yaml -[source,yaml] ----- -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: throttle-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: throttle-action - properties: - messages: 10 - 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 `throttle-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 ----- - -==== *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 throttle-action -p step-0.messages=10 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 - -// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT 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..070ef6709 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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/value-to-key-action.adoc b/docs/modules/ROOT/pages/value-to-key-action.adoc index f7ef66134..001c5d4f3 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 +- github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - 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/elasticsearch-index-sink.kamelet.yaml b/elasticsearch-index-sink.kamelet.yaml index 8754cecc3..6909ef71d 100644 --- a/elasticsearch-index-sink.kamelet.yaml +++ b/elasticsearch-index-sink.kamelet.yaml @@ -1,29 +1,33 @@ -apiVersion: camel.apache.org/v1alpha1 +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. - 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. required: - clusterName - hostAddresses @@ -31,13 +35,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 +49,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 +119,8 @@ spec: - set-header: name: "indexName" simple: "${header[ce-indexname]}" + - unmarshal: + json: {} - to: uri: "{{local-es}}:{{clusterName}}" parameters: @@ -118,5 +128,4 @@ spec: hostAddresses: "{{hostAddresses}}" enableSSL: "{{enableSSL}}" indexName: "{{?indexName}}" - - marshal: - json: { } + certificatePath: "base64:{{?certificate}}" diff --git a/extract-field-action.kamelet.yaml b/extract-field-action.kamelet.yaml index 31835b4d6..9ab20eb3b 100644 --- a/extract-field-action.kamelet.yaml +++ b/extract-field-action.kamelet.yaml @@ -1,25 +1,60 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +64,20 @@ spec: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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 +92,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/ftp-sink.kamelet.yaml index b43ae0f7d..91a883438 100644 --- a/ftp-sink.kamelet.yaml +++ b/ftp-sink.kamelet.yaml @@ -1,25 +1,25 @@ -apiVersion: camel.apache.org/v1alpha1 +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. - 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 @@ -30,20 +30,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 +53,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 +108,5 @@ spec: password: "{{password}}" passiveMode: "{{passiveMode}}" fileExist: "{{fileExist}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" diff --git a/ftp-source.kamelet.yaml b/ftp-source.kamelet.yaml index 0ee56dd38..2ebe522ee 100644 --- a/ftp-source.kamelet.yaml +++ b/ftp-source.kamelet.yaml @@ -1,19 +1,21 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +26,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 +53,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 +105,9 @@ spec: passiveMode: "{{passiveMode}}" recursive: "{{recursive}}" idempotent: "{{idempotent}}" + binary: "{{binary}}" + autoCreate: "{{autoCreate}}" + delete: "{{delete}}" steps: - set-header: name: file 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/has-header-filter-action.kamelet.yaml b/has-header-filter-action.kamelet.yaml index 7499f6a10..bd19176ea 100644 --- a/has-header-filter-action.kamelet.yaml +++ b/has-header-filter-action.kamelet.yaml @@ -1,24 +1,26 @@ -apiVersion: camel.apache.org/v1alpha1 +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/hoist-field-action.kamelet.yaml index 36a854728..a3518b841 100644 --- a/hoist-field-action.kamelet.yaml +++ b/hoist-field-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +24,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - "camel:core" - "camel:jackson" - "camel:kamelet" diff --git a/http-sink.kamelet.yaml b/http-sink.kamelet.yaml index 75caacfd4..5a14e2b90 100644 --- a/http-sink.kamelet.yaml +++ b/http-sink.kamelet.yaml @@ -1,33 +1,36 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: http-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,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: Forwards an event to a HTTP endpoint + description: Forward data to a HTTP or HTTPS endpoint. required: - url type: object properties: url: title: URL - description: The URL to send data to + 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 + description: The HTTP method to use. type: string default: POST + enum: ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE", "PATCH"] dependencies: - "camel:http" - "camel:kamelet" diff --git a/insert-field-action.kamelet.yaml b/insert-field-action.kamelet.yaml index 842c56b5f..996b61fe7 100644 --- a/insert-field-action.kamelet.yaml +++ b/insert-field-action.kamelet.yaml @@ -1,18 +1,25 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +34,17 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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 +59,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/insert-header-action.kamelet.yaml b/insert-header-action.kamelet.yaml index 8a66ec97f..3f6b9ff83 100644 --- a/insert-header-action.kamelet.yaml +++ b/insert-header-action.kamelet.yaml @@ -1,18 +1,20 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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: "Insert Header Action" - description: "Adds an header with a constant value to the message in transit" + description: "Adds an header with a simple language parsed expression to the message in transit" required: - name - value @@ -21,9 +23,10 @@ spec: 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 + description: The value of the header to be added type: string type: object dependencies: diff --git a/is-tombstone-filter-action.kamelet.yaml b/is-tombstone-filter-action.kamelet.yaml index 15eb800ae..5148297dc 100644 --- a/is-tombstone-filter-action.kamelet.yaml +++ b/is-tombstone-filter-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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" diff --git a/jira-add-comment-sink.kamelet.yaml b/jira-add-comment-sink.kamelet.yaml index 4452b2d06..6a0e72aaf 100644 --- a/jira-add-comment-sink.kamelet.yaml +++ b/jira-add-comment-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +23,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 +42,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 +62,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 +78,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/jira-add-issue-sink.kamelet.yaml index bdf1ae670..c6a49c43e 100644 --- a/jira-add-issue-sink.kamelet.yaml +++ b/jira-add-issue-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +35,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 +54,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 +74,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 +132,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/jira-source.kamelet.yaml index 744730e99..c4e976067 100644 --- a/jira-source.kamelet.yaml +++ b/jira-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +16,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 +59,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/jira-transition-issue-sink.kamelet.yaml index 28ea620e3..b887f2365 100644 --- a/jira-transition-issue-sink.kamelet.yaml +++ b/jira-transition-issue-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +25,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 +44,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 +64,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 +87,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/jira-update-issue-sink.kamelet.yaml index 2b1fb36eb..f28ebaafd 100644 --- a/jira-update-issue-sink.kamelet.yaml +++ b/jira-update-issue-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +35,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 +54,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 +74,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 +132,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/jms-amqp-10-sink.kamelet.yaml index 3b3b0ffd9..43a1676da 100644 --- a/jms-amqp-10-sink.kamelet.yaml +++ b/jms-amqp-10-sink.kamelet.yaml @@ -1,19 +1,21 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +23,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/jms-amqp-10-source.kamelet.yaml index 284448286..82b137cfe 100644 --- a/jms-amqp-10-source.kamelet.yaml +++ b/jms-amqp-10-source.kamelet.yaml @@ -1,19 +1,21 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +23,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/jms-ibm-mq-sink.kamelet.yaml b/jms-ibm-mq-sink.kamelet.yaml index 899022b1f..b8f4e35a2 100644 --- a/jms-ibm-mq-sink.kamelet.yaml +++ b/jms-ibm-mq-sink.kamelet.yaml @@ -1,21 +1,27 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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" + 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 Kamelet Sink" + 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 @@ -68,31 +74,27 @@ spec: 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" - - "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}}' + 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: diff --git a/jms-ibm-mq-source.kamelet.yaml b/jms-ibm-mq-source.kamelet.yaml index cccb6e687..f4b992925 100644 --- a/jms-ibm-mq-source.kamelet.yaml +++ b/jms-ibm-mq-source.kamelet.yaml @@ -1,21 +1,27 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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" + 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 Kamelet Source" + 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 @@ -68,31 +74,27 @@ spec: 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" - - "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}}' + 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: diff --git a/jslt-action.kamelet.yaml b/jslt-action.kamelet.yaml index 78e708d49..1155badf9 100644 --- a/jslt-action.kamelet.yaml +++ b/jslt-action.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jslt-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: diff --git a/json-deserialize-action.kamelet.yaml b/json-deserialize-action.kamelet.yaml index aef4959cc..bb85b79b1 100644 --- a/json-deserialize-action.kamelet.yaml +++ b/json-deserialize-action.kamelet.yaml @@ -1,20 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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: + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:kamelet" - "camel:core" - "camel:jackson" @@ -23,7 +26,7 @@ spec: uri: kamelet:source steps: - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - remove-header: diff --git a/json-serialize-action.kamelet.yaml b/json-serialize-action.kamelet.yaml index c529cb5ce..bf898940b 100644 --- a/json-serialize-action.kamelet.yaml +++ b/json-serialize-action.kamelet.yaml @@ -1,20 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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: + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:kamelet" - "camel:core" - "camel:jackson" @@ -23,7 +26,7 @@ spec: uri: kamelet:source steps: - marshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - set-header: 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/kafka-sink.kamelet.yaml b/kafka-sink.kamelet.yaml index af5200263..7da9c349f 100644 --- a/kafka-sink.kamelet.yaml +++ b/kafka-sink.kamelet.yaml @@ -1,24 +1,26 @@ -apiVersion: camel.apache.org/v1alpha1 +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: - `key` / `ce-key`: as message key - + - `partition-key` / `ce-partitionkey`: as message partition key Both the headers are optional. @@ -34,7 +36,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: @@ -44,13 +46,15 @@ spec: default: SASL_SSL saslMechanism: title: SASL Mechanism - description: The Simple Authentication and Security Layer (SASL) Mechanism used. + description: The Simple Authentication and Security Layer (SASL) Mechanism used. type: string default: PLAIN user: title: Username - description: Username to authenticate to Kafka + 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 +64,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 +101,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/kafka-source.kamelet.yaml index 491375660..a5fc50486 100644 --- a/kafka-source.kamelet.yaml +++ b/kafka-source.kamelet.yaml @@ -1,19 +1,24 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +30,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 +54,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 +66,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 +92,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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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-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..01f731859 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,64 +35,69 @@ Camel Kamelets Catalog - 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} + + + org.apache.camel + camel-tooling-model + ${camel.version} - commons-io - commons-io - ${commons.io.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} - - 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/avro-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml index 0ed9541c5..87715be7f 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-deserialize-action.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +16,6 @@ spec: title: "Avro Deserialize Action" description: "Deserialize payload to Avro" type: object - required: - - schema properties: schema: title: Schema @@ -30,28 +30,26 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml index 502abbd52..a5d469aaa 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/avro-serialize-action.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +16,6 @@ spec: title: "Avro Serialize Action" description: "Serialize payload to Avro" type: object - required: - - schema properties: schema: title: Schema @@ -30,29 +30,27 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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-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-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml index 7ab4a47a5..555c22c3b 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-ddb-sink.kamelet.yaml @@ -1,46 +1,37 @@ -# --------------------------------------------------------------------------- -# 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 +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: + 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": {} + } required: - table - region @@ -48,11 +39,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 +51,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 +59,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 +91,7 @@ spec: in: mediaType: application/json dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - "camel:core" - "camel:jackson" - "camel:aws2-ddb" @@ -117,11 +103,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 +112,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-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-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml index 829969ee5..6f7899150 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,28 @@ spec: description: |- 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 + You can also set the `sequence-number` / `ce-sequencenumber` property in the header to specify 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 +46,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 +54,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 +64,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 +122,5 @@ spec: accessKey: "{{?accessKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml index ca3e7a7eb..691e007d8 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-kinesis-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-kinesis-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,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: @@ -14,20 +16,24 @@ spec: 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 - - 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: @@ -35,7 +41,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 +49,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). @@ -53,14 +59,39 @@ 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 + delay: + title: Delay + description: The number of milliseconds before the next poll of the selected stream. + type: integer + default: 500 types: out: - mediaType: application/json + mediaType: application/octet-stream dependencies: - - "camel:gson" - - "camel:kamelet" - - "camel:aws2-kinesis" + - "camel:aws2-kinesis" + - "camel:kamelet" + - "camel:core" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" 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: @@ -68,8 +99,10 @@ spec: accessKey: "{{?accessKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" steps: - - marshal: - json: - library: Gson + - process: + ref: "{{duplicateHeaders}}" - to: "kamelet:sink" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml index 1e5b40259..a07c88e43 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-lambda-sink.kamelet.yaml @@ -1,33 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +39,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 +47,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 +58,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-catalog/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml index 11e23b953..c1fe17581 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-redshift-sink.kamelet.yaml @@ -1,28 +1,14 @@ -# --------------------------------------------------------------------------- -# 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 +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 +17,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 +34,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 +58,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,21 +72,17 @@ 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: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml index ccd583ee6..af177d049 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-sink.kamelet.yaml @@ -1,35 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-s3-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: definition: title: "AWS S3 Sink" description: |- - 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. required: - bucketNameOrArn - - accessKey - - secretKey - region 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 @@ -49,12 +51,12 @@ 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. + description: Specifies to automatically create the S3 bucket. type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' @@ -66,8 +68,23 @@ 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 + keyName: + title: Key Name + description: The key name for saving an element in the bucket. + type: string dependencies: - - camel:core + - "camel:core" - "camel:aws2-s3" - "camel:kamelet" template: @@ -75,27 +92,35 @@ spec: uri: "kamelet:source" steps: - choice: + precondition: true 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}" + - 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}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" autoCreateBucket: "{{autoCreateBucket}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + keyName: "{{?keyName}}" 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 index 0538d0e2d..558b2d41b 100644 --- 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 @@ -1,40 +1,46 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: aws-s3-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,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 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 required: - bucketNameOrArn - - accessKey - - secretKey - region 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 deleteAfterRead: title: Auto-delete Objects - description: Delete objects after consuming them + 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 + description: The access key obtained from AWS. type: string format: password x-descriptors: @@ -42,7 +48,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: @@ -50,12 +56,24 @@ 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. + 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' @@ -67,10 +85,41 @@ 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 + 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:kamelet" - - "camel:aws2-s3" + - "camel:core" + - "camel:aws2-s3" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" + - "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: @@ -78,7 +127,15 @@ spec: secretKey: "{{?secretKey}}" accessKey: "{{?accessKey}}" region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + 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-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml index 537b52706..9f19ceb5c 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-s3-streaming-upload-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +16,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 +48,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,29 +66,44 @@ 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 type: string default: "progressive" - keyName: + keyName: title: Key Name description: Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this will be the base for the progressive creation of files. type: string 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 +117,6 @@ spec: secretKey: "{{?secretKey}}" accessKey: "{{?accessKey}}" region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" autoCreateBucket: "{{autoCreateBucket}}" streamingUploadMode: "true" restartingPolicy: "{{restartingPolicy}}" @@ -106,4 +124,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/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml index 3db0c4ef0..39cee1af3 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/aws-sns-sink.kamelet.yaml @@ -1,33 +1,39 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +41,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,12 +49,12 @@ 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. + description: Setting the autocreation of the SNS topic. type: boolean x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' @@ -60,13 +66,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 +105,5 @@ spec: secretKey: "{{?secretKey}}" region: "{{region}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" 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 index 4df0cce14..68e5eab0a 100644 --- 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 @@ -1,23 +1,28 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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 - camel.apache.org/requires.runtime: "camel-quarkus" spec: definition: title: AWS SQS FIFO Sink - description: Send message to an AWS SQS FIFO Queue + 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 - - accessKey - - secretKey - region type: object properties: @@ -27,7 +32,7 @@ spec: 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 +40,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 +48,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"] contentBasedDeduplication: title: Content-Based Deduplication description: Use content-based deduplication (should be enabled in the SQS FIFO queue first) @@ -55,18 +60,40 @@ spec: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' autoCreateQueue: title: Autocreate Queue - description: Setting the autocreation of the SQS 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: 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). + 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" @@ -109,6 +136,10 @@ spec: useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" messageGroupIdStrategy: "usePropertyValue" messageDeduplicationIdStrategy: "useContentBasedDeduplication" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" otherwise: steps: - to: @@ -121,3 +152,7 @@ spec: useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" messageGroupIdStrategy: "usePropertyValue" messageDeduplicationIdStrategy: "useExchangeId" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" 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 index c160ca025..2e7a9a0c9 100644 --- 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 @@ -1,33 +1,37 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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 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. required: - queueNameOrArn - - accessKey - - secretKey - region type: object properties: queueNameOrArn: title: Queue Name - description: The SQS Queue name or ARN + description: The SQS Queue name or 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 +39,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,16 +47,27 @@ 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"] autoCreateQueue: title: Autocreate Queue - description: Setting the autocreation of the SQS 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). @@ -60,10 +75,20 @@ 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:aws2-sqs" - - "camel:core" - - "camel:kamelet" + - "camel:aws2-sqs" + - "camel:kamelet" template: from: uri: kamelet:source @@ -75,4 +100,8 @@ spec: accessKey: "{{?accessKey}}" secretKey: "{{?secretKey}}" region: "{{region}}" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" 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 index 151e7a283..80145c764 100644 --- 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 @@ -1,12 +1,15 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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: @@ -14,16 +17,20 @@ spec: 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 - - accessKey - - secretKey - region type: object properties: queueNameOrArn: title: Queue Name - description: The SQS Queue name or ARN + description: The SQS Queue Name or ARN type: string deleteAfterRead: title: Auto-delete Messages @@ -34,32 +41,57 @@ spec: default: true accessKey: title: Access Key - description: The access key obtained from AWS + 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 + 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 connect to + description: The AWS region to access. type: string - example: eu-west-1 + 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. + 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). @@ -67,15 +99,43 @@ spec: x-descriptors: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' default: false - types: - out: - mediaType: application/json + 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:aws2-sqs" - - "camel:core" - - "camel:kamelet" - - "camel:jackson" + - "camel:core" + - "camel:aws2-sqs" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" + - "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: @@ -83,9 +143,15 @@ spec: secretKey: "{{?secretKey}}" accessKey: "{{?accessKey}}" region: "{{region}}" - useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" deleteAfterRead: "{{deleteAfterRead}}" + amazonAWSHost: "{{?amazonAWSHost}}" + protocol: "{{?protocol}}" + useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}" + uriEndpointOverride: "{{?uriEndpointOverride}}" + overrideEndpoint: "{{overrideEndpoint}}" + delay: "{{delay}}" + greedy: "{{greedy}}" steps: - - marshal: - json: {} + - process: + ref: "{{renameHeaders}}" - 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-append-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml deleted file mode 100644 index f4ef2479f..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-append-sink.kamelet.yaml +++ /dev/null @@ -1,96 +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-storage-blob-append-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 Append Sink" - description: |- - 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. - required: - - accountName - - containerName - 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. - 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. - type: string - enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] - 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: "commitAppendBlob" - blobType: "appendBlob" - credentialType: "{{credentialType}}" 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 index 587dd9065..98b4a6e28 100644 --- 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 @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: 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: @@ -15,45 +17,38 @@ spec: 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. + 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: - 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 - 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 + description: Determines the credential strategy to adopt. type: string - default: SHARED_ACCOUNT_KEY + enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"] + default: "SHARED_ACCOUNT_KEY" dependencies: - - camel:core + - "camel:core" - "camel:azure-storage-blob" - "camel:kamelet" template: @@ -80,6 +75,6 @@ spec: - to: uri: "azure-storage-blob://{{accountName}}/{{containerName}}" parameters: - accessKey: "{{accessKey}}" - operation: "{{operation}}" + accessKey: "{{?accessKey}}" + 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-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml index f53aaa417..c5731dd70 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-blob-source.kamelet.yaml @@ -1,72 +1,89 @@ -apiVersion: camel.apache.org/v1alpha1 +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. type: integer default: 500 deleteAfterRead: - title: Auto-delete Blob + title: Auto-delete Blob description: Specifies to delete blobs after consuming them type: boolean 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" 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 +94,6 @@ spec: uri: "azure-storage-blob:{{accountName}}/{{containerName}}" parameters: operation: "deleteBlob" - accessKey: "{{accessKey}}" + accessKey: "{{?accessKey}}" credentialType: "{{credentialType}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml index f2ea7179d..546a3e2e8 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-sink.kamelet.yaml @@ -1,27 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +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. + 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). required: - accountName - queueName @@ -32,20 +28,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-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml index b4b1e31c5..0688ade16 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/azure-storage-queue-source.kamelet.yaml @@ -1,19 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +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,13 +28,15 @@ 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: @@ -38,17 +44,29 @@ spec: - 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" + - "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/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml index d7d72354d..74c7a05f4 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-sink.kamelet.yaml @@ -1,52 +1,54 @@ -apiVersion: camel.apache.org/v1alpha1 +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 + title: Keyspace + 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 +56,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 @@ -73,13 +88,15 @@ spec: uri: "kamelet:source" steps: - unmarshal: - json: + json: library: Jackson useList: true - - to: + - 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-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml index befa15099..16252e1b9 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/cassandra-source.kamelet.yaml @@ -1,50 +1,52 @@ -apiVersion: camel.apache.org/v1alpha1 +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 + title: Keyspace + 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 +54,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 +84,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/library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-sink.kamelet.yaml index 1c761056d..4219a3534 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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-catalog/src/main/resources/kamelets/ceph-source.kamelet.yaml index 9885e5764..f40123890 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/ceph-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml index 8754cecc3..6909ef71d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/elasticsearch-index-sink.kamelet.yaml @@ -1,29 +1,33 @@ -apiVersion: camel.apache.org/v1alpha1 +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. - 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. required: - clusterName - hostAddresses @@ -31,13 +35,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 +49,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 +119,8 @@ spec: - set-header: name: "indexName" simple: "${header[ce-indexname]}" + - unmarshal: + json: {} - to: uri: "{{local-es}}:{{clusterName}}" parameters: @@ -118,5 +128,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/library/camel-kamelets-catalog/src/main/resources/kamelets/extract-field-action.kamelet.yaml index 31835b4d6..9ab20eb3b 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/extract-field-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/extract-field-action.kamelet.yaml @@ -1,25 +1,60 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +64,20 @@ spec: - 'urn:alm:descriptor:com.tectonic.ui:checkbox' type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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 +92,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/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-sink.kamelet.yaml index b43ae0f7d..91a883438 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-sink.kamelet.yaml @@ -1,25 +1,25 @@ -apiVersion: camel.apache.org/v1alpha1 +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. - 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 @@ -30,20 +30,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 +53,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 +108,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-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml index 0ee56dd38..2ebe522ee 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/ftp-source.kamelet.yaml @@ -1,19 +1,21 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +26,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 +53,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 +105,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/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/has-header-filter-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml index 7499f6a10..bd19176ea 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/has-header-filter-action.kamelet.yaml @@ -1,24 +1,26 @@ -apiVersion: camel.apache.org/v1alpha1 +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/library/camel-kamelets-catalog/src/main/resources/kamelets/hoist-field-action.kamelet.yaml index 36a854728..a3518b841 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/hoist-field-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/hoist-field-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +24,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT - "camel:core" - "camel:jackson" - "camel:kamelet" 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 index 75caacfd4..5a14e2b90 100644 --- 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 @@ -1,33 +1,36 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: http-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,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: Forwards an event to a HTTP endpoint + description: Forward data to a HTTP or HTTPS endpoint. required: - url type: object properties: url: title: URL - description: The URL to send data to + 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 + description: The HTTP method to use. type: string default: POST + enum: ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE", "PATCH"] dependencies: - "camel:http" - "camel:kamelet" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-field-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-field-action.kamelet.yaml index 842c56b5f..996b61fe7 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-field-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-field-action.kamelet.yaml @@ -1,18 +1,25 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +34,17 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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 +59,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/insert-header-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-header-action.kamelet.yaml index 8a66ec97f..3f6b9ff83 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-header-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/insert-header-action.kamelet.yaml @@ -1,18 +1,20 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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: "Insert Header Action" - description: "Adds an header with a constant value to the message in transit" + description: "Adds an header with a simple language parsed expression to the message in transit" required: - name - value @@ -21,9 +23,10 @@ spec: 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 + description: The value of the header to be added type: string type: object dependencies: 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 index 15eb800ae..5148297dc 100644 --- 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 @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml index 4452b2d06..6a0e72aaf 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-comment-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +23,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 +42,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 +62,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 +78,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/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml index bdf1ae670..c6a49c43e 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-add-issue-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +35,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 +54,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 +74,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 +132,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/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml index 744730e99..c4e976067 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +16,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 +59,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-catalog/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml index 28ea620e3..b887f2365 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-transition-issue-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +25,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 +44,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 +64,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 +87,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/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml index 2b1fb36eb..f28ebaafd 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/jira-update-issue-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +35,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 +54,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 +74,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 +132,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-catalog/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml index 3b3b0ffd9..43a1676da 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-sink.kamelet.yaml @@ -1,19 +1,21 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +23,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-catalog/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml index 284448286..82b137cfe 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/jms-amqp-10-source.kamelet.yaml @@ -1,19 +1,21 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +23,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-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 index 899022b1f..b8f4e35a2 100644 --- 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 @@ -1,21 +1,27 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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" + 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 Kamelet Sink" + 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 @@ -68,31 +74,27 @@ spec: 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" - - "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}}' + 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: 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 index cccb6e687..f4b992925 100644 --- 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 @@ -1,21 +1,27 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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" + 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 Kamelet Source" + 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 @@ -68,31 +74,27 @@ spec: 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" - - "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}}' + 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: 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 index 78e708d49..1155badf9 100644 --- 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 @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: jslt-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: 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 index aef4959cc..bb85b79b1 100644 --- 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 @@ -1,20 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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: + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:kamelet" - "camel:core" - "camel:jackson" @@ -23,7 +26,7 @@ spec: uri: kamelet:source steps: - unmarshal: - json: + json: library: Jackson unmarshalType: com.fasterxml.jackson.databind.JsonNode - remove-header: 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 index c529cb5ce..bf898940b 100644 --- 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 @@ -1,20 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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: + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:kamelet" - "camel:core" - "camel:jackson" @@ -23,7 +26,7 @@ spec: uri: kamelet:source 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/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/kafka-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-sink.kamelet.yaml index af5200263..7da9c349f 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-sink.kamelet.yaml @@ -1,24 +1,26 @@ -apiVersion: camel.apache.org/v1alpha1 +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: - `key` / `ce-key`: as message key - + - `partition-key` / `ce-partitionkey`: as message partition key Both the headers are optional. @@ -34,7 +36,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: @@ -44,13 +46,15 @@ spec: default: SASL_SSL saslMechanism: title: SASL Mechanism - description: The Simple Authentication and Security Layer (SASL) Mechanism used. + description: The Simple Authentication and Security Layer (SASL) Mechanism used. type: string default: PLAIN user: title: Username - description: Username to authenticate to Kafka + 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 +64,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 +101,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-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml index 491375660..a5fc50486 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/kafka-source.kamelet.yaml @@ -1,19 +1,24 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +30,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 +54,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 +66,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 +92,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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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-catalog/src/main/resources/kamelets/log-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/log-sink.kamelet.yaml index 845249820..7b8e5c6ae 100644 --- 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 @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: log-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,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: @@ -16,6 +18,69 @@ spec: 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 @@ -23,10 +88,24 @@ spec: 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' @@ -38,7 +117,17 @@ spec: uri: "kamelet:source" steps: - to: - uri: "log:info" + 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/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml index f859c8eb1..d42c8d5e7 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mariadb-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +38,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 +62,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,21 +76,16 @@ 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: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mask-field-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mask-field-action.kamelet.yaml index cdc9d1f23..42171cc42 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mask-field-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mask-field-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +29,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:jackson" - "camel:kamelet" - "camel:core" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml index 2932a2ad4..cc5e3b170 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/message-timestamp-router-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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" @@ -37,7 +39,7 @@ spec: default: "timestamp" type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:jackson" - "camel:kamelet" - "camel:core" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-sink.kamelet.yaml index fc99e5d8a..7ab8bbe31 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-sink.kamelet.yaml @@ -1,25 +1,25 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +28,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 +82,23 @@ spec: in: mediaType: application/json dependencies: - - camel:core + - "camel:core" - "camel:kamelet" - "camel:mongodb" - "camel:jackson" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" 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: @@ -88,14 +114,12 @@ spec: - set-header: name: CamelMongoDbUpsert simple: "${header[ce-dbupsert]}" - - to: + - to: uri: "{{local-mongodb}}:test" 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-catalog/src/main/resources/kamelets/mongodb-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mongodb-source.kamelet.yaml index 3a8ea0c69..b6be59af6 100644 --- 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 @@ -1,84 +1,109 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: mongodb-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,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 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. 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. + 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: The 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. The username must be present in the MongoDB's authentication database (authenticationDatabase). By default, the MongoDB authenticationDatabase is 'admin'. + 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: Sets the name of the MongoDB database to target. + description: The name of the MongoDB database. 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. + 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: 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. + 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" 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: - hosts: "{{hosts}}" collection: "{{collection}}" - password: "{{password}}" - username: "{{username}}" database: "{{database}}" persistentTailTracking: "{{persistentTailTracking}}" tailTrackIncreasingField: "{{?tailTrackIncreasingField}}" + mongoConnection: "#{{mongo-client}}" steps: - marshal: json: {} diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml index 461202602..0e926f704 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/mysql-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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: @@ -15,11 +17,15 @@ spec: 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: + 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"}' required: @@ -32,21 +38,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 MySQL Database + description: The username to access a secured MySQL Database. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured MySQL Database + description: The password to access a secured MySQL Database. type: string format: password x-descriptors: @@ -54,12 +62,12 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the MySQL Database + 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 + description: The name of the MySQL Database. type: string types: in: @@ -68,28 +76,23 @@ spec: - "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" 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' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:mysql://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'com.mysql.cj.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/postgresql-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml index 932d56590..30d5cb62d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/postgresql-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +34,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 +58,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,28 +72,24 @@ 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: - 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/predicate-filter-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml index 67f7381bf..7a6cfd33b 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/predicate-filter-action.kamelet.yaml @@ -1,24 +1,26 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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" + 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. + 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 diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml index 3d6bedc5e..a1559349d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-deserialize-action.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: protobuf-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 +16,6 @@ spec: title: "Protobuf Deserialize Action" description: "Deserialize payload to Protobuf" type: object - required: - - schema properties: schema: title: Schema @@ -23,23 +23,24 @@ spec: 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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: - - 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 + schemaResolver: "#bean:{{schemaResolver}}" - 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 index 8320fccd6..838942780 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/protobuf-serialize-action.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: protobuf-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 +16,6 @@ spec: title: "Protobuf Serialize Action" description: "Serialize payload to Protobuf" type: object - required: - - schema properties: schema: title: Schema @@ -23,24 +23,25 @@ spec: 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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: - - 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 + schemaResolver: "#bean:{{schemaResolver}}" - 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 index 14e80b7e4..879a2b188 100644 --- 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 @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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" @@ -27,7 +29,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:kamelet" - "camel:core" template: diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/replace-field-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/replace-field-action.kamelet.yaml index 15ed7d54a..68275a8c4 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/replace-field-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/replace-field-action.kamelet.yaml @@ -1,18 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +45,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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:core" - "camel:jackson" - "camel:kamelet" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml index 6718d804d..b2229f5a0 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-create-sink.kamelet.yaml @@ -1,22 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +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. + 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" }`. required: - clientId - clientSecret @@ -26,23 +27,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 +51,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 +86,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-catalog/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml index 2db4148e4..2f3f438f2 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-delete-sink.kamelet.yaml @@ -1,22 +1,24 @@ -apiVersion: camel.apache.org/v1alpha1 +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. + 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" }` required: - clientId - clientSecret @@ -26,18 +28,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 +47,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-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml index a7cb38adf..80860ca4d 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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" spec: @@ -25,33 +27,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 +62,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 +102,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 +114,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-catalog/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml index 7ceae4adc..426cebf82 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/salesforce-update-sink.kamelet.yaml @@ -1,55 +1,51 @@ -apiVersion: camel.apache.org/v1alpha1 +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: + + `{ "payload": { "Phone": "1234567890", "Name": "Antonia" }, "sObjectId": "sObjectId", "sObjectName": "sObjectName" }` - Example of key-value pair: { "Phone": "1234567890", "Name": "Antonia" } 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 +53,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 +69,9 @@ spec: in: mediaType: application/json dependencies: + - "camel:core" + - "camel:jsonpath" + - "camel:jackson" - "camel:salesforce" - "camel:kamelet" template: @@ -88,8 +87,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/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-sink.kamelet.yaml index 8089377a0..3cc43f4b5 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +51,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 +126,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/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml index da378e27c..d5cb0a1dd 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/sftp-source.kamelet.yaml @@ -1,43 +1,45 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +47,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-catalog/src/main/resources/kamelets/simple-filter-action.kamelet.yaml deleted file mode 100644 index 808e73115..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/simple-filter-action.kamelet.yaml +++ /dev/null @@ -1,50 +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: simple-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: "Simple Filter Action" - description: "Filter based on simple expression" - required: - - expression - properties: - expression: - title: Simple Expression - description: A simple expression to apply on the exchange to filter out some exchange - type: string - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - filter: - simple: "{{expression}}" - steps: - - stop: {} diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml index bd5915c22..e9379fe1e 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/slack-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +23,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/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/sqlserver-sink.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml index ed42c3a5c..c53933793 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/sqlserver-sink.kamelet.yaml @@ -1,13 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +38,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 +62,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,28 +90,23 @@ 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: - 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/telegram-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml index 94e13065f..d4c4e0dd7 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/telegram-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +29,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/throttle-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/throttle-action.kamelet.yaml deleted file mode 100644 index b66eadb8e..000000000 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/throttle-action.kamelet.yaml +++ /dev/null @@ -1,55 +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: throttle-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: "Throttle Action" - description: "The Throttle action allows you to ensure that a specific sink does not get overloaded." - required: - - messages - 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 - type: string - default: "1000" - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - throttle: - constant: "{{messages}}" - timePeriodMillis: "{{timePeriod}}" diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml index e6dbb9ec4..6dbe6f1fc 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/timer-source.kamelet.yaml @@ -1,52 +1,38 @@ -# --------------------------------------------------------------------------- -# 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 +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/library/camel-kamelets-catalog/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml index 2e256c505..7e1712b27 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/timestamp-router-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +33,7 @@ spec: default: "kafka.TIMESTAMP" type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:kamelet" - "camel:core" template: 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 index 96da7f9e8..6b1c63cfe 100644 --- 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 @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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/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: "Kafka Topic Name Matches Filter Action" @@ -17,7 +19,7 @@ spec: - regex properties: regex: - title: Regex + title: Regex description: The Regex to Evaluate against the Kafka topic name type: string type: object diff --git a/library/camel-kamelets-catalog/src/main/resources/kamelets/value-to-key-action.kamelet.yaml b/library/camel-kamelets-catalog/src/main/resources/kamelets/value-to-key-action.kamelet.yaml index af5f49262..c44312c73 100644 --- a/library/camel-kamelets-catalog/src/main/resources/kamelets/value-to-key-action.kamelet.yaml +++ b/library/camel-kamelets-catalog/src/main/resources/kamelets/value-to-key-action.kamelet.yaml @@ -1,18 +1,20 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +24,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:core" - "camel:jackson" - "camel:kamelet" 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..be3468893 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(12, 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,59 @@ void testAllKameletFilesLoaded() throws Exception { void testAllKameletDependencies() throws Exception { catalog.getAllKameletDependencies(); } + + @Test + void testSupportedHeaders() { + verifyHeaders("aws-s3-source", 20); + verifyHeaders("aws-s3-sink", 27); + verifyHeaders("aws-redshift-source", 0); + verifyHeaders("aws-not-exists", 0); + verifyHeaders("azure-storage-blob-sink", 33); + verifyHeaders("azure-storage-blob-source", 34); + verifyHeaders("azure-storage-queue-sink", 16); + verifyHeaders("azure-storage-queue-source", 6); + verifyHeaders("cassandra-sink", 1); + verifyHeaders("cassandra-source", 1); + verifyHeaders("elasticsearch-index-sink", 10); + verifyHeaders("ftp-source", 10); + verifyHeaders("ftp-sink", 8); + verifyHeaders("http-sink", 14); + verifyHeaders("jira-add-comment-sink", 17); + verifyHeaders("jira-add-issue-sink", 17); + verifyHeaders("jira-source", 3); + verifyHeaders("jms-amqp-10-source", 14); + verifyHeaders("jms-amqp-10-sink", 17); + verifyHeaders("jms-ibm-mq-source", 14); + verifyHeaders("jms-ibm-mq-sink", 17); + verifyHeaders("kafka-source", 9); + verifyHeaders("kafka-sink", 5); + verifyHeaders("log-sink", 0); + verifyHeaders("mariadb-sink", 8); + verifyHeaders("mongodb-sink", 12); + verifyHeaders("mongodb-source", 3); + verifyHeaders("mysql-sink", 8); + verifyHeaders("postgresql-sink", 8); + verifyHeaders("salesforce-create-sink", 1); + verifyHeaders("salesforce-delete-sink", 1); + verifyHeaders("salesforce-update-sink", 1); + verifyHeaders("salesforce-source", 19); + verifyHeaders("sftp-sink", 8); + verifyHeaders("sftp-source", 10); + verifyHeaders("slack-source", 0); + verifyHeaders("sqlserver-sink", 8); + verifyHeaders("telegram-source", 5); + verifyHeaders("timer-source", 2); + } + + void verifyHeaders(String name, int expected) { + List headers = catalog.getKameletSupportedHeaders(name); + assertEquals(expected, headers.size(), "Component: " + name); + } + + @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/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 index 845249820..7b8e5c6ae 100644 --- a/log-sink.kamelet.yaml +++ b/log-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: log-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,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: @@ -16,6 +18,69 @@ spec: 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 @@ -23,10 +88,24 @@ spec: 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' @@ -38,7 +117,17 @@ spec: uri: "kamelet:source" steps: - to: - uri: "log:info" + 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/mariadb-sink.kamelet.yaml index f859c8eb1..d42c8d5e7 100644 --- a/mariadb-sink.kamelet.yaml +++ b/mariadb-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +38,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 +62,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,21 +76,16 @@ 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: diff --git a/mask-field-action.kamelet.yaml b/mask-field-action.kamelet.yaml index cdc9d1f23..42171cc42 100644 --- a/mask-field-action.kamelet.yaml +++ b/mask-field-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +29,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:jackson" - "camel:kamelet" - "camel:core" diff --git a/message-timestamp-router-action.kamelet.yaml b/message-timestamp-router-action.kamelet.yaml index 2932a2ad4..cc5e3b170 100644 --- a/message-timestamp-router-action.kamelet.yaml +++ b/message-timestamp-router-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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" @@ -37,7 +39,7 @@ spec: default: "timestamp" type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:jackson" - "camel:kamelet" - "camel:core" diff --git a/mongodb-sink.kamelet.yaml b/mongodb-sink.kamelet.yaml index fc99e5d8a..7ab8bbe31 100644 --- a/mongodb-sink.kamelet.yaml +++ b/mongodb-sink.kamelet.yaml @@ -1,25 +1,25 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +28,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 +82,23 @@ spec: in: mediaType: application/json dependencies: - - camel:core + - "camel:core" - "camel:kamelet" - "camel:mongodb" - "camel:jackson" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" 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: @@ -88,14 +114,12 @@ spec: - set-header: name: CamelMongoDbUpsert simple: "${header[ce-dbupsert]}" - - to: + - to: uri: "{{local-mongodb}}:test" parameters: createCollection: "{{?createCollection}}" writeConcern: "{{?writeConcern}}" - hosts: "{{hosts}}" collection: "{{collection}}" - password: "{{?password}}" - username: "{{?username}}" database: "{{database}}" operation: "insert" + mongoConnection: "#{{mongo-client}}" diff --git a/mongodb-source.kamelet.yaml b/mongodb-source.kamelet.yaml index 3a8ea0c69..b6be59af6 100644 --- a/mongodb-source.kamelet.yaml +++ b/mongodb-source.kamelet.yaml @@ -1,84 +1,109 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: mongodb-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,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 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. 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. + 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: The 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. The username must be present in the MongoDB's authentication database (authenticationDatabase). By default, the MongoDB authenticationDatabase is 'admin'. + 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: Sets the name of the MongoDB database to target. + description: The name of the MongoDB database. 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. + 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: 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. + 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" 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: - hosts: "{{hosts}}" collection: "{{collection}}" - password: "{{password}}" - username: "{{username}}" database: "{{database}}" persistentTailTracking: "{{persistentTailTracking}}" tailTrackIncreasingField: "{{?tailTrackIncreasingField}}" + mongoConnection: "#{{mongo-client}}" steps: - marshal: json: {} diff --git a/mysql-sink.kamelet.yaml b/mysql-sink.kamelet.yaml index 461202602..0e926f704 100644 --- a/mysql-sink.kamelet.yaml +++ b/mysql-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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/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: @@ -15,11 +17,15 @@ spec: 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: + 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"}' required: @@ -32,21 +38,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 MySQL Database + description: The username to access a secured MySQL Database. type: string + x-descriptors: + - urn:camel:group:credentials password: title: Password - description: The password to use for accessing a secured MySQL Database + description: The password to access a secured MySQL Database. type: string format: password x-descriptors: @@ -54,12 +62,12 @@ spec: - urn:camel:group:credentials query: title: Query - description: The Query to execute against the MySQL Database + 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 + description: The name of the MySQL Database. type: string types: in: @@ -68,28 +76,23 @@ spec: - "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" 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' + properties: + username: '{{username}}' + password: '{{password}}' + url: 'jdbc:mysql://{{serverName}}:{{serverPort}}/{{databaseName}}' + driverClassName: 'com.mysql.cj.jdbc.Driver' from: uri: "kamelet:source" steps: - unmarshal: - json: + json: library: Jackson - - to: + - to: uri: "sql:{{query}}" parameters: dataSource: "#bean:{{dsBean}}" diff --git a/pom.xml b/pom.xml index f6def6c47..d0768abf9 100644 --- a/pom.xml +++ b/pom.xml @@ -21,15 +21,15 @@ 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 @@ -47,30 +47,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 +255,6 @@ org.apache.maven.plugins maven-compiler-plugin - - 8 - 8 - org.codehaus.gmaven @@ -284,7 +278,7 @@ - --add-opens java.base/java.lang=ALL-UNNAMED + ${project.basedir}/script/version diff --git a/postgresql-sink.kamelet.yaml b/postgresql-sink.kamelet.yaml index 932d56590..30d5cb62d 100644 --- a/postgresql-sink.kamelet.yaml +++ b/postgresql-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +34,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 +58,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,28 +72,24 @@ 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: - unmarshal: - json: + json: library: Jackson - - to: + - to: uri: "sql:{{query}}" parameters: dataSource: "#bean:{{dsBean}}" diff --git a/predicate-filter-action.kamelet.yaml b/predicate-filter-action.kamelet.yaml index 67f7381bf..7a6cfd33b 100644 --- a/predicate-filter-action.kamelet.yaml +++ b/predicate-filter-action.kamelet.yaml @@ -1,24 +1,26 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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" + 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. + 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 diff --git a/protobuf-deserialize-action.kamelet.yaml b/protobuf-deserialize-action.kamelet.yaml index 3d6bedc5e..a1559349d 100644 --- a/protobuf-deserialize-action.kamelet.yaml +++ b/protobuf-deserialize-action.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: protobuf-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 +16,6 @@ spec: title: "Protobuf Deserialize Action" description: "Deserialize payload to Protobuf" type: object - required: - - schema properties: schema: title: Schema @@ -23,23 +23,24 @@ spec: 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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: - - 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 + schemaResolver: "#bean:{{schemaResolver}}" - remove-header: name: "Content-Type" diff --git a/protobuf-serialize-action.kamelet.yaml b/protobuf-serialize-action.kamelet.yaml index 8320fccd6..838942780 100644 --- a/protobuf-serialize-action.kamelet.yaml +++ b/protobuf-serialize-action.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 kind: Kamelet metadata: name: protobuf-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 +16,6 @@ spec: title: "Protobuf Serialize Action" description: "Serialize payload to Protobuf" type: object - required: - - schema properties: schema: title: Schema @@ -23,24 +23,25 @@ spec: 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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "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: - - 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 + schemaResolver: "#bean:{{schemaResolver}}" - set-header: name: "Content-Type" constant: "application/protobuf" diff --git a/regex-router-action.kamelet.yaml b/regex-router-action.kamelet.yaml index 14e80b7e4..879a2b188 100644 --- a/regex-router-action.kamelet.yaml +++ b/regex-router-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +apiVersion: camel.apache.org/v1 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.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" @@ -27,7 +29,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:kamelet" - "camel:core" template: diff --git a/replace-field-action.kamelet.yaml b/replace-field-action.kamelet.yaml index 15ed7d54a..68275a8c4 100644 --- a/replace-field-action.kamelet.yaml +++ b/replace-field-action.kamelet.yaml @@ -1,18 +1,31 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +45,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" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:core" - "camel:jackson" - "camel:kamelet" diff --git a/salesforce-create-sink.kamelet.yaml b/salesforce-create-sink.kamelet.yaml index 6718d804d..b2229f5a0 100644 --- a/salesforce-create-sink.kamelet.yaml +++ b/salesforce-create-sink.kamelet.yaml @@ -1,22 +1,23 @@ -apiVersion: camel.apache.org/v1alpha1 +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. + 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" }`. required: - clientId - clientSecret @@ -26,23 +27,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 +51,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 +86,4 @@ spec: uri: "{{local-salesforce}}:createSObject" parameters: sObjectName: "{{sObjectName}}" + rawPayload: "true" diff --git a/salesforce-delete-sink.kamelet.yaml b/salesforce-delete-sink.kamelet.yaml index 2db4148e4..2f3f438f2 100644 --- a/salesforce-delete-sink.kamelet.yaml +++ b/salesforce-delete-sink.kamelet.yaml @@ -1,22 +1,24 @@ -apiVersion: camel.apache.org/v1alpha1 +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. + 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" }` required: - clientId - clientSecret @@ -26,18 +28,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 +47,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/salesforce-source.kamelet.yaml index a7cb38adf..80860ca4d 100644 --- a/salesforce-source.kamelet.yaml +++ b/salesforce-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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" spec: @@ -25,33 +27,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 +62,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 +102,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 +114,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/salesforce-update-sink.kamelet.yaml index 7ceae4adc..426cebf82 100644 --- a/salesforce-update-sink.kamelet.yaml +++ b/salesforce-update-sink.kamelet.yaml @@ -1,55 +1,51 @@ -apiVersion: camel.apache.org/v1alpha1 +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: + + `{ "payload": { "Phone": "1234567890", "Name": "Antonia" }, "sObjectId": "sObjectId", "sObjectName": "sObjectName" }` - Example of key-value pair: { "Phone": "1234567890", "Name": "Antonia" } 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 +53,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 +69,9 @@ spec: in: mediaType: application/json dependencies: + - "camel:core" + - "camel:jsonpath" + - "camel:jackson" - "camel:salesforce" - "camel:kamelet" template: @@ -88,8 +87,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/script/generator/generator.go b/script/generator/generator.go index de0d4d600..3f77ef737 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" @@ -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/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..ccb07db94 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 != "../../azure-storage-blob-source.kamelet.yaml" && k.FileName != "../../aws-s3-cdc-source.kamelet.yaml" && + k.FileName != "../../set-kafka-key-action.kamelet.yaml" && k.FileName != "../../azure-storage-blob-cdc-source.kamelet.yaml" && + k.FileName != "../../google-storage-cdc-source.kamelet.yaml" && k.FileName != "../../elasticsearch-search-source.kamelet.yaml" && + k.FileName != "../../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/sftp-sink.kamelet.yaml b/sftp-sink.kamelet.yaml index 8089377a0..3cc43f4b5 100644 --- a/sftp-sink.kamelet.yaml +++ b/sftp-sink.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +51,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 +126,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/sftp-source.kamelet.yaml index da378e27c..d5cb0a1dd 100644 --- a/sftp-source.kamelet.yaml +++ b/sftp-source.kamelet.yaml @@ -1,43 +1,45 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +47,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/simple-filter-action.kamelet.yaml deleted file mode 100644 index 808e73115..000000000 --- a/simple-filter-action.kamelet.yaml +++ /dev/null @@ -1,50 +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: simple-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: "Simple Filter Action" - description: "Filter based on simple expression" - required: - - expression - properties: - expression: - title: Simple Expression - description: A simple expression to apply on the exchange to filter out some exchange - type: string - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - filter: - simple: "{{expression}}" - steps: - - stop: {} diff --git a/slack-source.kamelet.yaml b/slack-source.kamelet.yaml index bd5915c22..e9379fe1e 100644 --- a/slack-source.kamelet.yaml +++ b/slack-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +23,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/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/sqlserver-sink.kamelet.yaml b/sqlserver-sink.kamelet.yaml index ed42c3a5c..c53933793 100644 --- a/sqlserver-sink.kamelet.yaml +++ b/sqlserver-sink.kamelet.yaml @@ -1,13 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +38,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 +62,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,28 +90,23 @@ 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: - unmarshal: - json: + json: library: Jackson - - to: + - to: uri: "sql:{{query}}" parameters: dataSource: "#bean:{{dsBean}}" diff --git a/telegram-source.kamelet.yaml b/telegram-source.kamelet.yaml index 94e13065f..d4c4e0dd7 100644 --- a/telegram-source.kamelet.yaml +++ b/telegram-source.kamelet.yaml @@ -1,12 +1,14 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +17,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 +29,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/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-cloudwatch-sink-binding.yaml b/templates/bindings/camel-k/aws-cloudwatch-sink-binding.yaml deleted file mode 100644 index 3506d9c9b..000000000 --- a/templates/bindings/camel-k/aws-cloudwatch-sink-binding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -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" - \ 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 deleted file mode 100644 index c4aa90fe6..000000000 --- a/templates/bindings/camel-k/aws-ddb-streams-source-binding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -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 - \ 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 deleted file mode 100644 index fbdf90ea6..000000000 --- a/templates/bindings/camel-k/aws-kinesis-firehose-sink-binding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -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" - \ 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-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-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-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/azure-servicebus-sink-binding.yaml b/templates/bindings/camel-k/azure-servicebus-sink-binding.yaml deleted file mode 100644 index b687fcb92..000000000 --- a/templates/bindings/camel-k/azure-servicebus-sink-binding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -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" - \ No newline at end of file diff --git a/templates/bindings/camel-k/azure-servicebus-source-binding.yaml b/templates/bindings/camel-k/azure-servicebus-source-binding.yaml deleted file mode 100644 index 3058497af..000000000 --- a/templates/bindings/camel-k/azure-servicebus-source-binding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -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 - \ No newline at end of file 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 deleted file mode 100644 index 68b199e18..000000000 --- a/templates/bindings/camel-k/azure-storage-blob-append-sink-binding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -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" - \ 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-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/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/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/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/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 deleted file mode 100644 index 3708d27ca..000000000 --- a/templates/bindings/camel-k/ftps-sink-binding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -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" - \ No newline at end of file diff --git a/templates/bindings/camel-k/ftps-source-binding.yaml b/templates/bindings/camel-k/ftps-source-binding.yaml deleted file mode 100644 index e2e9d9296..000000000 --- a/templates/bindings/camel-k/ftps-source-binding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -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 - \ 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/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-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/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-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-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/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-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/kafka-manual-commit-action-binding.yaml b/templates/bindings/camel-k/kafka-manual-commit-action-binding.yaml deleted file mode 100644 index 0a1265c3d..000000000 --- a/templates/bindings/camel-k/kafka-manual-commit-action-binding.yaml +++ /dev/null @@ -1,22 +0,0 @@ -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 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/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/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/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/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/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/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/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/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/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/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 deleted file mode 100644 index cff0cbffd..000000000 --- a/templates/bindings/camel-k/simple-filter-action-binding.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: simple-filter-action-binding -spec: - source: - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: timer-source - properties: - message: "Hello" - steps: - - ref: - kind: Kamelet - apiVersion: camel.apache.org/v1alpha1 - name: simple-filter-action - properties: - expression: "The Simple Expression" - sink: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic 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 deleted file mode 100644 index 1af61c8c8..000000000 --- a/templates/bindings/camel-k/splunk-hec-sink-binding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -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" - \ No newline at end of file diff --git a/templates/bindings/camel-k/splunk-sink-binding.yaml b/templates/bindings/camel-k/splunk-sink-binding.yaml deleted file mode 100644 index 6d4a9f434..000000000 --- a/templates/bindings/camel-k/splunk-sink-binding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -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" - \ No newline at end of file diff --git a/templates/bindings/camel-k/splunk-source-binding.yaml b/templates/bindings/camel-k/splunk-source-binding.yaml deleted file mode 100644 index 36ba5cb0c..000000000 --- a/templates/bindings/camel-k/splunk-source-binding.yaml +++ /dev/null @@ -1,22 +0,0 @@ -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 - \ No newline at end of file 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/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 deleted file mode 100644 index d1d704db2..000000000 --- a/templates/bindings/camel-k/throttle-action-binding.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: camel.apache.org/v1alpha1 -kind: KameletBinding -metadata: - name: throttle-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: throttle-action - properties: - messages: 10 - sink: - ref: - kind: KafkaTopic - apiVersion: kafka.strimzi.io/v1beta1 - name: my-topic 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/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/core/aws-cloudwatch-sink-binding.yaml b/templates/bindings/core/aws-cloudwatch-sink-binding.yaml deleted file mode 100644 index 61182e5c7..000000000 --- a/templates/bindings/core/aws-cloudwatch-sink-binding.yaml +++ /dev/null @@ -1,15 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "Hello Camel JBang" - steps: - - 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" - \ 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 deleted file mode 100644 index 3a40921c6..000000000 --- a/templates/bindings/core/aws-ddb-streams-source-binding.yaml +++ /dev/null @@ -1,10 +0,0 @@ -- route: - from: - uri: "kamelet:aws-ddb-streams-source" - parameters: - region: "eu-west-1" - table: "The Table" - steps: - - to: - uri: "log:info" - \ 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 deleted file mode 100644 index 30d8e9417..000000000 --- a/templates/bindings/core/aws-kinesis-firehose-sink-binding.yaml +++ /dev/null @@ -1,15 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "Hello Camel JBang" - steps: - - to: - uri: "kamelet:aws-kinesis-firehose-sink" - parameters: - accessKey: "The Access Key" - region: "eu-west-1" - secretKey: "The Secret Key" - 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-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-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-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/azure-servicebus-sink-binding.yaml b/templates/bindings/core/azure-servicebus-sink-binding.yaml deleted file mode 100644 index 5cca7644e..000000000 --- a/templates/bindings/core/azure-servicebus-sink-binding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "Hello Camel JBang" - steps: - - to: - uri: "kamelet:azure-servicebus-sink" - parameters: - connectionString: "The Connection String" - topicOrQueueName: "The Topic Or Queue Name" - \ No newline at end of file diff --git a/templates/bindings/core/azure-servicebus-source-binding.yaml b/templates/bindings/core/azure-servicebus-source-binding.yaml deleted file mode 100644 index a8c0f074b..000000000 --- a/templates/bindings/core/azure-servicebus-source-binding.yaml +++ /dev/null @@ -1,10 +0,0 @@ -- route: - from: - uri: "kamelet:azure-servicebus-source" - parameters: - connectionString: "The Connection String" - 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-append-sink-binding.yaml b/templates/bindings/core/azure-storage-blob-append-sink-binding.yaml deleted file mode 100644 index aff848992..000000000 --- a/templates/bindings/core/azure-storage-blob-append-sink-binding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "Hello Camel JBang" - steps: - - to: - uri: "kamelet:azure-storage-blob-append-sink" - parameters: - accountName: "The Account Name" - containerName: "The Container Name" - \ 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/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/ftps-sink-binding.yaml b/templates/bindings/core/ftps-sink-binding.yaml deleted file mode 100644 index 1630f5de4..000000000 --- a/templates/bindings/core/ftps-sink-binding.yaml +++ /dev/null @@ -1,15 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "Hello Camel JBang" - steps: - - to: - uri: "kamelet:ftps-sink" - 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/ftps-source-binding.yaml b/templates/bindings/core/ftps-source-binding.yaml deleted file mode 100644 index fe212bf20..000000000 --- a/templates/bindings/core/ftps-source-binding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -- route: - from: - uri: "kamelet:ftps-source" - parameters: - connectionHost: "The Connection Host" - directoryName: "The Directory Name" - 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-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/kafka-manual-commit-action-binding.yaml b/templates/bindings/core/kafka-manual-commit-action-binding.yaml deleted file mode 100644 index 67c09196a..000000000 --- a/templates/bindings/core/kafka-manual-commit-action-binding.yaml +++ /dev/null @@ -1,11 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "{ \"foo\": \"John\"}" - steps: - - to: - uri: "kamelet:kafka-manual-commit-action" - - to: - uri: "log:info" 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/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/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/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/simple-filter-action-binding.yaml b/templates/bindings/core/simple-filter-action-binding.yaml deleted file mode 100644 index c6be719bf..000000000 --- a/templates/bindings/core/simple-filter-action-binding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "{ \"foo\": \"John\"}" - steps: - - to: - uri: "kamelet:simple-filter-action" - parameters: - expression: "The Simple Expression" - - to: - uri: "log:info" diff --git a/templates/bindings/core/splunk-hec-sink-binding.yaml b/templates/bindings/core/splunk-hec-sink-binding.yaml deleted file mode 100644 index e01bc48ba..000000000 --- a/templates/bindings/core/splunk-hec-sink-binding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "Hello Camel JBang" - steps: - - to: - uri: "kamelet:splunk-hec-sink" - parameters: - splunkUrl: "my_server.splunkcloud.com:8088" - token: "The Token" - \ No newline at end of file diff --git a/templates/bindings/core/splunk-sink-binding.yaml b/templates/bindings/core/splunk-sink-binding.yaml deleted file mode 100644 index 6f2695e23..000000000 --- a/templates/bindings/core/splunk-sink-binding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "Hello Camel JBang" - steps: - - to: - uri: "kamelet:splunk-sink" - parameters: - password: "The Password" - serverHostname: "my_server_splunk.com" - username: "The Username" - \ No newline at end of file diff --git a/templates/bindings/core/splunk-source-binding.yaml b/templates/bindings/core/splunk-source-binding.yaml deleted file mode 100644 index cad682b1a..000000000 --- a/templates/bindings/core/splunk-source-binding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- route: - from: - uri: "kamelet:splunk-source" - parameters: - initEarliestTime: "05/17/22 08:35:46:456" - password: "The Password" - query: "The Query" - serverHostname: "my_server_splunk.com" - username: "The Username" - steps: - - to: - uri: "log:info" - \ No newline at end of file diff --git a/templates/bindings/core/throttle-action-binding.yaml b/templates/bindings/core/throttle-action-binding.yaml deleted file mode 100644 index cd4f487fe..000000000 --- a/templates/bindings/core/throttle-action-binding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- route: - from: - uri: "kamelet:timer-source" - parameters: - period: 1000 - message: "{ \"foo\": \"John\"}" - steps: - - to: - uri: "kamelet:throttle-action" - parameters: - messages: 10 - - 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/throttle-action.kamelet.yaml b/throttle-action.kamelet.yaml deleted file mode 100644 index b66eadb8e..000000000 --- a/throttle-action.kamelet.yaml +++ /dev/null @@ -1,55 +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: throttle-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: "Throttle Action" - description: "The Throttle action allows you to ensure that a specific sink does not get overloaded." - required: - - messages - 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 - type: string - default: "1000" - type: object - dependencies: - - "camel:core" - - "camel:kamelet" - template: - from: - uri: kamelet:source - steps: - - throttle: - constant: "{{messages}}" - timePeriodMillis: "{{timePeriod}}" diff --git a/timer-source.kamelet.yaml b/timer-source.kamelet.yaml index e6dbb9ec4..6dbe6f1fc 100644 --- a/timer-source.kamelet.yaml +++ b/timer-source.kamelet.yaml @@ -1,52 +1,38 @@ -# --------------------------------------------------------------------------- -# 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 +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/timestamp-router-action.kamelet.yaml index 2e256c505..7e1712b27 100644 --- a/timestamp-router-action.kamelet.yaml +++ b/timestamp-router-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +33,7 @@ spec: default: "kafka.TIMESTAMP" type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:kamelet" - "camel:core" template: diff --git a/topic-name-matches-filter-action.kamelet.yaml b/topic-name-matches-filter-action.kamelet.yaml index 96da7f9e8..6b1c63cfe 100644 --- a/topic-name-matches-filter-action.kamelet.yaml +++ b/topic-name-matches-filter-action.kamelet.yaml @@ -1,14 +1,16 @@ -apiVersion: camel.apache.org/v1alpha1 +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/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: "Kafka Topic Name Matches Filter Action" @@ -17,7 +19,7 @@ spec: - regex properties: regex: - title: Regex + title: Regex description: The Regex to Evaluate against the Kafka topic name type: string type: object diff --git a/value-to-key-action.kamelet.yaml b/value-to-key-action.kamelet.yaml index af5f49262..c44312c73 100644 --- a/value-to-key-action.kamelet.yaml +++ b/value-to-key-action.kamelet.yaml @@ -1,18 +1,20 @@ -apiVersion: camel.apache.org/v1alpha1 +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 +24,7 @@ spec: type: string type: object dependencies: - - "mvn:org.apache.camel.kamelets:camel-kamelets-utils:2.2.0" + - "github:openshift-integration.kamelet-catalog:camel-kamelets-utils:2.2.0-SNAPSHOT" - "camel:core" - "camel:jackson" - "camel:kamelet"