diff options
author | Jon Bratseth <bratseth@gmail.com> | 2021-02-09 22:11:33 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2021-02-09 22:11:33 +0100 |
commit | 55966811bea4d23a7bba84e2145dabfb2bcd68e1 (patch) | |
tree | f892524e73818eba804946a0d814d2bee6d0a2b2 | |
parent | 7a9fe3fa0024c5dd995c1f48584bc7fab5284299 (diff) |
Remove getNodes(...): Always use list(...)
25 files changed, 143 insertions, 142 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java index 81fa7ed2d4b..2f01f6b31ae 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java @@ -176,7 +176,7 @@ public class Autoscaler { return false; // A deployment is ongoing - if (nodeRepository.nodes().getNodes(nodes.first().get().allocation().get().owner(), Node.State.reserved).size() > 0) + if (nodeRepository.nodes().list(nodes.first().get().allocation().get().owner(), Node.State.reserved).size() > 0) return false; return true; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java index e8f216c793a..47712847754 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/MaintenanceDeployment.java @@ -116,7 +116,7 @@ class MaintenanceDeployment implements Closeable { Deployer deployer, NodeRepository nodeRepository) { if (lock.isEmpty()) return Optional.empty(); - if (nodeRepository.nodes().getNodes(application, Node.State.active).isEmpty()) return Optional.empty(); + if (nodeRepository.nodes().list(application, Node.State.active).isEmpty()) return Optional.empty(); return deployer.deployFromLocalActive(application); } @@ -168,7 +168,7 @@ class MaintenanceDeployment implements Closeable { if ( ! deployment.prepare()) return false; if (verifyTarget) { expectedNewNode = - nodeRepository.nodes().getNodes(application, Node.State.reserved).stream() + nodeRepository.nodes().list(application, Node.State.reserved).stream() .filter(n -> !n.hostname().equals(node.hostname())) .filter(n -> n.allocation().get().membership().cluster().id().equals(node.allocation().get().membership().cluster().id())) .findAny(); 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 b235d6b0ff0..904bf08676d 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 @@ -100,12 +100,7 @@ public class Nodes { * @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)); - } - - /** Returns a filterable list of all nodes of an application */ - public NodeList list(ApplicationId application) { - return NodeList.copyOf(getNodes(application)); + return NodeList.copyOf(db.readNodes(application, inState)); } /** Returns a locked list of all nodes in this repository */ @@ -113,7 +108,6 @@ public class Nodes { return new LockedNodeList(list().asList(), lock); } - public List<Node> getNodes(ApplicationId id, Node.State... inState) { return db.readNodes(id, inState); } public List<Node> getInactive() { return db.readNodes(Node.State.inactive); } public List<Node> getFailed() { return db.readNodes(Node.State.failed); } @@ -421,7 +415,7 @@ public class Nodes { // TODO: Work out a safe lock acquisition strategy for moves, e.g. migrate to lockNode. try (Mutex lock = lock(node)) { if (toState == Node.State.active) { - for (Node currentActive : getNodes(node.allocation().get().owner(), Node.State.active)) { + for (Node currentActive : list(node.allocation().get().owner(), Node.State.active)) { if (node.allocation().get().membership().cluster().equals(currentActive.allocation().get().membership().cluster()) && node.allocation().get().membership().index() == currentActive.allocation().get().membership().index()) illegal("Could not set " + node + " active: Same cluster and index as " + currentActive); diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java index 825ea82e95c..a5057bd1134 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java @@ -150,7 +150,7 @@ public class NodeRepositoryProvisioner implements Provisioner { private ClusterResources currentResources(ApplicationId applicationId, ClusterSpec clusterSpec, Capacity requested) { - List<Node> nodes = NodeList.copyOf(nodeRepository.nodes().getNodes(applicationId, Node.State.active)) + List<Node> nodes = nodeRepository.nodes().list(applicationId, Node.State.active) .cluster(clusterSpec.id()) .not().retired() .not().removable() diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java index 18ab9b70491..41a6b0d42b1 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java @@ -85,7 +85,7 @@ class Preparer { */ private List<Node> findNodesInRemovableGroups(ApplicationId application, ClusterSpec requestedCluster, int wantedGroups) { List<Node> surplusNodes = new ArrayList<>(0); - for (Node node : nodeRepository.nodes().getNodes(application, Node.State.active)) { + for (Node node : nodeRepository.nodes().list(application, Node.State.active)) { ClusterSpec nodeCluster = node.allocation().get().membership().cluster(); if ( ! nodeCluster.id().equals(requestedCluster.id())) continue; if ( ! nodeCluster.type().equals(requestedCluster.type())) continue; @@ -127,7 +127,7 @@ class Preparer { */ private int findHighestIndex(ApplicationId application, ClusterSpec cluster) { int highestIndex = -1; - for (Node node : nodeRepository.nodes().getNodes(application, Node.State.allocatedStates().toArray(new Node.State[0]))) { + for (Node node : nodeRepository.nodes().list(application, Node.State.allocatedStates().toArray(new Node.State[0]))) { ClusterSpec nodeCluster = node.allocation().get().membership().cluster(); if ( ! nodeCluster.id().equals(cluster.id())) continue; if ( ! nodeCluster.type().equals(cluster.type())) continue; diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java index a6a58b6a9dd..b872e2cd9cb 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/NodesV2ApiHandler.java @@ -435,7 +435,7 @@ public class NodesV2ApiHandler extends LoggingRequestHandler { if (application.isEmpty()) return ErrorResponse.notFoundError("No application '" + id + "'"); Slime slime = ApplicationSerializer.toSlime(application.get(), - nodeRepository.nodes().getNodes(id, Node.State.active), + nodeRepository.nodes().list(id, Node.State.active).asList(), withPath("/nodes/v2/applications/" + id, uri)); return new SlimeJsonResponse(slime); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java index ce30baa3862..d2a2544c89c 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java @@ -70,7 +70,7 @@ public class ServiceMonitorStub implements ServiceMonitor { Map<ApplicationInstanceReference, ApplicationInstance> status = new HashMap<>(); for (Map.Entry<ApplicationId, MockDeployer.ApplicationContext> app : apps.entrySet()) { Set<ServiceInstance> serviceInstances = new HashSet<>(); - for (Node node : nodeRepository.nodes().getNodes(app.getValue().id(), Node.State.active)) { + for (Node node : nodeRepository.nodes().list(app.getValue().id(), Node.State.active)) { serviceInstances.add(new ServiceInstance(new ConfigId("configid"), new HostName(node.hostname()), getHostStatus(node.hostname()))); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java index a5f3d5f2828..dbb8c00e44d 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java @@ -116,7 +116,7 @@ public class AutoscalingTest { // deploy with slow tester.deploy(application1, cluster1, 5, 1, hostResources); - tester.nodeRepository().nodes().getNodes(application1).stream() + tester.nodeRepository().nodes().list(application1).stream() .allMatch(n -> n.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.slow); tester.clock().advance(Duration.ofDays(2)); @@ -132,7 +132,7 @@ public class AutoscalingTest { assertEquals("Disk speed from min/max is used", NodeResources.DiskSpeed.any, scaledResources.nodeResources().diskSpeed()); tester.deploy(application1, cluster1, scaledResources); - tester.nodeRepository().nodes().getNodes(application1).stream() + tester.nodeRepository().nodes().list(application1).stream() .allMatch(n -> n.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.any); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java index e3148ad5de0..8a7f439304d 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java @@ -17,6 +17,7 @@ import com.yahoo.config.provision.Zone; import com.yahoo.test.ManualClock; import com.yahoo.transaction.Mutex; 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.Nodelike; import com.yahoo.vespa.hosted.provision.applications.Application; @@ -105,7 +106,7 @@ class AutoscalingTester { public void deactivateRetired(ApplicationId application, ClusterSpec cluster, ClusterResources resources) { try (Mutex lock = nodeRepository().nodes().lock(application)){ - for (Node node : nodeRepository().nodes().getNodes(application, Node.State.active)) { + for (Node node : nodeRepository().nodes().list(application, Node.State.active)) { if (node.allocation().get().membership().retired()) nodeRepository().nodes().write(node.with(node.allocation().get().removable(true)), lock); } @@ -125,7 +126,7 @@ class AutoscalingTester { */ public void addCpuMeasurements(float value, float otherResourcesLoad, int count, ApplicationId applicationId) { - List<Node> nodes = nodeRepository().nodes().getNodes(applicationId, Node.State.active); + NodeList nodes = nodeRepository().nodes().list(applicationId, Node.State.active); float oneExtraNodeFactor = (float)(nodes.size() - 1.0) / (nodes.size()); for (int i = 0; i < count; i++) { clock().advance(Duration.ofMinutes(1)); @@ -156,7 +157,7 @@ class AutoscalingTester { */ public void addMemMeasurements(float value, float otherResourcesLoad, int count, ApplicationId applicationId) { - List<Node> nodes = nodeRepository().nodes().getNodes(applicationId, Node.State.active); + NodeList nodes = nodeRepository().nodes().list(applicationId, Node.State.active); float oneExtraNodeFactor = (float)(nodes.size() - 1.0) / (nodes.size()); for (int i = 0; i < count; i++) { clock().advance(Duration.ofMinutes(1)); @@ -181,7 +182,7 @@ class AutoscalingTester { public void addMeasurements(float cpu, float memory, float disk, int generation, boolean inService, boolean stable, int count, ApplicationId applicationId) { - List<Node> nodes = nodeRepository().nodes().getNodes(applicationId, Node.State.active); + NodeList nodes = nodeRepository().nodes().list(applicationId, Node.State.active); for (int i = 0; i < count; i++) { clock().advance(Duration.ofMinutes(1)); for (Node node : nodes) { diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java index 1ea4abab17b..9ac9a182512 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/MetricsV2MetricsFetcherTest.java @@ -78,8 +78,8 @@ public class MetricsV2MetricsFetcherTest { { httpClient.cannedResponse = cannedResponseForApplication2; try (Mutex lock = tester.nodeRepository().nodes().lock(application1)) { - tester.nodeRepository().nodes().write(tester.nodeRepository().nodes().getNodes(application2, Node.State.active) - .get(0).retire(tester.clock().instant()), lock); + tester.nodeRepository().nodes().write(tester.nodeRepository().nodes().list(application2, Node.State.active) + .first().get().retire(tester.clock().instant()), lock); } List<Pair<String, MetricSnapshot>> values = new ArrayList<>(fetcher.fetchMetrics(application2).get().metrics()); assertFalse(values.get(0).getSecond().stable()); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java index d6e6a7548c2..d9ecd0c6653 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainerTester.java @@ -13,6 +13,7 @@ import com.yahoo.config.provision.Zone; import com.yahoo.config.provisioning.FlavorsConfig; import com.yahoo.test.ManualClock; 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.applications.Cluster; import com.yahoo.vespa.hosted.provision.applications.ScalingEvent; @@ -71,7 +72,7 @@ public class AutoscalingMaintainerTester { } public void addMeasurements(float cpu, float mem, float disk, long generation, int count, ApplicationId applicationId) { - List<Node> nodes = nodeRepository().nodes().getNodes(applicationId, Node.State.active); + NodeList nodes = nodeRepository().nodes().list(applicationId, Node.State.active); for (int i = 0; i < count; i++) { for (Node node : nodes) metricsDb.add(List.of(new Pair<>(node.hostname(), new MetricSnapshot(clock().instant(), diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java index 832f8c0c318..32b5f567341 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java @@ -132,7 +132,7 @@ public class LoadBalancerExpirerTest { } private void dirtyNodesOf(ApplicationId application, ClusterSpec.Id cluster) { - tester.nodeRepository().nodes().deallocate(tester.nodeRepository().nodes().getNodes(application).stream() + tester.nodeRepository().nodes().deallocate(tester.nodeRepository().nodes().list(application).stream() .filter(node -> node.allocation().isPresent()) .filter(node -> node.allocation().get().membership().cluster().id().equals(cluster)) .collect(Collectors.toList()), 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 d21f7dfd459..402eabe457e 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 @@ -18,6 +18,7 @@ import com.yahoo.vespa.applicationmodel.HostName; import com.yahoo.vespa.curator.Curator; import com.yahoo.vespa.curator.transaction.CuratorTransaction; 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.node.IP; @@ -102,8 +103,8 @@ public class NodeFailTester { tester.activate(app1, clusterApp1, capacity1); tester.activate(app2, clusterApp2, capacity2); - assertEquals(capacity1.minResources().nodes(), tester.nodeRepository.nodes().getNodes(app1, Node.State.active).size()); - assertEquals(capacity2.minResources().nodes(), tester.nodeRepository.nodes().getNodes(app2, Node.State.active).size()); + assertEquals(capacity1.minResources().nodes(), tester.nodeRepository.nodes().list(app1, Node.State.active).size()); + assertEquals(capacity2.minResources().nodes(), tester.nodeRepository.nodes().list(app2, Node.State.active).size()); Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of( app1, new MockDeployer.ApplicationContext(app1, clusterApp1, capacity1), @@ -133,9 +134,9 @@ public class NodeFailTester { tester.activate(app1, clusterApp1, capacity1); tester.activate(app2, clusterApp2, capacity2); assertEquals(Set.of(tester.nodeRepository.nodes().getNodes(NodeType.host)), - Set.of(tester.nodeRepository.nodes().getNodes(tenantHostApp, Node.State.active))); - assertEquals(capacity1.minResources().nodes(), tester.nodeRepository.nodes().getNodes(app1, Node.State.active).size()); - assertEquals(capacity2.minResources().nodes(), tester.nodeRepository.nodes().getNodes(app2, Node.State.active).size()); + Set.of(tester.nodeRepository.nodes().list(tenantHostApp, Node.State.active).asList())); + assertEquals(capacity1.minResources().nodes(), tester.nodeRepository.nodes().list(app1, Node.State.active).size()); + assertEquals(capacity2.minResources().nodes(), tester.nodeRepository.nodes().list(app2, Node.State.active).size()); Map<ApplicationId, MockDeployer.ApplicationContext> apps = Map.of( tenantHostApp, new MockDeployer.ApplicationContext(tenantHostApp, clusterNodeAdminApp, allHosts), @@ -288,7 +289,7 @@ public class NodeFailTester { } /** Returns the node with the highest membership index from the given set of allocated nodes */ - public Node highestIndex(List<Node> nodes) { + public Node highestIndex(NodeList nodes) { Node highestIndex = null; for (Node node : nodes) { if (highestIndex == null || node.allocation().get().membership().index() > 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 401b4093798..5f82800d31c 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 @@ -173,8 +173,8 @@ public class NodeFailerTest { tester.suspend(NodeFailTester.app1); // Set two nodes down (one for each application) and wait 65 minutes - String host_from_suspended_app = tester.nodeRepository.nodes().getNodes(NodeFailTester.app1, Node.State.active).get(1).hostname(); - String host_from_normal_app = tester.nodeRepository.nodes().getNodes(NodeFailTester.app2, Node.State.active).get(3).hostname(); + String host_from_suspended_app = tester.nodeRepository.nodes().list(NodeFailTester.app1, Node.State.active).asList().get(1).hostname(); + String host_from_normal_app = tester.nodeRepository.nodes().list(NodeFailTester.app2, Node.State.active).asList().get(3).hostname(); tester.serviceMonitor.setHostDown(host_from_suspended_app); tester.serviceMonitor.setHostDown(host_from_normal_app); tester.runMaintainers(); @@ -191,15 +191,15 @@ public class NodeFailerTest { public void zone_is_not_working_if_too_many_nodes_down() { NodeFailTester tester = NodeFailTester.withTwoApplications(); - tester.serviceMonitor.setHostDown(tester.nodeRepository.nodes().getNodes(NodeFailTester.app1, Node.State.active).get(0).hostname()); + tester.serviceMonitor.setHostDown(tester.nodeRepository.nodes().list(NodeFailTester.app1, Node.State.active).asList().get(0).hostname()); tester.runMaintainers(); assertTrue(tester.nodeRepository.nodes().isWorking()); - tester.serviceMonitor.setHostDown(tester.nodeRepository.nodes().getNodes(NodeFailTester.app1, Node.State.active).get(1).hostname()); + tester.serviceMonitor.setHostDown(tester.nodeRepository.nodes().list(NodeFailTester.app1, Node.State.active).asList().get(1).hostname()); tester.runMaintainers(); assertTrue(tester.nodeRepository.nodes().isWorking()); - tester.serviceMonitor.setHostDown(tester.nodeRepository.nodes().getNodes(NodeFailTester.app1, Node.State.active).get(2).hostname()); + tester.serviceMonitor.setHostDown(tester.nodeRepository.nodes().list(NodeFailTester.app1, Node.State.active).asList().get(2).hostname()); tester.runMaintainers(); assertFalse(tester.nodeRepository.nodes().isWorking()); @@ -235,8 +235,8 @@ public class NodeFailerTest { assertEquals(Node.State.failed, tester.nodeRepository.nodes().getNode(readyFail1.hostname()).get().state()); assertEquals(Node.State.failed, tester.nodeRepository.nodes().getNode(readyFail2.hostname()).get().state()); - String downHost1 = tester.nodeRepository.nodes().getNodes(NodeFailTester.app1, Node.State.active).get(1).hostname(); - String downHost2 = tester.nodeRepository.nodes().getNodes(NodeFailTester.app2, Node.State.active).get(3).hostname(); + String downHost1 = tester.nodeRepository.nodes().list(NodeFailTester.app1, Node.State.active).asList().get(1).hostname(); + String downHost2 = tester.nodeRepository.nodes().list(NodeFailTester.app2, Node.State.active).asList().get(3).hostname(); tester.serviceMonitor.setHostDown(downHost1); tester.serviceMonitor.setHostDown(downHost2); // nothing happens the first 45 minutes @@ -280,7 +280,7 @@ public class NodeFailerTest { assertEquals( 0, tester.nodeRepository.nodes().getNodes(NodeType.tenant, Node.State.ready).size()); // the last host goes down - Node lastNode = tester.highestIndex(tester.nodeRepository.nodes().getNodes(NodeFailTester.app1, Node.State.active)); + Node lastNode = tester.highestIndex(tester.nodeRepository.nodes().list(NodeFailTester.app1, Node.State.active)); tester.serviceMonitor.setHostDown(lastNode.hostname()); // it is not failed because there are no ready nodes to replace it for (int minutes = 0; minutes < 75; minutes +=5 ) { @@ -304,7 +304,7 @@ public class NodeFailerTest { assertEquals( 5, tester.nodeRepository.nodes().getNodes(NodeType.tenant, Node.State.failed).size()); assertEquals( 0, tester.nodeRepository.nodes().getNodes(NodeType.tenant, Node.State.ready).size()); assertTrue("The index of the last failed node is not reused", - tester.highestIndex(tester.nodeRepository.nodes().getNodes(NodeFailTester.app1, Node.State.active)).allocation().get().membership().index() + tester.highestIndex(tester.nodeRepository.nodes().list(NodeFailTester.app1, Node.State.active)).allocation().get().membership().index() > lastNode.allocation().get().membership().index()); } @@ -312,7 +312,7 @@ public class NodeFailerTest { @Test public void re_activate_grace_period_test() { NodeFailTester tester = NodeFailTester.withTwoApplications(); - String downNode = tester.nodeRepository.nodes().getNodes(NodeFailTester.app1, Node.State.active).get(1).hostname(); + String downNode = tester.nodeRepository.nodes().list(NodeFailTester.app1, Node.State.active).asList().get(1).hostname(); tester.serviceMonitor.setHostDown(downNode); tester.allNodesMakeAConfigRequestExcept(); @@ -349,7 +349,7 @@ public class NodeFailerTest { ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test")).vespaVersion("6.42").build(); tester.activate(NodeFailTester.app1, cluster, capacity); - String downHost = tester.nodeRepository.nodes().getNodes(NodeFailTester.app1, Node.State.active).get(0).hostname(); + String downHost = tester.nodeRepository.nodes().list(NodeFailTester.app1, Node.State.active).first().get().hostname(); tester.serviceMonitor.setHostDown(downHost); // nothing happens the first 45 minutes diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java index f331f3bcb4a..b90f98c9ad8 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java @@ -51,19 +51,19 @@ public class OperatorChangeApplicationMaintainerTest { maintainer.maintain(); assertEquals("No changes -> no redeployments", 3, fixture.deployer.redeployments); - nodeRepository.nodes().fail(nodeRepository.nodes().getNodes(fixture.app1).get(3).hostname(), Agent.system, "Failing to unit test"); + nodeRepository.nodes().fail(nodeRepository.nodes().list(fixture.app1).asList().get(3).hostname(), Agent.system, "Failing to unit test"); clock.advance(Duration.ofMinutes(2)); maintainer.maintain(); assertEquals("System change -> no redeployments", 3, fixture.deployer.redeployments); clock.advance(Duration.ofSeconds(1)); - nodeRepository.nodes().fail(nodeRepository.nodes().getNodes(fixture.app2).get(4).hostname(), Agent.operator, "Manual node failing"); + nodeRepository.nodes().fail(nodeRepository.nodes().list(fixture.app2).asList().get(4).hostname(), Agent.operator, "Manual node failing"); clock.advance(Duration.ofMinutes(2)); maintainer.maintain(); assertEquals("Operator change -> redeployment", 4, fixture.deployer.redeployments); clock.advance(Duration.ofSeconds(1)); - nodeRepository.nodes().fail(nodeRepository.nodes().getNodes(fixture.app3).get(1).hostname(), Agent.operator, "Manual node failing"); + nodeRepository.nodes().fail(nodeRepository.nodes().list(fixture.app3).asList().get(1).hostname(), Agent.operator, "Manual node failing"); clock.advance(Duration.ofMinutes(2)); maintainer.maintain(); assertEquals("Operator change -> redeployment", 5, fixture.deployer.redeployments); @@ -104,9 +104,9 @@ public class OperatorChangeApplicationMaintainerTest { deployer.deployFromLocalActive(app1, false).get().activate(); deployer.deployFromLocalActive(app2, false).get().activate(); deployer.deployFromLocalActive(app3, false).get().activate(); - assertEquals(wantedNodesApp1, nodeRepository.nodes().getNodes(app1, Node.State.active).size()); - assertEquals(wantedNodesApp2, nodeRepository.nodes().getNodes(app2, Node.State.active).size()); - assertEquals(wantedNodesApp3, nodeRepository.nodes().getNodes(app3, Node.State.active).size()); + assertEquals(wantedNodesApp1, nodeRepository.nodes().list(app1, Node.State.active).size()); + assertEquals(wantedNodesApp2, nodeRepository.nodes().list(app2, Node.State.active).size()); + assertEquals(wantedNodesApp3, nodeRepository.nodes().list(app3, Node.State.active).size()); } } 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 ab00d098130..6ba716799d1 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 @@ -64,21 +64,21 @@ public class PeriodicApplicationMaintainerTest { fixture.setBootstrapping(false); // Fail and park some nodes - nodeRepository.nodes().fail(nodeRepository.nodes().getNodes(fixture.app1).get(3).hostname(), Agent.system, "Failing to unit test"); - nodeRepository.nodes().fail(nodeRepository.nodes().getNodes(fixture.app2).get(0).hostname(), Agent.system, "Failing to unit test"); - nodeRepository.nodes().park(nodeRepository.nodes().getNodes(fixture.app2).get(4).hostname(), true, Agent.system, "Parking to unit test"); + nodeRepository.nodes().fail(nodeRepository.nodes().list(fixture.app1).asList().get(3).hostname(), Agent.system, "Failing to unit test"); + nodeRepository.nodes().fail(nodeRepository.nodes().list(fixture.app2).asList().get(0).hostname(), Agent.system, "Failing to unit test"); + nodeRepository.nodes().park(nodeRepository.nodes().list(fixture.app2).asList().get(4).hostname(), true, Agent.system, "Parking to unit test"); int failedInApp1 = 1; int failedOrParkedInApp2 = 2; - assertEquals(fixture.wantedNodesApp1 - failedInApp1, nodeRepository.nodes().getNodes(fixture.app1, Node.State.active).size()); - assertEquals(fixture.wantedNodesApp2 - failedOrParkedInApp2, nodeRepository.nodes().getNodes(fixture.app2, Node.State.active).size()); + assertEquals(fixture.wantedNodesApp1 - failedInApp1, nodeRepository.nodes().list(fixture.app1, Node.State.active).size()); + assertEquals(fixture.wantedNodesApp2 - failedOrParkedInApp2, nodeRepository.nodes().list(fixture.app2, Node.State.active).size()); assertEquals(failedInApp1 + failedOrParkedInApp2, nodeRepository.nodes().getNodes(NodeType.tenant, Node.State.failed, Node.State.parked).size()); assertEquals(3, nodeRepository.nodes().getNodes(NodeType.tenant, Node.State.ready).size()); assertEquals(2, nodeRepository.nodes().getNodes(NodeType.host, Node.State.ready).size()); // Cause maintenance deployment which will allocate replacement nodes fixture.runApplicationMaintainer(); - assertEquals(fixture.wantedNodesApp1, nodeRepository.nodes().getNodes(fixture.app1, Node.State.active).size()); - assertEquals(fixture.wantedNodesApp2, nodeRepository.nodes().getNodes(fixture.app2, Node.State.active).size()); + assertEquals(fixture.wantedNodesApp1, nodeRepository.nodes().list(fixture.app1, Node.State.active).size()); + assertEquals(fixture.wantedNodesApp2, nodeRepository.nodes().list(fixture.app2, Node.State.active).size()); assertEquals(0, nodeRepository.nodes().getNodes(NodeType.tenant, Node.State.ready).size()); // Reactivate the previously failed nodes @@ -88,8 +88,8 @@ public class PeriodicApplicationMaintainerTest { int reactivatedInApp1 = 1; int reactivatedInApp2 = 2; assertEquals(0, nodeRepository.nodes().getNodes(NodeType.tenant, Node.State.failed).size()); - assertEquals(fixture.wantedNodesApp1 + reactivatedInApp1, nodeRepository.nodes().getNodes(fixture.app1, Node.State.active).size()); - assertEquals(fixture.wantedNodesApp2 + reactivatedInApp2, nodeRepository.nodes().getNodes(fixture.app2, Node.State.active).size()); + assertEquals(fixture.wantedNodesApp1 + reactivatedInApp1, nodeRepository.nodes().list(fixture.app1, Node.State.active).size()); + assertEquals(fixture.wantedNodesApp2 + reactivatedInApp2, nodeRepository.nodes().list(fixture.app2, Node.State.active).size()); assertEquals("The reactivated nodes are now active but not part of the application", 0, fixture.getNodes(Node.State.active).retired().size()); @@ -112,13 +112,13 @@ public class PeriodicApplicationMaintainerTest { // Remove one application without letting the application maintainer know about it fixture.remove(fixture.app2); - assertEquals(fixture.wantedNodesApp2, nodeRepository.nodes().getNodes(fixture.app2, Node.State.inactive).size()); + assertEquals(fixture.wantedNodesApp2, nodeRepository.nodes().list(fixture.app2, Node.State.inactive).size()); // Nodes belonging to app2 are inactive after maintenance fixture.maintainer.setOverriddenNodesNeedingMaintenance(frozenActiveNodes); fixture.runApplicationMaintainer(); assertEquals("Inactive nodes were incorrectly activated after maintenance", fixture.wantedNodesApp2, - nodeRepository.nodes().getNodes(fixture.app2, Node.State.inactive).size()); + nodeRepository.nodes().list(fixture.app2, Node.State.inactive).size()); } @Test(timeout = 60_000) @@ -232,8 +232,8 @@ public class PeriodicApplicationMaintainerTest { void activate() { deployer.deployFromLocalActive(app1, false).get().activate(); deployer.deployFromLocalActive(app2, false).get().activate(); - assertEquals(wantedNodesApp1, nodeRepository.nodes().getNodes(app1, Node.State.active).size()); - assertEquals(wantedNodesApp2, nodeRepository.nodes().getNodes(app2, Node.State.active).size()); + assertEquals(wantedNodesApp1, nodeRepository.nodes().list(app1, Node.State.active).size()); + assertEquals(wantedNodesApp2, nodeRepository.nodes().list(app2, Node.State.active).size()); } void remove(ApplicationId application) { 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 4f08fa9ab9e..a1aa097e4cc 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 @@ -177,7 +177,7 @@ public class RebalancerTest { } List<Node> getNodes(ApplicationId applicationId, Node.State nodeState) { - return tester.nodeRepository().nodes().getNodes(applicationId, nodeState); + return tester.nodeRepository().nodes().list(applicationId, nodeState).asList(); } boolean isNodeRetired(Node node) { @@ -188,7 +188,7 @@ public class RebalancerTest { NodeList getNodes(Node.State nodeState) { return tester.nodeRepository().nodes().list(nodeState); } - Node getNode(ApplicationId applicationId) { return tester.nodeRepository().nodes().getNodes(applicationId).get(0); } + Node getNode(ApplicationId applicationId) { return tester.nodeRepository().nodes().list(applicationId).first().get(); } ManualClock clock() { return tester.clock(); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java index fa492c3a3e9..129e4e3a775 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/RetiredExpirerTest.java @@ -71,8 +71,8 @@ public class RetiredExpirerTest { activate(applicationId, cluster, wantedNodes=7, 1); activate(applicationId, cluster, wantedNodes=2, 1); activate(applicationId, cluster, wantedNodes=3, 1); - assertEquals(7, nodeRepository.nodes().getNodes(applicationId, Node.State.active).size()); - assertEquals(0, nodeRepository.nodes().getNodes(applicationId, Node.State.inactive).size()); + assertEquals(7, nodeRepository.nodes().list(applicationId, Node.State.active).size()); + assertEquals(0, nodeRepository.nodes().list(applicationId, Node.State.inactive).size()); // Cause inactivation of retired nodes clock.advance(Duration.ofHours(30)); // Retire period spent @@ -83,12 +83,12 @@ public class RetiredExpirerTest { cluster, Capacity.from(new ClusterResources(wantedNodes, 1, nodeResources))))); createRetiredExpirer(deployer).run(); - assertEquals(3, nodeRepository.nodes().getNodes(applicationId, Node.State.active).size()); - assertEquals(4, nodeRepository.nodes().getNodes(applicationId, Node.State.inactive).size()); + assertEquals(3, nodeRepository.nodes().list(applicationId, Node.State.active).size()); + assertEquals(4, nodeRepository.nodes().list(applicationId, Node.State.inactive).size()); assertEquals(1, deployer.redeployments); // inactivated nodes are not retired - for (Node node : nodeRepository.nodes().getNodes(applicationId, Node.State.inactive)) + for (Node node : nodeRepository.nodes().list(applicationId, Node.State.inactive)) assertFalse(node.allocation().get().membership().retired()); } @@ -106,8 +106,8 @@ public class RetiredExpirerTest { activate(applicationId, cluster, wantedNodes=7, 1); activate(applicationId, cluster, wantedNodes=2, 1); activate(applicationId, cluster, wantedNodes=3, 1); - assertEquals(7, nodeRepository.nodes().getNodes(applicationId, Node.State.active).size()); - assertEquals(0, nodeRepository.nodes().getNodes(applicationId, Node.State.inactive).size()); + assertEquals(7, nodeRepository.nodes().list(applicationId, Node.State.active).size()); + assertEquals(0, nodeRepository.nodes().list(applicationId, Node.State.inactive).size()); // Cause inactivation of retired nodes MockDeployer deployer = @@ -128,27 +128,27 @@ public class RetiredExpirerTest { RetiredExpirer retiredExpirer = createRetiredExpirer(deployer); retiredExpirer.run(); - assertEquals(5, nodeRepository.nodes().getNodes(applicationId, Node.State.active).size()); - assertEquals(2, nodeRepository.nodes().getNodes(applicationId, Node.State.inactive).size()); + assertEquals(5, nodeRepository.nodes().list(applicationId, Node.State.active).size()); + assertEquals(2, nodeRepository.nodes().list(applicationId, Node.State.inactive).size()); assertEquals(1, deployer.redeployments); verify(orchestrator, times(4)).acquirePermissionToRemove(any()); // Running it again has no effect retiredExpirer.run(); - assertEquals(5, nodeRepository.nodes().getNodes(applicationId, Node.State.active).size()); - assertEquals(2, nodeRepository.nodes().getNodes(applicationId, Node.State.inactive).size()); + assertEquals(5, nodeRepository.nodes().list(applicationId, Node.State.active).size()); + assertEquals(2, nodeRepository.nodes().list(applicationId, Node.State.inactive).size()); assertEquals(1, deployer.redeployments); verify(orchestrator, times(6)).acquirePermissionToRemove(any()); clock.advance(RETIRED_EXPIRATION.plusMinutes(1)); retiredExpirer.run(); - assertEquals(3, nodeRepository.nodes().getNodes(applicationId, Node.State.active).size()); - assertEquals(4, nodeRepository.nodes().getNodes(applicationId, Node.State.inactive).size()); + assertEquals(3, nodeRepository.nodes().list(applicationId, Node.State.active).size()); + assertEquals(4, nodeRepository.nodes().list(applicationId, Node.State.inactive).size()); assertEquals(2, deployer.redeployments); verify(orchestrator, times(6)).acquirePermissionToRemove(any()); // inactivated nodes are not retired - for (Node node : nodeRepository.nodes().getNodes(applicationId, Node.State.inactive)) + for (Node node : nodeRepository.nodes().list(applicationId, Node.State.inactive)) assertFalse(node.allocation().get().membership().retired()); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java index 4d334147212..0d2de73635e 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ScalingSuggestionsMaintainerTest.java @@ -14,6 +14,7 @@ import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.Zone; import com.yahoo.config.provisioning.FlavorsConfig; 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.applications.Cluster; import com.yahoo.vespa.hosted.provision.autoscale.MetricSnapshot; @@ -121,7 +122,7 @@ public class ScalingSuggestionsMaintainerTest { public void addMeasurements(float cpu, float memory, float disk, int generation, int count, ApplicationId applicationId, NodeRepository nodeRepository, MetricsDb db) { - List<Node> nodes = nodeRepository.nodes().getNodes(applicationId, Node.State.active); + NodeList nodes = nodeRepository.nodes().list(applicationId, Node.State.active); for (int i = 0; i < count; i++) { for (Node node : nodes) db.add(List.of(new Pair<>(node.hostname(), new MetricSnapshot(nodeRepository.clock().instant(), diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java index 23a8af045af..b697cf1dc4b 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java @@ -8,6 +8,7 @@ import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.hosted.provision.Node; +import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.node.NodeAcl; import org.junit.Test; @@ -33,7 +34,7 @@ public class AclProvisioningTest { @Test public void trusted_nodes_for_allocated_node() { - List<Node> configServers = tester.makeConfigServers(3, "d-1-4-10", Version.fromString("6.123.456")); + NodeList configServers = tester.makeConfigServers(3, "d-1-4-10", Version.fromString("6.123.456")); // Populate repo tester.makeReadyNodes(10, new NodeResources(1, 4, 10, 1)); @@ -55,14 +56,14 @@ public class AclProvisioningTest { Supplier<NodeAcl> nodeAcls = () -> node.acl(tester.nodeRepository().nodes().list(), tester.nodeRepository().loadBalancers()); // Trusted nodes are active nodes in same application, proxy nodes and config servers - assertAcls(List.of(activeNodes, proxyNodes, configServers, host), + assertAcls(List.of(activeNodes, proxyNodes, configServers.asList(), host), Set.of("10.2.3.0/24", "10.4.5.0/24"), List.of(nodeAcls.get())); } @Test public void trusted_nodes_for_unallocated_node() { - List<Node> configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); + NodeList configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo tester.makeReadyNodes(10, nodeResources); @@ -77,12 +78,12 @@ public class AclProvisioningTest { List<Node> tenantNodes = tester.nodeRepository().nodes().getNodes(NodeType.tenant); // Trusted nodes are all proxy-, config-, and, tenant-nodes - assertAcls(List.of(proxyNodes, configServers, tenantNodes), List.of(nodeAcl)); + assertAcls(List.of(proxyNodes, configServers.asList(), tenantNodes), List.of(nodeAcl)); } @Test public void trusted_nodes_for_config_server() { - List<Node> configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); + NodeList configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo tester.makeReadyNodes(10, nodeResources); @@ -98,12 +99,12 @@ public class AclProvisioningTest { NodeAcl nodeAcl = node.acl(tester.nodeRepository().nodes().list(), tester.nodeRepository().loadBalancers()); // Trusted nodes is all tenant nodes, all proxy nodes, all config servers and load balancer subnets - assertAcls(List.of(tenantNodes, proxyNodes, configServers), Set.of("10.2.3.0/24", "10.4.5.0/24"), List.of(nodeAcl)); + assertAcls(List.of(tenantNodes, proxyNodes, configServers.asList()), Set.of("10.2.3.0/24", "10.4.5.0/24"), List.of(nodeAcl)); } @Test public void trusted_nodes_for_proxy() { - List<Node> configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); + NodeList configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo tester.makeReadyNodes(10, "default"); @@ -114,17 +115,17 @@ public class AclProvisioningTest { tester.deploy(zoneApplication, Capacity.fromRequiredNodeType(NodeType.proxy)); // Get trusted nodes for first proxy node - List<Node> proxyNodes = tester.nodeRepository().nodes().getNodes(zoneApplication); - Node node = proxyNodes.get(0); + NodeList proxyNodes = tester.nodeRepository().nodes().list(zoneApplication); + Node node = proxyNodes.first().get(); NodeAcl nodeAcl = node.acl(tester.nodeRepository().nodes().list(), tester.nodeRepository().loadBalancers()); // Trusted nodes is all config servers and all proxy nodes - assertAcls(List.of(proxyNodes, configServers), List.of(nodeAcl)); + assertAcls(List.of(proxyNodes.asList(), configServers.asList()), List.of(nodeAcl)); } @Test public void trusted_nodes_for_children_of_docker_host() { - List<Node> configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); + NodeList configServers = tester.makeConfigServers(3, "default", Version.fromString("6.123.456")); // Populate repo List<Node> dockerHostNodes = tester.makeReadyNodes(2, "default", NodeType.host); @@ -143,7 +144,7 @@ public class AclProvisioningTest { .findFirst() .orElseThrow(() -> new RuntimeException("Expected to find ACL for node " + dockerNode.hostname())); assertEquals(dockerHostNodeUnderTest.hostname(), dockerNode.parentHostname().get()); - assertAcls(List.of(configServers, dockerNodes, List.of(dockerHostNodeUnderTest)), nodeAcl); + assertAcls(List.of(configServers.asList(), dockerNodes, List.of(dockerHostNodeUnderTest)), nodeAcl); } } 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 a0f5fd21f2d..301341e1e61 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 @@ -315,9 +315,9 @@ public class DynamicDockerAllocationTest { List<HostSpec> hosts = tester.prepare(application, clusterSpec("myContent.t1.a1"), 2, 1, new NodeResources(1, 4, 100, 1)); tester.activate(application, hosts); - List<Node> activeNodes = tester.nodeRepository().nodes().getNodes(application); - assertEquals(ImmutableSet.of("127.0.127.13", "::13"), activeNodes.get(0).ipConfig().primary()); - assertEquals(ImmutableSet.of("127.0.127.2", "::2"), activeNodes.get(1).ipConfig().primary()); + NodeList activeNodes = tester.nodeRepository().nodes().list(application); + assertEquals(ImmutableSet.of("127.0.127.13", "::13"), activeNodes.asList().get(0).ipConfig().primary()); + assertEquals(ImmutableSet.of("127.0.127.2", "::2"), activeNodes.asList().get(1).ipConfig().primary()); } @Test @@ -437,16 +437,16 @@ public class DynamicDockerAllocationTest { // Redeploy does not change allocation as a host with switch information is no better or worse than hosts // without switch information - List<Node> allocatedNodes = tester.nodeRepository().nodes().getNodes(app1); + NodeList allocatedNodes = tester.nodeRepository().nodes().list(app1); tester.activate(app1, tester.prepare(app1, cluster, Capacity.from(new ClusterResources(2, 1, resources)))); - assertEquals("Allocation unchanged", allocatedNodes, tester.nodeRepository().nodes().getNodes(app1)); + assertEquals("Allocation unchanged", allocatedNodes, tester.nodeRepository().nodes().list(app1)); // Initial hosts are attached to the same switch tester.patchNodes(hosts0, (host) -> host.withSwitchHostname(switch0)); // Redeploy does not change allocation tester.activate(app1, tester.prepare(app1, cluster, Capacity.from(new ClusterResources(2, 1, resources)))); - assertEquals("Allocation unchanged", allocatedNodes, tester.nodeRepository().nodes().getNodes(app1)); + assertEquals("Allocation unchanged", allocatedNodes, tester.nodeRepository().nodes().list(app1)); // One regular host and one slow-disk host are provisioned on the same switch String switch1 = "switch1"; diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java index 1d9c04999a1..3d75760edc2 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java @@ -188,7 +188,7 @@ public class DynamicDockerProvisionTest { ApplicationId app = ProvisioningTester.applicationId(); Function<Node, Node> retireNode = node -> tester.patchNode(node, (n) -> n.withWantToRetire(true, Agent.system, Instant.now())); - Function<Integer, Node> getNodeInGroup = group -> tester.nodeRepository().nodes().getNodes(app).stream() + Function<Integer, Node> getNodeInGroup = group -> tester.nodeRepository().nodes().list(app).stream() .filter(node -> node.allocation().get().membership().cluster().group().get().index() == group) .findAny().orElseThrow(); @@ -209,7 +209,7 @@ public class DynamicDockerProvisionTest { tester.prepare(app, clusterSpec("content"), 8, 2, resources); // Verify that nodes have unique indices from 0..9 - var indices = tester.nodeRepository().nodes().getNodes(app).stream() + var indices = tester.nodeRepository().nodes().list(app).stream() .map(node -> node.allocation().get().membership().index()) .collect(Collectors.toSet()); assertTrue(indices.containsAll(IntStream.range(0, 10).boxed().collect(Collectors.toList()))); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java index fece475852a..93242b1cff2 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java @@ -12,6 +12,7 @@ import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.vespa.flags.InMemoryFlagSource; import com.yahoo.vespa.hosted.provision.Node; +import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.lb.LoadBalancer; import com.yahoo.vespa.hosted.provision.lb.LoadBalancerInstance; import com.yahoo.vespa.hosted.provision.lb.Real; @@ -136,7 +137,7 @@ public class LoadBalancerProvisionerTest { // Entire application is removed: Nodes and load balancer are deactivated tester.remove(app1); dirtyNodesOf(app1); - assertTrue("No nodes are allocated to " + app1, tester.nodeRepository().nodes().getNodes(app1, Node.State.reserved, Node.State.active).isEmpty()); + assertTrue("No nodes are allocated to " + app1, tester.nodeRepository().nodes().list(app1, Node.State.reserved, Node.State.active).isEmpty()); assertEquals(2, lbApp1.get().size()); assertTrue("Deactivated load balancers", lbApp1.get().stream().allMatch(lb -> lb.state() == LoadBalancer.State.inactive)); assertTrue("Load balancers for " + app2 + " remain active", lbApp2.get().stream().allMatch(lb -> lb.state() == LoadBalancer.State.active)); @@ -167,7 +168,7 @@ public class LoadBalancerProvisionerTest { var nodes = tester.prepare(app1, clusterRequest(ClusterSpec.Type.container, ClusterSpec.Id.from("qrs")), 2 , 1, resources); Supplier<LoadBalancer> lb = () -> tester.nodeRepository().loadBalancers().list(app1).asList().get(0); assertTrue("Load balancer provisioned with empty reals", tester.loadBalancerService().instances().get(lb.get().id()).reals().isEmpty()); - assignIps(tester.nodeRepository().nodes().getNodes(app1)); + assignIps(tester.nodeRepository().nodes().list(app1)); tester.activate(app1, nodes); assertFalse("Load balancer is reconfigured with reals", tester.loadBalancerService().instances().get(lb.get().id()).reals().isEmpty()); @@ -180,7 +181,7 @@ public class LoadBalancerProvisionerTest { // Application is redeployed nodes = tester.prepare(app1, clusterRequest(ClusterSpec.Type.container, ClusterSpec.Id.from("qrs")), 2 , 1, resources); assertTrue("Load balancer is reconfigured with empty reals", tester.loadBalancerService().instances().get(lb.get().id()).reals().isEmpty()); - assignIps(tester.nodeRepository().nodes().getNodes(app1)); + assignIps(tester.nodeRepository().nodes().list(app1)); tester.activate(app1, nodes); assertFalse("Load balancer is reconfigured with reals", tester.loadBalancerService().instances().get(lb.get().id()).reals().isEmpty()); } @@ -269,7 +270,7 @@ public class LoadBalancerProvisionerTest { } private void dirtyNodesOf(ApplicationId application) { - tester.nodeRepository().nodes().deallocate(tester.nodeRepository().nodes().getNodes(application), Agent.system, this.getClass().getSimpleName()); + tester.nodeRepository().nodes().deallocate(tester.nodeRepository().nodes().list(application).asList(), Agent.system, this.getClass().getSimpleName()); } private Set<HostSpec> prepare(ApplicationId application, ClusterSpec... specs) { @@ -285,10 +286,10 @@ public class LoadBalancerProvisionerTest { return allNodes; } - private void assignIps(List<Node> nodes) { + private void assignIps(NodeList nodes) { try (var lock = tester.nodeRepository().nodes().lockUnallocated()) { for (int i = 0; i < nodes.size(); i++) { - tester.nodeRepository().nodes().write(nodes.get(i).with(IP.Config.EMPTY.withPrimary(Set.of("127.0.0." + i))), lock); + tester.nodeRepository().nodes().write(nodes.asList().get(i).with(IP.Config.EMPTY.withPrimary(Set.of("127.0.0." + i))), lock); } } } 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 cf9b6dbd861..324f931be14 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 @@ -95,7 +95,8 @@ public class ProvisioningTest { SystemState state5 = prepare(application1, 2, 2, 3, 3, defaultResources, tester); HostSpec removed = tester.removeOne(state5.allHosts); tester.activate(application1, state5.allHosts); - assertEquals(removed.hostname(), tester.nodeRepository().nodes().getNodes(application1, Node.State.inactive).get(0).hostname()); + assertEquals(removed.hostname(), + tester.nodeRepository().nodes().list(application1, Node.State.inactive).first().get().hostname()); // remove some of the clusters SystemState state6 = prepare(application1, 0, 2, 0, 3, defaultResources, tester); @@ -107,14 +108,14 @@ public class ProvisioningTest { NodeList previouslyActive = tester.getNodes(application1, Node.State.active); NodeList previouslyInactive = tester.getNodes(application1, Node.State.inactive); tester.remove(application1); - assertEquals(tester.toHostNames(previouslyActive.not().container().asList()), - tester.toHostNames(tester.nodeRepository().nodes().getNodes(application1, Node.State.inactive))); + assertEquals(tester.toHostNames(previouslyActive.not().container()), + tester.toHostNames(tester.nodeRepository().nodes().list(application1, Node.State.inactive))); 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()); // other application is unaffected - assertEquals(state1App2.hostNames(), tester.toHostNames(tester.nodeRepository().nodes().getNodes(application2, Node.State.active))); + assertEquals(state1App2.hostNames(), tester.toHostNames(tester.nodeRepository().nodes().list(application2, Node.State.active))); // fail a node from app2 and make sure it does not get inactive nodes from first HostSpec failed = tester.removeOne(state1App2.allHosts); @@ -289,7 +290,7 @@ public class ProvisioningTest { // redeploy with increased sizes and new flavor SystemState state3 = prepare(application1, 3, 4, 4, 5, large, tester); - assertEquals("New nodes are reserved", 16, tester.nodeRepository().nodes().getNodes(application1, Node.State.reserved).size()); + assertEquals("New nodes are reserved", 16, tester.nodeRepository().nodes().list(application1, Node.State.reserved).size()); tester.activate(application1, state3.allHosts); assertEquals("small container nodes are retired because we are swapping the entire cluster", 2 + 2, tester.getNodes(application1, Node.State.active).retired().type(ClusterSpec.Type.container).resources(small).size()); @@ -316,7 +317,7 @@ public class ProvisioningTest { SystemState state1 = prepare(application1, 2, 2, 4, 4, small, tester); tester.activate(application1, state1.allHosts); - tester.nodeRepository().nodes().getNodes(application1) + tester.nodeRepository().nodes().list(application1) .forEach(n -> assertEquals(large, tester.nodeRepository().nodes().getNode(n.parentHostname().get()).get().resources())); } @@ -374,7 +375,7 @@ public class ProvisioningTest { assertEquals(6, state.allHosts.size()); tester.activate(application, state.allHosts); assertTrue(state.allHosts.stream().allMatch(host -> host.requestedResources().get().diskSpeed() == NodeResources.DiskSpeed.any)); - assertTrue(tester.nodeRepository().nodes().getNodes(application).stream().allMatch(node -> node.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.any)); + assertTrue(tester.nodeRepository().nodes().list(application).stream().allMatch(node -> node.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.any)); } { @@ -386,7 +387,7 @@ public class ProvisioningTest { assertEquals(8, state.allHosts.size()); tester.activate(application, state.allHosts); assertTrue(state.allHosts.stream().allMatch(host -> host.requestedResources().get().diskSpeed() == NodeResources.DiskSpeed.fast)); - assertTrue(tester.nodeRepository().nodes().getNodes(application).stream().allMatch(node -> node.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.fast)); + assertTrue(tester.nodeRepository().nodes().list(application).stream().allMatch(node -> node.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.fast)); } { @@ -397,7 +398,7 @@ public class ProvisioningTest { assertEquals(8, state.allHosts.size()); tester.activate(application, state.allHosts); assertTrue(state.allHosts.stream().allMatch(host -> host.requestedResources().get().diskSpeed() == NodeResources.DiskSpeed.any)); - assertTrue(tester.nodeRepository().nodes().getNodes(application).stream().allMatch(node -> node.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.any)); + assertTrue(tester.nodeRepository().nodes().list(application).stream().allMatch(node -> node.allocation().get().requestedResources().diskSpeed() == NodeResources.DiskSpeed.any)); } } @@ -692,25 +693,25 @@ public class ProvisioningTest { // Allocate 5 nodes ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("music")).vespaVersion("4.5.6").build(); tester.activate(application, tester.prepare(application, cluster, capacity)); - assertEquals(5, NodeList.copyOf(tester.nodeRepository().nodes().getNodes(application, Node.State.active)).not().retired().size()); - assertEquals(0, NodeList.copyOf(tester.nodeRepository().nodes().getNodes(application, Node.State.active)).retired().size()); + assertEquals(5, tester.nodeRepository().nodes().list(application, Node.State.active).not().retired().size()); + assertEquals(0, tester.nodeRepository().nodes().list(application, Node.State.active).retired().size()); // Mark the nodes as want to retire - tester.nodeRepository().nodes().getNodes(application, Node.State.active).forEach(node -> tester.patchNode(node, (n) -> n.withWantToRetire(true, Agent.system, tester.clock().instant()))); + tester.nodeRepository().nodes().list(application, Node.State.active).forEach(node -> tester.patchNode(node, (n) -> n.withWantToRetire(true, Agent.system, tester.clock().instant()))); // redeploy without allow failing tester.activate(application, tester.prepare(application, cluster, capacityFORCED)); // Nodes are not retired since that is unsafe when we cannot fail - assertEquals(5, NodeList.copyOf(tester.nodeRepository().nodes().getNodes(application, Node.State.active)).not().retired().size()); - assertEquals(0, NodeList.copyOf(tester.nodeRepository().nodes().getNodes(application, Node.State.active)).retired().size()); + assertEquals(5, tester.nodeRepository().nodes().list(application, Node.State.active).not().retired().size()); + assertEquals(0, tester.nodeRepository().nodes().list(application, Node.State.active).retired().size()); // ... but we still want to - tester.nodeRepository().nodes().getNodes(application, Node.State.active).forEach(node -> assertTrue(node.status().wantToRetire())); + tester.nodeRepository().nodes().list(application, Node.State.active).forEach(node -> assertTrue(node.status().wantToRetire())); // redeploy with allowing failing tester.activate(application, tester.prepare(application, cluster, capacity)); // ... old nodes are now retired - assertEquals(5, NodeList.copyOf(tester.nodeRepository().nodes().getNodes(application, Node.State.active)).not().retired().size()); - assertEquals(5, NodeList.copyOf(tester.nodeRepository().nodes().getNodes(application, Node.State.active)).retired().size()); + assertEquals(5, tester.nodeRepository().nodes().list(application, Node.State.active).not().retired().size()); + assertEquals(5, tester.nodeRepository().nodes().list(application, Node.State.active).retired().size()); } @Test @@ -723,17 +724,17 @@ public class ProvisioningTest { ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("music")).vespaVersion("4.5.6").build(); tester.activate(application, tester.prepare(application, cluster, capacityCanFail)); - assertEquals(0, NodeList.copyOf(tester.nodeRepository().nodes().getNodes(application, Node.State.active)).retired().size()); + assertEquals(0, tester.nodeRepository().nodes().list(application, Node.State.active).retired().size()); - tester.patchNode(tester.nodeRepository().nodes().getNodes(application).stream().findAny().orElseThrow(), n -> n.withWantToRetire(true, Agent.system, tester.clock().instant())); + tester.patchNode(tester.nodeRepository().nodes().list(application).stream().findAny().orElseThrow(), n -> n.withWantToRetire(true, Agent.system, tester.clock().instant())); tester.activate(application, tester.prepare(application, cluster, capacityCanFail)); - assertEquals(1, NodeList.copyOf(tester.nodeRepository().nodes().getNodes(application, Node.State.active)).retired().size()); - assertEquals(6, tester.nodeRepository().nodes().getNodes(application, Node.State.active).size()); + assertEquals(1, tester.nodeRepository().nodes().list(application, Node.State.active).retired().size()); + assertEquals(6, tester.nodeRepository().nodes().list(application, Node.State.active).size()); Capacity capacityCannotFail = Capacity.from(new ClusterResources(5, 1, defaultResources), false, false); tester.activate(application, tester.prepare(application, cluster, capacityCannotFail)); - assertEquals(1, NodeList.copyOf(tester.nodeRepository().nodes().getNodes(application, Node.State.active)).retired().size()); - assertEquals(6, tester.nodeRepository().nodes().getNodes(application, Node.State.active).size()); + assertEquals(1, tester.nodeRepository().nodes().list(application, Node.State.active).retired().size()); + assertEquals(6, tester.nodeRepository().nodes().list(application, Node.State.active).size()); } @Test diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java index fde02c083dd..46418ee3439 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java @@ -143,7 +143,7 @@ public class ProvisioningTester { public NodeRepositoryProvisioner provisioner() { return provisioner; } public LoadBalancerServiceMock loadBalancerService() { return loadBalancerService; } public CapacityPolicies capacityPolicies() { return capacityPolicies; } - public NodeList getNodes(ApplicationId id, Node.State ... inState) { return NodeList.copyOf(nodeRepository.nodes().getNodes(id, inState)); } + public NodeList getNodes(ApplicationId id, Node.State ... inState) { return nodeRepository.nodes().list(id, inState); } public Node patchNode(Node node, UnaryOperator<Node> patcher) { return patchNodes(List.of(node), patcher).get(0); @@ -170,12 +170,12 @@ public class ProvisioningTester { } public List<HostSpec> prepare(ApplicationId application, ClusterSpec cluster, Capacity capacity) { - Set<String> reservedBefore = toHostNames(nodeRepository.nodes().getNodes(application, Node.State.reserved)); - Set<String> inactiveBefore = toHostNames(nodeRepository.nodes().getNodes(application, Node.State.inactive)); + Set<String> reservedBefore = toHostNames(nodeRepository.nodes().list(application, Node.State.reserved)); + Set<String> inactiveBefore = toHostNames(nodeRepository.nodes().list(application, Node.State.inactive)); List<HostSpec> hosts1 = provisioner.prepare(application, cluster, capacity, provisionLogger); List<HostSpec> hosts2 = provisioner.prepare(application, cluster, capacity, provisionLogger); assertEquals("Prepare is idempotent", hosts1, hosts2); - Set<String> newlyActivated = toHostNames(nodeRepository.nodes().getNodes(application, Node.State.reserved)); + Set<String> newlyActivated = toHostNames(nodeRepository.nodes().list(application, Node.State.reserved)); newlyActivated.removeAll(reservedBefore); newlyActivated.removeAll(inactiveBefore); return hosts1; @@ -213,7 +213,7 @@ public class ProvisioningTester { provisioner.activate(hosts, new ActivationContext(0), new ApplicationTransaction(lock, transaction)); transaction.commit(); } - assertEquals(toHostNames(hosts), toHostNames(nodeRepository.nodes().getNodes(application, Node.State.active))); + assertEquals(toHostNames(hosts), toHostNames(nodeRepository.nodes().list(application, Node.State.active))); return hosts; } @@ -250,7 +250,7 @@ public class ProvisioningTester { return hosts.stream().map(HostSpec::hostname).collect(Collectors.toSet()); } - public Set<String> toHostNames(List<Node> nodes) { + public Set<String> toHostNames(NodeList nodes) { return nodes.stream().map(Node::hostname).collect(Collectors.toSet()); } @@ -259,7 +259,7 @@ public class ProvisioningTester { * number of matches to the given filters */ public void assertRestartCount(ApplicationId application, HostFilter... filters) { - for (Node node : nodeRepository.nodes().getNodes(application, Node.State.active)) { + for (Node node : nodeRepository.nodes().list(application, Node.State.active)) { int expectedRestarts = 0; for (HostFilter filter : filters) if (NodeHostFilter.from(filter).matches(node)) @@ -441,7 +441,7 @@ public class ProvisioningTester { return nodes; } - public List<Node> makeConfigServers(int n, String flavor, Version configServersVersion) { + public NodeList makeConfigServers(int n, String flavor, Version configServersVersion) { List<Node> nodes = new ArrayList<>(n); MockNameResolver nameResolver = (MockNameResolver)nodeRepository().nameResolver(); @@ -464,7 +464,7 @@ public class ProvisioningTester { application.getClusterSpecWithVersion(configServersVersion), application.getCapacity()); activate(application.getApplicationId(), new HashSet<>(hosts)); - return nodeRepository.nodes().getNodes(application.getApplicationId(), Node.State.active); + return nodeRepository.nodes().list(application.getApplicationId(), Node.State.active); } public List<Node> makeReadyNodes(int n, String flavor, NodeType type, int ipAddressPoolSize) { @@ -560,7 +560,7 @@ public class ProvisioningTester { } public void assertAllocatedOn(String explanation, String hostFlavor, ApplicationId app) { - for (Node node : nodeRepository.nodes().getNodes(app)) { + for (Node node : nodeRepository.nodes().list(app)) { Node parent = nodeRepository.nodes().getNode(node.parentHostname().get()).get(); assertEquals(node + ": " + explanation, hostFlavor, parent.flavor().name()); } @@ -594,10 +594,10 @@ public class ProvisioningTester { } public int hostFlavorCount(String hostFlavor, ApplicationId app) { - return (int)nodeRepository().nodes().getNodes(app).stream() - .map(n -> nodeRepository().nodes().getNode(n.parentHostname().get()).get()) - .filter(p -> p.flavor().name().equals(hostFlavor)) - .count(); + return (int)nodeRepository().nodes().list(app).stream() + .map(n -> nodeRepository().nodes().getNode(n.parentHostname().get()).get()) + .filter(p -> p.flavor().name().equals(hostFlavor)) + .count(); } public static final class Builder { |