diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-05-28 09:41:40 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-05-28 09:41:40 +0200 |
commit | e52c1f88a1ead27e7f4b9a5b108647abefa2adf1 (patch) | |
tree | e06c469d05bc45acfebd903ffe0a17b325be726d /node-repository/src/main/java | |
parent | 21a32d23892e37436f13aaba80e8c9e296b920c3 (diff) |
Use docker and node resources in more tests
Diffstat (limited to 'node-repository/src/main/java')
3 files changed, 34 insertions, 51 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java index f93354333a1..bedfbc5bdc1 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java @@ -569,7 +569,7 @@ public class NodeRepository extends AbstractComponent { * @return List of all the nodes that have been removed */ public List<Node> removeRecursively(String hostname) { - Node node = getNode(hostname).orElseThrow(() -> new NotFoundException("No node with hostname \"" + hostname + '"')); + Node node = getNode(hostname).orElseThrow(() -> new NotFoundException("No node with hostname '" + hostname + "'")); return removeRecursively(node, false); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java index 4a31970e7ab..5e84b5f37b4 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java @@ -5,6 +5,7 @@ import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeResources; +import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.Zone; @@ -62,14 +63,15 @@ public class CapacityPolicies { return requestedResources.get(); if (requestedResources.isEmpty()) - return defaultNodeResources(); + return defaultNodeResources(cluster.type()); // Flavor is specified and is allocateByLegacyName: Handle legacy flavor specs if (zone.system() == SystemName.cd) - return flavors.exists(requestedResources.get().legacyName().get()) ? requestedResources.get() : defaultNodeResources(); + return flavors.exists(requestedResources.get().legacyName().get()) ? requestedResources.get() + : defaultNodeResources(cluster.type()); else { switch (zone.environment()) { - case dev: case test: case staging: return defaultNodeResources(); + case dev: case test: case staging: return defaultNodeResources(cluster.type()); default: flavors.getFlavorOrThrow(requestedResources.get().legacyName().get()); // verify existence // Return this spec containing the legacy flavor name, not the flavor's capacity object @@ -80,36 +82,18 @@ public class CapacityPolicies { } } - private NodeResources defaultNodeResources() { - /* -CD_DEV_CD_US_CENTRAL_1: d_2_8_50 -CD_DEV_CD_US_WEST_1: d_1_4_50 -CD_PROD_AWS_US_EAST_1A: d_2_8_50 -CD_PROD_CD_US_CENTRAL_1: d_2_8_50 -CD_PROD_CD_US_WEST_1: d_2_8_50 -CD_TEST_CD_US_CENTRAL_1: d_4_4_50, admin: d_1_3_50 -CD_STAGING_CD_US_CENTRAL_1: d_4_4_50, admin: d_1_3_50 -MAIN_DEV_AWS_US_EAST_2A: d_2_8_50 -MAIN_DEV_US_EAST_1: d_2_8_50 -MAIN_PERF_US_EAST_3: d_2_8_50 -MAIN_PROD_AWS_US_EAST_1A: d_2_8_50 -MAIN_PROD_AWS_US_EAST_1B: d_2_8_50 -MAIN_PROD_AWS_US_WEST_2A: d_2_8_50 -MAIN_PROD_US_EAST_3: d_2_8_50 -MAIN_TEST_US_EAST_1: d_2_8_50 -MAIN_PROD_US_WEST_1: d_2_8_50 -MAIN_PROD_US_CENTRAL_1: d_2_8_50 -MAIN_PROD_EU_WEST_1: d_2_8_50 -MAIN_PROD_AP_NORTHEAST_1: d_2_8_50 -MAIN_PROD_AP_NORTHEAST_2: d_2_8_50 -MAIN_STAGING_US_EAST_3: d_2_8_50 -MAIN_PROD_AP_SOUTHEAST_1: d_2_8_50 -PUBLIC_CD_PROD_AWS_US_EAST_1C: d_2_8_50 -PUBLIC_CD_TEST_AWS_US_EAST_1C: d_2_8_50, admin: d_1_3_50 -PUBLIC_CD_STAGING_AWS_US_EAST_1C: d_2_8_50, admin: d_1_3_50 -VAAS_DEV_AWS_US_EAST_1B: d_2_8_50 - */ + private NodeResources defaultNodeResources(ClusterSpec.Type clusterType) { + if (zone.system() == SystemName.PublicCd && clusterType == ClusterSpec.Type.admin && zone.environment() != Environment.prod) + return new NodeResources(1, 3, 50); + if (zone.system() == SystemName.cd && zone.environment() == Environment.dev && zone.region().value().equals("cd-us-west-1")) + return new NodeResources(1, 4, 50); + + if (zone.system() == SystemName.cd && zone.environment() == Environment.test || zone.environment() == Environment.staging) + return clusterType == ClusterSpec.Type.admin ? new NodeResources(1, 3, 50) + : new NodeResources(4, 4, 50); + + return new NodeResources(2, 8, 50); } /** 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 c9409937d46..9edf368fa9c 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 @@ -69,11 +69,11 @@ public class MockNodeRepository extends NodeRepository { // Regular nodes nodes.add(createNode("node1", "host1.yahoo.com", ipConfig(1), Optional.empty(), Optional.empty(), - flavors.getFlavorOrThrow("default"), NodeType.tenant)); + new Flavor(new NodeResources(2, 8, 50)), NodeType.tenant)); nodes.add(createNode("node2", "host2.yahoo.com", ipConfig(2), Optional.empty(), Optional.empty(), - flavors.getFlavorOrThrow("default"), NodeType.tenant)); + new Flavor(new NodeResources(2, 8, 50)), NodeType.tenant)); nodes.add(createNode("node3", "host3.yahoo.com", ipConfig(3), Optional.empty(), Optional.empty(), - flavors.getFlavorOrThrow("expensive"), NodeType.tenant)); + new Flavor(new NodeResources(0.5, 48, 500)), NodeType.tenant)); Node node4 = createNode("node4", "host4.yahoo.com", ipConfig(4), Optional.of("dockerhost1.yahoo.com"), Optional.empty(), new Flavor(new NodeResources(1, 1, 100)), NodeType.tenant); node4 = node4.with(node4.status() @@ -89,14 +89,14 @@ public class MockNodeRepository extends NodeRepository { nodes.add(createNode("node6", "host6.yahoo.com", ipConfig(6), Optional.empty(), Optional.empty(), - flavors.getFlavorOrThrow("default"), NodeType.tenant)); + new Flavor(new NodeResources(2, 8, 50)), NodeType.tenant)); Node node7 = createNode("node7", "host7.yahoo.com", ipConfig(7), Optional.empty(), Optional.empty(), - flavors.getFlavorOrThrow("default"), NodeType.tenant); + new Flavor(new NodeResources(2, 8, 50)), NodeType.tenant); nodes.add(node7); // 8, 9, 11 and 12 are added by web service calls Node node10 = createNode("node10", "host10.yahoo.com", ipConfig(10), Optional.of("parent1.yahoo.com"), Optional.empty(), - flavors.getFlavorOrThrow("default"), NodeType.tenant); + new Flavor(new NodeResources(2, 8, 50)), NodeType.tenant); Status node10newStatus = node10.status(); node10newStatus = node10newStatus .withVespaVersion(Version.fromString("5.104.142")) @@ -104,15 +104,8 @@ public class MockNodeRepository extends NodeRepository { node10 = node10.with(node10newStatus); nodes.add(node10); - Node node13 = createNode("node13", "host13.yahoo.com", ipConfig(13), Optional.empty(), Optional.empty(), - flavors.getFlavorOrThrow("large"), NodeType.tenant); - Node node14 = createNode("node14", "host14.yahoo.com", ipConfig(14), Optional.empty(), Optional.empty(), - flavors.getFlavorOrThrow("large"), NodeType.tenant); - nodes.add(node13); - nodes.add(node14); - Node node55 = createNode("node55", "host55.yahoo.com", ipConfig(55), Optional.empty(), Optional.empty(), - flavors.getFlavorOrThrow("default"), NodeType.tenant); + new Flavor(new NodeResources(2, 8, 50)), NodeType.tenant); nodes.add(node55.with(node55.status().withWantToRetire(true).withWantToDeprovision(true))); /* Setup docker hosts (two of these will be reserved for spares */ @@ -151,20 +144,19 @@ public class MockNodeRepository extends NodeRepository { Set.of(RotationName.from("us-cluster"))); activate(provisioner.prepare(zoneApp, zoneCluster, Capacity.fromRequiredNodeType(NodeType.host), 1, null), zoneApp, provisioner); - ApplicationId app1 = ApplicationId.from(TenantName.from("tenant1"), ApplicationName.from("application1"), InstanceName.from("instance1")); ClusterSpec cluster1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"), Version.fromString("6.42"), false, Collections.emptySet()); - provisioner.prepare(app1, cluster1, Capacity.fromNodeCount(2), 1, null); + provisioner.prepare(app1, cluster1, Capacity.fromCount(2, new NodeResources(2, 8, 50)), 1, null); ApplicationId app2 = ApplicationId.from(TenantName.from("tenant2"), ApplicationName.from("application2"), InstanceName.from("instance2")); ClusterSpec cluster2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id2"), Version.fromString("6.42"), false, Collections.emptySet()); - activate(provisioner.prepare(app2, cluster2, Capacity.fromNodeCount(2), 1, null), app2, provisioner); + activate(provisioner.prepare(app2, cluster2, Capacity.fromCount(2, new NodeResources(2, 8, 50)), 1, null), app2, provisioner); ApplicationId app3 = ApplicationId.from(TenantName.from("tenant3"), ApplicationName.from("application3"), InstanceName.from("instance3")); ClusterSpec cluster3 = ClusterSpec.request(ClusterSpec.Type.content, @@ -173,12 +165,19 @@ public class MockNodeRepository extends NodeRepository { false, Collections.emptySet()); activate(provisioner.prepare(app3, cluster3, Capacity.fromCount(2, new NodeResources(1, 1, 100), false, true), 1, null), app3, provisioner); + List<Node> largeNodes = new ArrayList<>(); + largeNodes.add(createNode("node13", "host13.yahoo.com", ipConfig(13), Optional.empty(), Optional.empty(), + new Flavor(new NodeResources(10, 48, 500)), NodeType.tenant)); + largeNodes.add(createNode("node14", "host14.yahoo.com", ipConfig(14), Optional.empty(), Optional.empty(), + new Flavor(new NodeResources(10, 48, 500)), NodeType.tenant)); + addNodes(largeNodes); + setReady(largeNodes, Agent.system, getClass().getSimpleName()); ApplicationId app4 = ApplicationId.from(TenantName.from("tenant4"), ApplicationName.from("application4"), InstanceName.from("instance4")); ClusterSpec cluster4 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("id4"), Version.fromString("6.42"), false, Collections.emptySet()); - activate(provisioner.prepare(app4, cluster4, Capacity.fromNodeCount(2, Optional.of("large"), false, true), 1, null), app4, provisioner); + activate(provisioner.prepare(app4, cluster4, Capacity.fromCount(2, new NodeResources(10, 48, 500), false, true), 1, null), app4, provisioner); } private void activate(List<HostSpec> hosts, ApplicationId application, NodeRepositoryProvisioner provisioner) { |