aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-02-09 19:04:25 +0100
committerJon Bratseth <bratseth@gmail.com>2021-02-09 19:04:25 +0100
commit7a9fe3fa0024c5dd995c1f48584bc7fab5284299 (patch)
tree0c0f12225835b99a1502cc1be156e33d67c65425 /node-repository
parent893e6266501b37228d243460796d086219e79420 (diff)
Remove getNodes(...): Always use list(...)
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java10
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java24
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java28
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java19
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java28
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java30
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java8
26 files changed, 113 insertions, 99 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
index 19c1fa090c9..84aafa77c27 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeList.java
@@ -271,4 +271,14 @@ public class NodeList extends AbstractFilteringList<Node, NodeList> {
return asList().toString();
}
+ @Override
+ public int hashCode() { return asList().hashCode(); }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other == this) return true;
+ if ( ! (other instanceof NodeList)) return false;
+ return this.asList().equals(((NodeList) other).asList());
+ }
+
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java
index 8ccb8980a71..5b9cd6a69e1 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/Expirer.java
@@ -41,7 +41,7 @@ public abstract class Expirer extends NodeRepositoryMaintainer {
@Override
protected boolean maintain() {
- List<Node> expired = nodeRepository().nodes().getNodes(fromState).stream()
+ List<Node> expired = nodeRepository().nodes().list(fromState).stream()
.filter(this::isExpired)
.collect(Collectors.toList());
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
index 08edee0be8b..7317942c045 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirer.java
@@ -68,7 +68,7 @@ public class FailedExpirer extends NodeRepositoryMaintainer {
@Override
protected boolean maintain() {
- List<Node> remainingNodes = nodeRepository.nodes().getNodes(Node.State.failed).stream()
+ List<Node> remainingNodes = nodeRepository.nodes().list(Node.State.failed).stream()
.filter(node -> node.type() == NodeType.tenant ||
node.type() == NodeType.host)
.collect(Collectors.toList());
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java
index 7c3e3eb4553..0591bd11eba 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailer.java
@@ -129,7 +129,7 @@ public class NodeFailer extends NodeRepositoryMaintainer {
clock().instant().minus(downTimeLimit).minus(nodeRequestInterval);
Map<Node, String> nodesByFailureReason = new HashMap<>();
- for (Node node : nodeRepository().nodes().getNodes(Node.State.ready)) {
+ for (Node node : nodeRepository().nodes().list(Node.State.ready)) {
if (expectConfigRequests(node) && ! hasNodeRequestedConfigAfter(node, oldestAcceptableRequestTime)) {
nodesByFailureReason.put(node, "Not receiving config requests from node");
} else {
@@ -148,7 +148,7 @@ public class NodeFailer extends NodeRepositoryMaintainer {
}
private Map<Node, String> getActiveNodesByFailureReason() {
- List<Node> activeNodes = nodeRepository().nodes().getNodes(Node.State.active);
+ NodeList activeNodes = nodeRepository().nodes().list(Node.State.active);
Instant graceTimeEnd = clock().instant().minus(downTimeLimit);
Map<Node, String> nodesByFailureReason = new HashMap<>();
for (Node node : activeNodes) {
@@ -224,7 +224,7 @@ public class NodeFailer extends NodeRepositoryMaintainer {
}
/** Is the node and all active children suspended? */
- private boolean hostSuspended(Node node, List<Node> activeNodes) {
+ private boolean hostSuspended(Node node, NodeList activeNodes) {
if (!nodeSuspended(node)) return false;
if (node.parentHostname().isPresent()) return true; // optimization
return activeNodes.stream()
@@ -303,7 +303,7 @@ public class NodeFailer extends NodeRepositoryMaintainer {
private boolean throttle(Node node) {
if (throttlePolicy == ThrottlePolicy.disabled) return false;
Instant startOfThrottleWindow = clock().instant().minus(throttlePolicy.throttleWindow);
- List<Node> nodes = nodeRepository().nodes().getNodes();
+ NodeList nodes = nodeRepository().nodes().list();
NodeList recentlyFailedNodes = nodes.stream()
.filter(n -> n.state() == Node.State.failed)
.filter(n -> n.history().hasEventAfter(History.Event.Type.failed, startOfThrottleWindow))
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java
index 92131a1cd74..e9dc961ce39 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeHealthTracker.java
@@ -58,7 +58,7 @@ public class NodeHealthTracker extends NodeRepositoryMaintainer {
// Update node last request events through ZooKeeper to collect request to all config servers.
// We do this here ("lazily") to avoid writing to zk for each config request.
try (Mutex lock = nodeRepository().nodes().lockUnallocated()) {
- for (Node node : nodeRepository().nodes().getNodes(Node.State.ready)) {
+ for (Node node : nodeRepository().nodes().list(Node.State.ready)) {
Optional<Instant> lastLocalRequest = hostLivenessTracker.lastRequestFrom(node.hostname());
if (lastLocalRequest.isEmpty()) continue;
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java
index e2cafbb9406..6ee657beadd 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooter.java
@@ -39,7 +39,7 @@ public class NodeRebooter extends NodeRepositoryMaintainer {
@Override
protected boolean maintain() {
// Reboot candidates: Nodes in long-term states, where we know we can safely orchestrate a reboot
- List<Node> nodesToReboot = nodeRepository().nodes().getNodes(Node.State.active, Node.State.ready).stream()
+ List<Node> nodesToReboot = nodeRepository().nodes().list(Node.State.active, Node.State.ready).stream()
.filter(node -> node.type().isHost())
.filter(this::shouldReboot)
.collect(Collectors.toList());
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java
index 8253b3def0a..e0f6c9d78bb 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainer.java
@@ -9,6 +9,7 @@ import com.yahoo.vespa.flags.FetchVector;
import com.yahoo.vespa.flags.FlagSource;
import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import java.time.Duration;
@@ -75,8 +76,8 @@ public class PeriodicApplicationMaintainer extends ApplicationMaintainer {
return ! skipMaintenanceDeployment.value();
}
- protected List<Node> nodesNeedingMaintenance() {
- return nodeRepository().nodes().getNodes(Node.State.active);
+ protected NodeList nodesNeedingMaintenance() {
+ return nodeRepository().nodes().list(Node.State.active);
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java
index 337d25ca732..3064ac2d16b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirer.java
@@ -7,6 +7,7 @@ import com.yahoo.config.provision.Deployer;
import com.yahoo.jdisc.Metric;
import com.yahoo.vespa.applicationmodel.HostName;
import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.node.History;
import com.yahoo.vespa.orchestrator.OrchestrationException;
@@ -45,7 +46,7 @@ public class RetiredExpirer extends NodeRepositoryMaintainer {
@Override
protected boolean maintain() {
- List<Node> activeNodes = nodeRepository().nodes().getNodes(Node.State.active);
+ NodeList activeNodes = nodeRepository().nodes().list(Node.State.active);
Map<ApplicationId, List<Node>> retiredNodesByApplication = activeNodes.stream()
.filter(node -> node.allocation().isPresent())
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
index d61c6f38306..b235d6b0ff0 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
@@ -75,15 +75,6 @@ public class Nodes {
}
/**
- * Returns all nodes in any of the given states.
- *
- * @param inState the states to return nodes from. If no states are given, all nodes of the given type are returned
- * @return the node, or empty if it was not found in any of the given states
- */
- public List<Node> getNodes(Node.State... inState) {
- return new ArrayList<>(db.readNodes(inState));
- }
- /**
* Finds and returns the nodes of the given type in any of the given states.
*
* @param type the node type to return
@@ -94,11 +85,20 @@ public class Nodes {
return db.readNodes(inState).stream().filter(node -> node.type().equals(type)).collect(Collectors.toList());
}
- /** Returns a filterable list of nodes in this repository in any of the given states */
+ /**
+ * Returns a list of nodes in this repository in any of the given states
+ *
+ * @param inState the states to return nodes from. If no states are given, all nodes of the given type are returned
+ */
public NodeList list(Node.State... inState) {
- return NodeList.copyOf(getNodes(inState));
+ return NodeList.copyOf(db.readNodes(inState));
}
+ /**
+ * Returns a list of nodes in this repository for an application in any of the given states
+ *
+ * @param inState the states to return nodes from. If no states are given, all nodes of the given type are returned
+ */
public NodeList list(ApplicationId application, Node.State... inState) {
return NodeList.copyOf(getNodes(application, inState));
}
@@ -110,7 +110,7 @@ public class Nodes {
/** Returns a locked list of all nodes in this repository */
public LockedNodeList list(Mutex lock) {
- return new LockedNodeList(getNodes(), lock);
+ return new LockedNodeList(list().asList(), lock);
}
public List<Node> getNodes(ApplicationId id, Node.State... inState) { return db.readNodes(id, inState); }
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
index 696853b2992..95445ad0a66 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java
@@ -261,6 +261,8 @@ public class CuratorDatabaseClient {
/**
* Returns all nodes which are in one of the given states.
* If no states are given this returns all nodes.
+ *
+ * @return the nodes in a mutable list owned by the caller
*/
public List<Node> readNodes(Node.State ... states) {
List<Node> nodes = new ArrayList<>();
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java
index 156d1023bbc..b1bba656dc8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java
@@ -210,8 +210,7 @@ public class LoadBalancerProvisioner {
/** Returns the load balanced clusters of given application and their nodes */
private Map<ClusterSpec.Id, List<Node>> loadBalancedClustersOf(ApplicationId application) {
- NodeList nodes = NodeList.copyOf(nodeRepository.nodes().getNodes(Node.State.reserved, Node.State.active))
- .owner(application);
+ NodeList nodes = nodeRepository.nodes().list(Node.State.reserved, Node.State.active).owner(application);
if (nodes.stream().anyMatch(node -> node.type() == NodeType.config)) {
nodes = nodes.nodeType(NodeType.config).type(ClusterSpec.Type.admin);
} else if (nodes.stream().anyMatch(node -> node.type() == NodeType.controller)) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java
index e71902f908b..5ef71a6c1b1 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesResponse.java
@@ -116,7 +116,7 @@ class NodesResponse extends HttpResponse {
/** Outputs all the nodes to a node array */
private void nodesToSlime(Cursor parentObject) {
Cursor nodeArray = parentObject.setArray("nodes");
- toSlime(nodeRepository.nodes().getNodes(), nodeArray);
+ toSlime(nodeRepository.nodes().list().asList(), nodeArray);
}
private void toSlime(List<Node> nodes, Cursor array) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
index 0617884d227..78835912606 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java
@@ -32,19 +32,19 @@ public class NodeRepositoryTest {
@Test
public void add_and_remove() {
NodeRepositoryTester tester = new NodeRepositoryTester();
- assertEquals(0, tester.nodeRepository().nodes().getNodes().size());
+ assertEquals(0, tester.nodeRepository().nodes().list().size());
tester.addHost("id1", "host1", "default", NodeType.host);
tester.addHost("id2", "host2", "default", NodeType.host);
tester.addHost("id3", "host3", "default", NodeType.host);
- assertEquals(3, tester.nodeRepository().nodes().getNodes().size());
+ assertEquals(3, tester.nodeRepository().nodes().list().size());
tester.nodeRepository().nodes().park("host2", true, Agent.system, "Parking to unit test");
tester.nodeRepository().nodes().removeRecursively("host2");
- assertEquals(3, tester.nodeRepository().nodes().getNodes().size());
- assertEquals(1, tester.nodeRepository().nodes().getNodes(Node.State.deprovisioned).size());
+ assertEquals(3, tester.nodeRepository().nodes().list().size());
+ assertEquals(1, tester.nodeRepository().nodes().list(Node.State.deprovisioned).size());
}
@Test
@@ -120,7 +120,7 @@ public class NodeRepositoryTest {
tester.addNode("node12", "node12", "host1", "docker", NodeType.tenant);
tester.addNode("node20", "node20", "host2", "docker", NodeType.tenant);
tester.setNodeState("node11", Node.State.active);
- assertEquals(6, tester.nodeRepository().nodes().getNodes().size());
+ assertEquals(6, tester.nodeRepository().nodes().list().size());
try {
tester.nodeRepository().nodes().removeRecursively("host1");
@@ -128,18 +128,18 @@ public class NodeRepositoryTest {
} catch (IllegalArgumentException ignored) {
// Expected
}
- assertEquals(6, tester.nodeRepository().nodes().getNodes().size());
+ assertEquals(6, tester.nodeRepository().nodes().list().size());
// Should be OK to delete host2 as both host2 and its only child, node20, are in state provisioned
tester.nodeRepository().nodes().removeRecursively("host2");
- assertEquals(5, tester.nodeRepository().nodes().getNodes().size());
+ assertEquals(5, tester.nodeRepository().nodes().list().size());
assertEquals(Node.State.deprovisioned, tester.nodeRepository().nodes().getNode("host2").get().state());
// Now node10 is in provisioned, set node11 to failed and node12 to ready, and it should be OK to delete host1
tester.nodeRepository().nodes().fail("node11", Agent.system, getClass().getSimpleName());
tester.nodeRepository().nodes().setReady("node12", Agent.system, getClass().getSimpleName());
tester.nodeRepository().nodes().removeRecursively("node12"); // Remove one of the children first instead
- assertEquals(4, tester.nodeRepository().nodes().getNodes().size());
+ assertEquals(4, tester.nodeRepository().nodes().list().size());
tester.nodeRepository().nodes().removeRecursively("host1");
assertEquals(Node.State.deprovisioned, tester.nodeRepository().nodes().getNode("host1").get().state());
assertEquals(IP.Config.EMPTY.primary(), tester.nodeRepository().nodes().getNode("host1").get().ipConfig().primary());
@@ -155,13 +155,13 @@ public class NodeRepositoryTest {
tester.addNode("id2", cfg1, cfghost1, "docker", NodeType.config);
tester.setNodeState(cfghost1, Node.State.active);
tester.setNodeState(cfg1, Node.State.active);
- assertEquals(2, tester.nodeRepository().nodes().getNodes().size());
+ assertEquals(2, tester.nodeRepository().nodes().list().size());
try {
tester.nodeRepository().nodes().removeRecursively(cfghost1);
fail("Should not be able to delete host node, one of the children is in state active");
} catch (IllegalArgumentException ignored) { }
- assertEquals(2, tester.nodeRepository().nodes().getNodes().size());
+ assertEquals(2, tester.nodeRepository().nodes().list().size());
// Fail host and container
tester.nodeRepository().nodes().failRecursively(cfghost1, Agent.system, getClass().getSimpleName());
@@ -225,7 +225,7 @@ public class NodeRepositoryTest {
tester.setNodeState("node12", Node.State.active);
tester.setNodeState("node20", Node.State.failed);
- assertEquals(6, tester.nodeRepository().nodes().getNodes().size());
+ assertEquals(6, tester.nodeRepository().nodes().list().size());
// Should be OK to dirty host2 as it is in provisioned and its only child is in failed
tester.nodeRepository().nodes().deallocateRecursively("host2", Agent.system, NodeRepositoryTest.class.getSimpleName());
@@ -267,8 +267,8 @@ public class NodeRepositoryTest {
tester.setNodeState("node1", Node.State.failed);
tester.nodeRepository().nodes().breakfixRecursively("host1", Agent.system, reason);
- assertEquals(1, tester.nodeRepository().nodes().getNodes().size());
- Node node = tester.nodeRepository().nodes().getNodes().get(0);
+ assertEquals(1, tester.nodeRepository().nodes().list().size());
+ Node node = tester.nodeRepository().nodes().list().first().get();
assertEquals("host1", node.hostname());
assertEquals(Node.State.breakfixed, node.state());
}
@@ -279,7 +279,7 @@ public class NodeRepositoryTest {
private static Set<String> filterNodes(NodeRepositoryTester tester, Predicate<Node> filter) {
return tester.nodeRepository().nodes()
- .getNodes().stream()
+ .list().stream()
.filter(filter)
.map(Node::hostname)
.collect(Collectors.toSet());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
index 2f735742ed5..5cc25e83415 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
@@ -20,6 +20,7 @@ import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.flags.custom.ClusterCapacity;
import com.yahoo.vespa.flags.custom.SharedHost;
import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.node.Address;
import com.yahoo.vespa.hosted.provision.node.Agent;
@@ -88,7 +89,7 @@ public class DynamicProvisioningMaintainerTest {
tester.maintainer.maintain();
assertEquals(Set.of("host4", "host4-1"),
- tester.nodeRepository.nodes().getNodes(Node.State.failed).stream().map(Node::hostname).collect(Collectors.toSet()));
+ tester.nodeRepository.nodes().list(Node.State.failed).stream().map(Node::hostname).collect(Collectors.toSet()));
}
@Test
@@ -123,7 +124,7 @@ public class DynamicProvisioningMaintainerTest {
ClusterCapacity.class);
assertEquals(0, tester.hostProvisioner.provisionedHosts.size());
- assertEquals(11, tester.nodeRepository.nodes().getNodes().size());
+ assertEquals(11, tester.nodeRepository.nodes().list().size());
assertTrue(tester.nodeRepository.nodes().getNode("host2").isPresent());
assertTrue(tester.nodeRepository.nodes().getNode("host2-1").isPresent());
assertTrue(tester.nodeRepository.nodes().getNode("host3").isPresent());
@@ -134,7 +135,7 @@ public class DynamicProvisioningMaintainerTest {
assertEquals(2, tester.hostProvisioner.provisionedHosts.size());
assertEquals(2, tester.provisionedHostsMatching(new NodeResources(48, 128, 1000, 10)));
- List<Node> nodesAfter = tester.nodeRepository.nodes().getNodes();
+ NodeList nodesAfter = tester.nodeRepository.nodes().list();
assertEquals(11, nodesAfter.size()); // 2 removed, 2 added
assertTrue("Failed host 'host2' is deprovisioned", tester.nodeRepository.nodes().getNode("host2").isEmpty());
assertTrue("Node on deprovisioned host removed", tester.nodeRepository.nodes().getNode("host2-1").isEmpty());
@@ -154,7 +155,7 @@ public class DynamicProvisioningMaintainerTest {
ClusterCapacity.class);
assertEquals(0, tester.hostProvisioner.provisionedHosts.size());
- assertEquals(11, tester.nodeRepository.nodes().getNodes().size());
+ assertEquals(11, tester.nodeRepository.nodes().list().size());
assertTrue(tester.nodeRepository.nodes().getNode("host2").isPresent());
assertTrue(tester.nodeRepository.nodes().getNode("host2-1").isPresent());
assertTrue(tester.nodeRepository.nodes().getNode("host3").isPresent());
@@ -194,7 +195,7 @@ public class DynamicProvisioningMaintainerTest {
assertEquals(2, tester.hostProvisioner.provisionedHosts.size());
assertEquals(2, tester.provisionedHostsMatching(new NodeResources(48, 128, 1000, 10)));
- assertEquals(10, tester.nodeRepository.nodes().getNodes().size()); // 3 removed, 2 added
+ assertEquals(10, tester.nodeRepository.nodes().list().size()); // 3 removed, 2 added
assertTrue("preprovision capacity is prefered on shared hosts", tester.nodeRepository.nodes().getNode("host3").isEmpty());
assertTrue(tester.nodeRepository.nodes().getNode("hostname100").isPresent());
assertTrue(tester.nodeRepository.nodes().getNode("hostname101").isPresent());
@@ -210,7 +211,7 @@ public class DynamicProvisioningMaintainerTest {
assertEquals("one provisioned host has been deprovisioned, so there are 2 -> 1 provisioned hosts",
1, tester.hostProvisioner.provisionedHosts.size());
assertEquals(1, tester.provisionedHostsMatching(new NodeResources(48, 128, 1000, 10)));
- assertEquals(9, tester.nodeRepository.nodes().getNodes().size()); // 4 removed, 2 added
+ assertEquals(9, tester.nodeRepository.nodes().list().size()); // 4 removed, 2 added
if (tester.nodeRepository.nodes().getNode("hostname100").isPresent()) {
assertTrue("hostname101 is superfluous and should have been deprovisioned",
tester.nodeRepository.nodes().getNode("hostname101").isEmpty());
@@ -224,7 +225,7 @@ public class DynamicProvisioningMaintainerTest {
private void verifyFirstMaintain(DynamicProvisioningTester tester) {
assertEquals(1, tester.hostProvisioner.provisionedHosts.size());
assertEquals(1, tester.provisionedHostsMatching(new NodeResources(48, 128, 1000, 10)));
- assertEquals(10, tester.nodeRepository.nodes().getNodes().size()); // 2 removed, 1 added
+ assertEquals(10, tester.nodeRepository.nodes().list().size()); // 2 removed, 1 added
assertTrue("Failed host 'host2' is deprovisioned", tester.nodeRepository.nodes().getNode("host2").isEmpty());
assertTrue("Node on deprovisioned host removed", tester.nodeRepository.nodes().getNode("host2-1").isEmpty());
assertTrue("One 1-30-20-3 node fits on host3", tester.nodeRepository.nodes().getNode("host3").isPresent());
@@ -482,9 +483,9 @@ public class DynamicProvisioningMaintainerTest {
}
private void assertNodesUnchanged() {
- List<Node> nodes = nodeRepository.nodes().getNodes();
+ NodeList nodes = nodeRepository.nodes().list();
maintainer.maintain();
- assertEquals("Nodes are unchanged after maintenance run", nodes, nodeRepository.nodes().getNodes());
+ assertEquals("Nodes are unchanged after maintenance run", nodes, nodeRepository.nodes().list());
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
index d02d08f7736..6a10b930871 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java
@@ -341,7 +341,7 @@ public class FailedExpirerTest {
public void assertNodesIn(Node.State state, String... hostnames) {
assertEquals(Stream.of(hostnames).collect(Collectors.toSet()),
nodeRepository.nodes()
- .getNodes(state).stream()
+ .list(state).stream()
.map(Node::hostname)
.collect(Collectors.toSet()));
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
index 4bee276af6d..0f24826f1be 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
@@ -15,6 +15,7 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.History;
import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
@@ -65,14 +66,14 @@ public class InactiveAndFailedExpirerTest {
// Inactive times out
tester.advanceTime(Duration.ofMinutes(14));
new InactiveExpirer(tester.nodeRepository(), Duration.ofMinutes(10), new TestMetric()).run();
- assertEquals(0, tester.nodeRepository().nodes().getNodes(Node.State.inactive).size());
- List<Node> dirty = tester.nodeRepository().nodes().getNodes(Node.State.dirty);
+ assertEquals(0, tester.nodeRepository().nodes().list(Node.State.inactive).size());
+ NodeList dirty = tester.nodeRepository().nodes().list(Node.State.dirty);
assertEquals(2, dirty.size());
- assertFalse(dirty.get(0).allocation().isPresent());
- assertFalse(dirty.get(1).allocation().isPresent());
+ assertFalse(dirty.asList().get(0).allocation().isPresent());
+ assertFalse(dirty.asList().get(1).allocation().isPresent());
// One node is set back to ready
- Node ready = tester.nodeRepository().nodes().setReady(Collections.singletonList(dirty.get(0)), Agent.system, getClass().getSimpleName()).get(0);
+ Node ready = tester.nodeRepository().nodes().setReady(Collections.singletonList(dirty.asList().get(0)), Agent.system, getClass().getSimpleName()).get(0);
assertEquals("Allocated history is removed on readying",
Arrays.asList(History.Event.Type.provisioned, History.Event.Type.readied),
ready.history().events().stream().map(History.Event::type).collect(Collectors.toList()));
@@ -108,11 +109,11 @@ public class InactiveAndFailedExpirerTest {
// Inactive times out and node is moved to dirty
tester.advanceTime(Duration.ofMinutes(14));
new InactiveExpirer(tester.nodeRepository(), Duration.ofMinutes(10), new TestMetric()).run();
- List<Node> dirty = tester.nodeRepository().nodes().getNodes(Node.State.dirty);
+ NodeList dirty = tester.nodeRepository().nodes().list(Node.State.dirty);
assertEquals(2, dirty.size());
// Reboot generation is increased
- assertEquals(wantedRebootGeneration + 1, dirty.get(0).status().reboot().wanted());
+ assertEquals(wantedRebootGeneration + 1, dirty.first().get().status().reboot().wanted());
}
@Test
@@ -154,12 +155,12 @@ public class InactiveAndFailedExpirerTest {
doThrow(new RuntimeException()).when(orchestrator).acquirePermissionToRemove(any());
new RetiredExpirer(tester.nodeRepository(), tester.orchestrator(), deployer, new TestMetric(),
Duration.ofDays(30), Duration.ofMinutes(10)).run();
- assertEquals(1, tester.nodeRepository().nodes().getNodes(Node.State.inactive).size());
+ assertEquals(1, tester.nodeRepository().nodes().list(Node.State.inactive).size());
// Inactive times out and one node is moved to parked
tester.advanceTime(Duration.ofMinutes(11)); // Trigger InactiveExpirer
new InactiveExpirer(tester.nodeRepository(), Duration.ofMinutes(10), new TestMetric()).run();
- assertEquals(1, tester.nodeRepository().nodes().getNodes(Node.State.parked).size());
+ assertEquals(1, tester.nodeRepository().nodes().list(Node.State.parked).size());
}
@Test
@@ -181,11 +182,10 @@ public class InactiveAndFailedExpirerTest {
// See that nodes are moved to dirty immediately.
new InactiveExpirer(tester.nodeRepository(), Duration.ofMinutes(10), new TestMetric()).run();
- assertEquals(0, tester.nodeRepository().nodes().getNodes(Node.State.inactive).size());
- List<Node> dirty = tester.nodeRepository().nodes().getNodes(Node.State.dirty);
+ assertEquals(0, tester.nodeRepository().nodes().list(Node.State.inactive).size());
+ NodeList dirty = tester.nodeRepository().nodes().list(Node.State.dirty);
assertEquals(1, dirty.size());
- assertFalse(dirty.get(0).allocation().isPresent());
-
+ assertFalse(dirty.first().get().allocation().isPresent());
}
@Test
@@ -206,7 +206,7 @@ public class InactiveAndFailedExpirerTest {
tester.patchNodes(inactiveNodes, (node) -> node.withWantToRetire(true, true, Agent.system, tester.clock().instant()));
tester.advanceTime(Duration.ofMinutes(11));
new InactiveExpirer(tester.nodeRepository(), Duration.ofMinutes(10), new TestMetric()).run();
- assertEquals(2, tester.nodeRepository().nodes().getNodes(Node.State.parked).size());
+ assertEquals(2, tester.nodeRepository().nodes().list(Node.State.parked).size());
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
index dba3ca6a92e..d21f7dfd459 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java
@@ -212,7 +212,7 @@ public class NodeFailTester {
}
public void allNodesMakeAConfigRequestExcept(List<Node> deadNodes) {
- for (Node node : nodeRepository.nodes().getNodes()) {
+ for (Node node : nodeRepository.nodes().list()) {
if ( ! deadNodes.contains(node))
hostLivenessTracker.receivedRequestFrom(node.hostname());
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java
index 50b99afbca5..401b4093798 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailerTest.java
@@ -51,7 +51,7 @@ public class NodeFailerTest {
String hostWithFailureReports = selectFirstParentHostWithNActiveNodesExcept(tester.nodeRepository, 2);
// Set failure report to the parent and all its children.
- tester.nodeRepository.nodes().getNodes().stream()
+ tester.nodeRepository.nodes().list().stream()
.filter(node -> node.hostname().equals(hostWithFailureReports))
.forEach(node -> {
Node updatedNode = node.with(node.reports().withReport(badTotalMemorySizeReport));
@@ -101,7 +101,7 @@ public class NodeFailerTest {
tester.suspend(hostWithHwFailure);
tester.runMaintainers();
assertEquals(Node.State.failed, tester.nodeRepository.nodes().getNode(hostWithHwFailure).get().state());
- assertEquals(4, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(4, tester.nodeRepository.nodes().list(Node.State.failed).size());
}
@Test
@@ -121,7 +121,7 @@ public class NodeFailerTest {
// Set failure report to the parent and all its children.
Report badTotalMemorySizeReport = Report.basicReport("badTotalMemorySize", HARD_FAIL, Instant.now(), "too low");
- tester.nodeRepository.nodes().getNodes().stream()
+ tester.nodeRepository.nodes().list().stream()
.filter(node -> node.hostname().equals(hostWithFailureReports))
.forEach(node -> {
Node updatedNode = node.with(node.reports().withReport(badTotalMemorySizeReport));
@@ -482,7 +482,7 @@ public class NodeFailerTest {
tester.runMaintainers();
tester.clock.advance(Duration.ofMinutes(interval));
tester.allNodesMakeAConfigRequestExcept();
- assertEquals(3 + 1, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(3 + 1, tester.nodeRepository.nodes().list(Node.State.failed).size());
}
tester.clock.advance(Duration.ofMinutes(30));
@@ -589,7 +589,7 @@ public class NodeFailerTest {
tester.nodeRepository.nodes().write(readyNode.with(new Reports().withReport(badTotalMemorySizeReport)), () -> {});
tester.runMaintainers();
- assertEquals(1, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(1, tester.nodeRepository.nodes().list(Node.State.failed).size());
}
@Test
@@ -610,7 +610,7 @@ public class NodeFailerTest {
// 2 nodes are failed (the minimum amount that are always allowed to fail)
tester.runMaintainers();
- assertEquals(2, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(2, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("Throttled node failures", 2, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
@@ -620,7 +620,7 @@ public class NodeFailerTest {
tester.allNodesMakeAConfigRequestExcept(deadNodes);
}
tester.runMaintainers();
- assertEquals(2, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(2, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("Throttled node failures", 2, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
@@ -630,7 +630,7 @@ public class NodeFailerTest {
tester.allNodesMakeAConfigRequestExcept(deadNodes);
}
tester.runMaintainers();
- assertEquals(4, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(4, tester.nodeRepository.nodes().list(Node.State.failed).size());
// 24 more hours pass, nothing happens
for (int minutes = 0, interval = 30; minutes < 24 * 60; minutes += interval) {
@@ -652,7 +652,7 @@ public class NodeFailerTest {
assertEquals(4 + /* already failed */
2 + /* hosts */
(2 * 3) /* containers per host */,
- tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("Throttled host failures", 1, tester.metric.values.get(NodeFailer.throttledHostFailuresMetric));
@@ -662,14 +662,14 @@ public class NodeFailerTest {
tester.allNodesMakeAConfigRequestExcept(deadNodes);
}
tester.runMaintainers();
- assertEquals(12, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(12, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("Throttled host failures", 1, tester.metric.values.get(NodeFailer.throttledHostFailuresMetric));
// The final host and its containers are failed out
tester.clock.advance(Duration.ofMinutes(30));
tester.runMaintainers();
- assertEquals(16, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(16, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is not indicated by the metric, as no throttled attempt is made", 0, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("No throttled node failures", 0, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
@@ -677,7 +677,7 @@ public class NodeFailerTest {
tester.clock.advance(Duration.ofHours(25));
tester.allNodesMakeAConfigRequestExcept(deadNodes);
tester.runMaintainers();
- assertEquals(16, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(16, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is not indicated by the metric", 0, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("No throttled node failures", 0, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
}
@@ -695,7 +695,7 @@ public class NodeFailerTest {
}
tester.runMaintainers();
// 2% are allowed to fail
- assertEquals(10, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(10, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric.", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("Throttled node failures", 5, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
@@ -705,7 +705,7 @@ public class NodeFailerTest {
tester.allNodesMakeAConfigRequestExcept(deadNodes);
}
tester.runMaintainers();
- assertEquals(10, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(10, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is indicated by the metric.", 1, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("Throttled node failures", 5, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
@@ -715,7 +715,7 @@ public class NodeFailerTest {
tester.allNodesMakeAConfigRequestExcept(deadNodes);
}
tester.runMaintainers();
- assertEquals(15, tester.nodeRepository.nodes().getNodes(Node.State.failed).size());
+ assertEquals(15, tester.nodeRepository.nodes().list(Node.State.failed).size());
assertEquals("Throttling is not indicated by the metric, as no throttled attempt is made.", 0, tester.metric.values.get(NodeFailer.throttlingActiveMetric));
assertEquals("No throttled node failures", 0, tester.metric.values.get(NodeFailer.throttledNodeFailuresMetric));
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java
index b9f3985172b..cf883389225 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRebooterTest.java
@@ -113,7 +113,7 @@ public class NodeRebooterTest {
/** Set current reboot generation to the wanted reboot generation whenever it is larger (i.e record a reboot) */
private void simulateReboot(NodeRepository nodeRepository) {
- for (Node node : nodeRepository.nodes().getNodes(Node.State.ready, Node.State.active)) {
+ for (Node node : nodeRepository.nodes().list(Node.State.ready, Node.State.active)) {
if (node.status().reboot().wanted() > node.status().reboot().current())
nodeRepository.nodes().write(node.withCurrentRebootGeneration(node.status().reboot().wanted(),
nodeRepository.clock().instant()), () -> {});
@@ -129,7 +129,7 @@ public class NodeRebooterTest {
private void simulateOsUpgrade(NodeRepository nodeRepository) {
var wantedOsVersion = nodeRepository.osVersions().targetFor(NodeType.host);
if (wantedOsVersion.isEmpty()) return;
- for (Node node : nodeRepository.nodes().getNodes(Node.State.ready, Node.State.active)) {
+ for (Node node : nodeRepository.nodes().list(Node.State.ready, Node.State.active)) {
if (wantedOsVersion.get().isAfter(node.status().osVersion().current().orElse(Version.emptyVersion)))
nodeRepository.nodes().write(node.withCurrentOsVersion(wantedOsVersion.get(), nodeRepository.clock().instant()),
() -> {});
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
index 1f1e6a79317..ab00d098130 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
@@ -108,7 +108,7 @@ public class PeriodicApplicationMaintainerTest {
fixture.activate();
// Freeze active nodes to simulate an application being deleted during a maintenance run
- List<Node> frozenActiveNodes = nodeRepository.nodes().getNodes(Node.State.active);
+ NodeList frozenActiveNodes = nodeRepository.nodes().list(Node.State.active);
// Remove one application without letting the application maintainer know about it
fixture.remove(fixture.app2);
@@ -261,9 +261,9 @@ public class PeriodicApplicationMaintainerTest {
private static class TestablePeriodicApplicationMaintainer extends PeriodicApplicationMaintainer {
- private List<Node> overriddenNodesNeedingMaintenance;
+ private NodeList overriddenNodesNeedingMaintenance;
- void setOverriddenNodesNeedingMaintenance(List<Node> overriddenNodesNeedingMaintenance) {
+ void setOverriddenNodesNeedingMaintenance(NodeList overriddenNodesNeedingMaintenance) {
this.overriddenNodesNeedingMaintenance = overriddenNodesNeedingMaintenance;
}
@@ -273,7 +273,7 @@ public class PeriodicApplicationMaintainerTest {
}
@Override
- protected List<Node> nodesNeedingMaintenance() {
+ protected NodeList nodesNeedingMaintenance() {
return overriddenNodesNeedingMaintenance != null
? overriddenNodesNeedingMaintenance
: super.nodesNeedingMaintenance();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
index bc2676c0acf..4f08fa9ab9e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RebalancerTest.java
@@ -17,6 +17,7 @@ import com.yahoo.config.provisioning.FlavorsConfig;
import com.yahoo.test.ManualClock;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.hosted.provision.Node;
+import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.provisioning.FlavorConfigBuilder;
@@ -92,7 +93,7 @@ public class RebalancerTest {
tester.maintain();
assertTrue("Want to retire is reset", tester.getNodes(Node.State.active).stream().noneMatch(node -> node.status().wantToRetire()));
assertEquals("Reserved node was moved to dirty", 1, tester.getNodes(Node.State.dirty).size());
- String reservedHostname = tester.getNodes(Node.State.dirty).get(0).hostname();
+ String reservedHostname = tester.getNodes(Node.State.dirty).first().get().hostname();
tester.nodeRepository().nodes().setReady(reservedHostname, Agent.system, "Cleanup");
tester.nodeRepository().nodes().removeRecursively(reservedHostname);
@@ -185,7 +186,7 @@ public class RebalancerTest {
Optional<Node> getNode(String hostname) { return tester.nodeRepository().nodes().getNode(hostname); }
- List<Node> getNodes(Node.State nodeState) { return tester.nodeRepository().nodes().getNodes(nodeState); }
+ NodeList getNodes(Node.State nodeState) { return tester.nodeRepository().nodes().list(nodeState); }
Node getNode(ApplicationId applicationId) { return tester.nodeRepository().nodes().getNodes(applicationId).get(0); }
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java
index 7005a64127a..e6e685899a5 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/os/OsVersionsTest.java
@@ -107,7 +107,7 @@ public class OsVersionsTest {
tester.nodeRepository().nodes().fail(host.hostname(), Agent.system, OsVersions.class.getSimpleName());
tester.nodeRepository().nodes().removeRecursively(host.hostname());
}
- assertEquals(10, tester.nodeRepository().nodes().getNodes(Node.State.deprovisioned).size());
+ assertEquals(10, tester.nodeRepository().nodes().list(Node.State.deprovisioned).size());
// Set target
var version1 = Version.fromString("7.1");
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java
index 02ee41a5226..48a2d47c173 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java
@@ -413,8 +413,8 @@ public class DockerProvisioningTest {
}
else {
assertEquals(0, tester.getNodes(app1, Node.State.inactive).size());
- assertEquals(2, tester.nodeRepository().nodes().getNodes(Node.State.dirty).size());
- tester.nodeRepository().nodes().setReady(tester.nodeRepository().nodes().getNodes(Node.State.dirty), Agent.system, "test");
+ assertEquals(2, tester.nodeRepository().nodes().list(Node.State.dirty).size());
+ tester.nodeRepository().nodes().setReady(tester.nodeRepository().nodes().list(Node.State.dirty).asList(), Agent.system, "test");
tester.activate(app1, cluster1, Capacity.from(new ClusterResources(4, 1, r)));
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java
index 0c8e19e0793..a0f5fd21f2d 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java
@@ -522,11 +522,10 @@ public class DynamicDockerAllocationTest {
}
private List<Node> findSpareCapacity(ProvisioningTester tester) {
- List<Node> nodes = tester.nodeRepository().nodes().getNodes(State.values());
- NodeList nl = NodeList.copyOf(nodes);
+ NodeList nodes = tester.nodeRepository().nodes().list(State.values());
return nodes.stream()
.filter(n -> n.type() == NodeType.host)
- .filter(n -> nl.childrenOf(n).size() == 0) // Nodes without children
+ .filter(n -> nodes.childrenOf(n).size() == 0) // Nodes without children
.collect(Collectors.toList());
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
index 9b564232111..acd3311651f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
@@ -265,7 +265,7 @@ public class NodeTypeProvisioningTest {
// All the nodes that were marked with wantToRetire earlier are now dirty
assertEquals(nodesToRetire.stream().map(Node::hostname).collect(Collectors.toSet()),
- tester.nodeRepository().nodes().getNodes(Node.State.dirty).stream().map(Node::hostname).collect(Collectors.toSet()));
+ tester.nodeRepository().nodes().list(Node.State.dirty).stream().map(Node::hostname).collect(Collectors.toSet()));
}
private List<HostSpec> deployProxies(ApplicationId application, ProvisioningTester tester) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
index 33f33836b8d..cf9b6dbd861 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
@@ -109,7 +109,7 @@ public class ProvisioningTest {
tester.remove(application1);
assertEquals(tester.toHostNames(previouslyActive.not().container().asList()),
tester.toHostNames(tester.nodeRepository().nodes().getNodes(application1, Node.State.inactive)));
- assertTrue(tester.nodeRepository().nodes().getNodes(Node.State.dirty).containsAll(previouslyActive.container().asList()));
+ assertTrue(tester.nodeRepository().nodes().list(Node.State.dirty).asList().containsAll(previouslyActive.container().asList()));
assertEquals(0, tester.getNodes(application1, Node.State.active).size());
assertTrue(tester.nodeRepository().applications().get(application1).isEmpty());
@@ -127,7 +127,7 @@ public class ProvisioningTest {
tester.activate(application2, state2App2.allHosts);
// deploy first app again
- tester.nodeRepository().nodes().setReady(tester.nodeRepository().nodes().getNodes(Node.State.dirty), Agent.system, "recycled");
+ tester.nodeRepository().nodes().setReady(tester.nodeRepository().nodes().list(Node.State.dirty).asList(), Agent.system, "recycled");
SystemState state7 = prepare(application1, 2, 2, 3, 3, defaultResources, tester);
state7.assertEquals(state1);
tester.activate(application1, state7.allHosts);
@@ -222,7 +222,7 @@ public class ProvisioningTest {
SystemState state3 = prepare(application1, 2, 2, 3, 3, defaultResources, tester);
tester.activate(application1, state3.allHosts);
assertEquals("Superfluous container nodes are dirtyed",
- 3-2 + 4-2, tester.nodeRepository().nodes().getNodes(Node.State.dirty).size());
+ 3-2 + 4-2, tester.nodeRepository().nodes().list(Node.State.dirty).size());
assertEquals("Superfluous content nodes are retired",
4-3 + 5-3, tester.getNodes(application1, Node.State.active).retired().size());
@@ -245,7 +245,7 @@ public class ProvisioningTest {
SystemState state5 = prepare(application1, 2, 2, 3, 3, defaultResources, tester);
tester.activate(application1, state5.allHosts);
assertEquals("Superfluous container nodes are also dirtyed",
- 4-2 + 5-2 + 1 + 4-2, tester.nodeRepository().nodes().getNodes(Node.State.dirty).size());
+ 4-2 + 5-2 + 1 + 4-2, tester.nodeRepository().nodes().list(Node.State.dirty).size());
assertEquals("Superfluous content nodes are retired",
5-3 + 6-3 - 1, tester.getNodes(application1, Node.State.active).retired().size());