summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2019-02-25 10:49:50 +0100
committerGitHub <noreply@github.com>2019-02-25 10:49:50 +0100
commitd3c80d67c20b23b3cff0ed49f0f6fa57bce703df (patch)
tree4b941aef44ec3adc10b99c4bd664bd90fe1e14b9
parenta53aa969015699f3518bd32e3acb8a1339150de8 (diff)
parent054845530c78d4125af08f2448de17ac660d32f7 (diff)
Merge pull request #8584 from vespa-engine/freva/remove-node-repo-dependency
NodeAdmin: Remove node-repo dependency
-rw-r--r--node-admin/pom.xml18
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskComponent.java17
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/FlagRepository.java1
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java77
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeOwner.java64
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeRepository.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java167
-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.java29
-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.java29
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeStateTest.java25
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java19
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNodeTest.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerTester.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java8
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java9
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java5
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java10
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java9
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java24
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java66
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileDeleterTest.java1
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java6
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java3
31 files changed, 311 insertions, 333 deletions
diff --git a/node-admin/pom.xml b/node-admin/pom.xml
index d550ceb7c9d..a61a55fcfd9 100644
--- a/node-admin/pom.xml
+++ b/node-admin/pom.xml
@@ -33,12 +33,6 @@
</dependency>
<dependency>
<groupId>com.yahoo.vespa</groupId>
- <artifactId>defaults</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
<artifactId>container-dev</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
@@ -74,12 +68,6 @@
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>node-repository</artifactId>
- <version>${project.version}</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.1</version>
@@ -135,6 +123,12 @@
</dependency>
<dependency>
<groupId>com.yahoo.vespa</groupId>
+ <artifactId>node-repository</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
<artifactId>service-monitor</artifactId>
<version>${project.version}</version>
<scope>test</scope>
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskComponent.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskComponent.java
deleted file mode 100644
index cbe9b32cc47..00000000000
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskComponent.java
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.yahoo.component.ComponentId;
-import com.yahoo.component.chain.ChainedComponent;
-
-public abstract class TaskComponent extends ChainedComponent implements IdempotentTask<TaskContext> {
- protected TaskComponent(ComponentId id) {
- super(id);
- }
-
- public String name() {
- return getIdString();
- }
-
- public abstract boolean converge(TaskContext context);
-}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/FlagRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/FlagRepository.java
index 8407d42131b..078b745bac4 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/FlagRepository.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/flags/FlagRepository.java
@@ -4,7 +4,6 @@ package com.yahoo.vespa.hosted.node.admin.configserver.flags;
import com.yahoo.vespa.flags.FlagId;
import com.yahoo.vespa.flags.json.FlagData;
-import java.util.List;
import java.util.Map;
/**
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java
index 8c8adf5c190..ad052f28d7d 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java
@@ -30,7 +30,6 @@ public class NodeAttributes {
private Optional<String> hardwareDivergence = Optional.empty();
private Optional<String> hardwareFailureDescription = Optional.empty();
private Optional<Boolean> wantToDeprovision = Optional.empty();
- private Optional<String> modelName = Optional.empty();
/** The list of reports to patch. A null value is used to remove the report. */
private Map<String, JsonNode> reports = new TreeMap<>();
@@ -80,11 +79,6 @@ public class NodeAttributes {
return this;
}
- public NodeAttributes withModelName(String modelName) {
- this.modelName = Optional.of(modelName);
- return this;
- }
-
public NodeAttributes withReports(Map<String, JsonNode> nodeReports) {
this.reports = new TreeMap<>(nodeReports);
return this;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
new file mode 100644
index 00000000000..bb16e2bae63
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeMembership.java
@@ -0,0 +1,77 @@
+// 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;
+
+/**
+ * @author freva
+ */
+public class NodeMembership {
+ private final String clusterType;
+ private final String clusterId;
+ private final String group;
+ private final int index;
+ private final boolean retired;
+
+ public NodeMembership(String clusterType, String clusterId, String group, int index, boolean retired) {
+ this.clusterType = clusterType;
+ this.clusterId = clusterId;
+ this.group = group;
+ this.index = index;
+ this.retired = retired;
+ }
+
+ public String getClusterType() {
+ return clusterType;
+ }
+
+ public String getClusterId() {
+ return clusterId;
+ }
+
+ public String getGroup() {
+ return group;
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ public boolean isRetired() {
+ return retired;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ NodeMembership that = (NodeMembership) o;
+
+ if (index != that.index) return false;
+ if (retired != that.retired) return false;
+ if (!clusterType.equals(that.clusterType)) return false;
+ if (!clusterId.equals(that.clusterId)) return false;
+ return group.equals(that.group);
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = clusterType.hashCode();
+ result = 31 * result + clusterId.hashCode();
+ result = 31 * result + group.hashCode();
+ result = 31 * result + index;
+ result = 31 * result + (retired ? 1 : 0);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "Membership {" +
+ " clusterType = " + clusterType +
+ " clusterId = " + clusterId +
+ " group = " + group +
+ " index = " + index +
+ " retired = " + retired +
+ " }";
+ }
+}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeOwner.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeOwner.java
new file mode 100644
index 00000000000..c1900316bb9
--- /dev/null
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeOwner.java
@@ -0,0 +1,64 @@
+// 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;
+
+import com.yahoo.config.provision.ApplicationId;
+
+/**
+ * @author freva
+ */
+public class NodeOwner {
+ private final String tenant;
+ private final String application;
+ private final String instance;
+
+ public NodeOwner(String tenant, String application, String instance) {
+ this.tenant = tenant;
+ this.application = application;
+ this.instance = instance;
+ }
+
+ public String getTenant() {
+ return tenant;
+ }
+
+ public String getApplication() {
+ return application;
+ }
+
+ public String getInstance() {
+ return instance;
+ }
+
+ public ApplicationId asApplicationId() {
+ return ApplicationId.from(tenant, application, instance);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ NodeOwner owner = (NodeOwner) o;
+
+ if (!tenant.equals(owner.tenant)) return false;
+ if (!application.equals(owner.application)) return false;
+ return instance.equals(owner.instance);
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = tenant.hashCode();
+ result = 31 * result + application.hashCode();
+ result = 31 * result + instance.hashCode();
+ return result;
+ }
+
+ public String toString() {
+ return "Owner {" +
+ " tenant = " + tenant +
+ " application = " + application +
+ " instance = " + instance +
+ " }";
+ }
+}
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..4cce6ce08d6 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,5 @@ public interface NodeRepository {
void updateNodeAttributes(String hostName, NodeAttributes nodeAttributes);
- void setNodeState(String hostName, Node.State nodeState);
-
- void scheduleReboot(String hostname);
+ void setNodeState(String hostName, NodeState nodeState);
}
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 ac65ac8af35..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
@@ -2,10 +2,8 @@
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.fasterxml.jackson.databind.JsonNode;
-import com.yahoo.config.provision.ApplicationId;
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;
@@ -18,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;
@@ -45,8 +43,8 @@ public class NodeSpec {
private final Optional<Boolean> allowedToBeDown;
private final Optional<Boolean> wantToDeprovision;
- private final Optional<Owner> owner;
- private final Optional<Membership> membership;
+ private final Optional<NodeOwner> owner;
+ private final Optional<NodeMembership> membership;
private final double minCpuCores;
private final double minMainMemoryAvailableGb;
@@ -65,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,
@@ -75,8 +73,8 @@ public class NodeSpec {
Optional<String> currentOsVersion,
Optional<Boolean> allowedToBeDown,
Optional<Boolean> wantToDeprovision,
- Optional<Owner> owner,
- Optional<Membership> membership,
+ Optional<NodeOwner> owner,
+ Optional<NodeMembership> membership,
Optional<Long> wantedRestartGeneration,
Optional<Long> currentRestartGeneration,
long wantedRebootGeneration,
@@ -130,7 +128,7 @@ public class NodeSpec {
return hostname;
}
- public Node.State getState() {
+ public NodeState getState() {
return state;
}
@@ -206,11 +204,11 @@ public class NodeSpec {
return wantToDeprovision;
}
- public Optional<Owner> getOwner() {
+ public Optional<NodeOwner> getOwner() {
return owner;
}
- public Optional<Membership> getMembership() {
+ public Optional<NodeMembership> getMembership() {
return membership;
}
@@ -358,140 +356,11 @@ public class NodeSpec {
+ " }";
}
- public static class Owner {
- private final String tenant;
- private final String application;
- private final String instance;
-
- public Owner(String tenant, String application, String instance) {
- this.tenant = tenant;
- this.application = application;
- this.instance = instance;
- }
-
- public String getTenant() {
- return tenant;
- }
-
- public String getApplication() {
- return application;
- }
-
- public String getInstance() {
- return instance;
- }
-
- public ApplicationId asApplicationId() {
- return ApplicationId.from(tenant, application, instance);
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Owner owner = (Owner) o;
-
- if (!tenant.equals(owner.tenant)) return false;
- if (!application.equals(owner.application)) return false;
- return instance.equals(owner.instance);
-
- }
-
- @Override
- public int hashCode() {
- int result = tenant.hashCode();
- result = 31 * result + application.hashCode();
- result = 31 * result + instance.hashCode();
- return result;
- }
-
- public String toString() {
- return "Owner {" +
- " tenant = " + tenant +
- " application = " + application +
- " instance = " + instance +
- " }";
- }
- }
-
- public static class Membership {
- private final String clusterType;
- private final String clusterId;
- private final String group;
- private final int index;
- private final boolean retired;
-
- public Membership(String clusterType, String clusterId, String group, int index, boolean retired) {
- this.clusterType = clusterType;
- this.clusterId = clusterId;
- this.group = group;
- this.index = index;
- this.retired = retired;
- }
-
- public String getClusterType() {
- return clusterType;
- }
-
- public String getClusterId() {
- return clusterId;
- }
-
- public String getGroup() {
- return group;
- }
-
- public int getIndex() {
- return index;
- }
-
- public boolean isRetired() {
- return retired;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Membership that = (Membership) o;
-
- if (index != that.index) return false;
- if (retired != that.retired) return false;
- if (!clusterType.equals(that.clusterType)) return false;
- if (!clusterId.equals(that.clusterId)) return false;
- return group.equals(that.group);
-
- }
-
- @Override
- public int hashCode() {
- int result = clusterType.hashCode();
- result = 31 * result + clusterId.hashCode();
- result = 31 * result + group.hashCode();
- result = 31 * result + index;
- result = 31 * result + (retired ? 1 : 0);
- return result;
- }
-
- @Override
- public String toString() {
- return "Membership {" +
- " clusterType = " + clusterType +
- " clusterId = " + clusterId +
- " group = " + group +
- " index = " + index +
- " retired = " + retired +
- " }";
- }
- }
-
public static class Builder {
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;
@@ -501,8 +370,8 @@ public class NodeSpec {
private Optional<String> currentOsVersion = Optional.empty();
private Optional<Boolean> allowedToBeDown = Optional.empty();
private Optional<Boolean> wantToDeprovision = Optional.empty();
- private Optional<Owner> owner = Optional.empty();
- private Optional<Membership> membership = Optional.empty();
+ private Optional<NodeOwner> owner = Optional.empty();
+ private Optional<NodeMembership> membership = Optional.empty();
private Optional<Long> wantedRestartGeneration = Optional.empty();
private Optional<Long> currentRestartGeneration = Optional.empty();
private long wantedRebootGeneration;
@@ -572,7 +441,7 @@ public class NodeSpec {
return this;
}
- public Builder state(Node.State state) {
+ public Builder state(NodeState state) {
this.state = state;
return this;
}
@@ -622,12 +491,12 @@ public class NodeSpec {
return this;
}
- public Builder owner(Owner owner) {
+ public Builder owner(NodeOwner owner) {
this.owner = Optional.of(owner);
return this;
}
- public Builder membership(Membership membership) {
+ public Builder membership(NodeMembership membership) {
this.membership = Optional.of(membership);
return this;
}
@@ -747,7 +616,7 @@ public class NodeSpec {
return currentDockerImage;
}
- public Node.State getState() {
+ public NodeState getState() {
return state;
}
@@ -787,11 +656,11 @@ public class NodeSpec {
return wantToDeprovision;
}
- public Optional<Owner> getOwner() {
+ public Optional<NodeOwner> getOwner() {
return owner;
}
- public Optional<Membership> getMembership() {
+ public Optional<NodeMembership> getMembership() {
return membership;
}
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 8e63024842d..586dec3399c 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
@@ -2,7 +2,6 @@
package com.yahoo.vespa.hosted.node.admin.configserver.noderepository;
import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Strings;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
@@ -13,7 +12,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;
@@ -32,7 +30,6 @@ import java.util.stream.Stream;
*/
public class RealNodeRepository implements NodeRepository {
private static final PrefixLogger NODE_ADMIN_LOGGER = PrefixLogger.getNodeAdminLogger(RealNodeRepository.class);
- private static final ObjectMapper mapper = new ObjectMapper();
private final ConfigServerApi configServerApi;
@@ -133,7 +130,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,
@@ -145,25 +142,13 @@ public class RealNodeRepository implements NodeRepository {
throw new NodeRepositoryException("Unexpected message " + response.message + " " + response.errorCode);
}
- @Override
- public void scheduleReboot(String hostName) {
- NodeMessageResponse response = configServerApi.post(
- "/nodes/v2/command/reboot?hostname=" + hostName,
- Optional.empty(), /* body */
- NodeMessageResponse.class);
- NODE_ADMIN_LOGGER.info(response.message);
-
- if (Strings.isNullOrEmpty(response.errorCode)) return;
- throw new NodeRepositoryException("Unexpected message " + response.message + " " + response.errorCode);
- }
-
private static NodeSpec createNodeSpec(NodeRepositoryNode node) {
Objects.requireNonNull(node.type, "Unknown node type");
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");
@@ -172,14 +157,14 @@ public class RealNodeRepository implements NodeRepository {
String hostName = Objects.requireNonNull(node.hostname, "hostname is null");
- NodeSpec.Owner owner = null;
+ NodeOwner owner = null;
if (node.owner != null) {
- owner = new NodeSpec.Owner(node.owner.tenant, node.owner.application, node.owner.instance);
+ owner = new NodeOwner(node.owner.tenant, node.owner.application, node.owner.instance);
}
- NodeSpec.Membership membership = null;
+ NodeMembership membership = null;
if (node.membership != null) {
- membership = new NodeSpec.Membership(node.membership.clusterType, node.membership.clusterId,
+ membership = new NodeMembership(node.membership.clusterType, node.membership.clusterId,
node.membership.group, node.membership.index, node.membership.retired);
}
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 d31a888ea44..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
@@ -11,26 +11,27 @@ import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.hosted.dockerapi.Container;
import com.yahoo.vespa.hosted.dockerapi.ContainerResources;
import com.yahoo.vespa.hosted.dockerapi.ContainerStats;
+import com.yahoo.vespa.hosted.dockerapi.DockerImage;
+import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
import com.yahoo.vespa.hosted.dockerapi.exception.ContainerNotFoundException;
import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import com.yahoo.vespa.hosted.dockerapi.exception.DockerExecTimeoutException;
-import com.yahoo.vespa.hosted.dockerapi.DockerImage;
-import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
import com.yahoo.vespa.hosted.dockerapi.metrics.DimensionMetrics;
import com.yahoo.vespa.hosted.dockerapi.metrics.Dimensions;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
+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;
import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
-import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
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;
@@ -269,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);
@@ -308,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)) {
@@ -347,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();
@@ -379,7 +380,7 @@ public class NodeAgentImpl implements NodeAgent {
private ContainerResources getContainerResources(NodeSpec node) {
double cpuCap = node.getOwner()
- .map(NodeSpec.Owner::asApplicationId)
+ .map(NodeOwner::asApplicationId)
.map(appId -> containerCpuCap.with(FetchVector.Dimension.APPLICATION_ID, appId.serializedForm()))
.orElse(containerCpuCap)
.value() * node.getMinCpuCores();
@@ -496,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);
@@ -504,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());
@@ -696,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());
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java
index c92027a659b..b5c6b6ab91d 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java
@@ -115,7 +115,7 @@ public class FileFinder {
try {
// Only need to traverse as deep as we want to match, unless we want to match everything in directories
// already matched
- Files.walkFileTree(basePath, Collections.emptySet(), maxDepth, new SimpleFileVisitor<Path>() {
+ Files.walkFileTree(basePath, Collections.emptySet(), maxDepth, new SimpleFileVisitor<>() {
private final Stack<FileAttributes> matchingDirectoryStack = new Stack<>();
private int currentLevel = -1;
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java
index 33498575e8a..de80d4dca18 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/IPVersion.java
@@ -18,7 +18,7 @@ public enum IPVersion {
IPv6(6, "ip6tables", "ip -6", "ipv6-icmp", "/128", "icmp6-port-unreachable", "ip6tables-restore"),
IPv4(4, "iptables", "ip", "icmp", "/32", "icmp-port-unreachable", "iptables-restore");
- private static Pattern cidrNotationPattern = Pattern.compile("/\\d+$");
+ private static final Pattern cidrNotationPattern = Pattern.compile("/\\d+$");
IPVersion(int version, String iptablesCmd, String ipCmd,
String icmpProtocol, String singleHostCidr, String icmpPortUnreachable,
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeStateTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeStateTest.java
new file mode 100644
index 00000000000..4a71d3bdbe8
--- /dev/null
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeStateTest.java
@@ -0,0 +1,25 @@
+// 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;
+
+import com.yahoo.vespa.hosted.provision.Node;
+import org.junit.Test;
+
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author freva
+ */
+public class NodeStateTest {
+
+ @Test
+ public void is_equal_to_node_repository_states() {
+ Set<String> nodeRepositoryStates = Stream.of(Node.State.values()).map(Enum::name).collect(Collectors.toSet());
+ Set<String> nodeAdminStates = Stream.of(NodeState.values()).map(Enum::name).collect(Collectors.toSet());
+
+ assertEquals(nodeAdminStates, nodeRepositoryStates);
+ }
+} \ No newline at end of file
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
index ac13775d6fa..c2b4c1e0387 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepositoryTest.java
@@ -8,7 +8,6 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerApi;
import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerApiImpl;
-import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.testutils.ContainerConfig;
import org.junit.After;
import org.junit.Before;
@@ -107,7 +106,7 @@ public class RealNodeRepositoryTest {
final NodeSpec node = containersToRun.get(0);
assertThat(node.getHostname(), is("host4.yahoo.com"));
assertThat(node.getWantedDockerImage().get(), is(new DockerImage("docker-registry.domain.tld:8080/dist/vespa:6.42.0")));
- assertThat(node.getState(), is(Node.State.active));
+ assertThat(node.getState(), is(NodeState.active));
assertThat(node.getWantedRestartGeneration().get(), is(0L));
assertThat(node.getCurrentRestartGeneration().get(), is(0L));
assertThat(node.getMinCpuCores(), is(0.2));
@@ -152,18 +151,18 @@ public class RealNodeRepositoryTest {
@Test
public void testMarkAsReady() {
- nodeRepositoryApi.setNodeState("host5.yahoo.com", Node.State.dirty);
- nodeRepositoryApi.setNodeState("host5.yahoo.com", Node.State.ready);
+ nodeRepositoryApi.setNodeState("host5.yahoo.com", NodeState.dirty);
+ nodeRepositoryApi.setNodeState("host5.yahoo.com", NodeState.ready);
try {
- nodeRepositoryApi.setNodeState("host4.yahoo.com", Node.State.ready);
+ nodeRepositoryApi.setNodeState("host4.yahoo.com", NodeState.ready);
fail("Should not be allowed to be marked ready as it is not registered as provisioned, dirty, failed or parked");
} catch (RuntimeException ignored) {
// expected
}
try {
- nodeRepositoryApi.setNodeState("host101.yahoo.com", Node.State.ready);
+ nodeRepositoryApi.setNodeState("host101.yahoo.com", NodeState.ready);
fail("Expected failure because host101 does not exist");
} catch (RuntimeException ignored) {
// expected
@@ -191,12 +190,4 @@ public class RealNodeRepositoryTest {
assertTrue(nodeRepositoryApi.getOptionalNode("host123-1.domain.tld").isPresent());
}
-
- @Test
- public void testRebootScheduling() {
- NodeSpec nodeSpec = nodeRepositoryApi.getNode("host5.yahoo.com");
- nodeRepositoryApi.scheduleReboot(nodeSpec.getHostname());
- NodeSpec newNodeSpec = nodeRepositoryApi.getNode(nodeSpec.getHostname());
- assertEquals(nodeSpec.getWantedRebootGeneration() + 1, newNodeSpec.getWantedRebootGeneration());
- }
}
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNodeTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNodeTest.java
index e1e7ea240b0..bf86da612b1 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNodeTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNodeTest.java
@@ -22,8 +22,8 @@ import static org.junit.Assert.assertEquals;
*/
public class NodeRepositoryNodeTest {
private static final ObjectMapper mapper = new ObjectMapper();
- private NodeRepositoryNode node = new NodeRepositoryNode();
- private NodeAttributes attributes = new NodeAttributes();
+ private final NodeRepositoryNode node = new NodeRepositoryNode();
+ private final NodeAttributes attributes = new NodeAttributes();
/**
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java
index c7bc8f16477..ae22a54faa9 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/DockerFailTest.java
@@ -5,7 +5,7 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import org.junit.Test;
import static org.mockito.ArgumentMatchers.any;
@@ -28,7 +28,7 @@ public class DockerFailTest {
.hostname(hostname)
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.nodeType(NodeType.tenant)
.flavor("docker")
.wantedRestartGeneration(1L)
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 6ae373e8b55..32e6aadaba3 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
@@ -10,6 +10,7 @@ import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.hosted.dockerapi.Docker;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
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.docker.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperationsImpl;
@@ -21,7 +22,6 @@ import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentFactory;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentImpl;
import com.yahoo.vespa.hosted.node.admin.task.util.network.IPAddressesMock;
-import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.test.file.TestFileSystem;
import org.mockito.InOrder;
import org.mockito.Mockito;
@@ -81,7 +81,7 @@ public class DockerTester implements AutoCloseable {
NodeSpec hostSpec = new NodeSpec.Builder()
.hostname(HOST_HOSTNAME.value())
- .state(Node.State.active)
+ .state(NodeState.active)
.nodeType(NodeType.host)
.flavor("default")
.wantedRestartGeneration(1L)
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
index 16c9239dcd7..9cb89ae95ce 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/MultiDockerTest.java
@@ -6,7 +6,7 @@ import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import org.junit.Test;
import static org.mockito.ArgumentMatchers.any;
@@ -27,7 +27,7 @@ public class MultiDockerTest {
tester.addChildNodeRepositoryNode(
new NodeSpec.Builder(nodeSpec2)
- .state(Node.State.dirty)
+ .state(NodeState.dirty)
.minCpuCores(1)
.minMainMemoryAvailableGb(1)
.minDiskAvailableGb(1)
@@ -36,7 +36,7 @@ public class MultiDockerTest {
tester.inOrder(tester.docker).deleteContainer(eq(new ContainerName("host2")));
tester.inOrder(tester.storageMaintainer).archiveNodeStorage(
argThat(context -> context.containerName().equals(new ContainerName("host2"))));
- tester.inOrder(tester.nodeRepository).setNodeState(eq(nodeSpec2.getHostname()), eq(Node.State.ready));
+ tester.inOrder(tester.nodeRepository).setNodeState(eq(nodeSpec2.getHostname()), eq(NodeState.ready));
addAndWaitForNode(tester, "host3.test.yahoo.com", new DockerImage("image1"));
}
@@ -46,7 +46,7 @@ public class MultiDockerTest {
NodeSpec nodeSpec = new NodeSpec.Builder()
.hostname(hostName)
.wantedDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.nodeType(NodeType.tenant)
.flavor("docker")
.wantedRestartGeneration(1L)
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java
index 5748d4034eb..ebf9d72ff1b 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/NodeRepoMock.java
@@ -6,7 +6,7 @@ import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.AddNode;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
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.provision.Node;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import java.util.Collections;
import java.util.HashMap;
@@ -59,7 +59,7 @@ public class NodeRepoMock implements NodeRepository {
}
@Override
- public void setNodeState(String hostName, Node.State nodeState) {
+ public void setNodeState(String hostName, NodeState nodeState) {
synchronized (monitor) {
updateNodeRepositoryNode(new NodeSpec.Builder(getNode(hostName))
.state(nodeState)
@@ -67,11 +67,6 @@ public class NodeRepoMock implements NodeRepository {
}
}
- @Override
- public void scheduleReboot(String hostname) {
-
- }
-
void updateNodeRepositoryNode(NodeSpec nodeSpec) {
synchronized (monitor) {
nodeRepositoryNodesByHostname.put(nodeSpec.getHostname(), nodeSpec);
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java
index 295368e0426..a1610ae4da3 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RebootTest.java
@@ -3,11 +3,10 @@ package com.yahoo.vespa.hosted.node.admin.integrationTests;
import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
-import com.yahoo.vespa.hosted.dockerapi.ContainerResources;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
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.nodeadmin.NodeAdminStateUpdater;
-import com.yahoo.vespa.hosted.provision.Node;
import org.junit.Test;
import java.util.Arrays;
@@ -51,7 +50,7 @@ public class RebootTest {
return new NodeSpec.Builder()
.hostname(hostname)
.wantedDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.nodeType(NodeType.tenant)
.flavor("docker")
.vespaVersion("6.50.0")
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java
index f9f455cca79..ff2f15efd0b 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/integrationTests/RestartTest.java
@@ -6,7 +6,7 @@ import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState;
import org.junit.Test;
import static com.yahoo.vespa.hosted.node.admin.integrationTests.DockerTester.NODE_PROGRAM;
@@ -28,7 +28,7 @@ public class RestartTest {
tester.addChildNodeRepositoryNode(new NodeSpec.Builder()
.hostname(hostname)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedDockerImage(dockerImage)
.nodeType(NodeType.tenant)
.flavor("docker")
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 4c753e5a95d..85562a92af9 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
@@ -7,14 +7,16 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
import com.yahoo.vespa.hosted.node.admin.component.ZoneId;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeMembership;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeOwner;
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.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContext;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl;
import com.yahoo.vespa.hosted.node.admin.task.util.file.FileFinder;
import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
import com.yahoo.vespa.hosted.node.admin.task.util.process.TestTerminal;
-import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.test.file.TestFileSystem;
import org.junit.After;
import org.junit.Test;
@@ -155,10 +157,10 @@ public class StorageMaintainerTest {
NodeSpec nodeSpec = new NodeSpec.Builder()
.hostname("host123-5.test.domain.tld")
.nodeType(nodeType)
- .state(Node.State.active)
+ .state(NodeState.active)
.parentHostname("host123.test.domain.tld")
- .owner(new NodeSpec.Owner("tenant", "application", "instance"))
- .membership(new NodeSpec.Membership("clusterType", "clusterId", null, 0, false))
+ .owner(new NodeOwner("tenant", "application", "instance"))
+ .membership(new NodeMembership("clusterType", "clusterId", null, 0, false))
.vespaVersion("6.305.12")
.flavor("d-2-8-50")
.canonicalFlavor("d-2-8-50")
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java
index 2f835a535ff..3fcb08e6680 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java
@@ -6,10 +6,10 @@ import com.yahoo.metrics.simple.MetricReceiver;
import com.yahoo.test.ManualClock;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
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.nodeagent.NodeAgentContext;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextFactory;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgentContextImpl;
-import com.yahoo.vespa.hosted.provision.Node;
import org.junit.Test;
import org.mockito.InOrder;
@@ -19,6 +19,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import static com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminImpl.NodeAgentWithScheduler;
+import static com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminImpl.NodeAgentWithSchedulerFactory;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -32,9 +34,6 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
-import static com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminImpl.NodeAgentWithScheduler;
-import static com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminImpl.NodeAgentWithSchedulerFactory;
-
/**
* @author bakksjo
*/
@@ -163,7 +162,7 @@ public class NodeAdminImplTest {
private NodeAgentContext createNodeAgentContext(String hostname) {
NodeSpec nodeSpec = new NodeSpec.Builder()
.hostname(hostname)
- .state(Node.State.active)
+ .state(NodeState.active)
.nodeType(NodeType.tenant)
.flavor("default")
.build();
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
index 2387c279672..b8894bbf814 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminStateUpdaterTest.java
@@ -5,11 +5,11 @@ import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.NodeType;
import com.yahoo.test.ManualClock;
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.NodeAgentContextFactory;
-import com.yahoo.vespa.hosted.provision.Node;
import org.junit.Test;
import java.time.Duration;
@@ -57,7 +57,7 @@ public class NodeAdminStateUpdaterTest {
@Test
public void state_convergence() {
- mockNodeRepo(Node.State.active, 4);
+ mockNodeRepo(NodeState.active, 4);
List<String> activeHostnames = nodeRepository.getNodes(hostHostname.value()).stream()
.map(NodeSpec::getHostname)
.collect(Collectors.toList());
@@ -115,7 +115,7 @@ public class NodeAdminStateUpdaterTest {
@Test
public void half_transition_revert() {
final String exceptionMsg = "Cannot allow to suspend because some reason";
- mockNodeRepo(Node.State.active, 3);
+ mockNodeRepo(NodeState.active, 3);
// Initially everything is frozen to force convergence
when(nodeAdmin.setFrozen(eq(false))).thenReturn(true);
@@ -158,7 +158,7 @@ public class NodeAdminStateUpdaterTest {
public void do_not_orchestrate_host_when_not_active() {
when(nodeAdmin.subsystemFreezeDuration()).thenReturn(Duration.ofHours(1));
when(nodeAdmin.setFrozen(anyBoolean())).thenReturn(true);
- mockNodeRepo(Node.State.ready, 3);
+ mockNodeRepo(NodeState.ready, 3);
// Resume and suspend only require that node-agents are frozen and permission from
// orchestrator to resume/suspend host. Therefore, if host is not active, we only need to freeze.
@@ -178,7 +178,7 @@ public class NodeAdminStateUpdaterTest {
@Test
public void uses_cached_acl() {
- mockNodeRepo(Node.State.active, 1);
+ mockNodeRepo(NodeState.active, 1);
mockAcl(Acl.EMPTY, 1);
updater.adjustNodeAgentsToRunFromNodeRepository();
@@ -199,7 +199,7 @@ public class NodeAdminStateUpdaterTest {
@Test
public void node_spec_and_acl_aligned() {
Acl acl = new Acl.Builder().withTrustedPorts(22).build();
- mockNodeRepo(Node.State.active, 3);
+ mockNodeRepo(NodeState.active, 3);
mockAcl(acl, 1, 2, 3);
updater.adjustNodeAgentsToRunFromNodeRepository();
@@ -216,11 +216,11 @@ public class NodeAdminStateUpdaterTest {
@Test
public void node_spec_and_acl_mismatch_missing_one_acl() {
Acl acl = new Acl.Builder().withTrustedPorts(22).build();
- mockNodeRepo(Node.State.active, 3);
+ mockNodeRepo(NodeState.active, 3);
mockAcl(acl, 1, 2); // Acl for 3 is missing
updater.adjustNodeAgentsToRunFromNodeRepository();
- mockNodeRepo(Node.State.active, 2); // Next tick, the spec for 3 is no longer returned
+ mockNodeRepo(NodeState.active, 2); // Next tick, the spec for 3 is no longer returned
updater.adjustNodeAgentsToRunFromNodeRepository();
updater.adjustNodeAgentsToRunFromNodeRepository();
@@ -234,7 +234,7 @@ public class NodeAdminStateUpdaterTest {
@Test
public void node_spec_and_acl_mismatch_additional_acl() {
Acl acl = new Acl.Builder().withTrustedPorts(22).build();
- mockNodeRepo(Node.State.active, 2);
+ mockNodeRepo(NodeState.active, 2);
mockAcl(acl, 1, 2, 3); // Acl for 3 is extra
updater.adjustNodeAgentsToRunFromNodeRepository();
@@ -256,11 +256,11 @@ public class NodeAdminStateUpdaterTest {
}
}
- private void mockNodeRepo(Node.State hostState, int numberOfNodes) {
+ private void mockNodeRepo(NodeState hostState, int numberOfNodes) {
List<NodeSpec> containersToRun = IntStream.range(1, numberOfNodes + 1)
.mapToObj(i -> new NodeSpec.Builder()
.hostname("host" + i + ".yahoo.com")
- .state(Node.State.active)
+ .state(NodeState.active)
.nodeType(NodeType.tenant)
.flavor("docker")
.minCpuCores(1)
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 35494b375f6..3130500c940 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
@@ -10,20 +10,22 @@ import com.yahoo.vespa.hosted.dockerapi.Container;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.dockerapi.ContainerResources;
import com.yahoo.vespa.hosted.dockerapi.ContainerStats;
-import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
+import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
-import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
+import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeMembership;
+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;
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.configserver.noderepository.NodeRepository;
-import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
import com.yahoo.vespa.hosted.node.admin.maintenance.identity.AthenzCredentialsMaintainer;
import com.yahoo.vespa.hosted.node.admin.nodeadmin.ConvergenceException;
-import com.yahoo.vespa.hosted.provision.Node;
import org.junit.Test;
import org.mockito.InOrder;
@@ -90,7 +92,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion)
.build();
@@ -119,7 +121,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion)
.build();
@@ -140,7 +142,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion)
.build();
@@ -176,7 +178,7 @@ public class NodeAgentImplTest {
final Optional<Long> restartGeneration = Optional.of(1L);
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.wantedRestartGeneration(restartGeneration.get())
.currentRestartGeneration(restartGeneration.get())
@@ -213,7 +215,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.wantedDockerImage(newDockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion)
.build();
@@ -240,7 +242,7 @@ public class NodeAgentImplTest {
NodeSpec.Builder specBuilder = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion);
@@ -287,7 +289,7 @@ public class NodeAgentImplTest {
NodeSpec.Builder specBuilder = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion);
@@ -324,7 +326,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion)
.wantedRestartGeneration(wantedRestartGeneration)
@@ -353,7 +355,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion)
.wantedRebootGeneration(wantedRebootGeneration)
@@ -396,7 +398,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.failed)
+ .state(NodeState.failed)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion)
.build();
@@ -416,7 +418,7 @@ public class NodeAgentImplTest {
@Test
public void readyNodeLeadsToNoAction() {
final NodeSpec node = nodeBuilder
- .state(Node.State.ready)
+ .state(NodeState.ready)
.build();
NodeAgentContext context = createContext(node);
@@ -442,7 +444,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.inactive)
+ .state(NodeState.inactive)
.wantedVespaVersion(vespaVersion)
.vespaVersion(vespaVersion)
.build();
@@ -465,7 +467,7 @@ public class NodeAgentImplTest {
public void reservedNodeDoesNotUpdateNodeRepoWithVersion() {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
- .state(Node.State.reserved)
+ .state(NodeState.reserved)
.wantedVespaVersion(vespaVersion)
.build();
@@ -479,7 +481,7 @@ public class NodeAgentImplTest {
verify(nodeRepository, never()).updateNodeAttributes(eq(hostName), any());
}
- private void nodeRunningContainerIsTakenDownAndCleanedAndRecycled(Node.State nodeState, Optional<Long> wantedRestartGeneration) {
+ private void nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState nodeState, Optional<Long> wantedRestartGeneration) {
wantedRestartGeneration.ifPresent(restartGeneration -> nodeBuilder
.wantedRestartGeneration(restartGeneration)
.currentRestartGeneration(restartGeneration));
@@ -502,7 +504,7 @@ public class NodeAgentImplTest {
inOrder.verify(storageMaintainer, times(1)).handleCoreDumpsForContainer(eq(context), any());
inOrder.verify(dockerOperations, times(1)).removeContainer(eq(context), any());
inOrder.verify(storageMaintainer, times(1)).archiveNodeStorage(eq(context));
- inOrder.verify(nodeRepository, times(1)).setNodeState(eq(hostName), eq(Node.State.ready));
+ inOrder.verify(nodeRepository, times(1)).setNodeState(eq(hostName), eq(NodeState.ready));
verify(dockerOperations, never()).createContainer(eq(context), any());
verify(dockerOperations, never()).startContainer(eq(context));
@@ -517,19 +519,19 @@ public class NodeAgentImplTest {
@Test
public void dirtyNodeRunningContainerIsTakenDownAndCleanedAndRecycled() {
- nodeRunningContainerIsTakenDownAndCleanedAndRecycled(Node.State.dirty, Optional.of(1L));
+ nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState.dirty, Optional.of(1L));
}
@Test
public void dirtyNodeRunningContainerIsTakenDownAndCleanedAndRecycledNoRestartGeneration() {
- nodeRunningContainerIsTakenDownAndCleanedAndRecycled(Node.State.dirty, Optional.empty());
+ nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState.dirty, Optional.empty());
}
@Test
public void provisionedNodeIsMarkedAsDirty() {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
- .state(Node.State.provisioned)
+ .state(NodeState.provisioned)
.build();
NodeAgentContext context = createContext(node);
@@ -537,7 +539,7 @@ public class NodeAgentImplTest {
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
nodeAgent.doConverge(context);
- verify(nodeRepository, times(1)).setNodeState(eq(hostName), eq(Node.State.dirty));
+ verify(nodeRepository, times(1)).setNodeState(eq(hostName), eq(NodeState.dirty));
}
@Test
@@ -545,7 +547,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.currentDockerImage(dockerImage)
.wantedDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.vespaVersion(vespaVersion)
.build();
@@ -567,7 +569,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.vespaVersion(vespaVersion)
.build();
@@ -603,7 +605,7 @@ public class NodeAgentImplTest {
public void start_container_subtask_failure_leads_to_container_restart() {
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.build();
@@ -651,12 +653,12 @@ public class NodeAgentImplTest {
ContainerStats stats1 = new ContainerStats(networks, precpu_stats, memory_stats, blkio_stats);
ContainerStats stats2 = new ContainerStats(networks, cpu_stats, memory_stats, blkio_stats);
- NodeSpec.Owner owner = new NodeSpec.Owner("tester", "testapp", "testinstance");
- NodeSpec.Membership membership = new NodeSpec.Membership("clustType", "clustId", "grp", 3, false);
+ NodeOwner owner = new NodeOwner("tester", "testapp", "testinstance");
+ NodeMembership membership = new NodeMembership("clustType", "clustId", "grp", 3, false);
final NodeSpec node = nodeBuilder
.wantedDockerImage(dockerImage)
.currentDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.vespaVersion(vespaVersion)
.owner(owner)
.membership(membership)
@@ -703,7 +705,7 @@ public class NodeAgentImplTest {
@Test
public void testGetRelevantMetricsForReadyNode() {
final NodeSpec node = nodeBuilder
- .state(Node.State.ready)
+ .state(NodeState.ready)
.build();
NodeAgentContext context = createContext(node);
@@ -722,7 +724,7 @@ public class NodeAgentImplTest {
final NodeSpec node = nodeBuilder
.nodeType(NodeType.config)
.wantedDockerImage(dockerImage)
- .state(Node.State.active)
+ .state(NodeState.active)
.wantedVespaVersion(vespaVersion)
.build();
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileDeleterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileDeleterTest.java
index 09f7d6117f9..29b012c1397 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileDeleterTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileDeleterTest.java
@@ -4,7 +4,6 @@ import com.yahoo.vespa.hosted.node.admin.component.TaskContext;
import com.yahoo.vespa.test.file.TestFileSystem;
import org.junit.Test;
-import java.io.IOException;
import java.nio.file.FileSystem;
import static org.junit.Assert.assertFalse;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java
index 1531b06070e..7bdf9a44ec7 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/CommandLineTest.java
@@ -2,16 +2,10 @@
package com.yahoo.vespa.hosted.node.admin.task.util.process;
import com.yahoo.vespa.hosted.node.admin.component.TestTaskContext;
-import com.yahoo.vespa.hosted.node.admin.task.util.time.TestTimer;
-import com.yahoo.vespa.test.file.TestFileSystem;
import org.junit.After;
import org.junit.Test;
-import java.io.IOException;
import java.nio.charset.StandardCharsets;
-import java.nio.file.FileSystem;
-import java.nio.file.Files;
-import java.nio.file.Path;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java
index 88d26103777..333cb81f9d4 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/process/ProcessFactoryImplTest.java
@@ -1,14 +1,11 @@
// 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.task.util.process;
-import com.yahoo.vespa.hosted.node.admin.task.util.file.FileAttributes;
import com.yahoo.vespa.hosted.node.admin.task.util.file.UnixPath;
import com.yahoo.vespa.hosted.node.admin.task.util.time.TestTimer;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
-import java.io.IOException;
-import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileAttribute;