From eef3b73f9cd69c2d120642b32a1aa7d950b959cd Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Tue, 19 Dec 2017 21:30:41 +0100 Subject: Revert "Prepare for making node admin components optional" --- node-admin/src/main/application/services.xml | 2 +- .../node/admin/bootstrap/NodeAdminComponent.java | 29 ------ .../node/admin/bootstrap/NodeAdminConfig.java | 26 ----- .../hosted/node/admin/bootstrap/NodeAdminMain.java | 113 --------------------- .../hosted/node/admin/restapi/RestApiHandler.java | 5 +- .../node/admin/integrationTests/DockerMock.java | 3 - 6 files changed, 3 insertions(+), 175 deletions(-) delete mode 100644 node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminComponent.java delete mode 100644 node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminConfig.java delete mode 100644 node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminMain.java (limited to 'node-admin') diff --git a/node-admin/src/main/application/services.xml b/node-admin/src/main/application/services.xml index b39a9bce30a..030c42ac8c5 100644 --- a/node-admin/src/main/application/services.xml +++ b/node-admin/src/main/application/services.xml @@ -6,7 +6,7 @@ http://*/rest/* - + diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminComponent.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminComponent.java deleted file mode 100644 index fbcee36b724..00000000000 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminComponent.java +++ /dev/null @@ -1,29 +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.bootstrap; - -import com.google.inject.Inject; -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; - -public class NodeAdminComponent implements Provider { - private final NodeAdminMain nodeAdminMain; - - @Inject - NodeAdminComponent(Docker docker, - MetricReceiverWrapper metricReceiver, - ClassLocking classLocking) { - this.nodeAdminMain = new NodeAdminMain(docker, metricReceiver, classLocking); - } - - @Override - public NodeAdminMain get() { - return nodeAdminMain; - } - - @Override - public void deconstruct() { - nodeAdminMain.close(); - } -} diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminConfig.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminConfig.java deleted file mode 100644 index f8d5962fc3f..00000000000 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminConfig.java +++ /dev/null @@ -1,26 +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.bootstrap; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; - -@JsonIgnoreProperties(ignoreUnknown = true) -@JsonInclude(value = JsonInclude.Include.NON_NULL) -public class NodeAdminConfig { - private static final ObjectMapper mapper = new ObjectMapper(); - - enum Mode { - TENANT, - CONFIG_SERVER_HOST - } - - @JsonProperty("mode") - public Mode mode = Mode.TENANT; - - public static NodeAdminConfig get() { - // TODO: Get config from file - return new NodeAdminConfig(); - } -} diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminMain.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminMain.java deleted file mode 100644 index 87c3f5452ed..00000000000 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/bootstrap/NodeAdminMain.java +++ /dev/null @@ -1,113 +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.bootstrap; - -import com.yahoo.concurrent.classlock.ClassLocking; -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.docker.DockerOperations; -import com.yahoo.vespa.hosted.node.admin.docker.DockerOperationsImpl; -import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer; -import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer; -import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdmin; -import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminImpl; -import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater; -import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgent; -import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentImpl; -import com.yahoo.vespa.hosted.node.admin.noderepository.NodeRepository; -import com.yahoo.vespa.hosted.node.admin.noderepository.NodeRepositoryImpl; -import com.yahoo.vespa.hosted.node.admin.orchestrator.Orchestrator; -import com.yahoo.vespa.hosted.node.admin.orchestrator.OrchestratorImpl; -import com.yahoo.vespa.hosted.node.admin.util.ConfigServerHttpRequestExecutor; -import com.yahoo.vespa.hosted.node.admin.util.Environment; - -import java.time.Clock; -import java.time.Duration; -import java.util.function.Function; - -/** - * 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 Duration NODE_AGENT_SCAN_INTERVAL = Duration.ofSeconds(30); - private static final Duration NODE_ADMIN_CONVERGE_STATE_INTERVAL = Duration.ofSeconds(30); - - private final Docker docker; - private final MetricReceiverWrapper metricReceiver; - private final ClassLocking classLocking; - - private NodeAdminStateUpdater nodeAdminStateUpdater; - - NodeAdminMain(Docker docker, MetricReceiverWrapper metricReceiver, ClassLocking classLocking) { - this.docker = docker; - this.metricReceiver = metricReceiver; - this.classLocking = classLocking; - start(); - } - - @Override - public void close() { - nodeAdminStateUpdater.stop(); - } - - public NodeAdminStateUpdater getNodeAdminStateUpdater() { - return nodeAdminStateUpdater; - } - - public void start() { - NodeAdminConfig config = NodeAdminConfig.get(); - - switch (config.mode) { - case TENANT: - setupTenantHostNodeAdmin(); - break; - case CONFIG_SERVER_HOST: - setupConfigServerHostNodeAdmin(); - break; - default: - throw new IllegalStateException( - "Unknown bootstrap mode: " + config.mode.name()); - } - } - - private void setupTenantHostNodeAdmin() { - Clock clock = Clock.systemUTC(); - String dockerHostHostName = HostName.getLocalhost(); - ProcessExecuter processExecuter = new ProcessExecuter(); - Environment environment = new Environment(); - - ConfigServerHttpRequestExecutor requestExecutor = ConfigServerHttpRequestExecutor.create(environment.getConfigServerUris()); - NodeRepository nodeRepository = new NodeRepositoryImpl(requestExecutor); - Orchestrator orchestrator = new OrchestratorImpl(requestExecutor); - DockerOperations dockerOperations = new DockerOperationsImpl(docker, environment, processExecuter); - - StorageMaintainer storageMaintainer = new StorageMaintainer(docker, processExecuter, metricReceiver, environment, clock); - AclMaintainer aclMaintainer = new AclMaintainer(dockerOperations, nodeRepository, dockerHostHostName); - - Function nodeAgentFactory = - (hostName) -> new NodeAgentImpl(hostName, nodeRepository, orchestrator, dockerOperations, - storageMaintainer, aclMaintainer, environment, clock, NODE_AGENT_SCAN_INTERVAL); - NodeAdmin nodeAdmin = new NodeAdminImpl(dockerOperations, nodeAgentFactory, storageMaintainer, aclMaintainer, - metricReceiver, clock); - - nodeAdminStateUpdater = new NodeAdminStateUpdater(nodeRepository, orchestrator, storageMaintainer, nodeAdmin, - dockerHostHostName, clock, NODE_ADMIN_CONVERGE_STATE_INTERVAL, classLocking); - - nodeAdminStateUpdater.start(); - } - - private void setupConfigServerHostNodeAdmin() { - // TODO: - // - install and start docker daemon - // - Read config that specifies which containers to start how - // - use thin static backends for node repo, orchestrator, and others - // - Start core node admin. - } -} diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java index b7377ff172c..42b36d95374 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/restapi/RestApiHandler.java @@ -9,7 +9,6 @@ import com.yahoo.container.jdisc.LoggingRequestHandler; import com.yahoo.container.logging.AccessLog; import com.yahoo.vespa.hosted.dockerapi.metrics.DimensionMetrics; import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; -import com.yahoo.vespa.hosted.node.admin.bootstrap.NodeAdminMain; import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdater; import javax.inject.Inject; @@ -39,10 +38,10 @@ public class RestApiHandler extends LoggingRequestHandler{ @Inject public RestApiHandler(Executor executor, AccessLog accessLog, - NodeAdminMain nodeAdminMain, + NodeAdminStateUpdater nodeAdminStateUpdater, MetricReceiverWrapper metricReceiverWrapper) { super(executor, accessLog); - this.refresher = nodeAdminMain.getNodeAdminStateUpdater(); + this.refresher = nodeAdminStateUpdater; this.metricReceiverWrapper = metricReceiverWrapper; } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java index 7a5d713936d..a1cc1850d23 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerMock.java @@ -32,9 +32,6 @@ public class DockerMock implements Docker { this.callOrderVerifier = callOrderVerifier; } - @Override - public void start() { } - @Override public CreateContainerCommand createContainerCommand( DockerImage dockerImage, -- cgit v1.2.3