summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon@oath.com>2018-04-03 10:06:58 +0200
committerGitHub <noreply@github.com>2018-04-03 10:06:58 +0200
commit9a86a735b9c29054ac88cecf0cb38a1a8ac49d24 (patch)
tree369d3ec486a5b96ec5e268ba05dacc74e263da55
parentb31d00cc9b4bfb9e9ab579412353037961c01cbf (diff)
parentf62afc00fc1aea9f12b158e3dc76f59db8e0ceef (diff)
Merge pull request #5435 from vespa-engine/hakonhall/remove-nodeadminmain-and-node-adminjson
Remove NodeAdminMain and node-admin.json
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminConfig.java33
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminMain.java105
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/NodeAdminProvider.java23
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();
}
}