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
The following commit(s) were added to refs/heads/main by this push:
new 6d3c0152ab5 CAMEL-21626 - Camel-Hashicorp-Vault: Support Hashicorp
Cloud deployment in properties function (#16872)
6d3c0152ab5 is described below
commit 6d3c0152ab5201eb9ac24961742c64a428a439c6
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Jan 21 12:53:32 2025 +0100
CAMEL-21626 - Camel-Hashicorp-Vault: Support Hashicorp Cloud deployment in
properties function (#16872)
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();
}