summaryrefslogtreecommitdiffstats
path: root/node-admin/src/main/java
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2019-02-21 16:44:49 +0100
committerValerij Fredriksen <valerijf@verizonmedia.com>2019-02-22 12:29:21 +0100
commita42fc330985c2ca07af5cfc538034c43bab64507 (patch)
tree6cabae022e689fcd2292698724478d1bd19f9c0a /node-admin/src/main/java
parente6c2211d07919c7cfde353feda4d9688533f3517 (diff)
Depend on node-repository in test scope
Diffstat (limited to 'node-admin/src/main/java')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java4
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java13
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeState.java13
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java7
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdater.java8
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentContextImpl.java4
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java16
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());