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