You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2023/05/09 13:24:41 UTC
[camel] 01/10: CAMEL-19099 - Camel-Jbang Export: Add a flag to include secret refresh properties in application.properties
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git
commit b79c41dda7f7dd18a6b2b194a4b4407127a0922c
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue May 9 10:22:42 2023 +0200
CAMEL-19099 - Camel-Jbang Export: Add a flag to include secret refresh properties in application.properties
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
.../camel/dsl/jbang/core/commands/Export.java | 5 ++
.../dsl/jbang/core/commands/ExportBaseCommand.java | 6 +++
.../dsl/jbang/core/commands/ExportQuarkus.java | 59 ++++++++++++++++++++++
3 files changed, 70 insertions(+)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index 5f6733512f9..a5f429b66e6 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -62,6 +62,9 @@ public class Export extends ExportBaseCommand {
= "true".equals(prop.getProperty("camel.jbang.gradleWrapper", this.gradleWrapper ? "true" : "false"));
this.exportDir = prop.getProperty("camel.jbang.exportDir", this.exportDir);
this.buildTool = prop.getProperty("camel.jbang.buildTool", this.buildTool);
+ this.secretsRefresh
+ = "true".equals(prop.getProperty("camel.jbang.secretsRefresh", this.secretsRefresh ? "true" : "false"));
+ this.secretsRefreshProviders = prop.getProperty("camel.jbang.secretsRefreshProviders", this.secretsRefreshProviders);
}
if (runtime == null) {
@@ -111,6 +114,8 @@ public class Export extends ExportBaseCommand {
cmd.buildTool = this.buildTool;
cmd.quiet = this.quiet;
cmd.additionalProperties = this.additionalProperties;
+ cmd.secretsRefresh = this.secretsRefresh;
+ cmd.secretsRefreshProviders = this.secretsRefreshProviders;
// run export
return cmd.export();
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 951be63f27a..7cbf579d1e5 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -159,6 +159,12 @@ abstract class ExportBaseCommand extends CamelCommand {
description = "Will be quiet, only print when error occurs")
boolean quiet;
+ @CommandLine.Option(names = { "--secrets-refresh" }, defaultValue = "false", description = "Enabling secrets refresh")
+ protected boolean secretsRefresh;
+
+ @CommandLine.Option(names = { "--secrets-refresh-providers" }, description = "Comma separated list of providers in the set AWS, GCP and Azure, to use in combination with --secrets-refresh option")
+ protected String secretsRefreshProviders;
+
public ExportBaseCommand(CamelJBangMain main) {
super(main);
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
index 0b8c7baa834..76e4e9bf070 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
@@ -26,6 +26,7 @@ import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.StringJoiner;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.apache.camel.catalog.CamelCatalog;
@@ -185,7 +186,65 @@ class ExportQuarkus extends Export {
properties.setProperty("camel.main.routes-include-pattern", routes);
}
}
+ if (secretsRefresh) {
+ if (secretsRefreshProviders != null) {
+ List<String> providers = Pattern.compile("\\,")
+ .splitAsStream(secretsRefreshProviders)
+ .collect(Collectors.toList());
+
+ for (String provider : providers
+ ) {
+ switch (provider) {
+ case "AWS":
+ exportAwsSecretsRefreshProp(properties);
+ break;
+ case "GCP":
+ exportGcpSecretsRefreshProp(properties);
+ break;
+ case "Azure":
+ exportAzureSecretsRefreshProp(properties);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ private void exportAwsSecretsRefreshProp(Properties properties) {
+ properties.setProperty("camel.vault.aws.accessKey", "<accessKey>");
+ properties.setProperty("camel.vault.aws.secretKey", "<secretKey>");
+ properties.setProperty("camel.vault.aws.region", "<region>");
+ properties.setProperty("camel.vault.aws.useDefaultCredentialProvider", "<useDefaultCredentialProvider>");
+ properties.setProperty("camel.vault.aws.refreshEnabled", "true");
+ properties.setProperty("camel.vault.aws.refreshPeriod", "30000");
+ properties.setProperty("camel.vault.aws.secrets", "<secrets>");
+ properties.setProperty("camel.main.context-reload-enabled", "true");
+ }
+
+ private void exportGcpSecretsRefreshProp(Properties properties) {
+ properties.setProperty("camel.vault.gcp.serviceAccountKey", "<serviceAccountKey>");
+ properties.setProperty("camel.vault.gcp.projectId", "<projectId>");
+ properties.setProperty("camel.vault.gcp.useDefaultInstance", "<useDefaultInstance>");
+ properties.setProperty("camel.vault.gcp.refreshEnabled", "true");
+ properties.setProperty("camel.vault.aws.refreshPeriod", "30000");
+ properties.setProperty("camel.vault.gcp.secrets", "<secrets>");
+ properties.setProperty("camel.vault.gcp.subscriptionName", "<subscriptionName>");
+ properties.setProperty("camel.main.context-reload-enabled", "true");
+ }
+ private void exportAzureSecretsRefreshProp(Properties properties) {
+ properties.setProperty("camel.vault.azure.tenantId", "<tenantId>");
+ properties.setProperty("camel.vault.azure.clientId", "<clientId>");
+ properties.setProperty("camel.vault.azure.clientSecret", "<clientSecret>");
+ properties.setProperty("camel.vault.azure.vaultName", "<vaultName>");
+ properties.setProperty("camel.vault.azure.refreshEnabled", "true");
+ properties.setProperty("camel.vault.azure.refreshPeriod", "30000");
+ properties.setProperty("camel.vault.azure.secrets", "<secrets>");
+ properties.setProperty("camel.vault.azure.eventhubConnectionString", "<eventhubConnectionString>");
+ properties.setProperty("camel.vault.azure.blobAccountName", "<blobAccountName>");
+ properties.setProperty("camel.vault.azure.blobContainerName", "<blobContainerName>");
+ properties.setProperty("camel.vault.azure.blobAccessKey", "<blobAccessKey>");
+ properties.setProperty("camel.main.context-reload-enabled", "true");
}
private static String removeScheme(String s) {