You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/08/31 13:04:13 UTC
[camel] 01/03: Camel-AWS-Secrets-Manager: Added RestoreSecret
Operation
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 <an...@gmail.com>
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();
}