diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-08-31 11:26:07 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-08-31 11:26:07 +0200 |
commit | c3d8ee0f39c9c2db366568eace75a1f38eb4d381 (patch) | |
tree | f0accce9b56e11dd326b46a3ef5f5a5f87514163 /node-repository | |
parent | bca73f4f4e56d0a016b99b3917a075823c193c57 (diff) |
Model group ids as indexes
Diffstat (limited to 'node-repository')
18 files changed, 80 insertions, 74 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/assimilate/PopulateClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/assimilate/PopulateClient.java index 37e0fb2da17..e242396fc06 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/assimilate/PopulateClient.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/assimilate/PopulateClient.java @@ -30,6 +30,7 @@ import java.util.Optional; */ // TODO Moved here from hosted repo as is, more work to be done before it is usable public class PopulateClient { + static final Map<String, String> CLUSTER_TYPE_ELEMENT = ImmutableMap.of("container", "jdisc", "content", "content"); static final String CONTAINER_CLUSTER_TYPE = "container"; static final String CONTENT_CLUSTER_TYPE = "content"; @@ -84,6 +85,8 @@ public class PopulateClient { } private Node buildNode(String hostname, String clusterType, String clusterId, int nodeIndex) { + int group = 0; // TODO: We need the true group here + Optional<String> dockerImage = Optional.empty(); return new Node( hostname /* id */, hostname /* Hostname */, @@ -101,8 +104,10 @@ public class PopulateClient { ApplicationName.from(applicationId), InstanceName.from(instanceId)), ClusterMembership.from( - ClusterSpec.from(ClusterSpec.Type.from(clusterType), - ClusterSpec.Id.from(clusterId)), + ClusterSpec.from(ClusterSpec.Type.from(clusterType), + ClusterSpec.Id.from(clusterId), + ClusterSpec.Group.from(group), + dockerImage), nodeIndex), creationClock.instant()); } 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 985f5c41fa8..7e489de1ca4 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 @@ -60,7 +60,7 @@ class Preparer { for (int groupIndex = 0; groupIndex < wantedGroups; groupIndex++) { // Generated groups always have contiguous indexes starting from 0 ClusterSpec clusterGroup = - cluster.group().isPresent() ? cluster : cluster.changeGroup(Optional.of(ClusterSpec.Group.from(String.valueOf(groupIndex)))); + cluster.group().isPresent() ? cluster : cluster.changeGroup(Optional.of(ClusterSpec.Group.from(groupIndex))); List<Node> accepted = groupPreparer.prepare(application, clusterGroup, nodes/wantedGroups, flavor, surplusNodes, highestIndex); replace(acceptedNodes, accepted); @@ -80,7 +80,7 @@ class Preparer { ClusterSpec nodeCluster = node.allocation().get().membership().cluster(); if ( ! nodeCluster.id().equals(requestedCluster.id())) continue; if ( ! nodeCluster.type().equals(requestedCluster.type())) continue; - if (Integer.parseInt(nodeCluster.group().get().value()) >= wantedGroups) + if (nodeCluster.group().get().index() >= wantedGroups) surplusNodes.add(node); } return surplusNodes; @@ -92,8 +92,8 @@ class Preparer { Node node = i.next(); ClusterMembership membership = node.allocation().get().membership(); ClusterSpec cluster = membership.cluster(); - if (Integer.parseInt(cluster.group().get().value()) >= wantedGroups) { - ClusterSpec.Group newGroup = targetGroup.orElse(ClusterSpec.Group.from(String.valueOf(0))); + if (cluster.group().get().index() >= wantedGroups) { + ClusterSpec.Group newGroup = targetGroup.orElse(ClusterSpec.Group.from(0)); ClusterMembership newGroupMembership = membership.changeCluster(cluster.changeGroup(Optional.of(newGroup))); i.set(node.setAllocation(node.allocation().get().changeMembership(newGroupMembership))); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java index 87a56d39183..8c6cd39cf6c 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/v2/NodesResponse.java @@ -201,7 +201,7 @@ class NodesResponse extends HttpResponse { private void toSlime(ClusterMembership membership, Cursor object) { object.setString("clustertype", membership.cluster().type().name()); object.setString("clusterid", membership.cluster().id().value()); - object.setString("group", membership.cluster().group().get().value()); + object.setString("group", String.valueOf(membership.cluster().group().get().index())); object.setLong("index", membership.index()); object.setBool("retired", membership.retired()); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java index 7472b9859e7..6a123d15ea2 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java @@ -83,15 +83,15 @@ public class MockNodeRepository extends NodeRepository { move("host55.yahoo.com", Node.State.dirty); ApplicationId app1 = ApplicationId.from(TenantName.from("tenant1"), ApplicationName.from("application1"), InstanceName.from("instance1")); - ClusterSpec cluster1 = ClusterSpec.from(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"), Optional.empty(), Optional.of("image-123")); + ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"), Optional.of("image-123")); provisioner.prepare(app1, cluster1, Capacity.fromNodeCount(2), 1, null); ApplicationId app2 = ApplicationId.from(TenantName.from("tenant2"), ApplicationName.from("application2"), InstanceName.from("instance2")); - ClusterSpec cluster2 = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("id2"), Optional.empty()); + ClusterSpec cluster2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id2"), Optional.empty()); activate(provisioner.prepare(app2, cluster2, Capacity.fromNodeCount(2), 1, null), app2, provisioner); ApplicationId app3 = ApplicationId.from(TenantName.from("tenant3"), ApplicationName.from("application3"), InstanceName.from("instance3")); - ClusterSpec cluster3 = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("id3"), Optional.empty()); + ClusterSpec cluster3 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id3"), Optional.empty()); activate(provisioner.prepare(app3, cluster3, Capacity.fromNodeCount(2), 1, null), app3, provisioner); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainerTest.java index e034b185a02..0b6f7a6a2e7 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ApplicationMaintainerTest.java @@ -117,8 +117,8 @@ public class ApplicationMaintainerTest { final ApplicationId app1 = ApplicationId.from(TenantName.from("foo1"), ApplicationName.from("bar"), InstanceName.from("fuz")); final ApplicationId app2 = ApplicationId.from(TenantName.from("foo2"), ApplicationName.from("bar"), InstanceName.from("fuz")); - final ClusterSpec clusterApp1 = ClusterSpec.from(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Optional.empty()); - final ClusterSpec clusterApp2 = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); + final ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Optional.empty()); + final ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); final int wantedNodesApp1 = 5; final int wantedNodesApp2 = 7; 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 a1d9268ee33..1a8bb74411f 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 @@ -93,7 +93,7 @@ public class FailedExpirerTest { // Allocate the nodes nodeRepository.setReady(nodeRepository.getNodes(Node.Type.tenant, Node.State.provisioned)); ApplicationId applicationId = ApplicationId.from(TenantName.from("foo"), ApplicationName.from("bar"), InstanceName.from("fuz")); - ClusterSpec cluster = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); + ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); provisioner.prepare(applicationId, cluster, Capacity.fromNodeCount(3), 1, null); NestedTransaction transaction = new NestedTransaction().add(new CuratorTransaction(curator)); provisioner.activate(transaction, applicationId, asHosts(nodes)); 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 390e3fe3569..b431c880cce 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 @@ -62,7 +62,7 @@ public class InactiveAndFailedExpirerTest { // Allocate then deallocate 2 nodes nodeRepository.setReady(nodes); ApplicationId applicationId = ApplicationId.from(TenantName.from("foo"), ApplicationName.from("bar"), InstanceName.from("fuz")); - ClusterSpec cluster = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); + ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); provisioner.prepare(applicationId, cluster, Capacity.fromNodeCount(2), 1, null); NestedTransaction transaction = new NestedTransaction().add(new CuratorTransaction(curator)); provisioner.activate(transaction, applicationId, asHosts(nodes)); 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 c568b9db2a7..d12eb6ffe0b 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 @@ -93,8 +93,8 @@ public class NodeFailerTest { createHostNodes(3, nodeRepository, NODE_FLAVORS); // Create applications - ClusterSpec clusterApp1 = ClusterSpec.from(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Optional.empty()); - ClusterSpec clusterApp2 = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); + ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Optional.empty()); + ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); int wantedNodesApp1 = 5; int wantedNodesApp2 = 7; activate(APP_1, clusterApp1, wantedNodesApp1, provisioner); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java index 8c0563e4bc8..76b1650d155 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ReservationExpirerTest.java @@ -50,7 +50,7 @@ public class ReservationExpirerTest { assertEquals(2, nodeRepository.getNodes(Node.Type.tenant, Node.State.provisioned).size()); nodeRepository.setReady(nodes); ApplicationId applicationId = new ApplicationId.Builder().tenant("foo").applicationName("bar").instanceName("fuz").build(); - ClusterSpec cluster = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); + ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); provisioner.prepare(applicationId, cluster, Capacity.fromNodeCount(2), 1, null); assertEquals(2, nodeRepository.getNodes(Node.Type.tenant, Node.State.reserved).size()); 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 be80690a972..d91bdb919e7 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 @@ -55,7 +55,7 @@ public class RetiredExpirerTest { // Allocate content cluster of sizes 7 -> 2 -> 3: // Should end up with 3 nodes in the cluster (one previously retired), and 3 retired - ClusterSpec cluster = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); + ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); int wantedNodes; activate(applicationId, cluster, wantedNodes=7, 1, provisioner); activate(applicationId, cluster, wantedNodes=2, 1, provisioner); @@ -91,7 +91,7 @@ public class RetiredExpirerTest { ApplicationId applicationId = ApplicationId.from(TenantName.from("foo"), ApplicationName.from("bar"), InstanceName.from("fuz")); - ClusterSpec cluster = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); + ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); activate(applicationId, cluster, 8, 8, provisioner); activate(applicationId, cluster, 1, 1, provisioner); assertEquals(8, nodeRepository.getNodes(applicationId, Node.State.active).size()); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java index 9ba29cec588..f3b122d5443 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java @@ -165,7 +165,7 @@ public class SerializationTest { assertTrue(node.allocation().isPresent()); assertEquals("ugccloud-container", node.allocation().get().membership().cluster().id().value()); assertEquals("container", node.allocation().get().membership().cluster().type().name()); - assertEquals("0", node.allocation().get().membership().cluster().group().get().value()); + assertEquals(0, node.allocation().get().membership().cluster().group().get().index()); Node copy = nodeSerializer.fromJson(Node.State.provisioned, nodeSerializer.toJson(node)); assertEquals(0, copy.history().events().size()); } 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 4d7a70fc915..d0092443239 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 @@ -13,6 +13,7 @@ import org.junit.Test; import java.util.HashSet; import java.util.List; +import java.util.Optional; import static org.junit.Assert.assertEquals; @@ -33,7 +34,7 @@ public class DockerProvisioningTest { tester.makeReadyDockerNodes(1, dockerFlavor, "dockerHost" + i); } - List<HostSpec> hosts = tester.prepare(application1, ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent")), 7, 1, dockerFlavor); + List<HostSpec> hosts = tester.prepare(application1, ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent"), Optional.empty()), 7, 1, dockerFlavor); tester.activate(application1, new HashSet<>(hosts)); final NodeList nodes = tester.getNodes(application1, Node.State.active); @@ -48,7 +49,7 @@ public class DockerProvisioningTest { ApplicationId application1 = tester.makeApplicationId(); tester.makeReadyDockerNodes(1, dockerFlavor, "dockerHost"); - List<HostSpec> hosts = tester.prepare(application1, ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent")), 1, 1, dockerFlavor); + List<HostSpec> hosts = tester.prepare(application1, ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent"), Optional.empty()), 1, 1, dockerFlavor); tester.activate(application1, new HashSet<>(hosts)); final NodeList nodes = tester.getNodes(application1, Node.State.active); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java index 9e58cc211e5..acd687e197e 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java @@ -179,7 +179,7 @@ public class MultigroupProvisioningTest { nonretiredGroups.put(group, nonretiredGroups.getOrDefault(group, 0) + 1); if (wantedGroups > 1) - assertTrue("Group ids are always in [0, wantedGroups>", Integer.parseInt(group.value()) < wantedGroups); + assertTrue("Group indexes are always in [0, wantedGroups>", group.index() < wantedGroups); } assertEquals("Total nonretired nodes", nodeCount, indexes.size()); assertEquals("Total nonretired groups", wantedGroups, nonretiredGroups.size()); @@ -194,7 +194,7 @@ public class MultigroupProvisioningTest { assertEquals("No additional groups are retained containing retired nodes", wantedGroups, allGroups.size()); } - private ClusterSpec cluster() { return ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test")); } + private ClusterSpec cluster() { return ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.empty()); } private Set<HostSpec> prepare(ApplicationId application, Capacity capacity, int groupCount, ProvisioningTester tester) { return new HashSet<>(tester.prepare(application, cluster(), capacity, groupCount)); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionTest.java index d88521f9ed2..f53673898bb 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionTest.java @@ -454,15 +454,15 @@ public class ProvisionTest { SystemState state2 = prepare(application1, 1, 1, 1, 1, "default", tester); tester.activate(application1, state2.allHosts); - // group0 - assertFalse(state2.hostByMembership("test", 0, 0).membership().get().retired()); - assertTrue( state2.hostByMembership("test", 0, 1).membership().get().retired()); - assertTrue( state2.hostByMembership("test", 0, 2).membership().get().retired()); - - // group1 - assertFalse(state2.hostByMembership("test", 1, 0).membership().get().retired()); - assertTrue( state2.hostByMembership("test", 1, 1).membership().get().retired()); - assertTrue( state2.hostByMembership("test", 1, 2).membership().get().retired()); + // content0 + assertFalse(state2.hostByMembership("content0", 0, 0).membership().get().retired()); + assertTrue( state2.hostByMembership("content0", 0, 1).membership().get().retired()); + assertTrue( state2.hostByMembership("content0", 0, 2).membership().get().retired()); + + // content1 + assertFalse(state2.hostByMembership("content1", 0, 0).membership().get().retired()); + assertTrue( state2.hostByMembership("content1", 0, 1).membership().get().retired()); + assertTrue( state2.hostByMembership("content1", 0, 2).membership().get().retired()); } @Test @@ -473,8 +473,8 @@ public class ProvisionTest { tester.makeReadyNodes(6, "large-variant-variant"); //cost = 11 ApplicationId applicationId = tester.makeApplicationId(); - ClusterSpec contentClusterSpec = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent")); - ClusterSpec containerClusterSpec = ClusterSpec.from(ClusterSpec.Type.container, ClusterSpec.Id.from("myContainer")); + ClusterSpec contentClusterSpec = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent"), Optional.empty()); + ClusterSpec containerClusterSpec = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("myContainer"), Optional.empty()); List<HostSpec> containerNodes = tester.prepare(applicationId, containerClusterSpec, 5, 1, "large"); //should be replaced by 5 large-variant @@ -487,64 +487,64 @@ public class ProvisionTest { } - private SystemState prepare(ApplicationId application, int container0Size, int container1Size, int group0Size, int group1Size, String flavor, ProvisioningTester tester) { + private SystemState prepare(ApplicationId application, int container0Size, int container1Size, int content0Size, int content1Size, String flavor, ProvisioningTester tester) { // "deploy prepare" with a two container clusters and a storage cluster having of two groups - ClusterSpec containerCluster0 = ClusterSpec.from(ClusterSpec.Type.container, ClusterSpec.Id.from("container0"), Optional.empty()); - ClusterSpec containerCluster1 = ClusterSpec.from(ClusterSpec.Type.container, ClusterSpec.Id.from("container1"), Optional.empty()); - ClusterSpec contentGroup0 = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.of(ClusterSpec.Group.from("0"))); - ClusterSpec contentGroup1 = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Optional.of(ClusterSpec.Group.from("1"))); + ClusterSpec containerCluster0 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("container0"), Optional.empty()); + ClusterSpec containerCluster1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("container1"), Optional.empty()); + ClusterSpec contentCluster0 = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("content0"), ClusterSpec.Group.from(0), Optional.empty()); + ClusterSpec contentCluster1 = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("content1"), ClusterSpec.Group.from(0), Optional.empty()); Set<HostSpec> container0 = new HashSet<>(tester.prepare(application, containerCluster0, container0Size, 1, flavor)); Set<HostSpec> container1 = new HashSet<>(tester.prepare(application, containerCluster1, container1Size, 1, flavor)); - Set<HostSpec> group0 = new HashSet<>(tester.prepare(application, contentGroup0, group0Size, 1, flavor)); - Set<HostSpec> group1 = new HashSet<>(tester.prepare(application, contentGroup1, group1Size, 1, flavor)); + Set<HostSpec> content0 = new HashSet<>(tester.prepare(application, contentCluster0, content0Size, 1, flavor)); + Set<HostSpec> content1 = new HashSet<>(tester.prepare(application, contentCluster1, content1Size, 1, flavor)); Set<HostSpec> allHosts = new HashSet<>(); allHosts.addAll(container0); allHosts.addAll(container1); - allHosts.addAll(group0); - allHosts.addAll(group1); + allHosts.addAll(content0); + allHosts.addAll(content1); int expectedContainer0Size = tester.capacityPolicies().decideSize(Capacity.fromNodeCount(container0Size)); int expectedContainer1Size = tester.capacityPolicies().decideSize(Capacity.fromNodeCount(container1Size)); - int expectedGroup0Size = tester.capacityPolicies().decideSize(Capacity.fromNodeCount(group0Size)); - int expectedGroup1Size = tester.capacityPolicies().decideSize(Capacity.fromNodeCount(group1Size)); + int expectedContent0Size = tester.capacityPolicies().decideSize(Capacity.fromNodeCount(content0Size)); + int expectedContent1Size = tester.capacityPolicies().decideSize(Capacity.fromNodeCount(content1Size)); assertEquals("Hosts in each group cluster is disjunct and the total number of unretired nodes is correct", - expectedContainer0Size + expectedContainer1Size + expectedGroup0Size + expectedGroup1Size, + expectedContainer0Size + expectedContainer1Size + expectedContent0Size + expectedContent1Size, tester.nonretired(allHosts).size()); // Check cluster/group sizes assertEquals(expectedContainer0Size, tester.nonretired(container0).size()); assertEquals(expectedContainer1Size, tester.nonretired(container1).size()); - assertEquals(expectedGroup0Size, tester.nonretired(group0).size()); - assertEquals(expectedGroup1Size, tester.nonretired(group1).size()); + assertEquals(expectedContent0Size, tester.nonretired(content0).size()); + assertEquals(expectedContent1Size, tester.nonretired(content1).size()); // Check cluster membership tester.assertMembersOf(containerCluster0, container0); tester.assertMembersOf(containerCluster1, container1); - tester.assertMembersOf(contentGroup0, group0); - tester.assertMembersOf(contentGroup1, group1); + tester.assertMembersOf(contentCluster0, content0); + tester.assertMembersOf(contentCluster1, content1); - return new SystemState(allHosts, container0, container1, group0, group1); + return new SystemState(allHosts, container0, container1, content0, content1); } private static class SystemState { private Set<HostSpec> allHosts; + private Set<HostSpec> container0; private Set<HostSpec> container1; - private Set<HostSpec> container2; - private Set<HostSpec> group1; - private Set<HostSpec> group2; + private Set<HostSpec> content0; + private Set<HostSpec> content1; public SystemState(Set<HostSpec> allHosts, Set<HostSpec> container1, Set<HostSpec> container2, - Set<HostSpec> group1, - Set<HostSpec> group2) { + Set<HostSpec> content0, + Set<HostSpec> content1) { this.allHosts = allHosts; - this.container1 = container1; - this.container2 = container2; - this.group1 = group1; - this.group2 = group2; + this.container0 = container1; + this.container1 = container2; + this.content0 = content0; + this.content1 = content1; } /** Returns a host by cluster name and index, or null if there is no host with the given values in this */ @@ -562,7 +562,7 @@ public class ProvisionTest { private boolean groupMatches(Optional<ClusterSpec.Group> clusterGroup, int group) { if ( ! clusterGroup.isPresent()) return group==0; - return Integer.parseInt(clusterGroup.get().value()) == group; + return clusterGroup.get().index() == group; } public Set<String> hostNames() { @@ -582,10 +582,10 @@ public class ProvisionTest { public void assertExtends(SystemState other) { assertTrue(this.allHosts.containsAll(other.allHosts)); + assertExtends(this.container0, other.container0); assertExtends(this.container1, other.container1); - assertExtends(this.container2, other.container2); - assertExtends(this.group1, other.group1); - assertExtends(this.group2, other.group2); + assertExtends(this.content0, other.content0); + assertExtends(this.content1, other.content1); } private void assertExtends(Set<HostSpec> extension, @@ -605,10 +605,10 @@ public class ProvisionTest { public void assertEquals(SystemState other) { org.junit.Assert.assertEquals(this.allHosts, other.allHosts); + org.junit.Assert.assertEquals(this.container0, other.container0); org.junit.Assert.assertEquals(this.container1, other.container1); - org.junit.Assert.assertEquals(this.container2, other.container2); - org.junit.Assert.assertEquals(this.group1, other.group1); - org.junit.Assert.assertEquals(this.group2, other.group2); + org.junit.Assert.assertEquals(this.content0, other.content0); + org.junit.Assert.assertEquals(this.content1, other.content1); } } 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 a1733de848c..3d29825f614 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 @@ -179,7 +179,7 @@ public class ProvisioningTester implements AutoCloseable { if (requestedCluster.group().isPresent()) assertEquals(requestedCluster.group(), nodeCluster.group()); else - assertEquals("0", nodeCluster.group().get().value()); + assertEquals(0, nodeCluster.group().get().index()); indices.add(host.membership().get().index()); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java index 35d844dbb73..46d592f957f 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java @@ -30,8 +30,8 @@ import static org.junit.Assert.assertNotNull; */ public class VirtualNodeProvisioningTest { private static final String flavor = "v-4-8-100"; - private static final ClusterSpec contentClusterSpec = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent")); - private static final ClusterSpec containerClusterSpec = ClusterSpec.from(ClusterSpec.Type.container, ClusterSpec.Id.from("myContainer")); + private static final ClusterSpec contentClusterSpec = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent"), Optional.empty()); + private static final ClusterSpec containerClusterSpec = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("myContainer"), Optional.empty()); private ProvisioningTester tester; diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/legacy/ProvisionResourceTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/legacy/ProvisionResourceTest.java index 8e98d185d0b..9a7af56fd48 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/legacy/ProvisionResourceTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/legacy/ProvisionResourceTest.java @@ -139,7 +139,7 @@ public class ProvisionResourceTest { } private List<Node> assignNode(ApplicationId applicationId, int capacity, ClusterSpec.Type type) { - ClusterSpec cluster = ClusterSpec.from(type, ClusterSpec.Id.from("test"), Optional.empty()); + ClusterSpec cluster = ClusterSpec.request(type, ClusterSpec.Id.from("test"), Optional.empty()); List<HostSpec> hosts = provisioner.prepare(applicationId, cluster, Capacity.fromNodeCount(capacity), 1, null); NestedTransaction transaction = new NestedTransaction().add(new CuratorTransaction(curator)); provisioner.activate(transaction, applicationId, hosts); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v1/RestApiTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v1/RestApiTest.java index b425a46b422..bb17bc57697 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v1/RestApiTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v1/RestApiTest.java @@ -98,11 +98,11 @@ public class RestApiTest { fail("host5.yahoo.com"); ApplicationId app1 = ApplicationId.from(TenantName.from("tenant1"), ApplicationName.from("application1"), InstanceName.from("instance1")); - ClusterSpec cluster1 = ClusterSpec.from(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"), Optional.empty()); + ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"), Optional.empty()); provisioner.prepare(app1, cluster1, Capacity.fromNodeCount(2), 1, null); ApplicationId app2 = ApplicationId.from(TenantName.from("tenant2"), ApplicationName.from("application2"), InstanceName.from("instance2")); - ClusterSpec cluster2 = ClusterSpec.from(ClusterSpec.Type.content, ClusterSpec.Id.from("id2"), Optional.empty()); + ClusterSpec cluster2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id2"), Optional.empty()); List<HostSpec> hosts = provisioner.prepare(app2, cluster2, Capacity.fromNodeCount(2), 1, null); NestedTransaction transaction = new NestedTransaction(); provisioner.activate(transaction, app2, hosts); |