From 12f16209d3a84cb9c5313ab66bf49d2da417e5e4 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Mon, 19 Feb 2018 13:26:17 +0100 Subject: Inject config server clients in DockerAdminComponent --- .../node/admin/component/DockerAdminComponent.java | 33 +++++++++++----------- .../hosted/node/admin/nodeadmin/NodeAdminMain.java | 8 +++++- 2 files changed, 23 insertions(+), 18 deletions(-) (limited to 'node-admin') diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/DockerAdminComponent.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/DockerAdminComponent.java index cd2e0cc5064..89f52a39fbb 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/DockerAdminComponent.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/DockerAdminComponent.java @@ -8,7 +8,6 @@ import com.yahoo.vespa.hosted.dockerapi.Docker; import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; import com.yahoo.vespa.hosted.node.admin.config.ConfigServerConfig; import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerClients; -import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerClientsImpl; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperationsImpl; import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer; @@ -36,35 +35,39 @@ public class DockerAdminComponent implements AdminComponent { private final Docker docker; private final MetricReceiverWrapper metricReceiver; private final Optional classLocking; + private final ConfigServerClients configServerClients; private Optional environment = Optional.empty(); - private Optional configServerClients = Optional.empty(); private Optional nodeAdminStateUpdater = Optional.empty(); public DockerAdminComponent(ConfigServerConfig configServerConfig, Docker docker, MetricReceiverWrapper metricReceiver, - ClassLocking classLocking) { - this(configServerConfig, docker, metricReceiver, Optional.empty(), Optional.of(classLocking)); + ClassLocking classLocking, + ConfigServerClients configServerClients) { + this(configServerConfig, docker, metricReceiver, Optional.empty(), Optional.of(classLocking), configServerClients); } public DockerAdminComponent(ConfigServerConfig configServerConfig, Docker docker, MetricReceiverWrapper metricReceiver, - Environment environment) { - this(configServerConfig, docker, metricReceiver, Optional.of(environment), Optional.empty()); + Environment environment, + ConfigServerClients configServerClients) { + this(configServerConfig, docker, metricReceiver, Optional.of(environment), Optional.empty(), configServerClients); } private DockerAdminComponent(ConfigServerConfig configServerConfig, Docker docker, MetricReceiverWrapper metricReceiver, Optional environment, - Optional classLocking) { + Optional classLocking, + ConfigServerClients configServerClients) { this.configServerConfig = configServerConfig; this.docker = docker; this.metricReceiver = metricReceiver; this.environment = environment; this.classLocking = classLocking; + this.configServerClients = configServerClients; } @Override @@ -82,10 +85,6 @@ public class DockerAdminComponent implements AdminComponent { environment = Optional.of(new Environment(configServerConfig)); } - if (!configServerClients.isPresent()) { - configServerClients = Optional.of(new ConfigServerClientsImpl(environment.get())); - } - Clock clock = Clock.systemUTC(); String dockerHostHostName = HostName.getLocalhost(); ProcessExecuter processExecuter = new ProcessExecuter(); @@ -105,13 +104,13 @@ public class DockerAdminComponent implements AdminComponent { AclMaintainer aclMaintainer = new AclMaintainer( dockerOperations, - configServerClients.get().nodeRepository(), + configServerClients.nodeRepository(), dockerHostHostName); Function nodeAgentFactory = (hostName) -> new NodeAgentImpl( hostName, - configServerClients.get().nodeRepository(), - configServerClients.get().orchestrator(), + configServerClients.nodeRepository(), + configServerClients.orchestrator(), dockerOperations, storageMaintainer, aclMaintainer, @@ -128,8 +127,8 @@ public class DockerAdminComponent implements AdminComponent { clock); return new NodeAdminStateUpdaterImpl( - configServerClients.get().nodeRepository(), - configServerClients.get().orchestrator(), + configServerClients.nodeRepository(), + configServerClients.orchestrator(), storageMaintainer, nodeAdmin, dockerHostHostName, @@ -145,7 +144,7 @@ public class DockerAdminComponent implements AdminComponent { } nodeAdminStateUpdater.ifPresent(NodeAdminStateUpdaterImpl::stop); - configServerClients.ifPresent(ConfigServerClients::stop); + configServerClients.stop(); nodeAdminStateUpdater = Optional.empty(); } 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 95eb9e150a2..d19f64a2bc3 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,8 +8,10 @@ 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.ConfigServerClientsImpl; import com.yahoo.vespa.hosted.node.admin.provider.NodeAdminStateUpdater; import java.io.File; @@ -60,7 +62,11 @@ public class NodeAdminMain implements AutoCloseable { private AdminComponent selectAdminComponent(NodeAdminConfig config) { if (config.mainComponent == null) { - return new DockerAdminComponent(configServerConfig, docker, metricReceiver, classLocking); + return new DockerAdminComponent(configServerConfig, + docker, + metricReceiver, + classLocking, + new ConfigServerClientsImpl(new Environment(configServerConfig))); } logger.log(LogLevel.INFO, () -> { -- cgit v1.2.3