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

Reply via email to