# ---------------------------------------------------------------------------
# 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: aws-secrets-manager-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "0.8.1"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNzUgNzUiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6dXJsKCNSZWRHcmFkaWVudCk7fS5jbHMtMntmaWxsOiNmZmY7fTwvc3R5bGU+PGxpbmVhckdyYWRpZW50IGlkPSJSZWRHcmFkaWVudCIgeDE9Ii0yMDQyLjU0IiB5MT0iMTk4NS40NyIgeDI9Ii0xOTM2LjQ3IiB5Mj0iMjA5MS41NCIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAwMSAtMTk1Mikgcm90YXRlKC05MCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNiZDA4MTYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZjUyNTIiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+QVdTLVNlY3JldHMtTWFuYWdlcjwvdGl0bGU+PGcgaWQ9IlJlZmVyZW5jZSI+PHJlY3QgaWQ9IlJlZF9HcmFkaWVudCIgZGF0YS1uYW1lPSJSZWQgR3JhZGllbnQiIGNsYXNzPSJjbHMtMSIgd2lkdGg9Ijc1IiBoZWlnaHQ9Ijc1Ii8+PGcgaWQ9Ikljb25fVGVzdCIgZGF0YS1uYW1lPSJJY29uIFRlc3QiPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iNTQuNTIiIHk9IjQ3LjA4IiB3aWR0aD0iMiIgaGVpZ2h0PSIxNi45MSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIzLjAxIDU1LjUzKSByb3RhdGUoLTQ1KSIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTkuMTMiIHk9IjEwLjc3IiB3aWR0aD0iMiIgaGVpZ2h0PSIxOC43NCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTguMzUgMjAuMTMpIHJvdGF0ZSgtNDUpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNS4wNSIgeT0iNTQuMDUiIHdpZHRoPSI5LjkiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMzLjA3IDMwLjI3KSByb3RhdGUoLTQ1KSIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iNTAuMDUiIHk9IjE5LjA1IiB3aWR0aD0iOS45IiBoZWlnaHQ9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuOTMgNDQuNzYpIHJvdGF0ZSgtNDUpIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjAuNDYsMzYuNTJhMjIuODcsMjIuODcsMCwwLDAtNC4zMS0xMi40NGwtMS42MiwxLjE4YTIwLjg2LDIwLjg2LDAsMCwxLDMuOTMsMTEuMjZoLTJ2MmgyYTIwLjcsMjAuNywwLDAsMS0zLjkzLDExLjMyTDU2LjE1LDUxYTIyLjcyLDIyLjcyLDAsMCwwLDQuMzEtMTIuNWgydi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTI1LjIxLDIwLjUyQTIwLjc3LDIwLjc3LDAsMCwxLDM2LjUsMTYuNTl2MS45M2gyVjE2LjU5YTIwLjc3LDIwLjc3LDAsMCwxLDExLjI5LDMuOTNMNTEsMTguOUEyMi44MSwyMi44MSwwLDAsMCwzOC41LDE0LjU5VjEyLjUyaC0ydjIuMDdBMjIuODEsMjIuODEsMCwwLDAsMjQsMTguOVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00OS43OSw1NC41OEEyMC43NywyMC43NywwLDAsMSwzOC41LDU4LjUxdi0yaC0ydjJhMjAuNzcsMjAuNzcsMCwwLDEtMTEuMjktMy45M0wyNCw1Ni4yQTIyLjgxLDIyLjgxLDAsMCwwLDM2LjUsNjAuNTF2Mmgydi0yQTIyLjgxLDIyLjgxLDAsMCwwLDUxLDU2LjJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTguODUsNTFsMS42Mi0xLjE4YTIwLjcsMjAuNywwLDAsMS0zLjkzLTExLjMyaDJ2LTJoLTJhMjAuODYsMjAuODYsMCwwLDEsMy45My0xMS4yNmwtMS42Mi0xLjE4YTIyLjg3LDIyLjg3LDAsMCwwLTQuMzEsMTIuNDRoLTJ2MmgyQTIyLjcyLDIyLjcyLDAsMCwwLDE4Ljg1LDUxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQyLjM5LDI0LjI1YTcuNSw3LjUsMCwwLDAtNC44OS0xLjczaDBjLTMuODYsMC03LDIuNzMtNyw2LjA5djQuOTFoLTJhMSwxLDAsMCwwLTEsMXYxNGExLDEsMCwwLDAsLjI5LjcxLDEsMSwwLDAsMCwuNzEuMjloMThhMSwxLDAsMCwwLDEtMXYtMTRhMSwxLDAsMCwwLS4yOS0uNywxLDEsMCwwLDAtLjcxLS4zaC0ydi00LjlBNS43MSw1LjcxLDAsMCwwLDQyLjM5LDI0LjI1Wk0zMi41LDI4LjYxYzAtMi4yNiwyLjI1LTQuMDksNS00LjA5aDBhNS41NSw1LjU1LDAsMCwxLDMuNiwxLjI1LDMuNzYsMy43NiwwLDAsMSwxLjQxLDIuODV2NC45aC0xMFptMTMsOS45MWgtM3YyaDN2MmgtM3YyaDN2M2gtMTZ2LTEyaDE2WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM2LjUsNDIuNzZ2Mi43NmgyVjQyLjc2YTIuOTMsMi45MywwLDEsMC0yLDBabTEtMy44MkExLjA4LDEuMDgsMCwxLDEsMzYuNDMsNDAsMS4wNywxLjA3LDAsMCwxLDM3LjUsMzguOTRaIi8+PC9nPjwvZz48L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Secrets Manager"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Secrets Manager Sink"
    description: |-
      Create a secret in AWS Secrets Manager.

      Access Key/Secret Key are the basic method for authenticating to the AWS Secrets Manager Service. These parameters are optional, because the Kamelet provide also the 'useDefaultCredentialsProvider'.
      
      When using a default Credentials Provider the Secrets Manager 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.

      The Kamelet expects the following headers to be set:

      - `secret-name` / `ce-secret-name`: as the secret name to create.

      If the header won't be set the exchange ID will be used as secret name.
    required:
      - region
    type: object
    properties:
      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: Set whether the Secrets Manager 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
  dependencies:
    - "camel:core"
    - "camel:aws-secrets-manager"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[secret-name]}"
            steps:
            - set-header:
                name: CamelAwsSecretsManagerSecretName
                simple: "${header[secret-name]}"
          - simple: "${header[ce-secret-name]}"
            steps:
            - set-header:
                name: CamelAwsSecretsManagerSecretName
                simple: "${header[ce-secret-name]}"
          otherwise:
            steps:
            - set-header:
                name: CamelAwsSecretsManagerSecretName
                simple: "${exchangeId}"
      - to:
          uri: "aws-secrets-manager:kamelet"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            operation: "createSecret"
