diff options
author | Håkon Hallingstad <hakon@oath.com> | 2018-01-22 23:58:24 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2018-01-22 23:58:24 +0100 |
commit | 0380c543e056a0e35c6b78b7481e90717aa5556c (patch) | |
tree | a954c73e02ce3f4850fe2d0fb8f85135030233d5 /node-admin | |
parent | 0fb82669511e8b9ae7b292bf037be6b124afe2e7 (diff) |
Fixing merge conflicts
Diffstat (limited to 'node-admin')
6 files changed, 56 insertions, 33 deletions
diff --git a/node-admin/src/main/application/services.xml b/node-admin/src/main/application/services.xml index e73c13dfa8f..da782363508 100644 --- a/node-admin/src/main/application/services.xml +++ b/node-admin/src/main/application/services.xml @@ -15,11 +15,6 @@ <isRunningLocally>false</isRunningLocally> </config> - <config name="vespa.hosted.node.admin.node-admin"> - <isRunningLocally>false</isRunningLocally> - <restartOnDeploy>true</restartOnDeploy> - </config> - <nodes type="host"/> <preprocess:include file="variant.xml" required="false"/> diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/DockerAdminComponent.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/DockerAdminComponent.java index 67411e35ef4..db0313583db 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/DockerAdminComponent.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/DockerAdminComponent.java @@ -6,6 +6,7 @@ import com.yahoo.net.HostName; import com.yahoo.system.ProcessExecuter; import com.yahoo.vespa.hosted.dockerapi.Docker; import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; +import com.yahoo.vespa.hosted.node.admin.ConfigServerConfig; import com.yahoo.vespa.hosted.node.admin.component.AdminComponent; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperationsImpl; @@ -33,6 +34,7 @@ public class DockerAdminComponent implements AdminComponent { private static final Duration NODE_AGENT_SCAN_INTERVAL = Duration.ofSeconds(30); private static final Duration NODE_ADMIN_CONVERGE_STATE_INTERVAL = Duration.ofSeconds(30); + private final ConfigServerConfig configServerConfig; private final NodeAdminConfig config; private final Docker docker; private final MetricReceiverWrapper metricReceiver; @@ -42,10 +44,12 @@ public class DockerAdminComponent implements AdminComponent { private Optional<NodeAdminStateUpdaterImpl> nodeAdminStateUpdater = Optional.empty(); - public DockerAdminComponent(NodeAdminConfig config, + public DockerAdminComponent(ConfigServerConfig configServerConfig, + NodeAdminConfig config, Docker docker, MetricReceiverWrapper metricReceiver, ClassLocking classLocking) { + this.configServerConfig = configServerConfig; this.config = config; this.docker = docker; this.metricReceiver = metricReceiver; @@ -58,7 +62,7 @@ public class DockerAdminComponent implements AdminComponent { return; } - Environment environment = new Environment(); + Environment environment = new Environment(configServerConfig); requestExecutor = ConfigServerHttpRequestExecutor.create( environment.getConfigServerUris(), environment.getKeyStoreOptions(), environment.getTrustStoreOptions()); NodeRepository nodeRepository = new NodeRepositoryImpl(requestExecutor); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminMain.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminMain.java index 8639e68b347..09e35b5d993 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminMain.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminMain.java @@ -8,6 +8,7 @@ import com.yahoo.log.LogLevel; import com.yahoo.vespa.defaults.Defaults; import com.yahoo.vespa.hosted.dockerapi.Docker; import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; +import com.yahoo.vespa.hosted.node.admin.ConfigServerConfig; import com.yahoo.vespa.hosted.node.admin.component.AdminComponent; import com.yahoo.vespa.hosted.node.admin.provider.NodeAdminStateUpdater; @@ -28,6 +29,7 @@ public class NodeAdminMain implements AutoCloseable { private static final Logger logger = Logger.getLogger(NodeAdminMain.class.getName()); private final ComponentRegistry<AdminComponent> adminRegistry; + private final ConfigServerConfig configServerConfig; private final Docker docker; private final MetricReceiverWrapper metricReceiver; private final ClassLocking classLocking; @@ -35,10 +37,12 @@ public class NodeAdminMain implements AutoCloseable { private AdminComponent mainAdminComponent = null; public NodeAdminMain(ComponentRegistry<AdminComponent> adminRegistry, + ConfigServerConfig configServerConfig, Docker docker, MetricReceiverWrapper metricReceiver, ClassLocking classLocking) { this.adminRegistry = adminRegistry; + this.configServerConfig = configServerConfig; this.docker = docker; this.metricReceiver = metricReceiver; this.classLocking = classLocking; @@ -57,7 +61,7 @@ public class NodeAdminMain implements AutoCloseable { private AdminComponent selectAdminComponent(NodeAdminConfig config) { if (config.mainComponent == null) { - return new DockerAdminComponent(config, docker, metricReceiver, classLocking); + return new DockerAdminComponent(configServerConfig, config, docker, metricReceiver, classLocking); } logger.log(LogLevel.INFO, () -> { diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java index 3e42549058a..a5146fcae09 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java @@ -7,6 +7,7 @@ import com.yahoo.concurrent.classlock.ClassLocking; import com.yahoo.container.di.componentgraph.Provider; import com.yahoo.vespa.hosted.dockerapi.Docker; import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; +import com.yahoo.vespa.hosted.node.admin.ConfigServerConfig; import com.yahoo.vespa.hosted.node.admin.component.AdminComponent; import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminMain; @@ -15,14 +16,11 @@ public class NodeAdminProvider implements Provider<NodeAdminStateUpdater> { @Inject public NodeAdminProvider(ComponentRegistry<AdminComponent> adminRegistry, + ConfigServerConfig configServerConfig, Docker docker, MetricReceiverWrapper metricReceiver, ClassLocking classLocking) { - nodeAdminMain = new NodeAdminMain( - adminRegistry, - docker, - metricReceiver, - classLocking); + nodeAdminMain = new NodeAdminMain(adminRegistry, configServerConfig, docker, metricReceiver, classLocking); nodeAdminMain.start(); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/Environment.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/Environment.java index dcde950c4d3..72996e438b7 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/Environment.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/Environment.java @@ -2,8 +2,9 @@ package com.yahoo.vespa.hosted.node.admin.util; import com.google.common.base.Strings; -import com.yahoo.net.HostName; +import com.yahoo.vespa.defaults.Defaults; import com.yahoo.vespa.hosted.dockerapi.ContainerName; +import com.yahoo.vespa.hosted.node.admin.ConfigServerConfig; import java.net.InetAddress; import java.net.URI; @@ -31,15 +32,10 @@ public class Environment { private static final DateFormat filenameFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); public static final String APPLICATION_STORAGE_CLEANUP_PATH_PREFIX = "cleanup_"; - private static final String ENV_CONFIGSERVER_SCHEME = "CONFIG_SERVER_SCHEME"; - private static final String ENV_CONFIGSERVER_HOSTS = "CONFIG_SERVER_ADDRESS"; - private static final String ENV_CONFIGSERVER_PORT = "CONFIG_SERVER_PORT"; private static final String ENVIRONMENT = "ENVIRONMENT"; private static final String REGION = "REGION"; private static final String LOGSTASH_NODES = "LOGSTASH_NODES"; private static final String COREDUMP_FEED_ENDPOINT = "COREDUMP_FEED_ENDPOINT"; - private static final String KEY_STORE_PATH = "KEY_STORE_PATH"; - private static final String TRUST_STORE_PATH = "TRUST_STORE_PATH"; private final List<URI> configServerHosts; private final String environment; @@ -56,19 +52,29 @@ public class Environment { filenameFormatter.setTimeZone(TimeZone.getTimeZone("UTC")); } - public Environment() { - this(getConfigServerUrlsFromEnvironment(), + public Environment(ConfigServerConfig configServerConfig) { + this(createConfigServerUris( + configServerConfig.scheme(), + configServerConfig.hosts(), + configServerConfig.port()), + getEnvironmentVariable(ENVIRONMENT), getEnvironmentVariable(REGION), - HostName.getLocalhost(), + Defaults.getDefaults().vespaHostname(), new InetAddressResolver(), new PathResolver(), getLogstashNodesFromEnvironment(), getEnvironmentVariable(COREDUMP_FEED_ENDPOINT), - // TODO: Make key store password and type configurable - getKeyStoreOptionsFromEnvironment(KEY_STORE_PATH, new char[0], "PKCS12"), - getKeyStoreOptionsFromEnvironment(TRUST_STORE_PATH, "changeit".toCharArray(), "JKS")); + createKeyStoreOptions( + configServerConfig.keyStoreConfig().path(), + configServerConfig.keyStoreConfig().password().toCharArray(), + configServerConfig.keyStoreConfig().type().name()), + createKeyStoreOptions( + configServerConfig.trustStoreConfig().path(), + configServerConfig.trustStoreConfig().password().toCharArray(), + configServerConfig.trustStoreConfig().type().name()) + ); } public Environment(List<URI> configServerHosts, @@ -119,12 +125,8 @@ public class Environment { return getEnvironment() + "." + getRegion(); } - private static List<URI> getConfigServerUrlsFromEnvironment() { - String scheme = getEnvironmentVariable(ENV_CONFIGSERVER_SCHEME); - String configServerHosts = getEnvironmentVariable(ENV_CONFIGSERVER_HOSTS); - String port = getEnvironmentVariable(ENV_CONFIGSERVER_PORT); - - return Arrays.stream(configServerHosts.split("[,\\s]+")) + private static List<URI> createConfigServerUris(String scheme, List<String> configServerHosts, int port) { + return configServerHosts.stream() .map(hostname -> URI.create(scheme + "://" + hostname + ":" + port)) .collect(Collectors.toList()); } @@ -137,8 +139,8 @@ public class Environment { return Arrays.asList(logstashNodes.split("[,\\s]+")); } - private static Optional<KeyStoreOptions> getKeyStoreOptionsFromEnvironment(String pathToKeyStore, char[] password, String type) { - return Optional.ofNullable(System.getenv(pathToKeyStore)) + private static Optional<KeyStoreOptions> createKeyStoreOptions(String pathToKeyStore, char[] password, String type) { + return Optional.ofNullable(pathToKeyStore) .filter(path -> !Strings.isNullOrEmpty(path)) .map(path -> new KeyStoreOptions(Paths.get(path), password, type)); } diff --git a/node-admin/src/main/resources/configdefinitions/config-server.def b/node-admin/src/main/resources/configdefinitions/config-server.def new file mode 100644 index 00000000000..f43bb221107 --- /dev/null +++ b/node-admin/src/main/resources/configdefinitions/config-server.def @@ -0,0 +1,20 @@ +# Copyright 2018 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +namespace=vespa.hosted.node.admin + +hosts[] string +port int default=8080 range=[1,65535] +scheme string default="http" + +# Optional options used to authenticate config server +athenzDomain string default="" +serviceName string default="" + +# Optional options about key store to use when communicating with config server +keyStoreConfig.path string default="" # Path to keystore +keyStoreConfig.type enum { JKS, PEM, PKCS12 } default=JKS +keyStoreConfig.password string default="" + +# Optional options about trust store to use to authenticate config server +trustStoreConfig.path string default="" +trustStoreConfig.type enum { JKS, PEM, PKCS12 } default=JKS +trustStoreConfig.password string default="" |