From c9e8b22bd121ca94ff6ded324fdb8a078531fa9b Mon Sep 17 00:00:00 2001 From: Valentin Aitken Date: Sat, 22 Jul 2017 17:36:08 +0300 Subject: [PATCH] Useful getDataAsStringMap for VaultExternalConfigSupplier `getDataAsStringMap` allows obtaining vault data with single call. --- .../external/vault/VaultExternalConfigSupplier.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 f58dbc5d53..23f51399c8 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 @@ -21,7 +21,10 @@ import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import com.google.common.collect.Maps; +import com.google.gson.JsonElement; import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.core.config.external.AbstractExternalConfigSupplier; import org.apache.brooklyn.util.exceptions.Exceptions; @@ -89,6 +92,16 @@ public String get(String key) { return response.getAsJsonObject("data").get(key).getAsString(); } + /** + * Obtains data stored in path. + */ + public Map getDataAsStringMap() { + JsonObject response = apiGet(Urls.mergePaths("v1", path), headersWithToken); + Map dataMap = response.getAsJsonObject("data").entrySet().stream() + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + return Maps.transformValues(dataMap, jsonElement -> jsonElement.getAsString()); + } + protected JsonObject apiGet(String path, ImmutableMap headers) { try { String uri = Urls.mergePaths(endpoint, path);