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

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

commit 50c5c2346f728074e6bf9bdf1aab28adb1862e53
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Wed Jan 22 17:47:07 2025 +0100

    CAMEL-21642 - Camel-Hashicorp-Vault: Support Hashicorp cloud Vault instance 
in the pure component
    
    Signed-off-by: Andrea Cosentino <anco...@gmail.com>
---
 .../camel/catalog/components/hashicorp-vault.json  | 18 +++++----
 .../vault/HashicorpVaultEndpointConfigurer.java    |  6 +++
 .../vault/HashicorpVaultEndpointUriFactory.java    |  4 +-
 .../component/hashicorp/vault/hashicorp-vault.json | 18 +++++----
 .../vault/HashicorpVaultConfiguration.java         | 27 +++++++++++++
 .../hashicorp/vault/HashicorpVaultProducer.java    | 24 +++++++++--
 .../dsl/HashicorpVaultEndpointBuilderFactory.java  | 47 ++++++++++++++++++++++
 7 files changed, 124 insertions(+), 20 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hashicorp-vault.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hashicorp-vault.json
index f897fc8b34e..6fa513348b4 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hashicorp-vault.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hashicorp-vault.json
@@ -35,13 +35,15 @@
   },
   "properties": {
     "secretsEngine": { "index": 0, "kind": "path", "displayName": "Secrets 
Engine", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Vault Name to be used" },
-    "host": { "index": 1, "kind": "parameter", "displayName": "Host", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
host to be used" },
-    "operation": { "index": 2, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultOperation", "enum": [ 
"createSecret", "getSecret", "deleteSecret", "listSecrets" ], "deprecated": 
false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "co [...]
-    "port": { "index": 3, "kind": "parameter", "displayName": "Port", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "8200", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
port to be used" },
-    "scheme": { "index": 4, "kind": "parameter", "displayName": "Scheme", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
scheme to be used" },
-    "secretPath": { "index": 5, "kind": "parameter", "displayName": "Secret 
Path", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
secret Path to be used" },
-    "vaultTemplate": { "index": 6, "kind": "parameter", "displayName": "Vault 
Template", "group": "producer", "label": "", "required": false, "type": 
"object", "javaType": "org.springframework.vault.core.VaultTemplate", 
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, 
"configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Instance of Vault 
template" },
-    "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
-    "token": { "index": 8, "kind": "parameter", "displayName": "Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Token to be used" }
+    "cloud": { "index": 1, "kind": "parameter", "displayName": "Cloud", 
"group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Determine if the 
Hashicorp Vault is deployed on Hashicorp Cloud or not" },
+    "host": { "index": 2, "kind": "parameter", "displayName": "Host", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
host to be used" },
+    "namespace": { "index": 3, "kind": "parameter", "displayName": 
"Namespace", "group": "producer", "label": "", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "If the Hashicorp Vault 
instance is deployed on Hashicorp Cloud, this field will determine the 
namespace" },
+    "operation": { "index": 4, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultOperation", "enum": [ 
"createSecret", "getSecret", "deleteSecret", "listSecrets" ], "deprecated": 
false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "co [...]
+    "port": { "index": 5, "kind": "parameter", "displayName": "Port", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "8200", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
port to be used" },
+    "scheme": { "index": 6, "kind": "parameter", "displayName": "Scheme", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
scheme to be used" },
+    "secretPath": { "index": 7, "kind": "parameter", "displayName": "Secret 
Path", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
secret Path to be used" },
+    "vaultTemplate": { "index": 8, "kind": "parameter", "displayName": "Vault 
Template", "group": "producer", "label": "", "required": false, "type": 
"object", "javaType": "org.springframework.vault.core.VaultTemplate", 
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, 
"configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Instance of Vault 
template" },
+    "lazyStartProducer": { "index": 9, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
+    "token": { "index": 10, "kind": "parameter", "displayName": "Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Token to be used" }
   }
 }
diff --git 
a/components/camel-hashicorp-vault/src/generated/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpointConfigurer.java
 
b/components/camel-hashicorp-vault/src/generated/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpointConfigurer.java
index 6341e2f435b..2bda963b06b 100644
--- 
a/components/camel-hashicorp-vault/src/generated/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpointConfigurer.java
+++ 
b/components/camel-hashicorp-vault/src/generated/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpointConfigurer.java
@@ -23,9 +23,11 @@ public class HashicorpVaultEndpointConfigurer extends 
PropertyConfigurerSupport
     public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
         HashicorpVaultEndpoint target = (HashicorpVaultEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "cloud": 
target.getConfiguration().setCloud(property(camelContext, boolean.class, 
value)); return true;
         case "host": target.getConfiguration().setHost(property(camelContext, 
java.lang.String.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
+        case "namespace": 
target.getConfiguration().setNamespace(property(camelContext, 
java.lang.String.class, value)); return true;
         case "operation": 
target.getConfiguration().setOperation(property(camelContext, 
org.apache.camel.component.hashicorp.vault.HashicorpVaultOperation.class, 
value)); return true;
         case "port": target.getConfiguration().setPort(property(camelContext, 
java.lang.String.class, value)); return true;
         case "scheme": 
target.getConfiguration().setScheme(property(camelContext, 
java.lang.String.class, value)); return true;
@@ -46,9 +48,11 @@ public class HashicorpVaultEndpointConfigurer extends 
PropertyConfigurerSupport
     @Override
     public Class<?> getOptionType(String name, boolean ignoreCase) {
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "cloud": return boolean.class;
         case "host": return java.lang.String.class;
         case "lazystartproducer":
         case "lazyStartProducer": return boolean.class;
+        case "namespace": return java.lang.String.class;
         case "operation": return 
org.apache.camel.component.hashicorp.vault.HashicorpVaultOperation.class;
         case "port": return java.lang.String.class;
         case "scheme": return java.lang.String.class;
@@ -65,9 +69,11 @@ public class HashicorpVaultEndpointConfigurer extends 
PropertyConfigurerSupport
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
         HashicorpVaultEndpoint target = (HashicorpVaultEndpoint) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
+        case "cloud": return target.getConfiguration().isCloud();
         case "host": return target.getConfiguration().getHost();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "namespace": return target.getConfiguration().getNamespace();
         case "operation": return target.getConfiguration().getOperation();
         case "port": return target.getConfiguration().getPort();
         case "scheme": return target.getConfiguration().getScheme();
diff --git 
a/components/camel-hashicorp-vault/src/generated/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpointUriFactory.java
 
b/components/camel-hashicorp-vault/src/generated/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpointUriFactory.java
index 3e0a0470af6..a8b76f6525e 100644
--- 
a/components/camel-hashicorp-vault/src/generated/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpointUriFactory.java
+++ 
b/components/camel-hashicorp-vault/src/generated/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpointUriFactory.java
@@ -23,9 +23,11 @@ public class HashicorpVaultEndpointUriFactory extends 
org.apache.camel.support.c
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(9);
+        Set<String> props = new HashSet<>(11);
+        props.add("cloud");
         props.add("host");
         props.add("lazyStartProducer");
+        props.add("namespace");
         props.add("operation");
         props.add("port");
         props.add("scheme");
diff --git 
a/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json
 
b/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json
index f897fc8b34e..6fa513348b4 100644
--- 
a/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json
+++ 
b/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json
@@ -35,13 +35,15 @@
   },
   "properties": {
     "secretsEngine": { "index": 0, "kind": "path", "displayName": "Secrets 
Engine", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Vault Name to be used" },
-    "host": { "index": 1, "kind": "parameter", "displayName": "Host", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
host to be used" },
-    "operation": { "index": 2, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultOperation", "enum": [ 
"createSecret", "getSecret", "deleteSecret", "listSecrets" ], "deprecated": 
false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "co [...]
-    "port": { "index": 3, "kind": "parameter", "displayName": "Port", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "8200", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
port to be used" },
-    "scheme": { "index": 4, "kind": "parameter", "displayName": "Scheme", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
scheme to be used" },
-    "secretPath": { "index": 5, "kind": "parameter", "displayName": "Secret 
Path", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
secret Path to be used" },
-    "vaultTemplate": { "index": 6, "kind": "parameter", "displayName": "Vault 
Template", "group": "producer", "label": "", "required": false, "type": 
"object", "javaType": "org.springframework.vault.core.VaultTemplate", 
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, 
"configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Instance of Vault 
template" },
-    "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
-    "token": { "index": 8, "kind": "parameter", "displayName": "Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Token to be used" }
+    "cloud": { "index": 1, "kind": "parameter", "displayName": "Cloud", 
"group": "producer", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Determine if the 
Hashicorp Vault is deployed on Hashicorp Cloud or not" },
+    "host": { "index": 2, "kind": "parameter", "displayName": "Host", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
host to be used" },
+    "namespace": { "index": 3, "kind": "parameter", "displayName": 
"Namespace", "group": "producer", "label": "", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "If the Hashicorp Vault 
instance is deployed on Hashicorp Cloud, this field will determine the 
namespace" },
+    "operation": { "index": 4, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultOperation", "enum": [ 
"createSecret", "getSecret", "deleteSecret", "listSecrets" ], "deprecated": 
false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "co [...]
+    "port": { "index": 5, "kind": "parameter", "displayName": "Port", "group": 
"producer", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "8200", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
port to be used" },
+    "scheme": { "index": 6, "kind": "parameter", "displayName": "Scheme", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": "https", "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
scheme to be used" },
+    "secretPath": { "index": 7, "kind": "parameter", "displayName": "Secret 
Path", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Hashicorp Vault instance 
secret Path to be used" },
+    "vaultTemplate": { "index": 8, "kind": "parameter", "displayName": "Vault 
Template", "group": "producer", "label": "", "required": false, "type": 
"object", "javaType": "org.springframework.vault.core.VaultTemplate", 
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, 
"configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Instance of Vault 
template" },
+    "lazyStartProducer": { "index": 9, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produc [...]
+    "token": { "index": 10, "kind": "parameter", "displayName": "Token", 
"group": "security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": true, "configurationClass": 
"org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", 
"configurationField": "configuration", "description": "Token to be used" }
   }
 }
diff --git 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultConfiguration.java
 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultConfiguration.java
index 404de9c309c..12427011983 100644
--- 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultConfiguration.java
+++ 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultConfiguration.java
@@ -41,6 +41,11 @@ public class HashicorpVaultConfiguration implements 
Cloneable {
     private String secretPath;
     @UriParam(label = "security", secret = true)
     private String token;
+    @UriParam
+    private boolean cloud;
+    @UriParam
+    private String namespace;
+
     @UriParam(label = "producer")
     private HashicorpVaultOperation operation = 
HashicorpVaultOperation.createSecret;
 
@@ -110,6 +115,28 @@ public class HashicorpVaultConfiguration implements 
Cloneable {
         this.scheme = scheme;
     }
 
+    /**
+     * Determine if the Hashicorp Vault is deployed on Hashicorp Cloud or not
+     */
+    public boolean isCloud() {
+        return cloud;
+    }
+
+    public void setCloud(boolean cloud) {
+        this.cloud = cloud;
+    }
+
+    /**
+     * If the Hashicorp Vault instance is deployed on Hashicorp Cloud, this 
field will determine the namespace
+     */
+    public String getNamespace() {
+        return namespace;
+    }
+
+    public void setNamespace(String namespace) {
+        this.namespace = namespace;
+    }
+
     /**
      * Hashicorp Vault instance secret Path to be used
      */
diff --git 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultProducer.java
 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultProducer.java
index 2fc3e1801f0..89b1cf1883e 100644
--- 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultProducer.java
+++ 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultProducer.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.hashicorp.vault;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.Endpoint;
@@ -67,7 +68,15 @@ public class HashicorpVaultProducer extends DefaultProducer {
         if 
(ObjectHelper.isNotEmpty(exchange.getMessage().getHeader(HashicorpVaultConstants.SECRET_VERSION)))
 {
             secretVersion = 
exchange.getMessage().getHeader(HashicorpVaultConstants.SECRET_VERSION, 
String.class);
         }
-        String completePath = 
getEndpoint().getConfiguration().getSecretsEngine() + "/" + "data" + "/" + 
secretPath;
+        String completePath = "";
+        if (!getEndpoint().getConfiguration().isCloud()) {
+            completePath = getEndpoint().getConfiguration().getSecretsEngine() 
+ "/" + "data" + "/" + secretPath;
+        } else {
+            if 
(ObjectHelper.isNotEmpty(getEndpoint().getConfiguration().getNamespace())) {
+                completePath = getEndpoint().getConfiguration().getNamespace() 
+ "/"
+                               + 
getEndpoint().getConfiguration().getSecretsEngine() + "/" + "data" + "/" + 
secretPath;
+            }
+        }
         if (ObjectHelper.isNotEmpty(secretVersion)) {
             completePath = completePath + "?version=" + secretVersion;
         }
@@ -88,8 +97,17 @@ public class HashicorpVaultProducer extends DefaultProducer {
     }
 
     private void listSecrets(Exchange exchange) {
-        List<String> secretsList = getEndpoint().getVaultTemplate()
-                .list(getEndpoint().getConfiguration().getSecretsEngine() + 
"/" + "metadata" + "/");
+        List<String> secretsList = new ArrayList<>();
+        if (!getEndpoint().getConfiguration().isCloud()) {
+            secretsList = getEndpoint().getVaultTemplate()
+                    .list(getEndpoint().getConfiguration().getSecretsEngine() 
+ "/" + "metadata" + "/");
+        } else {
+            if 
(ObjectHelper.isNotEmpty(getEndpoint().getConfiguration().getNamespace())) {
+                secretsList = getEndpoint().getVaultTemplate()
+                        .list(getEndpoint().getConfiguration().getNamespace() 
+ "/"
+                              + 
getEndpoint().getConfiguration().getSecretsEngine() + "/" + "metadata" + "/");
+            }
+        }
         exchange.getMessage().setBody(secretsList);
     }
 
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/HashicorpVaultEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/HashicorpVaultEndpointBuilderFactory.java
index 3963a320983..5ebb2e4ac4c 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/HashicorpVaultEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/HashicorpVaultEndpointBuilderFactory.java
@@ -44,6 +44,38 @@ public interface HashicorpVaultEndpointBuilderFactory {
             return (AdvancedHashicorpVaultEndpointBuilder) this;
         }
 
+        /**
+         * Determine if the Hashicorp Vault is deployed on Hashicorp Cloud or
+         * not.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param cloud the value to set
+         * @return the dsl builder
+         */
+        default HashicorpVaultEndpointBuilder cloud(boolean cloud) {
+            doSetProperty("cloud", cloud);
+            return this;
+        }
+        /**
+         * Determine if the Hashicorp Vault is deployed on Hashicorp Cloud or
+         * not.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: false
+         * Group: producer
+         * 
+         * @param cloud the value to set
+         * @return the dsl builder
+         */
+        default HashicorpVaultEndpointBuilder cloud(String cloud) {
+            doSetProperty("cloud", cloud);
+            return this;
+        }
         /**
          * Hashicorp Vault instance host to be used.
          * 
@@ -58,6 +90,21 @@ public interface HashicorpVaultEndpointBuilderFactory {
             doSetProperty("host", host);
             return this;
         }
+        /**
+         * If the Hashicorp Vault instance is deployed on Hashicorp Cloud, this
+         * field will determine the namespace.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: producer
+         * 
+         * @param namespace the value to set
+         * @return the dsl builder
+         */
+        default HashicorpVaultEndpointBuilder namespace(String namespace) {
+            doSetProperty("namespace", namespace);
+            return this;
+        }
         /**
          * Operation to be performed.
          * 

Reply via email to