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 a6c9fd7e1beb8560c8ca8ed476a7920c2782a968
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Aug 31 14:56:06 2021 +0200

    Camel-AWS-Secrets-Manager: Added RestoreSecret Operation
---
 .../secretsmanager/SecretsManagerOperations.java   |  1 +
 .../aws/secretsmanager/SecretsManagerProducer.java | 47 ++++++++++++++--------
 2 files changed, 31 insertions(+), 17 deletions(-)

diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java
 
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java
index 7dbafed..c8bc028 100644
--- 
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerOperations.java
@@ -25,5 +25,6 @@ public enum SecretsManagerOperations {
     deleteSecret,
     rotateSecret,
     updateSecret,
+    restoreSecret,
     replicateSecretToRegions
 }
diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java
 
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java
index 0a61355..5dc24dc 100644
--- 
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerProducer.java
@@ -30,24 +30,8 @@ import org.slf4j.LoggerFactory;
 import software.amazon.awssdk.awscore.exception.AwsServiceException;
 import software.amazon.awssdk.core.SdkBytes;
 import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
-import 
software.amazon.awssdk.services.secretsmanager.model.CreateSecretRequest;
-import 
software.amazon.awssdk.services.secretsmanager.model.CreateSecretResponse;
-import 
software.amazon.awssdk.services.secretsmanager.model.DeleteSecretRequest;
-import 
software.amazon.awssdk.services.secretsmanager.model.DeleteSecretResponse;
-import 
software.amazon.awssdk.services.secretsmanager.model.DescribeSecretRequest;
-import 
software.amazon.awssdk.services.secretsmanager.model.DescribeSecretResponse;
-import 
software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest;
-import 
software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse;
-import software.amazon.awssdk.services.secretsmanager.model.ListSecretsRequest;
+import software.amazon.awssdk.services.secretsmanager.model.*;
 import 
software.amazon.awssdk.services.secretsmanager.model.ListSecretsRequest.Builder;
-import 
software.amazon.awssdk.services.secretsmanager.model.ListSecretsResponse;
-import software.amazon.awssdk.services.secretsmanager.model.ReplicaRegionType;
-import 
software.amazon.awssdk.services.secretsmanager.model.ReplicateSecretToRegionsRequest;
-import 
software.amazon.awssdk.services.secretsmanager.model.ReplicateSecretToRegionsResponse;
-import 
software.amazon.awssdk.services.secretsmanager.model.RotateSecretRequest;
-import 
software.amazon.awssdk.services.secretsmanager.model.RotateSecretResponse;
-import 
software.amazon.awssdk.services.secretsmanager.model.UpdateSecretRequest;
-import 
software.amazon.awssdk.services.secretsmanager.model.UpdateSecretResponse;
 
 /**
  * A Producer which sends messages to the Amazon Secrets Manager Service SDK v2
@@ -90,6 +74,9 @@ public class SecretsManagerProducer extends DefaultProducer {
             case replicateSecretToRegions:
                 
replicateSecretToRegions(getEndpoint().getSecretsManagerClient(), exchange);
                 break;
+            case restoreSecret:
+                restoreSecret(getEndpoint().getSecretsManagerClient(), 
exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -371,6 +358,32 @@ public class SecretsManagerProducer extends 
DefaultProducer {
         message.setBody(result);
     }
 
+    private void restoreSecret(SecretsManagerClient secretsManagerClient, 
Exchange exchange)
+            throws InvalidPayloadException {
+        RestoreSecretRequest request = null;
+        RestoreSecretResponse result;
+        if (getConfiguration().isPojoRequest()) {
+            request = 
exchange.getIn().getMandatoryBody(RestoreSecretRequest.class);
+        } else {
+            RestoreSecretRequest.Builder builder = 
RestoreSecretRequest.builder();
+            if 
(ObjectHelper.isNotEmpty(exchange.getIn().getHeader(SecretsManagerConstants.SECRET_ID)))
 {
+                String secretId = 
exchange.getIn().getHeader(SecretsManagerConstants.SECRET_ID, String.class);
+                builder.secretId(secretId);
+            } else {
+                throw new IllegalArgumentException("Secret Id must be 
specified");
+            }
+            request = builder.build();
+        }
+        try {
+            result = secretsManagerClient.restoreSecret(request);
+        } catch (AwsServiceException ase) {
+            LOG.trace("Restore Secret value command returned the error code 
{}", ase.awsErrorDetails().errorCode());
+            throw ase;
+        }
+        Message message = getMessageForResponse(exchange);
+        message.setBody(result);
+    }
+
     public static Message getMessageForResponse(final Exchange exchange) {
         return exchange.getMessage();
     }

Reply via email to