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

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

commit 1d2d35b10ba5256a902b06b11089aca00d72226e
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Oct 22 15:35:12 2024 +0200

    CAMEL-21373 - Camel-AWS-Secrets-Manager: Delete operation add an header for 
forcing the deletion
    
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../camel/catalog/components/aws-secrets-manager.json      |  3 ++-
 .../component/aws/secretsmanager/aws-secrets-manager.json  |  3 ++-
 .../aws/secretsmanager/SecretsManagerConstants.java        |  3 +++
 .../aws/secretsmanager/SecretsManagerProducer.java         |  7 +++++++
 .../endpoint/dsl/SecretsManagerEndpointBuilderFactory.java | 14 ++++++++++++++
 5 files changed, 28 insertions(+), 2 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json
index 0e565b44391..2fd8f84cc85 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-secrets-manager.json
@@ -59,7 +59,8 @@
     "CamelAwsSecretsManagerLambdaRotationFunctionArn": { "index": 6, "kind": 
"header", "displayName": "", "group": "producer", "label": "", "required": 
false, "javaType": "String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The ARN of the Lambda 
rotation function that can rotate the secret.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#LAMBDA_ROTATION_FUNCTION_ARN"
 },
     "CamelAwsSecretsManagerSecretVersionId": { "index": 7, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The unique identifier of the version of 
the secret.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_VERSION_ID"
 },
     "CamelAwsSecretsManagerSecretVersionIds": { "index": 8, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The unique identifier of the version of 
the secrets in batch operation.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_VERSION_IDS"
 },
-    "CamelAwsSecretsManagerSecretReplicationRegions": { "index": 9, "kind": 
"header", "displayName": "", "group": "producer", "label": "", "required": 
false, "javaType": "String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "A comma separated list of 
Regions in which to replicate the secret.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_REPLICATION_REGIONS"
 }
+    "CamelAwsSecretsManagerSecretReplicationRegions": { "index": 9, "kind": 
"header", "displayName": "", "group": "producer", "label": "", "required": 
false, "javaType": "String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "A comma separated list of 
Regions in which to replicate the secret.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_REPLICATION_REGIONS"
 },
+    "CamelAwsSecretsManagerSecretForceDeletion": { "index": 10, "kind": 
"header", "displayName": "", "group": "producer", "label": "", "required": 
false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "If this header is set to 
true, the deleted secret won't have any retention period.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_FORCE_DELETION"
 }
   },
   "properties": {
     "label": { "index": 0, "kind": "path", "displayName": "Label", "group": 
"producer", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", 
"configurationField": "configuration", "description": "Logical name" },
diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
 
b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
index 0e565b44391..2fd8f84cc85 100644
--- 
a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/aws/secretsmanager/aws-secrets-manager.json
@@ -59,7 +59,8 @@
     "CamelAwsSecretsManagerLambdaRotationFunctionArn": { "index": 6, "kind": 
"header", "displayName": "", "group": "producer", "label": "", "required": 
false, "javaType": "String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The ARN of the Lambda 
rotation function that can rotate the secret.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#LAMBDA_ROTATION_FUNCTION_ARN"
 },
     "CamelAwsSecretsManagerSecretVersionId": { "index": 7, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The unique identifier of the version of 
the secret.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_VERSION_ID"
 },
     "CamelAwsSecretsManagerSecretVersionIds": { "index": 8, "kind": "header", 
"displayName": "", "group": "producer", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The unique identifier of the version of 
the secrets in batch operation.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_VERSION_IDS"
 },
-    "CamelAwsSecretsManagerSecretReplicationRegions": { "index": 9, "kind": 
"header", "displayName": "", "group": "producer", "label": "", "required": 
false, "javaType": "String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "A comma separated list of 
Regions in which to replicate the secret.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_REPLICATION_REGIONS"
 }
+    "CamelAwsSecretsManagerSecretReplicationRegions": { "index": 9, "kind": 
"header", "displayName": "", "group": "producer", "label": "", "required": 
false, "javaType": "String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "A comma separated list of 
Regions in which to replicate the secret.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_REPLICATION_REGIONS"
 },
+    "CamelAwsSecretsManagerSecretForceDeletion": { "index": 10, "kind": 
"header", "displayName": "", "group": "producer", "label": "", "required": 
false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "If this header is set to 
true, the deleted secret won't have any retention period.", "constantName": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConstants#SECRET_FORCE_DELETION"
 }
   },
   "properties": {
     "label": { "index": 0, "kind": "path", "displayName": "Label", "group": 
"producer", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.aws.secretsmanager.SecretsManagerConfiguration", 
"configurationField": "configuration", "description": "Logical name" },
diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConstants.java
 
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConstants.java
index 7862cc90c97..de5a8d759ca 100644
--- 
a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConstants.java
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerConstants.java
@@ -42,4 +42,7 @@ public interface SecretsManagerConstants {
     String SECRET_VERSION_IDS = "CamelAwsSecretsManagerSecretVersionIds";
     @Metadata(description = "A comma separated list of Regions in which to 
replicate the secret.", javaType = "String")
     String SECRET_REPLICATION_REGIONS = 
"CamelAwsSecretsManagerSecretReplicationRegions";
+    @Metadata(description = "If this header is set to true, the deleted secret 
won't have any retention period.",
+              javaType = "Boolean")
+    String SECRET_FORCE_DELETION = "CamelAwsSecretsManagerSecretForceDeletion";
 }
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 b5db8dcc888..6b31f1e84d3 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
@@ -256,6 +256,13 @@ public class SecretsManagerProducer extends 
DefaultProducer {
             } else {
                 throw new IllegalArgumentException("Secret Id must be 
specified");
             }
+            if 
(ObjectHelper.isNotEmpty(exchange.getIn().getHeader(SecretsManagerConstants.SECRET_FORCE_DELETION)))
 {
+                Boolean secretForceDeletion
+                        = 
exchange.getIn().getHeader(SecretsManagerConstants.SECRET_FORCE_DELETION, 
Boolean.class);
+                if (secretForceDeletion) {
+                    builder.forceDeleteWithoutRecovery(true);
+                }
+            }
             request = builder.build();
         }
         try {
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SecretsManagerEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SecretsManagerEndpointBuilderFactory.java
index 94b5630953b..9a11571274e 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SecretsManagerEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SecretsManagerEndpointBuilderFactory.java
@@ -749,6 +749,20 @@ public interface SecretsManagerEndpointBuilderFactory {
         public String awsSecretsManagerSecretReplicationRegions() {
             return "CamelAwsSecretsManagerSecretReplicationRegions";
         }
+        /**
+         * If this header is set to true, the deleted secret won't have any
+         * retention period.
+         * 
+         * The option is a: {@code Boolean} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code
+         * AwsSecretsManagerSecretForceDeletion}.
+         */
+        public String awsSecretsManagerSecretForceDeletion() {
+            return "CamelAwsSecretsManagerSecretForceDeletion";
+        }
     }
     static SecretsManagerEndpointBuilder endpointBuilder(String componentName, 
String path) {
         class SecretsManagerEndpointBuilderImpl extends 
AbstractEndpointBuilder implements SecretsManagerEndpointBuilder, 
AdvancedSecretsManagerEndpointBuilder {

Reply via email to