[ 
https://issues.apache.org/jira/browse/CAMEL-18802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17646066#comment-17646066
 ] 

Andrea Cosentino commented on CAMEL-18802:
------------------------------------------

This is a slightly modify google-storage-source kamelet, where the service 
account key is optional


{code:java}
# ---------------------------------------------------------------------------
# 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: google-storage-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "main-SNAPSHOT"
    camel.apache.org/kamelet.icon: 
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBoZWlnaHQ9IjgwMCIgd2lkdGg9IjEyMDAiIHZpZXdCb3g9Ii0xOS4yMDAxNSAtMjguNDgzIDE2Ni40MDEzIDE3MC44OTgiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTcuMDM0KSI+PGxpbmVhckdyYWRpZW50IHkyPSIxMjAuNzg5IiB4Mj0iNjQiIHkxPSI3LjAzNCIgeDE9IjY0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImEiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzQzODdmZCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzQ2ODNlYSIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD0iTTI3Ljc5IDExNS4yMTdMMS41NCA2OS43NDlhMTEuNDk5IDExLjQ5OSAwIDAxMC0xMS40OTlsMjYuMjUtNDUuNDY3YTExLjUgMTEuNSAwIDAxOS45Ni01Ljc1aDUyLjVhMTEuNSAxMS41IDAgMDE5Ljk1OSA1Ljc1bDI2LjI1IDQ1LjQ2N2ExMS40OTkgMTEuNDk5IDAgMDEwIDExLjVsLTI2LjI1IDQ1LjQ2NmExMS41IDExLjUgMCAwMS05Ljk1OSA1Ljc1aC01Mi41YTExLjQ5OSAxMS40OTkgMCAwMS05Ljk2LTUuNzV6IiBmaWxsPSJ1cmwoI2EpIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTcuMDM0KSI+PGRlZnM+PHBhdGggZD0iTTI3Ljc5MSAxMTUuMjE3TDEuNTQxIDY5Ljc0OWExMS40OTkgMTEuNDk5IDAgMDEwLTExLjQ5OWwyNi4yNS00NS40NjdhMTEuNDk5IDExLjQ5OSAwIDAxOS45NTktNS43NWg1Mi41YTExLjUgMTEuNSAwIDAxOS45NiA1Ljc1bDI2LjI1IDQ1LjQ2N2ExMS40OTkgMTEuNDk5IDAgMDEwIDExLjVsLTI2LjI1IDQ1LjQ2NmExMS40OTkgMTEuNDk5IDAgMDEtOS45NiA1Ljc1aC01Mi41YTExLjQ5OSAxMS40OTkgMCAwMS05Ljk1OS01Ljc1eiIgaWQ9ImIiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJjIj48dXNlIGhlaWdodD0iMTAwJSIgd2lkdGg9IjEwMCUiIHhsaW5rOmhyZWY9IiNiIiBvdmVyZmxvdz0idmlzaWJsZSIvPjwvY2xpcFBhdGg+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2MpIiBvcGFjaXR5PSIuMDciIGQ9Ik00OS4zMTMgNTMuODc1bC03LjAxIDYuOTkgNS45NTcgNS45NTgtNS44OTggMTAuNDc2IDQ0LjYzNSA0NC42MzYgMTAuODE2LjAwMkwxMTguOTM2IDg0IDg1LjQ4OSA1MC41NXoiLz48L2c+PHBhdGggZD0iTTg0LjcgNDMuMjM2SDQzLjI2NGMtLjY2NyAwLTEuMjEyLjU0Ni0xLjIxMiAxLjIxNHY4LjU2NmMwIC42NjYuNTQ2IDEuMjEyIDEuMjEyIDEuMjEySDg0LjdjLjY2NyAwIDEuMjEzLS41NDYgMS4yMTMtMS4yMTJ2LTguNTY4YzAtLjY2Ni0uNTQ1LTEuMjEzLTEuMjEyLTEuMjEzbS02LjQxNiA3Ljk3NmEyLjQ4NCAyLjQ4NCAwIDAxLTIuNDc3LTIuNDggMi40NzUgMi40NzUgMCAwMTIuNDc3LTIuNDc3YzEuMzcgMCAyLjQ4IDEuMTAzIDIuNDggMi40NzdhMi40OCAyLjQ4IDAgMDEtMi40OCAyLjQ4bTYuNDE1IDguNDkxbC00MS40MzYuMDAyYy0uNjY3IDAtMS4yMTIuNTQ2LTEuMjEyIDEuMjE0djguNTY1YzAgLjY2Ni41NDYgMS4yMTMgMS4yMTIgMS4yMTNIODQuN2MuNjY3IDAgMS4yMTMtLjU0NyAxLjIxMy0xLjIxM3YtOC41NjdjMC0uNjY2LS41NDUtMS4yMTQtMS4yMTItMS4yMTRtLTYuNDE2IDcuOTc2YTIuNDgzIDIuNDgzIDAgMDEtMi40NzctMi40OCAyLjQ3NSAyLjQ3NSAwIDAxMi40NzctMi40NzcgMi40OCAyLjQ4IDAgMTEwIDQuOTU2IiBmaWxsPSIjZmZmIi8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Storage"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Google Storage Source"
    description: |-
      Consume objects from Google Cloud Storage.

      You must encode the `serviceAccountKey` property before you pass it as a 
