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 54b7d6c1501d3391d5a2b2ad01c42a392f8ffe02 Author: Andrea Cosentino <[email protected]> AuthorDate: Fri Apr 1 11:50:42 2022 +0200 CAMEL-17686 - Support ability to load properties from Vault/Secrets cloud services - Azure Key Vault --- .../org/apache/camel/vault/VaultConfiguration.java | 19 +++++++++ .../org/apache/camel/main/BaseMainSupport.java | 3 ++ .../camel/main/VaultConfigurationProperties.java | 13 ++++++ .../java/org/apache/camel/main/MainVaultTest.java | 49 ++++++++++++++++++++++ 4 files changed, 84 insertions(+) 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 d630ea2..9c71d09 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 @@ -23,6 +23,7 @@ public class VaultConfiguration { private AwsVaultConfiguration aws; private GcpVaultConfiguration gcp; + private AzureVaultConfiguration azure; /** * AWS Vault Configuration @@ -44,6 +45,16 @@ public class VaultConfiguration { return gcp; } + /** + * Azure Vault Configuration + */ + public AzureVaultConfiguration azure() { + if (azure == null) { + azure = new AzureVaultConfiguration(); + } + return azure; + } + public AwsVaultConfiguration getAwsVaultConfiguration() { return aws; } @@ -59,4 +70,12 @@ public class VaultConfiguration { public void setGcpVaultConfiguration(GcpVaultConfiguration gcp) { this.gcp = gcp; } + + public AzureVaultConfiguration getAzureVaultConfiguration() { + return azure; + } + + public void setAzureVaultConfiguration(AzureVaultConfiguration azure) { + this.azure = azure; + } } 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 528d31d..9f4b5ac 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 @@ -1209,6 +1209,9 @@ public abstract class BaseMainSupport extends BaseService { if ("gcp".equalsIgnoreCase(name)) { target = target.gcp(); } + if ("azure".equalsIgnoreCase(name)) { + target = target.azure(); + } // 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 4e53b86..5fc870f 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 @@ -17,6 +17,7 @@ package org.apache.camel.main; import org.apache.camel.spi.BootstrapCloseable; +import org.apache.camel.vault.AzureVaultConfiguration; import org.apache.camel.vault.VaultConfiguration; public class VaultConfigurationProperties extends VaultConfiguration implements BootstrapCloseable { @@ -24,6 +25,7 @@ public class VaultConfigurationProperties extends VaultConfiguration implements private MainConfigurationProperties parent; private AwsVaultConfigurationProperties aws; private GcpVaultConfigurationProperties gcp; + private AzureVaultConfigurationProperties azure; public VaultConfigurationProperties(MainConfigurationProperties parent) { this.parent = parent; @@ -42,6 +44,9 @@ public class VaultConfigurationProperties extends VaultConfiguration implements if (gcp != null) { gcp.close(); } + if (azure != null) { + azure.close(); + } } // getter and setters @@ -67,4 +72,12 @@ public class VaultConfigurationProperties extends VaultConfiguration implements } return gcp; } + + @Override + public AzureVaultConfigurationProperties azure() { + if (azure == null) { + azure = new AzureVaultConfigurationProperties(parent); + } + return azure; + } } 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 cd4bceb..d8fb83a 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 @@ -18,6 +18,7 @@ package org.apache.camel.main; 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.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -120,4 +121,52 @@ public class MainVaultTest { main.stop(); } + @Test + public void testMainAzure() throws Exception { + Main main = new Main(); + + main.addInitialProperty("camel.vault.azure.vaultName", "vault"); + main.addInitialProperty("camel.vault.azure.clientId", "id1"); + main.addInitialProperty("camel.vault.azure.clientSecret", "secret1"); + main.addInitialProperty("camel.vault.azure.tenantId", "tenant1"); + main.start(); + + CamelContext context = main.getCamelContext(); + assertNotNull(context); + + AzureVaultConfiguration cfg = context.getVaultConfiguration().azure(); + assertNotNull(cfg); + + Assertions.assertEquals("vault", cfg.getVaultName()); + Assertions.assertEquals("id1", cfg.getClientId()); + Assertions.assertEquals("secret1", cfg.getClientSecret()); + Assertions.assertEquals("tenant1", cfg.getTenantId()); + main.stop(); + } + + @Test + public void testMainAzureFluent() throws Exception { + Main main = new Main(); + main.configure().vault().azure() + .withVaultName("vault") + .withClientId("id1") + .withClientSecret("secret1") + .withTenantId("tenant1") + .end(); + + main.start(); + + CamelContext context = main.getCamelContext(); + assertNotNull(context); + + AzureVaultConfiguration cfg = context.getVaultConfiguration().azure(); + assertNotNull(cfg); + + Assertions.assertEquals("vault", cfg.getVaultName()); + Assertions.assertEquals("id1", cfg.getClientId()); + Assertions.assertEquals("secret1", cfg.getClientSecret()); + Assertions.assertEquals("tenant1", cfg.getTenantId()); + main.stop(); + } + }
