diff options
author | HÃ¥kon Hallingstad <hakon@oath.com> | 2018-04-03 10:06:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-03 10:06:58 +0200 |
commit | 9a86a735b9c29054ac88cecf0cb38a1a8ac49d24 (patch) | |
tree | 369d3ec486a5b96ec5e268ba05dacc74e263da55 | |
parent | b31d00cc9b4bfb9e9ab579412353037961c01cbf (diff) | |
parent | f62afc00fc1aea9f12b158e3dc76f59db8e0ceef (diff) |
Merge pull request #5435 from vespa-engine/hakonhall/remove-nodeadminmain-and-node-adminjson
Remove NodeAdminMain and node-admin.json
3 files changed, 13 insertions, 148 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminConfig.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminConfig.java deleted file mode 100644 index c3a1f47dfc5..00000000000 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminConfig.java +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.node.admin.nodeadmin; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.File; -import java.io.IOException; - -@JsonIgnoreProperties(ignoreUnknown = true) -public class NodeAdminConfig { - private static final ObjectMapper mapper = new ObjectMapper(); - - /** - * If null, the default admin component will be used. - */ - @JsonProperty("main-component") - public String mainComponent = null; - - public static NodeAdminConfig fromFile(File file) { - if (!file.exists()) { - return new NodeAdminConfig(); - } - - try { - return mapper.readValue(file, NodeAdminConfig.class); - } catch (IOException e) { - throw new RuntimeException("Failed to read " + file + " as a " + - NodeAdminConfig.class.getName(), e); - } - } -} 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 deleted file mode 100644 index 4b806c905d9..00000000000 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminMain.java +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.node.admin.nodeadmin; - -import com.yahoo.component.ComponentId; -import com.yahoo.component.provider.ComponentRegistry; -import com.yahoo.concurrent.classlock.ClassLocking; -import com.yahoo.log.LogLevel; -import com.yahoo.vespa.hosted.dockerapi.Docker; -import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; -import com.yahoo.vespa.hosted.node.admin.component.AdminComponent; -import com.yahoo.vespa.hosted.node.admin.component.Environment; -import com.yahoo.vespa.hosted.node.admin.config.ConfigServerConfig; -import com.yahoo.vespa.hosted.node.admin.component.DockerAdminComponent; -import com.yahoo.vespa.hosted.node.admin.configserver.RealConfigServerClients; -import com.yahoo.vespa.hosted.node.admin.provider.NodeAdminStateUpdater; - -import java.io.File; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -/** - * NodeAdminMain is the main component of the node admin JDisc application: - * - It will read config and check its environment to figure out its responsibilities - * - It will "start" (only) the necessary components. - * - Other components MUST NOT try to start (typically in constructor) since the features - * they provide is NOT WANTED and possibly destructive, and/or the environment may be - * incompatible. For instance, trying to contact the Docker daemon too early will be - * fatal: the node admin may not have installed and started the docker daemon. - */ -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; - - 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; - } - - public static NodeAdminConfig getConfig() { - return NodeAdminConfig.fromFile(new File("/etc/vespa/node-admin.json")); - } - - public void start() { - NodeAdminConfig config = getConfig(); - mainAdminComponent = selectAdminComponent(config); - mainAdminComponent.enable(); - } - - private AdminComponent selectAdminComponent(NodeAdminConfig config) { - if (config.mainComponent == null) { - return new DockerAdminComponent(configServerConfig, - docker, - metricReceiver, - classLocking, - new RealConfigServerClients(new Environment(configServerConfig))); - } - - logger.log(LogLevel.INFO, () -> { - String registeredComponentsList = adminRegistry - .allComponentsById().keySet().stream() - .map(ComponentId::stringValue) - .collect(Collectors.joining(", ")); - - return String.format( - "Components registered = '%s', enabled = '%s'", - registeredComponentsList, - config.mainComponent); - }); - - AdminComponent component = adminRegistry.getComponent(config.mainComponent); - if (component == null) { - throw new IllegalArgumentException("There is no component named '" + - config.mainComponent + "'"); - } - - return component; - } - - @Override - public void close() { - if (mainAdminComponent != null) { - mainAdminComponent.disable(); - mainAdminComponent = null; - } - } - - public NodeAdminStateUpdater getNodeAdminStateUpdater() { - assert mainAdminComponent != null : "start() hasn't been called yet"; - return mainAdminComponent.getNodeAdminStateUpdater(); - } -} 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 fd8ca74644d..d49251d3754 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 @@ -2,35 +2,38 @@ package com.yahoo.vespa.hosted.node.admin.provider; import com.google.inject.Inject; -import com.yahoo.component.provider.ComponentRegistry; 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.component.DockerAdminComponent; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.node.admin.config.ConfigServerConfig; -import com.yahoo.vespa.hosted.node.admin.component.AdminComponent; -import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminMain; +import com.yahoo.vespa.hosted.node.admin.configserver.RealConfigServerClients; public class NodeAdminProvider implements Provider<NodeAdminStateUpdater> { - private final NodeAdminMain nodeAdminMain; + private final DockerAdminComponent dockerAdmin; @Inject - public NodeAdminProvider(ComponentRegistry<AdminComponent> adminRegistry, - ConfigServerConfig configServerConfig, + public NodeAdminProvider(ConfigServerConfig configServerConfig, Docker docker, MetricReceiverWrapper metricReceiver, ClassLocking classLocking) { - nodeAdminMain = new NodeAdminMain(adminRegistry, configServerConfig, docker, metricReceiver, classLocking); - nodeAdminMain.start(); + dockerAdmin = new DockerAdminComponent(configServerConfig, + docker, + metricReceiver, + classLocking, + new RealConfigServerClients(new Environment(configServerConfig))); + dockerAdmin.enable(); } @Override public NodeAdminStateUpdater get() { - return nodeAdminMain.getNodeAdminStateUpdater(); + return dockerAdmin.getNodeAdminStateUpdater(); } @Override public void deconstruct() { - nodeAdminMain.close(); + dockerAdmin.disable(); } } |