diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-02-21 16:44:49 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-02-22 12:29:21 +0100 |
commit | a42fc330985c2ca07af5cfc538034c43bab64507 (patch) | |
tree | 6cabae022e689fcd2292698724478d1bd19f9c0a /node-admin/src/main/java | |
parent | e6c2211d07919c7cfde353feda4d9688533f3517 (diff) |
Depend on node-repository in test scope
Diffstat (limited to 'node-admin/src/main/java')
7 files changed, 37 insertions, 28 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java index 5fc82a70e80..354f4145ba4 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java @@ -1,8 +1,6 @@ // 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.configserver.noderepository; -import com.yahoo.vespa.hosted.provision.Node; - import java.util.List; import java.util.Map; import java.util.Optional; @@ -26,7 +24,7 @@ public interface NodeRepository { void updateNodeAttributes(String hostName, NodeAttributes nodeAttributes); - void setNodeState(String hostName, Node.State nodeState); + void setNodeState(String hostName, NodeState nodeState); void scheduleReboot(String hostname); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java index 1127df2e413..35bcf2f2114 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java @@ -4,7 +4,6 @@ package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; import com.fasterxml.jackson.databind.JsonNode; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.hosted.dockerapi.DockerImage; -import com.yahoo.vespa.hosted.provision.Node; import java.time.Instant; import java.util.Collections; @@ -17,7 +16,7 @@ import java.util.Set; */ public class NodeSpec { private final String hostname; - private final Node.State state; + private final NodeState state; private final NodeType nodeType; private final String flavor; private final String canonicalFlavor; @@ -64,7 +63,7 @@ public class NodeSpec { String hostname, Optional<DockerImage> wantedDockerImage, Optional<DockerImage> currentDockerImage, - Node.State state, + NodeState state, NodeType nodeType, String flavor, String canonicalFlavor, @@ -129,7 +128,7 @@ public class NodeSpec { return hostname; } - public Node.State getState() { + public NodeState getState() { return state; } @@ -361,7 +360,7 @@ public class NodeSpec { private String hostname; private Optional<DockerImage> wantedDockerImage = Optional.empty(); private Optional<DockerImage> currentDockerImage = Optional.empty(); - private Node.State state; + private NodeState state; private NodeType nodeType; private String flavor; private String canonicalFlavor; @@ -442,7 +441,7 @@ public class NodeSpec { return this; } - public Builder state(Node.State state) { + public Builder state(NodeState state) { this.state = state; return this; } @@ -617,7 +616,7 @@ public class NodeSpec { return currentDockerImage; } - public Node.State getState() { + public NodeState getState() { return state; } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeState.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeState.java new file mode 100644 index 00000000000..e1765efef31 --- /dev/null +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeState.java @@ -0,0 +1,13 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; + +/** + * All the states a node can be in the node-repository. + * + * See com.yahoo.vespa.hosted.provision.NodeState + * + * @author freva + */ +public enum NodeState { + provisioned, ready, reserved, active, inactive, dirty, failed, parked +} diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java index 4806aa2790d..ad29222c8e3 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java @@ -13,7 +13,6 @@ import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.bindings.Ge import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.bindings.NodeMessageResponse; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.bindings.NodeRepositoryNode; import com.yahoo.vespa.hosted.node.admin.util.PrefixLogger; -import com.yahoo.vespa.hosted.provision.Node; import java.time.Instant; import java.util.Collections; @@ -133,7 +132,7 @@ public class RealNodeRepository implements NodeRepository { } @Override - public void setNodeState(String hostName, Node.State nodeState) { + public void setNodeState(String hostName, NodeState nodeState) { String state = nodeState.name(); NodeMessageResponse response = configServerApi.put( "/nodes/v2/state/" + state + "/" + hostName, @@ -162,8 +161,8 @@ public class RealNodeRepository implements NodeRepository { NodeType nodeType = NodeType.valueOf(node.type); Objects.requireNonNull(node.state, "Unknown node state"); - Node.State nodeState = Node.State.valueOf(node.state); - if (nodeState == Node.State.active) { + NodeState nodeState = NodeState.valueOf(node.state); + if (nodeState == NodeState.active) { Objects.requireNonNull(node.wantedVespaVersion, "Unknown vespa version for active node"); Objects.requireNonNull(node.wantedDockerImage, "Unknown docker image for active node"); Objects.requireNonNull(node.restartGeneration, "Unknown restartGeneration for active node"); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java index eb306036416..41c4544c533 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java @@ -5,12 +5,12 @@ import com.yahoo.concurrent.ThreadFactoryFactory; import com.yahoo.config.provision.HostName; import com.yahoo.log.LogLevel; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl; -import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository; +import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; +import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState; import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator; import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext; import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextFactory; -import com.yahoo.vespa.hosted.provision.Node; import java.time.Clock; import java.time.Duration; @@ -125,7 +125,7 @@ public class NodeAdminStateUpdater { throw new ConvergenceException("NodeAdmin is not yet " + (wantFrozen ? "frozen" : "unfrozen")); } - boolean hostIsActiveInNR = nodeRepository.getNode(hostHostname).getState() == Node.State.active; + boolean hostIsActiveInNR = nodeRepository.getNode(hostHostname).getState() == NodeState.active; switch (wantedState) { case RESUMED: if (hostIsActiveInNR) orchestrator.resume(hostHostname); @@ -183,7 +183,7 @@ public class NodeAdminStateUpdater { private List<String> getNodesInActiveState() { return nodeRepository.getNodes(hostHostname) .stream() - .filter(node -> node.getState() == Node.State.active) + .filter(node -> node.getState() == NodeState.active) .map(NodeSpec::getHostname) .collect(Collectors.toList()); } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java index 804450f05ff..9ca19a76706 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java @@ -9,8 +9,8 @@ import com.yahoo.vespa.hosted.dockerapi.ContainerName; import com.yahoo.vespa.hosted.node.admin.component.ZoneId; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; +import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState; import com.yahoo.vespa.hosted.node.admin.docker.DockerNetworking; -import com.yahoo.vespa.hosted.provision.Node; import java.nio.file.FileSystem; import java.nio.file.Path; @@ -177,7 +177,7 @@ public class NodeAgentContextImpl implements NodeAgentContext { public Builder(String hostname) { this.nodeSpecBuilder .hostname(hostname) - .state(Node.State.active) + .state(NodeState.active) .nodeType(NodeType.tenant) .flavor("d-2-8-50"); } 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 4724a98dbb2..2cbe6e7722b 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 @@ -23,6 +23,7 @@ import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttribu import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeOwner; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; +import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState; import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator; import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.OrchestratorException; import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations; @@ -31,7 +32,6 @@ import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer; import com.yahoo.vespa.hosted.node.admin.maintenance.identity.AthenzCredentialsMaintainer; import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException; import com.yahoo.vespa.hosted.node.admin.util.SecretAgentCheckConfig; -import com.yahoo.vespa.hosted.provision.Node; import java.util.ArrayList; import java.util.List; @@ -270,7 +270,7 @@ public class NodeAgentImpl implements NodeAgent { } private void restartServices(NodeAgentContext context, Container existingContainer) { - if (existingContainer.state.isRunning() && context.node().getState() == Node.State.active) { + if (existingContainer.state.isRunning() && context.node().getState() == NodeState.active) { context.log(logger, "Restarting services"); // Since we are restarting the services we need to suspend the node. orchestratorSuspendNode(context); @@ -309,8 +309,8 @@ public class NodeAgentImpl implements NodeAgent { } private Optional<String> shouldRemoveContainer(NodeSpec node, Container existingContainer) { - final Node.State nodeState = node.getState(); - if (nodeState == Node.State.dirty || nodeState == Node.State.provisioned) { + final NodeState nodeState = node.getState(); + if (nodeState == NodeState.dirty || nodeState == NodeState.provisioned) { return Optional.of("Node in state " + nodeState + ", container should no longer be running"); } if (node.getWantedDockerImage().isPresent() && !node.getWantedDockerImage().get().equals(existingContainer.image)) { @@ -348,7 +348,7 @@ public class NodeAgentImpl implements NodeAgent { orchestratorSuspendNode(context); try { - if (context.node().getState() != Node.State.dirty) { + if (context.node().getState() != NodeState.dirty) { suspend(); } stopServices(); @@ -497,7 +497,7 @@ public class NodeAgentImpl implements NodeAgent { updateNodeRepoWithCurrentAttributes(context); break; case provisioned: - nodeRepository.setNodeState(context.hostname().value(), Node.State.dirty); + nodeRepository.setNodeState(context.hostname().value(), NodeState.dirty); break; case dirty: removeContainerIfNeededUpdateContainerState(context, container); @@ -505,7 +505,7 @@ public class NodeAgentImpl implements NodeAgent { athenzCredentialsMaintainer.ifPresent(maintainer -> maintainer.clearCredentials(context)); storageMaintainer.archiveNodeStorage(context); updateNodeRepoWithCurrentAttributes(context); - nodeRepository.setNodeState(context.hostname().value(), Node.State.ready); + nodeRepository.setNodeState(context.hostname().value(), NodeState.ready); break; default: throw new RuntimeException("UNKNOWN STATE " + node.getState().name()); @@ -697,7 +697,7 @@ public class NodeAgentImpl implements NodeAgent { // to allow the node admin to make decisions that depend on the docker image. Or, each docker image // needs to contain routines for drain and suspend. For many images, these can just be dummy routines. private void orchestratorSuspendNode(NodeAgentContext context) { - if (context.node().getState() != Node.State.active) return; + if (context.node().getState() != NodeState.active) return; context.log(logger, "Ask Orchestrator for permission to suspend node"); orchestrator.suspend(context.hostname().value()); |