From 945d5d209c31d6713a7a0d947ead9c559b1bca84 Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Mon, 12 Oct 2026 02:34:11 +0000 Subject: [PATCH] Add kamelet definition: ibm-cos-sink --- kamelet.json | 243 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 kamelet.json diff --git a/kamelet.json b/kamelet.json new file mode 100644 index 0000000..d1d3ac5 --- /dev/null +++ b/kamelet.json @@ -0,0 +1,243 @@ +{ + "apiVersion": "camel.apache.org/v1", + "kind": "Kamelet", + "metadata": { + "name": "ibm-cos-sink", + "annotations": { + "camel.apache.org/kamelet.support.level": "Preview", + "camel.apache.org/catalog.version": "4.22.1", + "camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUwMCIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTAgMGgyNTZ2MjU2SDB6IiBmaWxsPSIjMDUzMzYyIi8+PHBhdGggZD0iTTE4Ny43MzIgMTI1LjkxOGMtLjAzNi0xLjM1Ny0uMDktMi43MTQtLjE4LTQuMDcyLS4wMzYtLjUyMi0uMDkxLTEuMDQ1LS4xMjgtMS41NjctLjA1NC0uNjEzLS4xMDgtMS4yMjYtLjE4LTEuODM5LS4wNzItLjc3LS4xOC0xLjU0LS4yODgtMi4zMWEzOS43NjYgMzkuNzY2IDAgMCAwLS40MTYtMi4zNjRjLS4xNDQtLjc3LS4zMDYtMS41NC0uNDctMi4yOTJhNDAuODEzIDQwLjgxMyAwIDAgMC0uNjMtMi4zMS40MDkuNDA5IDAgMCAxLS4wNTUtLjEyNiA0MC40OTIgNDAuNDkyIDAgMCAwLS43MjItMi4yMThjLS4yNTItLjcwNC0uNTIyLTEuMzc1LS43OTMtMi4wNjYtLjMwNi0uNzIyLS42My0xLjQyNi0uOTczLTIuMTMtLjMyNS0uNjY3LS42ODYtMS4zMzQtMS4wNDUtMS45ODItLjM2LS42MzEtLjczOS0xLjI2My0xLjExNy0xLjg3Ni0uNDctLjc1OC0uOTU1LTEuNDk4LTEuNDc2LTIuMjE4LS4yNTItLjM2LS41MDQtLjcwNC0uNzc2LTEuMDQ1LS4yNTItLjM0My0uNTA0LS42ODYtLjc3NS0xLjAyN2E0MC43NzQgNDAuNzc0IDAgMCAwLTEuMzM0LTEuNjg0Yy0uNTA0LS42MTMtMS4wMjctMS4yMDgtMS41NjctMS43ODUtLjU5My0uNjMxLTEuMjA4LTEuMjQ0LTEuODM5LTEuODM5LS42MzEtLjYxMy0xLjI4MS0xLjE5LTEuOTQ2LTEuNzY3LS41MjItLjQ1Mi0xLjA2My0uODg2LTEuNjAzLTEuMzE2LS4yNy0uMjE2LS41NC0uNDM0LS44MTItLjY0OS0uMzQyLS4yNzEtLjY4Ni0uNTQtMS4wNDUtLjc5M2E0MC42ODYgNDAuNjg2IDAgMCAwLTIuMjkyLTEuNDk4Yy0uNjY3LS40MTUtMS4zMzQtLjgxMy0yLjAxOS0xLjE5OC0uNjg2LS4zNzktMS4zOS0uNzU4LTIuMTExLTEuMDk5LS43Mi0uMzQzLTEuNDYyLS42NjctMi4yMTgtLjk3My0uNzU4LS4zMDYtMS41My0uNTkzLTIuMzEtLjg1NGE0MS4xOTIgNDEuMTkyIDAgMCAwLTIuMzgyLS42ODVjLS43NzUtLjE5OC0xLjU2Ny0uMzc4LTIuMzY0LS41NGE0MC42MjYgNDAuNjI2IDAgMCAwLTIuMzgyLS4zOTdjLS43NzUtLjEwOC0xLjU2Ny0uMTk4LTIuMzQ3LS4yNy0uNzkzLS4wNzItMS41ODUtLjEyNi0yLjM4Mi0uMTYyLS41NC0uMDE4LTEuMDgyLS4wNzItMS42MjItLjA5MS0xLjM3NS0uMDcyLTIuNzUtLjEwOC00LjEyNS0uMTA4LTEuMzU3IDAtMi43MzIuMDM2LTQuMDg5LjEwOC0uNTQuMDE4LTEuMDgyLjA3Mi0xLjYyMi4wOTEtLjc5Ny4wMzYtMS41ODUuMDktMi4zODIuMTYyLS43NzYuMDcyLTEuNTUuMTYyLTIuMzI5LjI3LS43OTQuMTA4LTEuNTg1LjIzNC0yLjM2NC4zOTctLjc5My4xNjItMS41ODUuMzQyLTIuMzY0LjU0LS43OTMuMTk4LTEuNTg1LjQxNi0yLjM4Mi42ODUtLjc3Ni4yNTQtMS41NS41NC0yLjMxLjg1NC0uNzU3LjMwNi0xLjQ5OC42My0yLjIxOC45NzMtLjcyLjM0MS0xLjQyNS43Mi0yLjExMSAxLjA5OS0uNjg1LjM4NS0xLjM1Mi43ODMtMi4wMTkgMS4xOTgtLjY2Ny40MTUtMS4zMTYuODUtMS45NjQgMS4zMTZhNDAuNjg2IDQwLjY4NiAwIDAgMC0yLjI5MiAxLjQ5OGMtLjM2LjI1My0uNzA0LjUyMi0xLjA0NS43OTMtLjI3Mi4yMTUtLjU0Mi40MzMtLjgxMi42NDktLjU0LjQzLTEuMDgxLjg2NC0xLjYwMyAxLjMxNi0uNjY3LjU3Ny0xLjMxNiAxLjE1NC0xLjk0NiAxLjc2Ny0uNjMxLjU5NS0xLjI0NCAxLjIwOC0xLjgzOSAxLjgzOS0uNTQuNTc3LTEuMDYzIDEuMTcyLTEuNTY3IDEuNzg1YTQwLjc3NCA0MC43NzQgMCAwIDAtMS4zMzQgMS42ODRjLS4yNzEuMzQxLS41MjMuNjg0LS43NzUgMS4wMjctLjI3Mi4zNDEtLjUyNC42ODUtLjc3NiAxLjA0NS0uNTIxLjcyLTEuMDA4IDEuNDYtMS40NzYgMi4yMTgtLjM3OC42MTMtLjc1NyAxLjI0NS0xLjExNyAxLjg3Ni0uMzU5LjY0OC0uNzIgMS4zMTUtMS4wNDUgMS45ODItLjM0My43MDQtLjY2NyAxLjQwOC0uOTczIDIuMTMtLjI3MS42OTEtLjU0IDEuMzYyLS43OTMgMi4wNjZhNDAuNDkyIDQwLjQ5MiAwIDAgMC0uNzIyIDIuMjE4LjQwOS40MDkgMCAwIDEtLjA1NC4xMjZjLS4xOTguNzU4LS40MTYgMS41My0uNjMgMi4zMS0uMTYzLjc1Mi0uMzI1IDEuNTIyLS40NyAyLjI5Mi0uMTQ0Ljc5My0uMjcgMS41ODUtLjQxNiAyLjM2NC0uMTA4Ljc3LS4yMTYgMS41NC0uMjg4IDIuMzEtLjA3Mi42MTMtLjEyNiAxLjIyNi0uMTggMS44MzktLjAzNy41MjItLjA5MSAxLjA0NS0uMTI4IDEuNTY3LS4wOSAxLjM1OC0uMTQ0IDIuNzE1LS4xOCA0LjA3MmE4MS4yNDEgODEuMjQxIDAgMCAwIDAgOC4xNDRjLjAzNiAxLjM1Ny4wOSAyLjcxNC4xOCA0LjA3Mi4wMzcuNTIyLjA5MSAxLjA0NS4xMjggMS41NjcuMDU0LjYxMy4xMDggMS4yMjYuMTggMS44MzkuMDcyLjc3LjE4IDEuNTQuMjg4IDIuMzEuMTQ2Ljc3OS4yNzIgMS41NzEuNDE2IDIuMzY0LjE0NS43Ny4zMDcgMS41NC40NyAyLjI5Mi4xOTguNzc2LjQxNiAxLjU1Mi42MyAyLjMxYS40MDkuNDA5IDAgMCAxIC4wNTQuMTI2Yy4yMzQuNzU4LjQ3IDEuNDk4LjcyMiAyLjIxOC4yNTMuNzA0LjUyMiAxLjM3NS43OTMgMi4wNjYuMzA2LjcyMi42MyAxLjQyNi45NzMgMi4xMy4zMjUuNjY3LjY4NiAxLjMzNCAxLjA0NSAxLjk4Mi4zNi42MzEuNzM5IDEuMjYzIDEuMTE3IDEuODc2LjQ2OC43NTguOTU1IDEuNDk4IDEuNDc2IDIuMjE4LjI1Mi4zNi41MDQuNzA0Ljc3NiAxLjA0NS4yNTIuMzQzLjUwNC42ODYuNzc1IDEuMDI3LjQzMy41NzcuODg2IDEuMTM1IDEuMzM0IDEuNjg0LjUwNC42MTMgMS4wMjcgMS4yMDggMS41NjcgMS43ODUuNTk1LjYzMSAxLjIwOCAxLjI0NCAxLjgzOSAxLjgzOS42My42MTMgMS4yNzkgMS4xOSAxLjk0NiAxLjc2Ny41MjIuNDUyIDEuMDYzLjg4NiAxLjYwMyAxLjMxNi4yNy4yMTYuNTQuNDM0LjgxMi42NDkuMzQxLjI3MS42ODUuNTQgMS4wNDUuNzkzYTQwLjY4NiA0MC42ODYgMCAwIDAgMi4yOTIgMS40OThjLjY2Ny40MTUgMS4zMzQuODEzIDIuMDE5IDEuMTk4LjY4Ni4zNzkgMS4zOS43NTggMi4xMTEgMS4wOTkuNzIuMzQzIDEuNDYxLjY2NyAyLjIxOC45NzMuNzYuMzA2IDEuNTM0LjU5MyAyLjMxLjg1NC43NzkuMjUzIDEuNTg5LjQ4NyAyLjM4Mi42ODUuNzkzLjE5OCAxLjU3MS4zNzggMi4zNjQuNTQuNzkzLjE2MyAxLjU4OC4yODkgMi4zNjQuMzk3Ljc3OS4xMDggMS41NTMuMTk4IDIuMzI5LjI3Ljc5Ny4wNzIgMS41ODUuMTI2IDIuMzgyLjE2Mi41NC4wMTggMS4wODIuMDcyIDEuNjIyLjA5MSAxLjM1Ny4wNzIgMi43MzIuMTA4IDQuMDg5LjEwOCAxLjM3NSAwIDIuNzUtLjAzNiA0LjEyNS0uMTA4LjU0LS4wMTkgMS4wODItLjA3MyAxLjYyMi0uMDkxLjc5Ny0uMDM2IDEuNTg5LS4wOSAyLjM4Mi0uMTYyLjc4LS4wNzIgMS41NjgtLjE2MiAyLjM0Ny0uMjcuNzkzLS4xMDggMS41ODktLjIzNCAyLjM4Mi0uMzk3Ljc5My0uMTYyIDEuNTcxLS4zNDIgMi4zNjQtLjU0Ljc5My0uMTk4IDEuNjA3LS40MzIgMi4zODItLjY4NS43NzYtLjI2MSAxLjU5LS41NDggMi4zMS0uODU0Ljc1Ni0uMzA2IDEuNDk4LS42MyAyLjIxOC0uOTczLjcyLS4zNDEgMS40MjUtLjcyIDIuMTExLTEuMDk5LjY4NS0uMzg1IDEuMzUyLS43ODMgMi4wMTktMS4xOThhNDAuNjg2IDQwLjY4NiAwIDAgMCAyLjI5Mi0xLjQ5OGMuMzU5LS4yNTMuNzAzLS41MjIgMS4wNDUtLjc5My4yNzItLjIxNS41NDItLjQzMy44MTItLjY0OS41NC0uNDMgMS4wODEtLjg2NCAxLjYwMy0xLjMxNi42NjctLjU3NyAxLjMxNS0xLjE1NCAxLjk0Ni0xLjc2Ny42MzEtLjU5NSAxLjIwOC0xLjIwOCAxLjgzOS0xLjgzOS41NC0uNTc3IDEuMDYzLTEuMTcyIDEuNTY3LTEuNzg1LjQ0OC0uNTQ5LjkwMS0xLjEwNyAxLjMzNC0xLjY4NC4yNzEtLjM0MS41MjMtLjY4NC43NzUtMS4wMjcuMjcyLS4zNDEuNTI0LS42ODUuNzc2LTEuMDQ1LjUyMS0uNzIgMS4wMDgtMS40NiAxLjQ3Ni0yLjIxOC4zNzgtLjYxMy43NTctMS4yNDUgMS4xMTctMS44NzYuMzU5LS42NDguNzItMS4zMTUgMS4wNDUtMS45ODIuMzQzLS43MDQuNjY3LTEuNDI2Ljk3My0yLjEzLjI3MS0uNjkxLjU0LTEuMzYyLjc5My0yLjA2Ni4yNTItLjcyLjQ4OC0xLjQ2IDcyMi0yLjIxOGEuNDA5LjQwOSAwIDAgMSAuMDU1LS4xMjZjLjE5OC0uNzU4LjQxNi0xLjUzNC42My0yLjMxLjE2My0uNzUyLjMyNS0xLjUyMi40Ny0yLjI5Mi4xNDQtLjc5My4yNzItMS41ODUuNDE2LTIuMzY0LjEwOC0uNzcuMjE2LTEuNTQuMjg4LTIuMzEuMDcyLS42MTMuMTI2LTEuMjI2LjE4LTEuODM5LjAzNy0uNTIyLjA5Mi0xLjA0NS4xMjgtMS41NjcuMDktMS4zNTguMTQ0LTIuNzE1LjE4LTQuMDcyLjAzNy0xLjM1Ny4wNTQtMi43MTQuMDU0LTQuMDcyIDAtMS4zNTctLjAxNy0yLjcxNC0uMDU0LTQuMDcyem0tMjQuMTkxIDE3LjU4NWMtNy41MDcgMC0xMy41OTgtNi4wOTEtMTMuNTk4LTEzLjU5OCAwLTcuNTA3IDYuMDkxLTEzLjU5OCAxMy41OTgtMTMuNTk4IDcuNTA3IDAgMTMuNTk4IDYuMDkxIDEzLjU5OCAxMy41OTggMCA3LjUwNy02LjA5MSAxMy41OTgtMTMuNTk4IDEzLjU5OHptLTY2LjUwNi01NS42NjVjMC03LjUwNyA2LjA5MS0xMy41OTggMTMuNTk4LTEzLjU5OCA3LjUwNyAwIDEzLjU5OCA2LjA5MSAxMy41OTggMTMuNTk4IDAgNy41MDctNi4wOTEgMTMuNTk4LTEzLjU5OCAxMy41OTgtNy41MDcgMC0xMy41OTgtNi4wOTEtMTMuNTk4LTEzLjU5OHptMCA1NS42NjVjMC03LjUwNyA2LjA5MS0xMy41OTggMTMuNTk4LTEzLjU5OCA3LjUwNyAwIDEzLjU5OCA2LjA5MSAxMy41OTggMTMuNTk4IDAgNy41MDctNi4wOTEgMTMuNTk4LTEzLjU5OCAxMy41OTgtNy41MDcgMC0xMy41OTgtNi4wOTEtMTMuNTk4LTEzLjU5OHoiIGZpbGw9IiNGRkYiLz48L3N2Zz4=", + "camel.apache.org/provider": "Apache Software Foundation", + "camel.apache.org/kamelet.group": "IBM Cloud Object Storage", + "camel.apache.org/kamelet.namespace": "IBM" + }, + "labels": { + "camel.apache.org/kamelet.type": "sink" + } + }, + "spec": { + "definition": { + "title": "IBM Cloud Object Storage Sink", + "description": "Upload data to an IBM Cloud Object Storage Bucket.", + "required": [ + "bucketName", + "apiKey", + "serviceInstanceId", + "endpointUrl" + ], + "type": "object", + "properties": { + "bucketName": { + "title": "Bucket Name", + "description": "The IBM COS Bucket name.", + "type": "string" + }, + "apiKey": { + "title": "API Key", + "description": "IBM Cloud API Key for authentication.", + "type": "string", + "format": "password", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "serviceInstanceId": { + "title": "Service Instance ID", + "description": "IBM COS Service Instance ID (CRN).", + "type": "string", + "format": "password", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "endpointUrl": { + "title": "Endpoint URL", + "description": "IBM COS Endpoint URL (e.g., https://s3.us-south.cloud-object-storage.appdomain.cloud).", + "type": "string", + "example": "https://s3.us-south.cloud-object-storage.appdomain.cloud" + }, + "location": { + "title": "Location", + "description": "IBM COS Location/Region (e.g., us-south, eu-gb).", + "type": "string", + "example": "us-south" + }, + "autoCreateBucket": { + "title": "Autocreate Bucket", + "description": "Specifies to automatically create the IBM COS bucket.", + "type": "boolean", + "default": false + }, + "keyName": { + "title": "Key Name", + "description": "The key name for saving an element in the bucket.", + "type": "string" + }, + "multiPartUpload": { + "title": "Multi-Part Upload", + "description": "Use multi-part upload for large files.", + "type": "boolean", + "default": false + }, + "partSize": { + "title": "Part Size", + "description": "Part size for multi-part uploads (default 25MB).", + "type": "integer", + "default": 26214400 + }, + "storageClass": { + "title": "Storage Class", + "description": "The storage class to use when storing objects (e.g., STANDARD, VAULT, COLD, FLEX).", + "type": "string" + } + } + }, + "dependencies": [ + "camel:core", + "camel:ibm-cos", + "camel:kamelet" + ], + "template": { + "from": { + "uri": "kamelet:source", + "steps": [ + { + "choice": { + "precondition": true, + "when": [ + { + "simple": "${propertiesExist:!keyName}", + "steps": [ + { + "choice": { + "when": [ + { + "simple": "${header[file]}", + "steps": [ + { + "setHeader": { + "name": "CamelIbmCosKey", + "simple": "${header[file]}" + } + } + ] + }, + { + "simple": "${header[ce-file]}", + "steps": [ + { + "setHeader": { + "name": "CamelIbmCosKey", + "simple": "${header[ce-file]}" + } + } + ] + } + ], + "otherwise": { + "steps": [ + { + "setHeader": { + "name": "CamelIbmCosKey", + "simple": "${exchangeId}" + } + } + ] + } + } + } + ] + } + ] + } + }, + { + "to": { + "uri": "ibm-cos:{{bucketName}}", + "parameters": { + "apiKey": "{{apiKey}}", + "serviceInstanceId": "{{serviceInstanceId}}", + "endpointUrl": "{{endpointUrl}}", + "location": "{{?location}}", + "autoCreateBucket": "{{autoCreateBucket}}", + "keyName": "{{?keyName}}", + "multiPartUpload": "{{multiPartUpload}}", + "partSize": "{{partSize}}", + "storageClass": "{{?storageClass}}" + } + } + } + ] + } + } + }, + "propertiesSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "IBM Cloud Object Storage Sink", + "description": "Upload data to an IBM Cloud Object Storage Bucket.", + "required": [ + "bucketName", + "apiKey", + "serviceInstanceId", + "endpointUrl" + ], + "properties": { + "bucketName": { + "type": "string", + "title": "Bucket Name", + "description": "The IBM COS Bucket name." + }, + "apiKey": { + "type": "string", + "title": "API Key", + "description": "IBM Cloud API Key for authentication.", + "format": "password" + }, + "serviceInstanceId": { + "type": "string", + "title": "Service Instance ID", + "description": "IBM COS Service Instance ID (CRN).", + "format": "password" + }, + "endpointUrl": { + "type": "string", + "title": "Endpoint URL", + "description": "IBM COS Endpoint URL (e.g., https://s3.us-south.cloud-object-storage.appdomain.cloud)." + }, + "location": { + "type": "string", + "title": "Location", + "description": "IBM COS Location/Region (e.g., us-south, eu-gb)." + }, + "autoCreateBucket": { + "type": "boolean", + "title": "Autocreate Bucket", + "description": "Specifies to automatically create the IBM COS bucket.", + "default": false + }, + "keyName": { + "type": "string", + "title": "Key Name", + "description": "The key name for saving an element in the bucket." + }, + "multiPartUpload": { + "type": "boolean", + "title": "Multi-Part Upload", + "description": "Use multi-part upload for large files.", + "default": false + }, + "partSize": { + "type": "integer", + "title": "Part Size", + "description": "Part size for multi-part uploads (default 25MB).", + "default": 26214400 + }, + "storageClass": { + "type": "string", + "title": "Storage Class", + "description": "The storage class to use when storing objects (e.g., STANDARD, VAULT, COLD, FLEX)." + } + } + } +} \ No newline at end of file