summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-11-21 11:28:13 +0100
committerValerij Fredriksen <valerijf@oath.com>2018-11-21 11:28:13 +0100
commitad6ef7222ab14dc300f7eeb9ce23f941c3282630 (patch)
tree9f8c4b45d5ac91cc7562d2e87d2667aee78c326e /node-admin
parentf67aa7bfa1553d8cc19ce4eef96f42ff8c31a320 (diff)
Generate config server URI on the fly
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java33
1 files changed, 10 insertions, 23 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java
index ec911cc5600..2f7eb25f824 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/ConfigServerInfo.java
@@ -4,12 +4,10 @@ package com.yahoo.vespa.hosted.node.admin.component;
import com.yahoo.vespa.athenz.api.AthenzService;
import java.net.URI;
-import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
-import java.util.Map;
import java.util.function.Function;
-
-import static java.util.stream.Collectors.toMap;
+import java.util.stream.Collectors;
/**
* Information necessary to e.g. establish communication with the config servers
@@ -19,15 +17,19 @@ import static java.util.stream.Collectors.toMap;
public class ConfigServerInfo {
private final List<String> configServerHostNames;
private final URI loadBalancerEndpoint;
- private final Map<String, URI> configServerURIs;
private final AthenzService configServerIdentity;
+ private final Function<String, URI> configServerHostnameToUriMapper;
+ private final List<URI> configServerURIs;
public ConfigServerInfo(String loadBalancerHostName, List<String> configServerHostNames,
String scheme, int port, AthenzService configServerAthenzIdentity) {
this.configServerHostNames = configServerHostNames;
- this.configServerURIs = createConfigServerUris(scheme, configServerHostNames, port);
this.loadBalancerEndpoint = createLoadBalancerEndpoint(loadBalancerHostName, scheme, port);
this.configServerIdentity = configServerAthenzIdentity;
+ this.configServerHostnameToUriMapper = hostname -> URI.create(scheme + "://" + hostname + ":" + port);
+ this.configServerURIs = configServerHostNames.stream()
+ .map(configServerHostnameToUriMapper)
+ .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
}
private static URI createLoadBalancerEndpoint(String loadBalancerHost, String scheme, int port) {
@@ -39,16 +41,11 @@ public class ConfigServerInfo {
}
public List<URI> getConfigServerUris() {
- return new ArrayList<>(configServerURIs.values());
+ return configServerURIs;
}
public URI getConfigServerUri(String hostname) {
- URI uri = configServerURIs.get(hostname);
- if (uri == null) {
- throw new IllegalArgumentException("There is no config server '" + hostname + "'");
- }
-
- return uri;
+ return configServerHostnameToUriMapper.apply(hostname);
}
public URI getLoadBalancerEndpoint() {
@@ -58,14 +55,4 @@ public class ConfigServerInfo {
public AthenzService getConfigServerIdentity() {
return configServerIdentity;
}
-
- private static Map<String, URI> createConfigServerUris(
- String scheme,
- List<String> configServerHosts,
- int port) {
- return configServerHosts.stream().collect(toMap(
- Function.identity(),
- hostname -> URI.create(scheme + "://" + hostname + ":" + port)));
- }
-
}