diff options
author | Håkon Hallingstad <hakon@oath.com> | 2018-02-12 17:25:34 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2018-02-12 17:25:34 +0100 |
commit | fbe0a9712806c878d18da5e70ead4f629e8dec2e (patch) | |
tree | a243aaffd062b8e5042e656cc809043f65afff15 | |
parent | 308685ad63771c9e296152d97bdc9d0beb0a2cee (diff) |
Use DockerAdminComponent
19 files changed, 141 insertions, 88 deletions
diff --git a/node-admin/src/main/application/services.xml b/node-admin/src/main/application/services.xml index 99733552f76..f2f9e46c5b8 100644 --- a/node-admin/src/main/application/services.xml +++ b/node-admin/src/main/application/services.xml @@ -11,7 +11,9 @@ <component id="docker-api" class="com.yahoo.vespa.hosted.dockerapi.DockerImpl" bundle="docker-api"/> <component id="metrics-wrapper" class="com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper" bundle="docker-api"/> - <nodes type="host"/> + <config name="vespa.hosted.dockerapi.docker"> + <uri>unix:///var/run/docker.sock</uri> + </config> <preprocess:include file="variant.xml" required="false"/> </jdisc> 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/component/DockerAdminComponent.java index 15ade142b5d..a678b8607fd 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/component/DockerAdminComponent.java @@ -1,5 +1,5 @@ // Copyright 2018 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; +package com.yahoo.vespa.hosted.node.admin.component; import com.yahoo.concurrent.classlock.ClassLocking; import com.yahoo.net.HostName; @@ -7,11 +7,13 @@ 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.config.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; 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.NodeAdminStateUpdaterImpl; 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; @@ -20,7 +22,6 @@ 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.provider.NodeAdminStateUpdater; 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; @@ -35,24 +36,37 @@ public class DockerAdminComponent implements AdminComponent { 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; - private final ClassLocking classLocking; - - private ConfigServerHttpRequestExecutor requestExecutor; + private final Optional<ClassLocking> classLocking; + private Optional<Environment> environment = Optional.empty(); + private Optional<ConfigServerHttpRequestExecutor> requestExecutor = Optional.empty(); private Optional<NodeAdminStateUpdaterImpl> nodeAdminStateUpdater = Optional.empty(); public DockerAdminComponent(ConfigServerConfig configServerConfig, - NodeAdminConfig config, Docker docker, MetricReceiverWrapper metricReceiver, ClassLocking classLocking) { + this(configServerConfig, docker, metricReceiver, Optional.empty(), Optional.of(classLocking)); + } + + public DockerAdminComponent(ConfigServerConfig configServerConfig, + Docker docker, + MetricReceiverWrapper metricReceiver, + Environment environment) { + this(configServerConfig, docker, metricReceiver, Optional.of(environment), Optional.empty()); + } + + private DockerAdminComponent(ConfigServerConfig configServerConfig, + Docker docker, + MetricReceiverWrapper metricReceiver, + Optional<Environment> environment, + Optional<ClassLocking> classLocking) { this.configServerConfig = configServerConfig; - this.config = config; this.docker = docker; this.metricReceiver = metricReceiver; + this.environment = environment; this.classLocking = classLocking; } @@ -62,15 +76,25 @@ public class DockerAdminComponent implements AdminComponent { return; } - Environment environment = new Environment(configServerConfig); - requestExecutor = ConfigServerHttpRequestExecutor.create( - environment.getConfigServerUris(), - environment.getKeyStoreOptions(), - environment.getTrustStoreOptions(), - environment.getAthenzIdentity()); + nodeAdminStateUpdater = Optional.of(createNodeAdminStateUpdater()); + nodeAdminStateUpdater.get().start(); + } + + private NodeAdminStateUpdaterImpl createNodeAdminStateUpdater() { + if (!environment.isPresent()) { + environment = Optional.of(new Environment(configServerConfig)); + } - NodeRepository nodeRepository = new NodeRepositoryImpl(requestExecutor); - Orchestrator orchestrator = new OrchestratorImpl(requestExecutor); + if (!requestExecutor.isPresent()) { + requestExecutor = Optional.of(ConfigServerHttpRequestExecutor.create( + environment.get().getConfigServerUris(), + environment.get().getKeyStoreOptions(), + environment.get().getTrustStoreOptions(), + environment.get().getAthenzIdentity())); + } + + NodeRepository nodeRepository = new NodeRepositoryImpl(requestExecutor.get()); + Orchestrator orchestrator = new OrchestratorImpl(requestExecutor.get()); Clock clock = Clock.systemUTC(); String dockerHostHostName = HostName.getLocalhost(); @@ -79,14 +103,14 @@ public class DockerAdminComponent implements AdminComponent { docker.start(); DockerOperations dockerOperations = new DockerOperationsImpl( docker, - environment, + environment.get(), processExecuter); StorageMaintainer storageMaintainer = new StorageMaintainer( dockerOperations, processExecuter, metricReceiver, - environment, + environment.get(), clock); AclMaintainer aclMaintainer = new AclMaintainer( @@ -101,7 +125,7 @@ public class DockerAdminComponent implements AdminComponent { dockerOperations, storageMaintainer, aclMaintainer, - environment, + environment.get(), clock, NODE_AGENT_SCAN_INTERVAL); @@ -113,7 +137,7 @@ public class DockerAdminComponent implements AdminComponent { metricReceiver, clock); - nodeAdminStateUpdater = Optional.of(new NodeAdminStateUpdaterImpl( + return new NodeAdminStateUpdaterImpl( nodeRepository, orchestrator, storageMaintainer, @@ -121,9 +145,7 @@ public class DockerAdminComponent implements AdminComponent { dockerHostHostName, clock, NODE_ADMIN_CONVERGE_STATE_INTERVAL, - classLocking)); - - nodeAdminStateUpdater.get().start(); + classLocking); } @Override @@ -132,10 +154,9 @@ public class DockerAdminComponent implements AdminComponent { return; } - nodeAdminStateUpdater.get().stop(); - requestExecutor.close(); + nodeAdminStateUpdater.ifPresent(NodeAdminStateUpdaterImpl::stop); + requestExecutor.ifPresent(ConfigServerHttpRequestExecutor::close); nodeAdminStateUpdater = Optional.empty(); - // TODO: Also stop docker } @Override 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/component/Environment.java index 0415bbc34c2..7376a59bd5c 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/component/Environment.java @@ -1,5 +1,5 @@ -// 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.util; +// Copyright 2018 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.component; import com.google.common.base.Strings; import com.yahoo.vespa.athenz.api.AthenzIdentity; @@ -7,6 +7,8 @@ import com.yahoo.vespa.athenz.api.AthenzService; import com.yahoo.vespa.defaults.Defaults; import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.config.ConfigServerConfig; +import com.yahoo.vespa.hosted.node.admin.util.InetAddressResolver; +import com.yahoo.vespa.hosted.node.admin.util.KeyStoreOptions; import java.net.InetAddress; import java.net.URI; @@ -46,7 +48,7 @@ public class Environment { private final InetAddressResolver inetAddressResolver; private final PathResolver pathResolver; private final List<String> logstashNodes; - private final String feedEndpoint; + private final Optional<String> feedEndpoint; private final Optional<KeyStoreOptions> keyStoreOptions; private final Optional<KeyStoreOptions> trustStoreOptions; private final Optional<AthenzIdentity> athenzIdentity; @@ -56,30 +58,42 @@ public class Environment { } public Environment(ConfigServerConfig configServerConfig) { + this(configServerConfig, + getEnvironmentVariable(ENVIRONMENT), + getEnvironmentVariable(REGION), + new PathResolver(), + Optional.of(getEnvironmentVariable(COREDUMP_FEED_ENDPOINT))); + } + + public Environment(ConfigServerConfig configServerConfig, + String hostedEnvironment, + String hostedRegion, + PathResolver pathResolver, + Optional<String> coreDumpFeedEndpoint) { this(createConfigServerUris( configServerConfig.scheme(), configServerConfig.hosts(), configServerConfig.port()), - getEnvironmentVariable(ENVIRONMENT), - getEnvironmentVariable(REGION), - Defaults.getDefaults().vespaHostname(), - new InetAddressResolver(), - new PathResolver(), - getLogstashNodesFromEnvironment(), - getEnvironmentVariable(COREDUMP_FEED_ENDPOINT), - - createKeyStoreOptions( - configServerConfig.keyStoreConfig().path(), - configServerConfig.keyStoreConfig().password().toCharArray(), - configServerConfig.keyStoreConfig().type().name()), - createKeyStoreOptions( - configServerConfig.trustStoreConfig().path(), - configServerConfig.trustStoreConfig().password().toCharArray(), - configServerConfig.trustStoreConfig().type().name()), - createAthenzIdentity( - configServerConfig.athenzDomain(), - configServerConfig.serviceName()) + hostedEnvironment, + hostedRegion, + Defaults.getDefaults().vespaHostname(), + new InetAddressResolver(), + pathResolver, + getLogstashNodesFromEnvironment(), + coreDumpFeedEndpoint, + + createKeyStoreOptions( + configServerConfig.keyStoreConfig().path(), + configServerConfig.keyStoreConfig().password().toCharArray(), + configServerConfig.keyStoreConfig().type().name()), + createKeyStoreOptions( + configServerConfig.trustStoreConfig().path(), + configServerConfig.trustStoreConfig().password().toCharArray(), + configServerConfig.trustStoreConfig().type().name()), + createAthenzIdentity( + configServerConfig.athenzDomain(), + configServerConfig.serviceName()) ); } @@ -90,7 +104,7 @@ public class Environment { InetAddressResolver inetAddressResolver, PathResolver pathResolver, List<String> logstashNodes, - String feedEndpoint, + Optional<String> feedEndpoint, Optional<KeyStoreOptions> keyStoreOptions, Optional<KeyStoreOptions> trustStoreOptions, Optional<AthenzIdentity> athenzIdentity) { @@ -166,7 +180,7 @@ public class Environment { return pathResolver; } - public String getCoredumpFeedEndpoint() { + public Optional<String> getCoredumpFeedEndpoint() { return feedEndpoint; } @@ -245,7 +259,7 @@ public class Environment { private InetAddressResolver inetAddressResolver; private PathResolver pathResolver; private List<String> logstashNodes = Collections.emptyList(); - private String feedEndpoint; + private Optional<String> feedEndpoint = Optional.empty(); private KeyStoreOptions keyStoreOptions; private KeyStoreOptions trustStoreOptions; private AthenzIdentity athenzIdentity; @@ -288,7 +302,7 @@ public class Environment { } public Builder feedEndpoint(String feedEndpoint) { - this.feedEndpoint = feedEndpoint; + this.feedEndpoint = Optional.of(feedEndpoint); return this; } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/PathResolver.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/PathResolver.java index 2e26ff0773b..f70f451d33d 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/PathResolver.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/PathResolver.java @@ -1,5 +1,5 @@ -// 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.util; +// Copyright 2018 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.component; import java.nio.file.Path; import java.nio.file.Paths; @@ -8,9 +8,9 @@ import java.nio.file.Paths; * @author freva */ public class PathResolver { - static final Path ROOT = Paths.get("/"); + public static final Path ROOT = Paths.get("/"); + public static final Path RELATIVE_APPLICATION_STORAGE_PATH = Paths.get("home/docker/container-storage"); - private static final Path RELATIVE_APPLICATION_STORAGE_PATH = Paths.get("home/docker/container-storage"); private final Path applicationStoragePathForNodeAdmin; private final Path applicationStoragePathForHost; diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java index 88f5c9acfed..7d394ce52be 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImpl.java @@ -13,7 +13,7 @@ import com.yahoo.vespa.hosted.dockerapi.DockerNetworkCreator; import com.yahoo.vespa.hosted.dockerapi.ProcessResult; import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec; import com.yahoo.vespa.hosted.node.admin.maintenance.acl.iptables.NATCommand; -import com.yahoo.vespa.hosted.node.admin.util.Environment; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.node.admin.util.PrefixLogger; import java.io.IOException; diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProvider.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProvider.java index dde2a39da67..422e47fe83a 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProvider.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProvider.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.logging; import static com.yahoo.vespa.defaults.Defaults.getDefaults; import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec; -import com.yahoo.vespa.hosted.node.admin.util.Environment; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import java.util.Optional; import java.util.stream.Collectors; diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java index 257247bf44a..c12f1168240 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java @@ -15,7 +15,7 @@ import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations; import com.yahoo.vespa.hosted.node.admin.logging.FilebeatConfigProvider; -import com.yahoo.vespa.hosted.node.admin.util.Environment; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.node.admin.util.PrefixLogger; import com.yahoo.vespa.hosted.node.admin.util.SecretAgentScheduleMaker; @@ -223,6 +223,11 @@ public class StorageMaintainer { } private void addHandleCoredumpsCommand(MaintainerExecutor maintainerExecutor, ContainerName containerName, ContainerNodeSpec nodeSpec) { + if (!environment.getCoredumpFeedEndpoint().isPresent()) { + // Core dump handling is disabled. + return; + } + Map<String, Object> attributes = new HashMap<>(); attributes.put("hostname", nodeSpec.hostname); attributes.put("parent_hostname", HostName.getLocalhost()); @@ -243,7 +248,7 @@ public class StorageMaintainer { .withArgument("doneCoredumpsPath", environment.pathInNodeAdminToDoneCoredumps()) .withArgument("coredumpsPath", environment.pathInNodeAdminFromPathInNode( containerName, getDefaults().underVespaHome("var/crash"))) - .withArgument("feedEndpoint", environment.getCoredumpFeedEndpoint()) + .withArgument("feedEndpoint", environment.getCoredumpFeedEndpoint().get()) .withArgument("attributes", attributes); } 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 b0631fc712b..95eb9e150a2 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 @@ -9,6 +9,7 @@ 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.config.ConfigServerConfig; +import com.yahoo.vespa.hosted.node.admin.component.DockerAdminComponent; import com.yahoo.vespa.hosted.node.admin.provider.NodeAdminStateUpdater; import java.io.File; @@ -59,7 +60,7 @@ public class NodeAdminMain implements AutoCloseable { private AdminComponent selectAdminComponent(NodeAdminConfig config) { if (config.mainComponent == null) { - return new DockerAdminComponent(configServerConfig, config, docker, metricReceiver, classLocking); + return new DockerAdminComponent(configServerConfig, docker, metricReceiver, classLocking); } logger.log(LogLevel.INFO, () -> { diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterImpl.java index e4e66b57186..cdc7c9badaf 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterImpl.java @@ -64,8 +64,8 @@ public class NodeAdminStateUpdaterImpl implements NodeAdminStateUpdater { private final String dockerHostHostName; private final Duration nodeAdminConvergeStateInterval; - private final ClassLocking classLocking; - private Optional<ClassLock> classLock; + private final Optional<ClassLocking> classLocking; + private Optional<ClassLock> classLock = Optional.empty(); private Instant lastTick; public NodeAdminStateUpdaterImpl( @@ -76,7 +76,7 @@ public class NodeAdminStateUpdaterImpl implements NodeAdminStateUpdater { String dockerHostHostName, Clock clock, Duration nodeAdminConvergeStateInterval, - ClassLocking classLocking) { + Optional<ClassLocking> classLocking) { log.info(objectToString() + ": Creating object"); this.nodeRepository = nodeRepository; this.orchestrator = orchestrator; @@ -88,12 +88,14 @@ public class NodeAdminStateUpdaterImpl implements NodeAdminStateUpdater { this.lastTick = clock.instant(); this.loopThread = new Thread(() -> { - log.info(objectToString() + ": Acquiring lock"); - try { - classLock = Optional.of(classLocking.lockWhile(NodeAdminStateUpdater.class, () -> !terminated.get())); - } catch (LockInterruptException e) { - classLock = Optional.empty(); - return; + if (classLocking.isPresent()) { + log.info(objectToString() + ": Acquiring lock"); + try { + classLock = Optional.of(classLocking.get().lockWhile(NodeAdminStateUpdater.class, () -> !terminated.get())); + } catch (LockInterruptException e) { + classLock = Optional.empty(); + return; + } } log.info(objectToString() + ": Starting threads and schedulers"); @@ -308,7 +310,7 @@ public class NodeAdminStateUpdaterImpl implements NodeAdminStateUpdater { throw new RuntimeException("Can not re-stop a node agent."); } - classLocking.interrupt(); + classLocking.ifPresent(ClassLocking::interrupt); // First we need to stop NodeAdminStateUpdaterImpl thread to make sure no new NodeAgents are spawned signalWorkToBeDone(); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java index edf4f059fc2..f05a4054924 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java @@ -20,7 +20,7 @@ import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer; import com.yahoo.vespa.hosted.node.admin.noderepository.NodeRepository; import com.yahoo.vespa.hosted.node.admin.orchestrator.Orchestrator; import com.yahoo.vespa.hosted.node.admin.orchestrator.OrchestratorException; -import com.yahoo.vespa.hosted.node.admin.util.Environment; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.node.admin.util.PrefixLogger; import com.yahoo.vespa.hosted.provision.Node; diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java index 616a18d2f2f..034c9352a10 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/docker/DockerOperationsImplTest.java @@ -8,7 +8,7 @@ import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.dockerapi.Docker; import com.yahoo.vespa.hosted.dockerapi.DockerImage; import com.yahoo.vespa.hosted.dockerapi.ProcessResult; -import com.yahoo.vespa.hosted.node.admin.util.Environment; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import org.junit.Test; import org.mockito.InOrder; diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java index 3cfc67824ed..d22cb968969 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java @@ -14,15 +14,16 @@ import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminImpl; import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdaterImpl; 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.util.Environment; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.node.admin.util.InetAddressResolver; -import com.yahoo.vespa.hosted.node.admin.util.PathResolver; +import com.yahoo.vespa.hosted.node.admin.component.PathResolver; import java.net.InetAddress; import java.net.UnknownHostException; import java.nio.file.Paths; import java.time.Clock; import java.time.Duration; +import java.util.Optional; import java.util.function.Function; import static org.mockito.Matchers.any; @@ -67,7 +68,8 @@ public class DockerTester implements AutoCloseable { orchestratorMock, dockerOperations, storageMaintainer, aclMaintainer, environment, clock, NODE_AGENT_SCAN_INTERVAL); nodeAdmin = new NodeAdminImpl(dockerOperations, nodeAgentFactory, storageMaintainer, aclMaintainer, mr, Clock.systemUTC()); nodeAdminStateUpdater = new NodeAdminStateUpdaterImpl(nodeRepositoryMock, orchestratorMock, storageMaintainer, - nodeAdmin, "basehostname", clock, NODE_ADMIN_CONVERGE_STATE_INTERVAL, new ClassLocking()); + nodeAdmin, "basehostname", clock, NODE_ADMIN_CONVERGE_STATE_INTERVAL, + Optional.of(new ClassLocking())); nodeAdminStateUpdater.start(); } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java index a0e122d99fc..e4b6558e8e1 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RunInContainerTest.java @@ -15,14 +15,14 @@ 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.provider.NodeAdminStateUpdater; import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminStateUpdaterImpl; 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.orchestrator.Orchestrator; import com.yahoo.vespa.hosted.node.admin.orchestrator.OrchestratorException; -import com.yahoo.vespa.hosted.node.admin.util.Environment; +import com.yahoo.vespa.hosted.node.admin.provider.NodeAdminStateUpdater; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.provision.Node; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; @@ -46,6 +46,7 @@ import java.time.Duration; import java.time.Instant; import java.util.Arrays; import java.util.Collections; +import java.util.Optional; import java.util.function.Function; import java.util.logging.Logger; @@ -243,7 +244,8 @@ public class RunInContainerTest { storageMaintainer, aclMaintainer, environment, Clock.systemUTC(), NODE_AGENT_SCAN_INTERVAL); private final NodeAdmin nodeAdmin = new NodeAdminImpl(dockerOperationsMock, nodeAgentFactory, storageMaintainer, aclMaintainer, mr, Clock.systemUTC()); private final NodeAdminStateUpdaterImpl nodeAdminStateUpdater = new NodeAdminStateUpdaterImpl(nodeRepositoryMock, - orchestratorMock, storageMaintainer, nodeAdmin, "localhost.test.yahoo.com", Clock.systemUTC(), NODE_ADMIN_CONVERGE_STATE_INTERVAL, new ClassLocking()); + orchestratorMock, storageMaintainer, nodeAdmin, "localhost.test.yahoo.com", + Clock.systemUTC(), NODE_ADMIN_CONVERGE_STATE_INTERVAL, Optional.of(new ClassLocking())); public NodeAdminProviderWithMocks() { nodeAdminStateUpdater.start(); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/StorageMaintainerMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/StorageMaintainerMock.java index 67627ee1a83..443948db450 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/StorageMaintainerMock.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/StorageMaintainerMock.java @@ -8,7 +8,7 @@ import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations; import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer; -import com.yahoo.vespa.hosted.node.admin.util.Environment; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import java.time.Clock; import java.util.Optional; diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProviderTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProviderTest.java index 399579a7ce7..ad50041ab69 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProviderTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/logging/FilebeatConfigProviderTest.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.node.admin.logging; import com.google.common.collect.ImmutableList; import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec; -import com.yahoo.vespa.hosted.node.admin.util.Environment; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.provision.Node; import org.junit.Test; diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java index 38dd11a7a51..6aeafebaea7 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java @@ -9,8 +9,8 @@ import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper; import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations; -import com.yahoo.vespa.hosted.node.admin.util.Environment; -import com.yahoo.vespa.hosted.node.admin.util.PathResolver; +import com.yahoo.vespa.hosted.node.admin.component.Environment; +import com.yahoo.vespa.hosted.node.admin.component.PathResolver; import com.yahoo.vespa.hosted.provision.Node; import org.junit.Rule; import org.junit.Test; diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterImplTest.java index 7920d0cad29..1ab24fe8f9a 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterImplTest.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.time.Duration; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -47,7 +48,8 @@ public class NodeAdminStateUpdaterImplTest { private final Duration convergeStateInterval = Duration.ofSeconds(30); private final NodeAdminStateUpdaterImpl refresher = spy(new NodeAdminStateUpdaterImpl( - nodeRepository, orchestrator, storageMaintainer, nodeAdmin, parentHostname, clock, convergeStateInterval, null)); + nodeRepository, orchestrator, storageMaintainer, nodeAdmin, parentHostname, clock, + convergeStateInterval, Optional.empty())); @Test diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java index 8067bf9ba69..f1852fda8a3 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java @@ -17,9 +17,9 @@ 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.noderepository.NodeRepository; import com.yahoo.vespa.hosted.node.admin.orchestrator.Orchestrator; -import com.yahoo.vespa.hosted.node.admin.util.Environment; +import com.yahoo.vespa.hosted.node.admin.component.Environment; import com.yahoo.vespa.hosted.node.admin.util.InetAddressResolver; -import com.yahoo.vespa.hosted.node.admin.util.PathResolver; +import com.yahoo.vespa.hosted.node.admin.component.PathResolver; import com.yahoo.vespa.hosted.provision.Node; import org.junit.Test; import org.mockito.InOrder; diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/util/EnvironmentTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/util/EnvironmentTest.java index f5a661c8a66..49a10e34fa6 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/util/EnvironmentTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/util/EnvironmentTest.java @@ -3,6 +3,8 @@ package com.yahoo.vespa.hosted.node.admin.util; import static com.yahoo.vespa.defaults.Defaults.getDefaults; import com.yahoo.vespa.hosted.dockerapi.ContainerName; +import com.yahoo.vespa.hosted.node.admin.component.Environment; +import com.yahoo.vespa.hosted.node.admin.component.PathResolver; import org.junit.Test; import static org.junit.Assert.assertEquals; |