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); }
