This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 4c3952cdd410fcdba45be9ba13ee3e894dd42e2d
Author: Andrea Cosentino <[email protected]>
AuthorDate: Mon Feb 21 15:30:38 2022 +0100

    CAMEL-17691 - Camel Google Secret Manager: Add more operations
---
 .../manager/GoogleSecretManagerConstants.java      |  1 +
 .../manager/GoogleSecretManagerOperations.java     |  1 +
 .../manager/GoogleSecretManagerProducer.java       | 28 +++++++++++++++-------
 .../secret/manager/integration/GoogleCloudIT.java  | 15 ++++++++++++
 4 files changed, 37 insertions(+), 8 deletions(-)

diff --git 
a/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerConstants.java
 
b/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerConstants.java
index 593f76b..ec02f51 100644
--- 
a/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerConstants.java
+++ 
b/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerConstants.java
@@ -19,5 +19,6 @@ package org.apache.camel.component.google.secret.manager;
 public interface GoogleSecretManagerConstants {
     String OPERATION = "GoogleSecretManagerOperation";
     String SECRET_ID = "CamelGoogleSecretManagerSecretId";
+    String VERSION_ID = "CamelGoogleSecretManagerVersionId";
     String REPLICATION = "CamelGoogleSecretManagerReplication";
 }
diff --git 
a/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerOperations.java
 
b/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerOperations.java
index b5c27a1..1ed549c 100644
--- 
a/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerOperations.java
+++ 
b/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerOperations.java
@@ -19,5 +19,6 @@ package org.apache.camel.component.google.secret.manager;
 public enum GoogleSecretManagerOperations {
 
     createSecret,
+    getSecretVersion,
     deleteSecret;
 }
diff --git 
a/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerProducer.java
 
b/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerProducer.java
index 873531c..ae7f1ce 100644
--- 
a/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerProducer.java
+++ 
b/components/camel-google/camel-google-secrets-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerProducer.java
@@ -16,13 +16,7 @@
  */
 package org.apache.camel.component.google.secret.manager;
 
-import com.google.cloud.secretmanager.v1.AddSecretVersionRequest;
-import com.google.cloud.secretmanager.v1.ProjectName;
-import com.google.cloud.secretmanager.v1.Replication;
-import com.google.cloud.secretmanager.v1.Secret;
-import com.google.cloud.secretmanager.v1.SecretManagerServiceClient;
-import com.google.cloud.secretmanager.v1.SecretPayload;
-import com.google.cloud.secretmanager.v1.SecretVersion;
+import com.google.cloud.secretmanager.v1.*;
 import com.google.protobuf.ByteString;
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
@@ -50,7 +44,9 @@ public class GoogleSecretManagerProducer extends 
DefaultProducer {
             case createSecret:
                 createSecret(endpoint.getClient(), exchange);
                 break;
-
+            case getSecretVersion:
+                getSecretVersion(endpoint.getClient(), exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -80,6 +76,22 @@ public class GoogleSecretManagerProducer extends 
DefaultProducer {
         message.setBody(response);
     }
 
+    private void getSecretVersion(SecretManagerServiceClient client, Exchange 
exchange) throws InvalidPayloadException {
+        AccessSecretVersionResponse response;
+        if (getConfiguration().isPojoRequest()) {
+            AccessSecretVersionRequest request = 
exchange.getIn().getMandatoryBody(AccessSecretVersionRequest.class);
+            response = client.accessSecretVersion(request);
+        } else {
+            String secretId = 
exchange.getMessage().getHeader(GoogleSecretManagerConstants.SECRET_ID, 
String.class);
+            String versionId = 
exchange.getMessage().getHeader(GoogleSecretManagerConstants.VERSION_ID, 
String.class);
+            String projectId = getConfiguration().getProject();
+            SecretVersionName secretVersionName = 
SecretVersionName.of(projectId, secretId, versionId);
+            response = client.accessSecretVersion(secretVersionName);
+        }
+        Message message = getMessageForResponse(exchange);
+        message.setBody(response.getPayload().getData().toStringUtf8());
+    }
+
     private GoogleSecretManagerOperations determineOperation(Exchange 
exchange) {
         GoogleSecretManagerOperations operation = 
exchange.getIn().getHeader(GoogleSecretManagerConstants.OPERATION,
                 GoogleSecretManagerOperations.class);
diff --git 
a/components/camel-google/camel-google-secrets-manager/src/test/java/org/apache/camel/component/google/secret/manager/integration/GoogleCloudIT.java
 
b/components/camel-google/camel-google-secrets-manager/src/test/java/org/apache/camel/component/google/secret/manager/integration/GoogleCloudIT.java
index 6027a22..389510f 100644
--- 
a/components/camel-google/camel-google-secrets-manager/src/test/java/org/apache/camel/component/google/secret/manager/integration/GoogleCloudIT.java
+++ 
b/components/camel-google/camel-google-secrets-manager/src/test/java/org/apache/camel/component/google/secret/manager/integration/GoogleCloudIT.java
@@ -35,6 +35,8 @@ public class GoogleCloudIT extends CamelTestSupport {
 
     @EndpointInject("mock:createSecret")
     private MockEndpoint mockSecret;
+    @EndpointInject("mock:getSecret")
+    private MockEndpoint mockGetSecret;
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
@@ -53,6 +55,16 @@ public class GoogleCloudIT extends CamelTestSupport {
                             + serviceAccountKeyFile + 
"&operation=createSecret")
                         .to("mock:createSecret");
 
+                from("direct:getSecretVersion").process(new Processor() {
+                    @Override
+                    public void process(Exchange exchange) throws Exception {
+                        
exchange.getMessage().setHeader(GoogleSecretManagerConstants.SECRET_ID, 
"test123");
+                        
exchange.getMessage().setHeader(GoogleSecretManagerConstants.VERSION_ID, "1");
+                    }
+                }).to("google-secret-manager://" + project + 
"?serviceAccountKey="
+                      + serviceAccountKeyFile + 
"&operation=getSecretVersion").log("${body}")
+                        .to("mock:getSecret");
+
             }
         };
     }
@@ -61,6 +73,9 @@ public class GoogleCloudIT extends CamelTestSupport {
     public void sendIn() throws Exception {
 
         mockSecret.expectedMessageCount(1);
+        mockGetSecret.expectedMessageCount(1);
+        Thread.sleep(10000);
+        template.requestBody("direct:getSecretVersion", "Hello");
         Thread.sleep(10000);
     }
 

Reply via email to