From 30de9740f62d9b52137a15e57c634a6d4f7ff2af Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Wed, 11 Mar 2026 14:28:45 +0000 Subject: [PATCH] Add kamelet definition: mongodb-sink --- kamelet.yaml | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 kamelet.yaml diff --git a/kamelet.yaml b/kamelet.yaml new file mode 100644 index 0000000..0175b9c --- /dev/null +++ b/kamelet.yaml @@ -0,0 +1,117 @@ +apiVersion: camel.apache.org/v1 +kind: Kamelet +metadata: + name: mongodb-sink + annotations: + camel.apache.org/kamelet.support.level: "Stable" + camel.apache.org/catalog.version: "4.10.2" + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+" + camel.apache.org/provider: "Apache Software Foundation" + 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 data to MongoDB. + + This Kamelet expects a JSON-formatted body. + + 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 + - database + type: object + properties: + hosts: + title: MongoDB Hosts + description: A comma-separated list of MongoDB host addresses in `host:port` format. + type: string + collection: + title: MongoDB Collection + description: The name of the MongoDB collection to bind to this endpoint. + type: string + password: + title: MongoDB Password + description: A user password for accessing MongoDB. + type: string + format: password + x-descriptors: + - urn:camel:group:credentials + username: + title: MongoDB Username + 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 + 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 + database: + title: MongoDB Database + description: The name of the MongoDB database. + type: string + writeConcern: + title: Write Concern + 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 a collection during initialization if it doesn't exist. + type: boolean + default: false + types: + in: + mediaType: application/json + dependencies: + - "camel:core" + - "camel:kamelet" + - "camel:mongodb" + - "camel:jackson" + template: + beans: + - name: local-mongodb + type: "#class:org.apache.camel.component.mongodb.MongoDbComponent" + - name: mongo-client + type: "#class:org.apache.camel.component.kamelet.utils.mongodb.SslAwareMongoClient" + properties: + password: "{{?password}}" + username: "{{?username}}" + hosts: "{{hosts}}" + ssl: "{{ssl}}" + sslValidationEnabled: "{{sslValidationEnabled}}" + from: + uri: kamelet:source + steps: + - choice: + when: + - simple: "${header[db-upsert]}" + steps: + - setHeader: + name: CamelMongoDbUpsert + simple: "${header[db-upsert]}" + - simple: "${header[ce-dbupsert]}" + steps: + - setHeader: + name: CamelMongoDbUpsert + simple: "${header[ce-dbupsert]}" + - to: + uri: "{{local-mongodb}}:test" + parameters: + createCollection: "{{?createCollection}}" + writeConcern: "{{?writeConcern}}" + collection: "{{collection}}" + database: "{{database}}" + operation: "insert" + mongoConnection: "#{{mongo-client}}"