summaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-05-28 09:41:40 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-05-28 09:41:40 +0200
commite52c1f88a1ead27e7f4b9a5b108647abefa2adf1 (patch)
treee06c469d05bc45acfebd903ffe0a17b325be726d /node-repository/src/main/java
parent21a32d23892e37436f13aaba80e8c9e296b920c3 (diff)
Use docker and node resources in more tests
Diffstat (limited to 'node-repository/src/main/java')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java48
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java35
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) {