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();
+    }
+
 }

Reply via email to