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 4d5fcd3ae7663e7b27b271bbed860b37619e7791 Author: Andrea Cosentino <[email protected]> AuthorDate: Fri Apr 1 12:04:41 2022 +0200 CAMEL-17686 - Support ability to load properties from Vault/Secrets cloud services - Azure Key Vault --- .../camel/vault/AzureVaultConfiguration.java | 78 ++++++++++++++++++++ .../AwsVaultConfigurationPropertiesConfigurer.java | 6 ++ ...zureVaultConfigurationPropertiesConfigurer.java | 85 ++++++++++++++++++++++ .../GcpVaultConfigurationPropertiesConfigurer.java | 6 ++ ...he.camel.main.AzureVaultConfigurationProperties | 2 + ...java => AzureVaultConfigurationProperties.java} | 67 ++++++++--------- .../camel/main/VaultConfigurationProperties.java | 1 - 7 files changed, 211 insertions(+), 34 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/vault/AzureVaultConfiguration.java b/core/camel-api/src/main/java/org/apache/camel/vault/AzureVaultConfiguration.java new file mode 100644 index 0000000..e5f74ff --- /dev/null +++ b/core/camel-api/src/main/java/org/apache/camel/vault/AzureVaultConfiguration.java @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.vault; + +import org.apache.camel.spi.Metadata; + +/** + * Configuration for access to Azure Key Vault. + */ +public class AzureVaultConfiguration extends VaultConfiguration { + + @Metadata + private String vaultName; + @Metadata(secret = true) + private String clientId; + @Metadata(secret = true) + private String clientSecret; + @Metadata(secret = true) + private String tenantId; + + /* + * The vault Name in Azure Key Vault + */ + public String getVaultName() { + return vaultName; + } + + public void setVaultName(String vaultName) { + this.vaultName = vaultName; + } + + /* + * The client Id for accessing Azure Key Vault + */ + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + /* + * The client Secret for accessing Azure Key Vault + */ + public String getClientSecret() { + return clientSecret; + } + + public void setClientSecret(String clientSecret) { + this.clientSecret = clientSecret; + } + + /* + * The Tenant Id for accessing Azure Key Vault + */ + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } +} 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 1727ab3..a2eec11 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 @@ -25,6 +25,8 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel. case "AccessKey": target.setAccessKey(property(camelContext, java.lang.String.class, value)); return true; case "awsvaultconfiguration": 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 "defaultcredentialsprovider": case "DefaultCredentialsProvider": target.setDefaultCredentialsProvider(property(camelContext, boolean.class, value)); return true; case "gcpvaultconfiguration": @@ -44,6 +46,8 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel. case "AccessKey": return java.lang.String.class; case "awsvaultconfiguration": case "AwsVaultConfiguration": return org.apache.camel.vault.AwsVaultConfiguration.class; + case "azurevaultconfiguration": + case "AzureVaultConfiguration": return org.apache.camel.vault.AzureVaultConfiguration.class; case "defaultcredentialsprovider": case "DefaultCredentialsProvider": return boolean.class; case "gcpvaultconfiguration": @@ -64,6 +68,8 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel. case "AccessKey": return target.getAccessKey(); case "awsvaultconfiguration": case "AwsVaultConfiguration": return target.getAwsVaultConfiguration(); + case "azurevaultconfiguration": + case "AzureVaultConfiguration": return target.getAzureVaultConfiguration(); case "defaultcredentialsprovider": case "DefaultCredentialsProvider": return target.isDefaultCredentialsProvider(); case "gcpvaultconfiguration": 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 new file mode 100644 index 0000000..53a4d8e --- /dev/null +++ b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java @@ -0,0 +1,85 @@ +/* Generated by camel build tools - do NOT edit this file! */ +package org.apache.camel.main; + +import java.util.Map; + +import org.apache.camel.CamelContext; +import org.apache.camel.spi.ExtendedPropertyConfigurerGetter; +import org.apache.camel.spi.PropertyConfigurerGetter; +import org.apache.camel.spi.ConfigurerStrategy; +import org.apache.camel.spi.GeneratedPropertyConfigurer; +import org.apache.camel.util.CaseInsensitiveMap; +import org.apache.camel.main.AzureVaultConfigurationProperties; + +/** + * Generated by camel build tools - do NOT edit this file! + */ +@SuppressWarnings("unchecked") +public class AzureVaultConfigurationPropertiesConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter { + + @Override + public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { + org.apache.camel.main.AzureVaultConfigurationProperties target = (org.apache.camel.main.AzureVaultConfigurationProperties) obj; + switch (ignoreCase ? name.toLowerCase() : name) { + case "awsvaultconfiguration": + 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 "clientid": + case "ClientId": target.setClientId(property(camelContext, java.lang.String.class, value)); return true; + case "clientsecret": + 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 "tenantid": + case "TenantId": target.setTenantId(property(camelContext, java.lang.String.class, value)); return true; + case "vaultname": + case "VaultName": target.setVaultName(property(camelContext, java.lang.String.class, value)); return true; + default: return false; + } + } + + @Override + public Class<?> getOptionType(String name, boolean ignoreCase) { + switch (ignoreCase ? name.toLowerCase() : name) { + case "awsvaultconfiguration": + case "AwsVaultConfiguration": return org.apache.camel.vault.AwsVaultConfiguration.class; + case "azurevaultconfiguration": + case "AzureVaultConfiguration": return org.apache.camel.vault.AzureVaultConfiguration.class; + case "clientid": + case "ClientId": return java.lang.String.class; + case "clientsecret": + case "ClientSecret": return java.lang.String.class; + case "gcpvaultconfiguration": + case "GcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class; + case "tenantid": + case "TenantId": return java.lang.String.class; + case "vaultname": + case "VaultName": return java.lang.String.class; + default: return null; + } + } + + @Override + public Object getOptionValue(Object obj, String name, boolean ignoreCase) { + org.apache.camel.main.AzureVaultConfigurationProperties target = (org.apache.camel.main.AzureVaultConfigurationProperties) obj; + switch (ignoreCase ? name.toLowerCase() : name) { + case "awsvaultconfiguration": + case "AwsVaultConfiguration": return target.getAwsVaultConfiguration(); + case "azurevaultconfiguration": + case "AzureVaultConfiguration": return target.getAzureVaultConfiguration(); + case "clientid": + case "ClientId": return target.getClientId(); + case "clientsecret": + case "ClientSecret": return target.getClientSecret(); + case "gcpvaultconfiguration": + case "GcpVaultConfiguration": return target.getGcpVaultConfiguration(); + case "tenantid": + case "TenantId": return target.getTenantId(); + case "vaultname": + case "VaultName": return target.getVaultName(); + default: return null; + } + } +} + 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 83b3680..617c14f 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 @@ -23,6 +23,8 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel. switch (ignoreCase ? name.toLowerCase() : name) { case "awsvaultconfiguration": 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 "gcpvaultconfiguration": case "GcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true; case "projectid": @@ -40,6 +42,8 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel. switch (ignoreCase ? name.toLowerCase() : name) { case "awsvaultconfiguration": case "AwsVaultConfiguration": return org.apache.camel.vault.AwsVaultConfiguration.class; + case "azurevaultconfiguration": + case "AzureVaultConfiguration": return org.apache.camel.vault.AzureVaultConfiguration.class; case "gcpvaultconfiguration": case "GcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class; case "projectid": @@ -58,6 +62,8 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel. switch (ignoreCase ? name.toLowerCase() : name) { case "awsvaultconfiguration": case "AwsVaultConfiguration": return target.getAwsVaultConfiguration(); + case "azurevaultconfiguration": + case "AzureVaultConfiguration": return target.getAzureVaultConfiguration(); case "gcpvaultconfiguration": case "GcpVaultConfiguration": return target.getGcpVaultConfiguration(); case "projectid": diff --git a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.AzureVaultConfigurationProperties b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.AzureVaultConfigurationProperties new file mode 100644 index 0000000..70011a4 --- /dev/null +++ b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.AzureVaultConfigurationProperties @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.main.AzureVaultConfigurationPropertiesConfigurer 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/AzureVaultConfigurationProperties.java similarity index 55% copy from core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java copy to core/camel-main/src/main/java/org/apache/camel/main/AzureVaultConfigurationProperties.java index 5fc870f..23d4c0b 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/AzureVaultConfigurationProperties.java @@ -17,17 +17,18 @@ package org.apache.camel.main; import org.apache.camel.spi.BootstrapCloseable; +import org.apache.camel.spi.Configurer; import org.apache.camel.vault.AzureVaultConfiguration; -import org.apache.camel.vault.VaultConfiguration; -public class VaultConfigurationProperties extends VaultConfiguration implements BootstrapCloseable { +/** + * Configuration for access to Azure Key Vault Secret. + */ +@Configurer(bootstrap = true) +public class AzureVaultConfigurationProperties extends AzureVaultConfiguration implements BootstrapCloseable { private MainConfigurationProperties parent; - private AwsVaultConfigurationProperties aws; - private GcpVaultConfigurationProperties gcp; - private AzureVaultConfigurationProperties azure; - public VaultConfigurationProperties(MainConfigurationProperties parent) { + public AzureVaultConfigurationProperties(MainConfigurationProperties parent) { this.parent = parent; } @@ -38,15 +39,6 @@ public class VaultConfigurationProperties extends VaultConfiguration implements @Override public void close() { parent = null; - if (aws != null) { - aws.close(); - } - if (gcp != null) { - gcp.close(); - } - if (azure != null) { - azure.close(); - } } // getter and setters @@ -57,27 +49,36 @@ public class VaultConfigurationProperties extends VaultConfiguration implements // fluent builders // -------------------------------------------------------------- - @Override - public AwsVaultConfigurationProperties aws() { - if (aws == null) { - aws = new AwsVaultConfigurationProperties(parent); - } - return aws; + /** + * The Vault Name + */ + public AzureVaultConfigurationProperties withVaultName(String vaultName) { + setVaultName(vaultName); + return this; } - @Override - public GcpVaultConfigurationProperties gcp() { - if (gcp == null) { - gcp = new GcpVaultConfigurationProperties(parent); - } - return gcp; + /** + * The Azure Key Vault Client ID + */ + public AzureVaultConfigurationProperties withClientId(String clientId) { + setClientId(clientId); + return this; } - @Override - public AzureVaultConfigurationProperties azure() { - if (azure == null) { - azure = new AzureVaultConfigurationProperties(parent); - } - return azure; + /** + * The Azure Key Vault Client Secret + */ + public AzureVaultConfigurationProperties withClientSecret(String clientSecret) { + setClientSecret(clientSecret); + return this; } + + /** + * The Azure Key Vault Tenant Id + */ + public AzureVaultConfigurationProperties withTenantId(String tenantId) { + setTenantId(tenantId); + return this; + } + } 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 5fc870f..3e93d5d 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,7 +17,6 @@ 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 {
