This is an automated email from the ASF dual-hosted git repository.
duncangrant pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
The following commit(s) were added to refs/heads/master by this push:
new 7d15614 Support newer versions of Hashicorp Vault
new 1b8ddc6 Merge pull request #1136 from rdowner/hashicorp-vault-updates
7d15614 is described below
commit 7d156145f53ada08bfd86d4590e5179fe312d04d
Author: Richard Downer <[email protected]>
AuthorDate: Wed Jan 13 22:48:03 2021 +0000
Support newer versions of Hashicorp Vault
Tested with Vault version 1.6.0.
---
.../vault/VaultExternalConfigSupplier.java | 25 ++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git
a/core/src/main/java/org/apache/brooklyn/core/config/external/vault/VaultExternalConfigSupplier.java
b/core/src/main/java/org/apache/brooklyn/core/config/external/vault/VaultExternalConfigSupplier.java
index f610e01..864574c 100644
---
a/core/src/main/java/org/apache/brooklyn/core/config/external/vault/VaultExternalConfigSupplier.java
+++
b/core/src/main/java/org/apache/brooklyn/core/config/external/vault/VaultExternalConfigSupplier.java
@@ -55,6 +55,8 @@ public abstract class VaultExternalConfigSupplier extends
AbstractExternalConfig
protected final Gson gson;
protected final String endpoint;
protected final String path;
+ protected final String mountPoint;
+ protected final int version;
protected final String token;
protected final ImmutableMap<String, String> headersWithToken;
@@ -70,6 +72,18 @@ public abstract class VaultExternalConfigSupplier extends
AbstractExternalConfig
if (Strings.isBlank(endpoint)) errors.add("missing configuration
'endpoint'");
path = config.get("path");
if (Strings.isBlank(path)) errors.add("missing configuration 'path'");
+ String version = config.get("kv-api-version");
+ if (Strings.isBlank(version) || "1".equals(version)) {
+ this.version = 1;
+ } else if ("2".equals(version)) {
+ this.version = 2;
+ } else {
+ this.version = -1; // satisfy the static analysis :)
+ errors.add("'kv-api-version' must be either 1 or 2");
+ }
+ mountPoint = config.get("mountPoint");
+ if (Strings.isBlank(mountPoint) && this.version == 2)
errors.add("missing configuration 'mountPoint'");
+ if (!Strings.isBlank(mountPoint) && this.version == 1)
errors.add("'mountPoint' is only applicable when kv-api-version=2");
if (!errors.isEmpty()) {
String message = String.format("Problem configuration Vault
external config supplier '%s': %s",
name, Joiner.on(System.lineSeparator()).join(errors));
@@ -87,8 +101,15 @@ public abstract class VaultExternalConfigSupplier extends
AbstractExternalConfig
@Override
public String get(String key) {
- JsonObject response = apiGet(Urls.mergePaths("v1", path),
headersWithToken);
- return response.getAsJsonObject("data").get(key).getAsString();
+ String urlPath = (version == 1)
+ ? Urls.mergePaths("v1", path)
+ : Urls.mergePaths("v1", mountPoint, "data", path);
+ JsonObject response = apiGet(urlPath, headersWithToken);
+ JsonElement jsonElement = (version == 1)
+ ? response.getAsJsonObject("data").get(key)
+ :
response.getAsJsonObject("data").getAsJsonObject("data").get(key);
+ String asString = jsonElement.getAsString();
+ return asString;
}
/**