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 3e8b7ed56511c502617152235576e34ffbbccd5d Author: Andrea Cosentino <[email protected]> AuthorDate: Tue Jul 12 08:19:39 2022 +0200 CAMEL-18208 - vault: allow to retrieve a specific secret version/revision - Google Secret Manager --- .../GoogleSecretManagerPropertiesFunction.java | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java index b5d7a6a4470..cc39a04ce2b 100644 --- a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java +++ b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java @@ -130,21 +130,39 @@ public class GoogleSecretManagerPropertiesFunction extends ServiceSupport implem String subkey = null; String returnValue = null; String defaultValue = null; + String version = null; if (remainder.contains("/")) { key = StringHelper.before(remainder, "/"); subkey = StringHelper.after(remainder, "/"); defaultValue = StringHelper.after(subkey, ":"); + if (ObjectHelper.isNotEmpty(defaultValue)) { + if (defaultValue.contains("@")) { + version = StringHelper.after(defaultValue, "@"); + defaultValue = StringHelper.before(defaultValue, "@"); + } + } if (subkey.contains(":")) { subkey = StringHelper.before(subkey, ":"); } + if (subkey.contains("@")) { + version = StringHelper.after(subkey, "@"); + subkey = StringHelper.before(subkey, "@"); + } } else if (remainder.contains(":")) { key = StringHelper.before(remainder, ":"); defaultValue = StringHelper.after(remainder, ":"); + if (remainder.contains("@")) { + version = StringHelper.after(remainder, "@"); + defaultValue = StringHelper.before(defaultValue, "@"); + } + } else { + key = StringHelper.before(remainder, "@"); + version = StringHelper.after(remainder, "@"); } if (key != null) { try { - returnValue = getSecretFromSource(key, subkey, defaultValue); + returnValue = getSecretFromSource(key, subkey, defaultValue, version); } catch (JsonProcessingException e) { throw new RuntimeCamelException("Something went wrong while recovering " + key + " from vault"); } @@ -154,11 +172,11 @@ public class GoogleSecretManagerPropertiesFunction extends ServiceSupport implem } private String getSecretFromSource( - String key, String subkey, String defaultValue) + String key, String subkey, String defaultValue, String version) throws JsonProcessingException { String returnValue = null; try { - SecretVersionName secretVersionName = SecretVersionName.of(projectId, key, "latest"); + SecretVersionName secretVersionName = SecretVersionName.of(projectId, key, (ObjectHelper.isNotEmpty(version) ? version:"latest")); AccessSecretVersionResponse response = client.accessSecretVersion(secretVersionName); if (ObjectHelper.isNotEmpty(response)) { returnValue = response.getPayload().getData().toStringUtf8();
