This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 6d9368f5eb8cf7abd8806749013c4b2598998060 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Wed Jul 13 18:29:33 2022 +0200 CAMEL-17688 - Support ability to load properties from Vault/Secrets cloud services - Hashicorp Vault --- .../hashicorp/vault/HashicorpVaultProducer.java | 1 + .../org/apache/camel/vault/VaultConfiguration.java | 19 ++++++++++++++++ .../AwsVaultConfigurationPropertiesConfigurer.java | 6 ++++++ ...zureVaultConfigurationPropertiesConfigurer.java | 6 ++++++ .../GcpVaultConfigurationPropertiesConfigurer.java | 6 ++++++ .../org/apache/camel/main/BaseMainSupport.java | 3 +++ .../camel/main/VaultConfigurationProperties.java | 12 +++++++++++ .../java/org/apache/camel/main/MainVaultTest.java | 25 ++++++++++++++++++++++ 8 files changed, 78 insertions(+) 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 edc7c5722cd..bf9200f344e 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 @@ -107,6 +107,7 @@ public class HashicorpVaultProducer extends DefaultProducer { exchange.getMessage().setBody(secretsList); } + @Override public HashicorpVaultEndpoint getEndpoint() { return (HashicorpVaultEndpoint) super.getEndpoint(); diff --git a/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java b/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java index 9c71d093156..36ad27af4a7 100644 --- a/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java +++ b/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java @@ -24,6 +24,7 @@ public class VaultConfiguration { private AwsVaultConfiguration aws; private GcpVaultConfiguration gcp; private AzureVaultConfiguration azure; + private HashicorpVaultConfiguration hashicorp; /** * AWS Vault Configuration @@ -55,6 +56,16 @@ public class VaultConfiguration { return azure; } + /** + * Hashicorp Vault Configuration + */ + public HashicorpVaultConfiguration hashicorp() { + if (hashicorp == null) { + hashicorp = new HashicorpVaultConfiguration(); + } + return hashicorp; + } + public AwsVaultConfiguration getAwsVaultConfiguration() { return aws; } @@ -78,4 +89,12 @@ public class VaultConfiguration { public void setAzureVaultConfiguration(AzureVaultConfiguration azure) { this.azure = azure; } + + public HashicorpVaultConfiguration getHashicorp() { + return hashicorp; + } + + public void setHashicorp(HashicorpVaultConfiguration hashicorp) { + this.hashicorp = hashicorp; + } } diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java index a2eec112740..bb4e8e1ddda 100644 --- a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java +++ b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java @@ -31,6 +31,8 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel. case "DefaultCredentialsProvider": target.setDefaultCredentialsProvider(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 "hashicorp": + case "Hashicorp": target.setHashicorp(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true; case "region": case "Region": target.setRegion(property(camelContext, java.lang.String.class, value)); return true; case "secretkey": @@ -52,6 +54,8 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel. case "DefaultCredentialsProvider": return boolean.class; case "gcpvaultconfiguration": case "GcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class; + case "hashicorp": + case "Hashicorp": return org.apache.camel.vault.HashicorpVaultConfiguration.class; case "region": case "Region": return java.lang.String.class; case "secretkey": @@ -74,6 +78,8 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel. case "DefaultCredentialsProvider": return target.isDefaultCredentialsProvider(); case "gcpvaultconfiguration": case "GcpVaultConfiguration": return target.getGcpVaultConfiguration(); + case "hashicorp": + case "Hashicorp": return target.getHashicorp(); case "region": case "Region": return target.getRegion(); case "secretkey": diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java index 53a4d8e6c44..2a3c93c9d90 100644 --- a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java +++ b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java @@ -31,6 +31,8 @@ public class AzureVaultConfigurationPropertiesConfigurer extends org.apache.came case "ClientSecret": target.setClientSecret(property(camelContext, java.lang.String.class, value)); return true; case "gcpvaultconfiguration": case "GcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true; + case "hashicorp": + case "Hashicorp": target.setHashicorp(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true; case "tenantid": case "TenantId": target.setTenantId(property(camelContext, java.lang.String.class, value)); return true; case "vaultname": @@ -52,6 +54,8 @@ public class AzureVaultConfigurationPropertiesConfigurer extends org.apache.came case "ClientSecret": return java.lang.String.class; case "gcpvaultconfiguration": case "GcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class; + case "hashicorp": + case "Hashicorp": return org.apache.camel.vault.HashicorpVaultConfiguration.class; case "tenantid": case "TenantId": return java.lang.String.class; case "vaultname": @@ -74,6 +78,8 @@ public class AzureVaultConfigurationPropertiesConfigurer extends org.apache.came case "ClientSecret": return target.getClientSecret(); case "gcpvaultconfiguration": case "GcpVaultConfiguration": return target.getGcpVaultConfiguration(); + case "hashicorp": + case "Hashicorp": return target.getHashicorp(); case "tenantid": case "TenantId": return target.getTenantId(); case "vaultname": diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java index 617c14fd6b8..d0cffad51ec 100644 --- a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java +++ b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java @@ -27,6 +27,8 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel. case "AzureVaultConfiguration": target.setAzureVaultConfiguration(property(camelContext, org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true; case "gcpvaultconfiguration": case "GcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true; + case "hashicorp": + case "Hashicorp": target.setHashicorp(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true; case "projectid": case "ProjectId": target.setProjectId(property(camelContext, java.lang.String.class, value)); return true; case "serviceaccountkey": @@ -46,6 +48,8 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel. case "AzureVaultConfiguration": return org.apache.camel.vault.AzureVaultConfiguration.class; case "gcpvaultconfiguration": case "GcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class; + case "hashicorp": + case "Hashicorp": return org.apache.camel.vault.HashicorpVaultConfiguration.class; case "projectid": case "ProjectId": return java.lang.String.class; case "serviceaccountkey": @@ -66,6 +70,8 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel. case "AzureVaultConfiguration": return target.getAzureVaultConfiguration(); case "gcpvaultconfiguration": case "GcpVaultConfiguration": return target.getGcpVaultConfiguration(); + case "hashicorp": + case "Hashicorp": return target.getHashicorp(); case "projectid": case "ProjectId": return target.getProjectId(); case "serviceaccountkey": diff --git a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java index ed6632a1bca..81a387a454c 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java @@ -1267,6 +1267,9 @@ public abstract class BaseMainSupport extends BaseService { if ("azure".equalsIgnoreCase(name)) { target = target.azure(); } + if ("hashicorp".equalsIgnoreCase(name)) { + target = target.hashicorp(); + } // configure all the properties on the vault at once (to ensure they are configured in right order) OrderedLocationProperties config = MainHelper.extractProperties(properties, name + "."); setPropertiesOnTarget(camelContext, target, config, "camel.vault." + name + ".", failIfNotSet, true, diff --git a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java index 3e93d5d262b..c01751f2f65 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java @@ -25,6 +25,7 @@ public class VaultConfigurationProperties extends VaultConfiguration implements private AwsVaultConfigurationProperties aws; private GcpVaultConfigurationProperties gcp; private AzureVaultConfigurationProperties azure; + private HashicorpVaultConfigurationProperties hashicorp; public VaultConfigurationProperties(MainConfigurationProperties parent) { this.parent = parent; @@ -46,6 +47,9 @@ public class VaultConfigurationProperties extends VaultConfiguration implements if (azure != null) { azure.close(); } + if (hashicorp != null) { + hashicorp.close(); + } } // getter and setters @@ -79,4 +83,12 @@ public class VaultConfigurationProperties extends VaultConfiguration implements } return azure; } + + @Override + public HashicorpVaultConfigurationProperties hashicorp() { + if (hashicorp == null) { + hashicorp = new HashicorpVaultConfigurationProperties(parent); + } + return hashicorp; + } } 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 d8fb83a5ca0..2fa3b20d2e3 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 @@ -20,6 +20,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.vault.AwsVaultConfiguration; import org.apache.camel.vault.AzureVaultConfiguration; import org.apache.camel.vault.GcpVaultConfiguration; +import org.apache.camel.vault.HashicorpVaultConfiguration; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -169,4 +170,28 @@ public class MainVaultTest { main.stop(); } + @Test + public void testMainHashicorp() throws Exception { + Main main = new Main(); + + main.addInitialProperty("camel.vault.hashicorp.token", "1111"); + main.addInitialProperty("camel.vault.hashicorp.engine", "sec"); + main.addInitialProperty("camel.vault.hashicorp.host", "localhost"); + main.addInitialProperty("camel.vault.hashicorp.port", "8200"); + main.addInitialProperty("camel.vault.hashicorp.scheme", "https"); + main.start(); + + CamelContext context = main.getCamelContext(); + assertNotNull(context); + + HashicorpVaultConfiguration cfg = context.getVaultConfiguration().hashicorp(); + assertNotNull(cfg); + + Assertions.assertEquals("1111", cfg.getToken()); + Assertions.assertEquals("sec", cfg.getEngine()); + Assertions.assertEquals("localhost", cfg.getHost()); + Assertions.assertEquals("8200", cfg.getPort()); + Assertions.assertEquals("https", cfg.getScheme()); + main.stop(); + } }