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

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

commit e30dcd574aeb0e5eaea0001bf10753ba6bab4020
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Jan 21 12:29:23 2025 +0100

    CAMEL-21626 - Camel-Hashicorp-Vault: Support Hashicorp Cloud deployment in 
properties function
    
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../main/camel-main-configuration-metadata.json    |  2 ++
 .../vault/HashicorpVaultPropertiesFunction.java    | 22 +++++++++++++++--
 .../camel/vault/HashicorpVaultConfiguration.java   | 26 ++++++++++++++++++++
 .../HashicorpVaultConfigurationConfigurer.java     |  6 +++++
 ...corpVaultConfigurationPropertiesConfigurer.java |  8 +++++++
 .../camel-main-configuration-metadata.json         |  2 ++
 core/camel-main/src/main/docs/main.adoc            |  4 +++-
 .../HashicorpVaultConfigurationProperties.java     | 18 +++++++++++++-
 .../java/org/apache/camel/main/MainVaultTest.java  | 28 ++++++++++++++++++++++
 9 files changed, 112 insertions(+), 4 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
index 1e74936c353..5d75bf53c2a 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
@@ -368,7 +368,9 @@
     { "name": "camel.vault.gcp.serviceAccountKey", "description": "The Service 
Account Key location", "sourceType": 
"org.apache.camel.vault.GcpVaultConfiguration", "type": "string", "javaType": 
"java.lang.String" },
     { "name": "camel.vault.gcp.subscriptionName", "description": "Define the 
Google Pubsub subscription Name to be used when checking for updates", 
"sourceType": "org.apache.camel.vault.GcpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.gcp.useDefaultInstance", "description": "Define if 
we want to use the GCP Client Default Instance or not", "sourceType": 
"org.apache.camel.vault.GcpVaultConfiguration", "type": "boolean", "javaType": 
"boolean", "defaultValue": "false" },
+    { "name": "camel.vault.hashicorp.cloud", "description": "Determine if the 
Hashicorp Vault is deployed on Hashicorp Cloud or not", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "boolean", 
"javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.vault.hashicorp.host", "description": "Host to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.hashicorp.namespace", "description": "If the 
Hashicorp Vault instance is deployed on Hashicorp Cloud, this field will 
determine the namespace", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.port", "description": "Port to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.scheme", "description": "Scheme to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.token", "description": "Token to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
diff --git 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultPropertiesFunction.java
 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultPropertiesFunction.java
index d4efea00e33..93bafc3685e 100644
--- 
a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultPropertiesFunction.java
+++ 
b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultPropertiesFunction.java
@@ -76,10 +76,16 @@ public class HashicorpVaultPropertiesFunction extends 
ServiceSupport implements
             = "CAMEL_HASHICORP_VAULT_PORT";
     private static final String CAMEL_HASHICORP_VAULT_SCHEME_ENV
             = "CAMEL_HASHICORP_VAULT_SCHEME";
+    private static final String CAMEL_HASHICORP_VAULT_CLOUD_ENV
+            = "CAMEL_HASHICORP_VAULT_CLOUD";
+    private static final String CAMEL_HASHICORP_VAULT_NAMESPACE_ENV
+            = "CAMEL_HASHICORP_VAULT_NAMESPACE";
     private CamelContext camelContext;
     private VaultTemplate client;
 
     private String engine;
+    private String namespace;
+    private boolean cloud;
 
     public HashicorpVaultPropertiesFunction() {
         super();
@@ -97,14 +103,19 @@ public class HashicorpVaultPropertiesFunction extends 
ServiceSupport implements
         String host = System.getenv(CAMEL_HASHICORP_VAULT_HOST_ENV);
         String port = System.getenv(CAMEL_HASHICORP_VAULT_PORT_ENV);
         String scheme = System.getenv(CAMEL_HASHICORP_VAULT_SCHEME_ENV);
+        namespace = System.getenv(CAMEL_HASHICORP_VAULT_NAMESPACE_ENV);
         if (ObjectHelper.isEmpty(token) && ObjectHelper.isEmpty(host)
-                && ObjectHelper.isEmpty(port) && ObjectHelper.isEmpty(scheme)) 
{
+                && ObjectHelper.isEmpty(port) && ObjectHelper.isEmpty(scheme) 
&& ObjectHelper.isEmpty(namespace)) {
             HashicorpVaultConfiguration hashicorpVaultConfiguration = 
getCamelContext().getVaultConfiguration().hashicorp();
             if (ObjectHelper.isNotEmpty(hashicorpVaultConfiguration)) {
                 token = hashicorpVaultConfiguration.getToken();
                 host = hashicorpVaultConfiguration.getHost();
                 port = hashicorpVaultConfiguration.getPort();
                 scheme = hashicorpVaultConfiguration.getScheme();
+                cloud = hashicorpVaultConfiguration.isCloud();
+                if (hashicorpVaultConfiguration.isCloud()) {
+                    namespace = hashicorpVaultConfiguration.getNamespace();
+                }
             }
         }
         if (ObjectHelper.isNotEmpty(token) && ObjectHelper.isNotEmpty(host)
@@ -195,7 +206,14 @@ public class HashicorpVaultPropertiesFunction extends 
ServiceSupport implements
     private String getSecretFromSource(String key, String subkey, String 
defaultValue, String version) {
         String returnValue = null;
         try {
-            String completePath = engine + "/" + "data" + "/" + key;
+            String completePath = "";
+            if (!cloud) {
+                completePath = engine + "/" + "data" + "/" + key;
+            } else {
+                if (ObjectHelper.isNotEmpty(namespace)) {
+                    completePath = namespace + "/" + engine + "/" + "data" + 
"/" + key;
+                }
+            }
             if (ObjectHelper.isNotEmpty(version)) {
                 completePath = completePath + "?version=" + version;
             }
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/vault/HashicorpVaultConfiguration.java
 
b/core/camel-api/src/main/java/org/apache/camel/vault/HashicorpVaultConfiguration.java
index 6d3113f0dd7..26fa28aad5c 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/vault/HashicorpVaultConfiguration.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/vault/HashicorpVaultConfiguration.java
@@ -31,6 +31,10 @@ public class HashicorpVaultConfiguration extends 
VaultConfiguration {
     private String port;
     @Metadata
     private String scheme;
+    @Metadata
+    private boolean cloud;
+    @Metadata
+    private String namespace;
 
     public String getToken() {
         return token;
@@ -75,4 +79,26 @@ public class HashicorpVaultConfiguration extends 
VaultConfiguration {
     public void setScheme(String scheme) {
         this.scheme = scheme;
     }
+
+    public boolean isCloud() {
+        return cloud;
+    }
+
+    /**
+     * Determine if the Hashicorp Vault is deployed on Hashicorp Cloud or not
+     */
+    public void setCloud(boolean cloud) {
+        this.cloud = cloud;
+    }
+
+    public String getNamespace() {
+        return namespace;
+    }
+
+    /**
+     * If the Hashicorp Vault instance is deployed on Hashicorp Cloud, this 
field will determine the namespace
+     */
+    public void setNamespace(String namespace) {
+        this.namespace = namespace;
+    }
 }
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
index 92ff13367a3..31bcaa1ca32 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
@@ -27,6 +27,7 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "awsVaultConfiguration": 
target.setAwsVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AwsVaultConfiguration.class, value)); return true;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": 
target.setAzureVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
+        case "cloud": target.setCloud(property(camelContext, boolean.class, 
value)); return true;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
@@ -36,6 +37,7 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": 
target.setKubernetesVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
+        case "namespace": target.setNamespace(property(camelContext, 
java.lang.String.class, value)); return true;
         case "port": target.setPort(property(camelContext, 
java.lang.String.class, value)); return true;
         case "scheme": target.setScheme(property(camelContext, 
java.lang.String.class, value)); return true;
         case "token": target.setToken(property(camelContext, 
java.lang.String.class, value)); return true;
@@ -50,6 +52,7 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "awsVaultConfiguration": return 
org.apache.camel.vault.AwsVaultConfiguration.class;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return 
org.apache.camel.vault.AzureVaultConfiguration.class;
+        case "cloud": return boolean.class;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
@@ -59,6 +62,7 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return 
org.apache.camel.vault.KubernetesVaultConfiguration.class;
+        case "namespace": return java.lang.String.class;
         case "port": return java.lang.String.class;
         case "scheme": return java.lang.String.class;
         case "token": return java.lang.String.class;
@@ -74,6 +78,7 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "awsVaultConfiguration": return target.getAwsVaultConfiguration();
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return 
target.getAzureVaultConfiguration();
+        case "cloud": return target.isCloud();
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
@@ -83,6 +88,7 @@ public class HashicorpVaultConfigurationConfigurer extends 
org.apache.camel.supp
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return 
target.getKubernetesVaultConfiguration();
+        case "namespace": return target.getNamespace();
         case "port": return target.getPort();
         case "scheme": return target.getScheme();
         case "token": return target.getToken();
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
index 2143ce68bdb..c6be0369655 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
@@ -24,11 +24,13 @@ public class 
HashicorpVaultConfigurationPropertiesConfigurer extends org.apache.
         Map<String, Object> map = new CaseInsensitiveMap();
         map.put("AwsVaultConfiguration", 
org.apache.camel.vault.AwsVaultConfiguration.class);
         map.put("AzureVaultConfiguration", 
org.apache.camel.vault.AzureVaultConfiguration.class);
+        map.put("Cloud", boolean.class);
         map.put("GcpVaultConfiguration", 
org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", 
org.apache.camel.vault.HashicorpVaultConfiguration.class);
         map.put("Host", java.lang.String.class);
         map.put("KubernetesConfigMapVaultConfiguration", 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", 
org.apache.camel.vault.KubernetesVaultConfiguration.class);
+        map.put("Namespace", java.lang.String.class);
         map.put("Port", java.lang.String.class);
         map.put("Scheme", java.lang.String.class);
         map.put("Token", java.lang.String.class);
@@ -43,6 +45,7 @@ public class HashicorpVaultConfigurationPropertiesConfigurer 
extends org.apache.
         case "awsVaultConfiguration": 
target.setAwsVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AwsVaultConfiguration.class, value)); return true;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": 
target.setAzureVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
+        case "cloud": target.setCloud(property(camelContext, boolean.class, 
value)); return true;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
@@ -52,6 +55,7 @@ public class HashicorpVaultConfigurationPropertiesConfigurer 
extends org.apache.
         case "kubernetesConfigMapVaultConfiguration": 
target.setKubernetesConfigMapVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); 
return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": 
target.setKubernetesVaultConfiguration(property(camelContext, 
org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
+        case "namespace": target.setNamespace(property(camelContext, 
java.lang.String.class, value)); return true;
         case "port": target.setPort(property(camelContext, 
java.lang.String.class, value)); return true;
         case "scheme": target.setScheme(property(camelContext, 
java.lang.String.class, value)); return true;
         case "token": target.setToken(property(camelContext, 
java.lang.String.class, value)); return true;
@@ -71,6 +75,7 @@ public class HashicorpVaultConfigurationPropertiesConfigurer 
extends org.apache.
         case "awsVaultConfiguration": return 
org.apache.camel.vault.AwsVaultConfiguration.class;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return 
org.apache.camel.vault.AzureVaultConfiguration.class;
+        case "cloud": return boolean.class;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
@@ -80,6 +85,7 @@ public class HashicorpVaultConfigurationPropertiesConfigurer 
extends org.apache.
         case "kubernetesConfigMapVaultConfiguration": return 
org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return 
org.apache.camel.vault.KubernetesVaultConfiguration.class;
+        case "namespace": return java.lang.String.class;
         case "port": return java.lang.String.class;
         case "scheme": return java.lang.String.class;
         case "token": return java.lang.String.class;
@@ -95,6 +101,7 @@ public class HashicorpVaultConfigurationPropertiesConfigurer 
extends org.apache.
         case "awsVaultConfiguration": return target.getAwsVaultConfiguration();
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return 
target.getAzureVaultConfiguration();
+        case "cloud": return target.isCloud();
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
@@ -104,6 +111,7 @@ public class 
HashicorpVaultConfigurationPropertiesConfigurer extends org.apache.
         case "kubernetesConfigMapVaultConfiguration": return 
target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return 
target.getKubernetesVaultConfiguration();
+        case "namespace": return target.getNamespace();
         case "port": return target.getPort();
         case "scheme": return target.getScheme();
         case "token": return target.getToken();
diff --git 
a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
 
b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
index 1e74936c353..5d75bf53c2a 100644
--- 
a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
+++ 
b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
@@ -368,7 +368,9 @@
     { "name": "camel.vault.gcp.serviceAccountKey", "description": "The Service 
Account Key location", "sourceType": 
"org.apache.camel.vault.GcpVaultConfiguration", "type": "string", "javaType": 
"java.lang.String" },
     { "name": "camel.vault.gcp.subscriptionName", "description": "Define the 
Google Pubsub subscription Name to be used when checking for updates", 
"sourceType": "org.apache.camel.vault.GcpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.gcp.useDefaultInstance", "description": "Define if 
we want to use the GCP Client Default Instance or not", "sourceType": 
"org.apache.camel.vault.GcpVaultConfiguration", "type": "boolean", "javaType": 
"boolean", "defaultValue": "false" },
+    { "name": "camel.vault.hashicorp.cloud", "description": "Determine if the 
Hashicorp Vault is deployed on Hashicorp Cloud or not", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "boolean", 
"javaType": "boolean", "defaultValue": "false" },
     { "name": "camel.vault.hashicorp.host", "description": "Host to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.hashicorp.namespace", "description": "If the 
Hashicorp Vault instance is deployed on Hashicorp Cloud, this field will 
determine the namespace", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.port", "description": "Port to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.scheme", "description": "Scheme to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.token", "description": "Token to access 
hashicorp vault", "sourceType": 
"org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
diff --git a/core/camel-main/src/main/docs/main.adoc 
b/core/camel-main/src/main/docs/main.adoc
index 1442307f556..b771efc13b8 100644
--- a/core/camel-main/src/main/docs/main.adoc
+++ b/core/camel-main/src/main/docs/main.adoc
@@ -451,12 +451,14 @@ The camel.vault.kubernetescm supports 2 options, which 
are listed below.
 
 
 === Camel Hashicorp Vault configurations
-The camel.vault.hashicorp supports 4 options, which are listed below.
+The camel.vault.hashicorp supports 6 options, which are listed below.
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
+| *camel.vault.hashicorp.cloud* | Determine if the Hashicorp Vault is deployed 
on Hashicorp Cloud or not | false | boolean
 | *camel.vault.hashicorp.host* | Host to access hashicorp vault |  | String
+| *camel.vault.hashicorp.namespace* | If the Hashicorp Vault instance is 
deployed on Hashicorp Cloud, this field will determine the namespace |  | String
 | *camel.vault.hashicorp.port* | Port to access hashicorp vault |  | String
 | *camel.vault.hashicorp.scheme* | Scheme to access hashicorp vault |  | String
 | *camel.vault.hashicorp.token* | Token to access hashicorp vault |  | String
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/HashicorpVaultConfigurationProperties.java
 
b/core/camel-main/src/main/java/org/apache/camel/main/HashicorpVaultConfigurationProperties.java
index 28c874b544b..d11827dc915 100644
--- 
a/core/camel-main/src/main/java/org/apache/camel/main/HashicorpVaultConfigurationProperties.java
+++ 
b/core/camel-main/src/main/java/org/apache/camel/main/HashicorpVaultConfigurationProperties.java
@@ -21,7 +21,7 @@ import org.apache.camel.spi.Configurer;
 import org.apache.camel.vault.HashicorpVaultConfiguration;
 
 /**
- * Configuration for access to AWS Secret.
+ * Configuration for access to Hashicorp Vault Secret.
  */
 @Configurer(extended = true)
 public class HashicorpVaultConfigurationProperties extends 
HashicorpVaultConfiguration implements BootstrapCloseable {
@@ -81,4 +81,20 @@ public class HashicorpVaultConfigurationProperties extends 
HashicorpVaultConfigu
         return this;
     }
 
+    /**
+     * The Hashicorp Vault Cloud deployment
+     */
+    public HashicorpVaultConfigurationProperties withCloud(boolean cloud) {
+        setCloud(cloud);
+        return this;
+    }
+
+    /**
+     * The Hashicorp Vault Cloud deployment Namespace
+     */
+    public HashicorpVaultConfigurationProperties withNamespace(String 
namespace) {
+        setNamespace(namespace);
+        return this;
+    }
+
 }
diff --git 
a/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java 
b/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java
index 9263fe788cc..8cf2ea348df 100644
--- a/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java
+++ b/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java
@@ -335,6 +335,34 @@ public class MainVaultTest {
         Assertions.assertEquals("localhost", cfg.getHost());
         Assertions.assertEquals("8200", cfg.getPort());
         Assertions.assertEquals("https", cfg.getScheme());
+        Assertions.assertFalse(cfg.isCloud());
+        Assertions.assertNull(cfg.getNamespace());
+        main.stop();
+    }
+
+    public void testMainHashicorpWithCloud() {
+        Main main = new Main();
+
+        main.addInitialProperty("camel.vault.hashicorp.token", "1111");
+        main.addInitialProperty("camel.vault.hashicorp.host", "localhost");
+        main.addInitialProperty("camel.vault.hashicorp.port", "8200");
+        main.addInitialProperty("camel.vault.hashicorp.scheme", "https");
+        main.addInitialProperty("camel.vault.hashicorp.cloud", "true");
+        main.addInitialProperty("camel.vault.hashicorp.namespace", "admin");
+        main.start();
+
+        CamelContext context = main.getCamelContext();
+        assertNotNull(context);
+
+        HashicorpVaultConfiguration cfg = 
context.getVaultConfiguration().hashicorp();
+        assertNotNull(cfg);
+
+        Assertions.assertEquals("1111", cfg.getToken());
+        Assertions.assertEquals("localhost", cfg.getHost());
+        Assertions.assertEquals("8200", cfg.getPort());
+        Assertions.assertEquals("https", cfg.getScheme());
+        Assertions.assertTrue(cfg.isCloud());
+        Assertions.assertEquals("admin", cfg.getNamespace());
         main.stop();
     }
 

Reply via email to