parameter.
    required:
      - bucketNameOrArn
    type: object
    properties:
      bucketNameOrArn:
        title: Bucket Name Or ARN
        description: The Google Cloud Storage bucket name or Bucket Amazon 
Resource Name (ARN).
        type: string
      serviceAccountKey:
        title: Service Account Key
        description: The service account key to use as credentials for Google 
Cloud Storage access. You must encode this value in base64.
        type: binary
        x-descriptors:
        - urn:camel:group:credentials
      deleteAfterRead:
        title: Auto-delete Objects
        description: Specifies to delete objects after consuming them.
        type: boolean
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
        default: true
      autoCreateBucket:
        title: Autocreate Bucket
        description: Specifies to automatically create the Google Cloud Storage 
bucket.
        type: boolean
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
        default: false
  dependencies:
    - "camel:kamelet"
    - "camel:google-storage"
    - "camel:jackson"
  template:
    from:
      uri: "google-storage://{{bucketNameOrArn}}"
      parameters:
        autoCreateBucket: "{{autoCreateBucket}}"
        serviceAccountKey: "{{base64:?serviceAccountKey}}"
        deleteAfterRead: "{{deleteAfterRead}}"
      steps:
      - to: kamelet:sink
{code}

and this is a yaml route to use:


{code:java}
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------

- route:
    from:
      uri: "kamelet:google-storage-source"
      parameters:
        projectId: "test-gs-123"
        bucketNameOrArn: "bucket-12345"
      steps:
      - to: 
          uri: "kamelet:log-sink"
          parameters:
            showStreams: "true"
            showHeaders: "true"
{code}

Values are not important, it should fail because it cannot authenticate to the 
service, but it fails before.

> camel-base64 - Optional properties: if encoded the optional doesn't have any 
> effect
> -----------------------------------------------------------------------------------
>
>                 Key: CAMEL-18802
>                 URL: https://issues.apache.org/jira/browse/CAMEL-18802
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-base64, camel-core
>            Reporter: Andrea Cosentino
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 3.20.0
>
>
> Suppose you have something like:
> {code:java}
>   template:
>     from:
>       uri: "google-storage://{{bucketNameOrArn}}"
>       parameters:
>         autoCreateBucket: "{{autoCreateBucket}}"
>         serviceAccountKey: "base64:{{serviceAccountKey}}"
>         deleteAfterRead: "{{deleteAfterRead}}"
> {code}
> and you want to have serviceAccountKey as optional parameter. If you prefix 
> the parameter with '?', like
> {code:java}
>   template:
>     from:
>       uri: "google-storage://{{bucketNameOrArn}}"
>       parameters:
>         autoCreateBucket: "{{autoCreateBucket}}"
>         serviceAccountKey: "base64:{{?serviceAccountKey}}"
>         deleteAfterRead: "{{deleteAfterRead}}"
> {code}
> We'll try to encode the value anyway, even if not specified.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to