summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2019-09-14 13:07:25 +0200
committerValerij Fredriksen <valerijf@verizonmedia.com>2019-09-14 13:30:32 +0200
commitcbdc13c1bdec42220ef4eec88d9967e75c75033a (patch)
treec94483f8bc8781c0ed1645a0dc54c03ae606abf4 /node-repository
parentab2341239a69b33d484d87ac20f3968860e8ba02 (diff)
Require at least 4 Gb memory
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java12
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/FailedExpirerTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeFailTester.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java14
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java50
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisionTest.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java10
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java12
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/capacity-zone.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json6
19 files changed, 83 insertions, 82 deletions
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 662af1e0db5..ffbf311fc0f 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
@@ -13,6 +13,7 @@ import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.flags.JacksonFlag;
import java.util.Arrays;
+import java.util.Locale;
import java.util.Optional;
/**
@@ -46,6 +47,8 @@ public class CapacityPolicies {
}
public NodeResources decideNodeResources(Optional<NodeResources> requestedResources, ClusterSpec cluster) {
+ if (requestedResources.isPresent()) assertMinimumResources(requestedResources.get(), cluster);
+
NodeResources resources = requestedResources
.or(() -> flagNodeResources(cluster.type()))
.orElse(defaultNodeResources(cluster.type()));
@@ -61,6 +64,15 @@ public class CapacityPolicies {
return resources;
}
+ private void assertMinimumResources(NodeResources resources, ClusterSpec cluster) {
+ double minMemoryGb = cluster.type() == ClusterSpec.Type.admin ? 2 : 4;
+ if (resources.memoryGb() >= minMemoryGb) return;
+
+ throw new IllegalArgumentException(String.format(Locale.ENGLISH,
+ "Must specify at least %.2f Gb of memory for %s cluster '%s', was: %.2f Gb",
+ minMemoryGb, cluster.type().name(), cluster.id().value(), resources.memoryGb()));
+ }
+
private Optional<NodeResources> flagNodeResources(ClusterSpec.Type clusterType) {
return Optional.ofNullable(defaultResourcesFlag.with(FetchVector.Dimension.CLUSTER_TYPE, clusterType.name()).value())
.map(r -> new NodeResources(r.vcpu(), r.memoryGb(), r.diskGb(), r.bandwidthGbps(), NodeResources.DiskSpeed.valueOf(r.diskSpeed())));
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 99709880cbe..a96113a6fc6 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
@@ -71,14 +71,14 @@ public class MockNodeRepository extends NodeRepository {
nodes.add(createNode("node3", "host3.yahoo.com", ipConfig(3), Optional.empty(),
new Flavor(new NodeResources(0.5, 48, 500, 1)), NodeType.tenant));
Node node4 = createNode("node4", "host4.yahoo.com", ipConfig(4), Optional.of("dockerhost1.yahoo.com"),
- new Flavor(new NodeResources(1, 1, 100, 1)), NodeType.tenant);
+ new Flavor(new NodeResources(1, 4, 100, 1)), NodeType.tenant);
node4 = node4.with(node4.status()
.withVespaVersion(new Version("6.41.0"))
.withDockerImage(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.41.0")));
nodes.add(node4);
Node node5 = createNode("node5", "host5.yahoo.com", ipConfig(5), Optional.of("dockerhost2.yahoo.com"),
- new Flavor(new NodeResources(1, 1, 100, 1)), NodeType.tenant);
+ new Flavor(new NodeResources(1, 8, 100, 1)), NodeType.tenant);
nodes.add(node5.with(node5.status()
.withVespaVersion(new Version("1.2.3"))
.withDockerImage(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:1.2.3"))));
@@ -158,7 +158,7 @@ public class MockNodeRepository extends NodeRepository {
ClusterSpec.Id.from("id3"),
Version.fromString("6.42"),
false);
- activate(provisioner.prepare(app3, cluster3, Capacity.fromCount(2, new NodeResources(1, 1, 100, 1), false, true), 1, null), app3, provisioner);
+ activate(provisioner.prepare(app3, cluster3, Capacity.fromCount(2, new NodeResources(1, 4, 100, 1), false, true), 1, null), app3, provisioner);
List<Node> largeNodes = new ArrayList<>();
largeNodes.add(createNode("node13", "host13.yahoo.com", ipConfig(13), Optional.empty(),
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 737e47925f2..2b6bbdc6963 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
@@ -261,8 +261,8 @@ public class FailedExpirerTest {
private static class FailureScenario {
private static final NodeFlavors nodeFlavors = FlavorConfigBuilder.createDummies("default", "docker");
- public static final NodeResources defaultFlavor = new NodeResources(2, 2, 2, 2);
- public static final NodeResources dockerFlavor = new NodeResources(1, 1, 1, 1);
+ public static final NodeResources defaultFlavor = new NodeResources(2, 8, 100, 2);
+ public static final NodeResources dockerFlavor = new NodeResources(1, 4, 50, 1);
private final MockCurator curator = new MockCurator();
private final ManualClock clock = new ManualClock();
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 f8f60635ea9..75224021464 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
@@ -147,13 +147,13 @@ public class LoadBalancerExpirerTest {
}
private void deployApplication(ApplicationId application, boolean activate, ClusterSpec.Id... clusters) {
- tester.makeReadyNodes(10, "d-1-1-1");
+ tester.makeReadyNodes(10, "d-1-4-10");
List<HostSpec> hosts = new ArrayList<>();
for (var cluster : clusters) {
hosts.addAll(tester.prepare(application, ClusterSpec.request(ClusterSpec.Type.container, cluster,
Vtag.currentVersion, false),
2, 1,
- new NodeResources(1, 1, 1, 0.3)));
+ new NodeResources(1, 4, 10, 0.3)));
}
if (activate) {
tester.activate(application, hosts);
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 11d3fc23e0f..5872a78e1e2 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
@@ -115,7 +115,7 @@ public class NodeFailTester {
List<Node> hosts = tester.createHostNodes(numberOfHosts);
for (int i = 0; i < hosts.size(); i++) {
tester.createReadyNodes(nodesPerHost, i * nodesPerHost, Optional.of("parent" + i),
- new NodeResources(1, 1, 1, 0.3), NodeType.tenant);
+ new NodeResources(1, 4, 10, 0.3), NodeType.tenant);
}
// Create applications
@@ -123,8 +123,8 @@ public class NodeFailTester {
ClusterSpec clusterApp1 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Version.fromString("6.75.0"), false);
ClusterSpec clusterApp2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"), Version.fromString("6.75.0"), false);
Capacity allHosts = Capacity.fromRequiredNodeType(NodeType.host);
- Capacity capacity1 = Capacity.fromCount(3, new NodeResources(1, 1, 1, 0.3), false, true);
- Capacity capacity2 = Capacity.fromCount(5, new NodeResources(1, 1, 1, 0.3), false, true);
+ Capacity capacity1 = Capacity.fromCount(3, new NodeResources(1, 4, 10, 0.3), false, true);
+ Capacity capacity2 = Capacity.fromCount(5, new NodeResources(1, 4, 10, 0.3), false, true);
tester.activate(tenantHostApp, clusterNodeAdminApp, allHosts);
tester.activate(app1, clusterApp1, capacity1);
tester.activate(app2, clusterApp2, capacity2);
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 50fb8290bd5..92d066e5f16 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
@@ -34,20 +34,20 @@ public class AclProvisioningTest {
@Test
public void trusted_nodes_for_allocated_node() {
- List<Node> configServers = tester.makeConfigServers(3, "d-1-1-1", Version.fromString("6.123.456"));
+ List<Node> configServers = tester.makeConfigServers(3, "d-1-4-10", Version.fromString("6.123.456"));
// Populate repo
- tester.makeReadyNodes(10, new NodeResources(1, 1, 1, 1));
- List<Node> dockerHost = tester.makeReadyNodes(1, new NodeResources(1, 1, 1, 1), NodeType.host);
+ tester.makeReadyNodes(10, new NodeResources(1, 4, 10, 1));
+ List<Node> dockerHost = tester.makeReadyNodes(1, new NodeResources(1, 4, 10, 1), NodeType.host);
ApplicationId zoneApplication = tester.makeApplicationId();
deploy(zoneApplication, Capacity.fromRequiredNodeType(NodeType.host));
- tester.makeReadyVirtualDockerNodes(1,new NodeResources(1, 1, 1, 1),
+ tester.makeReadyVirtualDockerNodes(1,new NodeResources(1, 4, 10, 1),
dockerHost.get(0).hostname());
- List<Node> proxyNodes = tester.makeReadyNodes(3, new NodeResources(1, 1, 1, 1), NodeType.proxy);
+ List<Node> proxyNodes = tester.makeReadyNodes(3, new NodeResources(1, 4, 10, 1), NodeType.proxy);
// Allocate 2 nodes
ApplicationId application = tester.makeApplicationId();
- List<Node> activeNodes = deploy(application, Capacity.fromCount(2, new NodeResources(1, 1, 1, 1), false, true));
+ List<Node> activeNodes = deploy(application, Capacity.fromCount(2, new NodeResources(1, 4, 10, 1), false, true));
assertEquals(2, activeNodes.size());
// Get trusted nodes for the first active node
@@ -130,7 +130,7 @@ public class AclProvisioningTest {
// Populate repo
List<Node> dockerHostNodes = tester.makeReadyNodes(2, "default", NodeType.host);
Node dockerHostNodeUnderTest = dockerHostNodes.get(0);
- List<Node> dockerNodes = tester.makeReadyVirtualDockerNodes(5, new NodeResources(1, 1, 1, 1),
+ List<Node> dockerNodes = tester.makeReadyVirtualDockerNodes(5, new NodeResources(1, 4, 10, 1),
dockerHostNodeUnderTest.hostname());
List<NodeAcl> acls = tester.nodeRepository().getNodeAcls(dockerHostNodeUnderTest, true);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java
index 1343335d131..e3aefdd4512 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AllocationSimulator.java
@@ -49,9 +49,6 @@ public class AllocationSimulator {
b.addFlavor("d-1", 1, 1., 1, 1, Flavor.Type.DOCKER_CONTAINER);
b.addFlavor("d-2", 2, 2., 2, 2, Flavor.Type.DOCKER_CONTAINER);
b.addFlavor("d-3", 3, 3., 3, 3, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("d-3-disk", 3, 3., 5, 3, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("d-3-mem", 3, 5., 3, 3, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("d-3-cpu", 5, 3., 3, 3, Flavor.Type.DOCKER_CONTAINER);
flavors = new NodeFlavors(b.build());
//
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 38651a77949..3ca159e10eb 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
@@ -36,7 +36,7 @@ import static org.junit.Assert.fail;
*/
public class DockerProvisioningTest {
- private static final NodeResources dockerFlavor = new NodeResources(1, 1, 1, 1);
+ private static final NodeResources dockerFlavor = new NodeResources(1, 4, 10, 1);
@Test
public void docker_application_deployment() {
@@ -204,7 +204,7 @@ public class DockerProvisioningTest {
}
catch (Exception e) {
assertEquals("No room for 3 nodes as 2 of 4 hosts are exclusive",
- "Could not satisfy request for 3 nodes with [vcpu: 1.0, memory: 1.0 Gb, disk 1.0 Gb, bandwidth: 1.0 Gbps] for container cluster 'myContainer' group 0 6.39 in tenant1.app1: Not enough nodes available due to host exclusivity constraints.",
+ "Could not satisfy request for 3 nodes with [vcpu: 1.0, memory: 4.0 Gb, disk 10.0 Gb, bandwidth: 1.0 Gbps] for container cluster 'myContainer' group 0 6.39 in tenant1.app1: Not enough nodes available due to host exclusivity constraints.",
e.getMessage());
}
@@ -225,7 +225,7 @@ public class DockerProvisioningTest {
NodeList nodes = tester.getNodes(application1, Node.State.active);
assertEquals(1, nodes.size());
- assertEquals("[vcpu: 1.0, memory: 1.0 Gb, disk 1.0 Gb, bandwidth: 1.0 Gbps]", nodes.asList().get(0).flavor().name());
+ assertEquals("[vcpu: 1.0, memory: 4.0 Gb, disk 10.0 Gb, bandwidth: 1.0 Gbps]", nodes.asList().get(0).flavor().name());
}
private Set<String> hostsOf(NodeList nodes) {
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 1e25e861cbe..cfcdc882a3c 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
@@ -66,7 +66,7 @@ public class DynamicDockerAllocationTest {
tester.makeReadyNodes(4, "host-small", NodeType.host, 32);
deployZoneApp(tester);
List<Node> dockerHosts = tester.nodeRepository().getNodes(NodeType.host, Node.State.active);
- NodeResources flavor = new NodeResources(1, 1, 1, 1);
+ NodeResources flavor = new NodeResources(1, 4, 10, 1);
// Application 1
ApplicationId application1 = makeApplicationId("t1", "a1");
@@ -109,7 +109,7 @@ public class DynamicDockerAllocationTest {
tester.makeReadyNodes(5, "host-small", NodeType.host, 32);
deployZoneApp(tester);
List<Node> dockerHosts = tester.nodeRepository().getNodes(NodeType.host, Node.State.active);
- NodeResources flavor = new NodeResources(1, 1, 1, 0.3);
+ NodeResources flavor = new NodeResources(1, 4, 10, 0.3);
// Application 1
ApplicationId application1 = makeApplicationId("t1", "a1");
@@ -166,7 +166,7 @@ public class DynamicDockerAllocationTest {
tester.makeReadyNodes(2, "host-small", NodeType.host, 32);
deployZoneApp(tester);
List<Node> dockerHosts = tester.nodeRepository().getNodes(NodeType.host, Node.State.active);
- NodeResources flavor = new NodeResources(1, 1, 1, 1);
+ NodeResources flavor = new NodeResources(1, 4, 10, 1);
// Application 1
ApplicationId application1 = makeApplicationId("t1", "a1");
@@ -195,7 +195,7 @@ public class DynamicDockerAllocationTest {
//Deploy an application having 6 nodes (3 nodes in 2 groups). We only have 5 docker hosts available
ApplicationId application1 = tester.makeApplicationId();
- tester.prepare(application1, clusterSpec("myContent.t1.a1"), 6, 2, new NodeResources(1, 1, 1, 1));
+ tester.prepare(application1, clusterSpec("myContent.t1.a1"), 6, 2, new NodeResources(1, 4, 10, 1));
fail("Two groups have been allocated to the same parent host");
}
@@ -213,7 +213,7 @@ public class DynamicDockerAllocationTest {
ApplicationId application1 = tester.makeApplicationId();
tester.makeReadyNodes(5, "host-small", NodeType.host, 32);
deployZoneApp(tester);
- NodeResources flavor = new NodeResources(1, 1, 1, 1);
+ NodeResources flavor = new NodeResources(1, 4, 10, 1);
// Deploy initial state (can max deploy 3 nodes due to redundancy requirements)
ClusterSpec clusterSpec = clusterSpec("myContent.t1.a1");
@@ -243,7 +243,7 @@ public class DynamicDockerAllocationTest {
tester.makeReadyNodes(3, "host-small", NodeType.host, 32);
deployZoneApp(tester);
ApplicationId application1 = tester.makeApplicationId();
- List<HostSpec> hosts = tester.prepare(application1, clusterSpec("myContent.t1.a1"), 3, 1, new NodeResources(1, 1, 1, 1));
+ List<HostSpec> hosts = tester.prepare(application1, clusterSpec("myContent.t1.a1"), 3, 1, new NodeResources(1, 4, 10, 1));
tester.activate(application1, ImmutableSet.copyOf(hosts));
List<Node> initialSpareCapacity = findSpareCapacity(tester);
@@ -253,10 +253,10 @@ public class DynamicDockerAllocationTest {
@Test
public void cd_uses_slow_disk_nodes_for_docker_hosts() {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(SystemName.cd, Environment.test, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
- tester.makeReadyNodes(4, new Flavor(new NodeResources(1, 2, 3, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true);
+ tester.makeReadyNodes(4, new Flavor(new NodeResources(1, 8, 12, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true);
deployZoneApp(tester);
ApplicationId application1 = tester.makeApplicationId();
- List<HostSpec> hosts = tester.prepare(application1, clusterSpec("myContent.t1.a1"), 3, 1, new NodeResources(1, 1, 1, 1));
+ List<HostSpec> hosts = tester.prepare(application1, clusterSpec("myContent.t1.a1"), 3, 1, new NodeResources(1, 4, 10, 1));
tester.activate(application1, ImmutableSet.copyOf(hosts));
}
@@ -267,7 +267,7 @@ public class DynamicDockerAllocationTest {
tester.nodeRepository().fail(node.hostname(), Agent.system, getClass().getSimpleName()));
ApplicationId application = tester.makeApplicationId();
- tester.prepare(application, clusterSpec("myContent.t2.a2"), 2, 1, new NodeResources(1, 1, 1, 1));
+ tester.prepare(application, clusterSpec("myContent.t2.a2"), 2, 1, new NodeResources(1, 4, 10, 1));
}
@Test
@@ -277,7 +277,7 @@ public class DynamicDockerAllocationTest {
deployZoneApp(tester);
ApplicationId application = tester.makeApplicationId();
- List<HostSpec> hosts = tester.prepare(application, clusterSpec("myContent.t1.a1"), 2, 1, new NodeResources(1, 1, 1, 1));
+ List<HostSpec> hosts = tester.prepare(application, clusterSpec("myContent.t1.a1"), 2, 1, new NodeResources(1, 4, 10, 1));
tester.activate(application, hosts);
List<Node> activeNodes = tester.nodeRepository().getNodes(application);
@@ -303,13 +303,13 @@ public class DynamicDockerAllocationTest {
@Test
public void slow_disk_nodes_are_preferentially_allocated() {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
- tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 2, 3, 1, NodeResources.DiskSpeed.fast)), NodeType.host, 10, true);
- tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 2, 3, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true);
+ tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 12, 1, NodeResources.DiskSpeed.fast)), NodeType.host, 10, true);
+ tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 12, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true);
deployZoneApp(tester);
ApplicationId application = tester.makeApplicationId();
ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Version.fromString("1"), false);
- NodeResources resources = new NodeResources(1, 1, 1, 1, NodeResources.DiskSpeed.any);
+ NodeResources resources = new NodeResources(1, 4, 10, 1, NodeResources.DiskSpeed.any);
List<HostSpec> hosts = tester.prepare(application, cluster, 2, 1, resources);
assertEquals(2, hosts.size());
@@ -320,13 +320,13 @@ public class DynamicDockerAllocationTest {
private void provisionFastAndSlowThenDeploy(NodeResources.DiskSpeed requestDiskSpeed, boolean expectOutOfCapacity) {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
- tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 2, 3, 1, NodeResources.DiskSpeed.fast)), NodeType.host, 10, true);
- tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 2, 3, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true);
+ tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 12, 1, NodeResources.DiskSpeed.fast)), NodeType.host, 10, true);
+ tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 12, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true);
deployZoneApp(tester);
ApplicationId application = tester.makeApplicationId();
ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Version.fromString("1"), false);
- NodeResources resources = new NodeResources(1, 1, 1, 1, requestDiskSpeed);
+ NodeResources resources = new NodeResources(1, 4, 10, 1, requestDiskSpeed);
try {
List<HostSpec> hosts = tester.prepare(application, cluster, 4, 1, resources);
@@ -342,13 +342,13 @@ public class DynamicDockerAllocationTest {
@Test
public void nodeResourcesAreRelaxedInDev() {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
- tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 2, 3, 1, NodeResources.DiskSpeed.fast)), NodeType.host, 10, true);
- tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 2, 3, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true);
+ tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 12, 1, NodeResources.DiskSpeed.fast)), NodeType.host, 10, true);
+ tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 12, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true);
deployZoneApp(tester);
ApplicationId application = tester.makeApplicationId();
ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("test"), Version.fromString("1"), false);
- NodeResources resources = new NodeResources(1, 1, 1, 1, NodeResources.DiskSpeed.fast);
+ NodeResources resources = new NodeResources(1, 4, 10, 1, NodeResources.DiskSpeed.fast);
List<HostSpec> hosts = tester.prepare(application, cluster, 4, 1, resources);
assertEquals(1, hosts.size());
@@ -410,16 +410,8 @@ public class DynamicDockerAllocationTest {
private FlavorsConfig flavorsConfig() {
FlavorConfigBuilder b = new FlavorConfigBuilder();
- b.addFlavor("host-large", 6., 6., 6, 6, Flavor.Type.BARE_METAL);
- b.addFlavor("host-small", 3., 3., 3, 3, Flavor.Type.BARE_METAL);
- b.addFlavor("host-medium", 4., 4., 4, 4, Flavor.Type.BARE_METAL);
- b.addFlavor("d-1", 1, 1., 1, 1, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("d-2", 2, 2., 2, 2, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("d-3", 3, 3., 3, 3, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("d-3-disk", 3, 3., 5, 3, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("d-3-mem", 3, 5., 3, 3, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("d-3-cpu", 5, 3., 3, 3, Flavor.Type.DOCKER_CONTAINER);
- b.addFlavor("d-2-8-50", 2, 8, 50, 1, Flavor.Type.DOCKER_CONTAINER);
+ b.addFlavor("host-large", 6., 24., 80, 6, Flavor.Type.BARE_METAL);
+ b.addFlavor("host-small", 3., 12., 40, 3, Flavor.Type.BARE_METAL);
return b.build();
}
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 ee5568b9b76..9d467b7d911 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
@@ -45,7 +45,7 @@ public class DynamicDockerProvisionTest {
assertEquals(0, tester.nodeRepository().list().size());
ApplicationId application1 = tester.makeApplicationId();
- NodeResources flavor = new NodeResources(1, 1, 1, 1);
+ NodeResources flavor = new NodeResources(1, 4, 10, 1);
mockHostProvisioner(hostProvisioner, tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("small"));
List<HostSpec> hostSpec = tester.prepare(application1, clusterSpec("myContent.t1.a1"), 4, 1, flavor);
@@ -65,7 +65,7 @@ public class DynamicDockerProvisionTest {
deployZoneApp(tester);
ApplicationId application = tester.makeApplicationId();
- NodeResources flavor = new NodeResources(1, 1, 1, 1);
+ NodeResources flavor = new NodeResources(1, 4, 10, 1);
mockHostProvisioner(hostProvisioner, tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("small"));
tester.prepare(application, clusterSpec("myContent.t2.a2"), 2, 1, flavor);
@@ -75,7 +75,7 @@ public class DynamicDockerProvisionTest {
@Test
public void allocates_to_hosts_already_hosting_nodes_by_this_tenant() {
ApplicationId application = tester.makeApplicationId();
- NodeResources flavor = new NodeResources(1, 1, 1, 1);
+ NodeResources flavor = new NodeResources(1, 4, 10, 1);
List<Integer> expectedProvisionIndexes = List.of(100, 101);
mockHostProvisioner(hostProvisioner, tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("large"));
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 9aa1cc4bd47..91846d14aa1 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
@@ -155,7 +155,7 @@ public class LoadBalancerProvisionerTest {
@Test
public void provision_load_balancers_with_dynamic_node_provisioning() {
- var nodes = prepare(app1, Capacity.fromCount(2, new NodeResources(1, 1, 1, 0.3), false, true),
+ var nodes = prepare(app1, Capacity.fromCount(2, new NodeResources(1, 4, 10, 0.3), false, true),
true,
clusterRequest(ClusterSpec.Type.container, ClusterSpec.Id.from("qrs")));
Supplier<LoadBalancer> lb = () -> tester.nodeRepository().loadBalancers().owner(app1).asList().get(0);
@@ -173,7 +173,7 @@ public class LoadBalancerProvisionerTest {
assertSame("Load balancer is deactivated", LoadBalancer.State.inactive, lb.get().state());
// Application is redeployed
- nodes = prepare(app1, Capacity.fromCount(2, new NodeResources(1, 1, 1, 0.3), false, true),
+ nodes = prepare(app1, Capacity.fromCount(2, new NodeResources(1, 4, 10, 0.3), false, true),
true,
clusterRequest(ClusterSpec.Type.container, ClusterSpec.Id.from("qrs")));
assertTrue("Load balancer is reconfigured with empty reals", tester.loadBalancerService().instances().get(lb.get().id()).reals().isEmpty());
@@ -205,14 +205,14 @@ public class LoadBalancerProvisionerTest {
}
private Set<HostSpec> prepare(ApplicationId application, ClusterSpec... specs) {
- return prepare(application, Capacity.fromCount(2, new NodeResources(1, 1, 1, 0.3), false, true), false, specs);
+ return prepare(application, Capacity.fromCount(2, new NodeResources(1, 4, 10, 0.3), false, true), false, specs);
}
private Set<HostSpec> prepare(ApplicationId application, Capacity capacity, boolean dynamicDockerNodes, ClusterSpec... specs) {
if (dynamicDockerNodes) {
makeDynamicDockerNodes(specs.length * 2, capacity.type());
} else {
- tester.makeReadyNodes(specs.length * 2, new NodeResources(1, 1, 1, 0.3), capacity.type());
+ tester.makeReadyNodes(specs.length * 2, new NodeResources(1, 4, 10, 0.3), capacity.type());
}
Set<HostSpec> allNodes = new LinkedHashSet<>();
for (ClusterSpec spec : specs) {
@@ -225,7 +225,7 @@ public class LoadBalancerProvisionerTest {
List<Node> nodes = new ArrayList<>(n);
for (int i = 1; i <= n; i++) {
var node = Node.createDockerNode(Set.of(), "node" + i, "parent" + i,
- new NodeResources(1, 1, 1, 0.3),
+ new NodeResources(1, 4, 10, 0.3),
nodeType);
nodes.add(node);
}
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 1836589c0ab..10a50998509 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
@@ -33,8 +33,8 @@ import static org.junit.Assert.assertTrue;
*/
public class MultigroupProvisioningTest {
- private static final NodeResources small = new NodeResources(1, 1, 1, 1);
- private static final NodeResources large = new NodeResources(3, 3, 3, 3);
+ private static final NodeResources small = new NodeResources(1, 4, 10, 1);
+ private static final NodeResources large = new NodeResources(12, 12, 12, 12);
@Test
public void test_provisioning_of_multiple_groups() {
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 58440372821..877038b8722 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
@@ -48,7 +48,7 @@ import static org.junit.Assert.fail;
*/
public class ProvisioningTest {
- private static final NodeResources defaultResources = new NodeResources(1, 2, 3, 4);
+ private static final NodeResources defaultResources = new NodeResources(1, 4, 10, 4);
@Test
public void application_deployment_constant_application_size() {
@@ -225,8 +225,8 @@ public class ProvisioningTest {
@Test
public void application_deployment_multiple_flavors() {
- NodeResources small = new NodeResources(1, 1, 1, 0.3);
- NodeResources large = new NodeResources(2, 2, 2, 0.3);
+ NodeResources small = new NodeResources(1, 4, 10, 0.3);
+ NodeResources large = new NodeResources(8, 8, 40, 0.3);
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
@@ -357,12 +357,12 @@ public class ProvisioningTest {
public void dev_deployment_flavor() {
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
- tester.makeReadyNodes(4, new NodeResources(2, 2, 2, 2), NodeType.host, 1);
+ tester.makeReadyNodes(4, new NodeResources(2, 4, 10, 2), NodeType.host, 1);
tester.prepareAndActivateInfraApplication(tester.makeApplicationId(), NodeType.host);
ApplicationId application = tester.makeApplicationId();
SystemState state = prepare(application, 2, 2, 3, 3,
- new NodeResources(2, 2, 2, 2), tester);
+ new NodeResources(2, 4, 10, 2), tester);
assertEquals(4, state.allHosts.size());
tester.activate(application, state.allHosts);
}
@@ -370,7 +370,7 @@ public class ProvisioningTest {
/** Test always uses the zone default resources */
@Test
public void test_deployment_resources() {
- NodeResources large = new NodeResources(2, 2, 2, 0.3);
+ NodeResources large = new NodeResources(2, 4, 10, 0.3);
ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.test, RegionName.from("us-east"))).build();
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 1712b9448b1..f8c6e31cfd7 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
@@ -82,7 +82,7 @@ public class VirtualNodeProvisioningTest {
// Allowed to use same parent host for several nodes in same cluster in dev
{
- NodeResources flavor = new NodeResources(1, 1, 1, 1);
+ NodeResources flavor = new NodeResources(1, 4, 10, 1);
tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
tester.makeReadyNodes(4, flavor, NodeType.host, 1);
tester.prepareAndActivateInfraApplication(tester.makeApplicationId(), NodeType.host);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/capacity-zone.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/capacity-zone.json
index 42948678c55..68f89b1e20a 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/capacity-zone.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/capacity-zone.json
@@ -3,7 +3,7 @@
"couldLoseHosts": 4,
"failedTenantParent": "dockerhost1.yahoo.com",
"failedTenant": "host4.yahoo.com",
- "failedTenantResources": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
+ "failedTenantResources": "[vcpu: 1.0, memory: 4.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
"failedTenantAllocation": "allocated to tenant3.application3.instance3 as 'content/id3/0/0'",
"hostCandidateRejectionReasons": {
"singularReasonFailures": {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json
index 0ffd22d909f..79ea6dffeb4 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/docker-container1.json
@@ -6,10 +6,10 @@
"hostname": "test-node-pool-101-2",
"parentHostname": "dockerhost2.yahoo.com",
"openStackId": "fake-test-node-pool-101-2",
- "flavor": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
- "canonicalFlavor": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
+ "flavor": "[vcpu: 1.0, memory: 4.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
+ "canonicalFlavor": "[vcpu: 1.0, memory: 4.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
"minDiskAvailableGb": 100.0,
- "minMainMemoryAvailableGb": 1.0,
+ "minMainMemoryAvailableGb": 4.0,
"minCpuCores": 1.0,
"fastDisk": true,
"bandwidthGbps": 1.0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json
index 5522ef44dec..d32149cdac1 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node4.json
@@ -6,10 +6,10 @@
"hostname": "host4.yahoo.com",
"parentHostname": "dockerhost1.yahoo.com",
"openStackId": "node4",
- "flavor": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
- "canonicalFlavor": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
+ "flavor": "[vcpu: 1.0, memory: 4.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
+ "canonicalFlavor": "[vcpu: 1.0, memory: 4.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
"minDiskAvailableGb": 100.0,
- "minMainMemoryAvailableGb": 1.0,
+ "minMainMemoryAvailableGb": 4.0,
"minCpuCores": 1.0,
"fastDisk": true,
"bandwidthGbps": 1.0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json
index fa29b2cb6ac..3f1781f7c36 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5-after-changes.json
@@ -6,10 +6,10 @@
"hostname": "host5.yahoo.com",
"parentHostname": "dockerhost2.yahoo.com",
"openStackId": "node5",
- "flavor": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
- "canonicalFlavor": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
+ "flavor": "[vcpu: 1.0, memory: 8.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
+ "canonicalFlavor": "[vcpu: 1.0, memory: 8.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
"minDiskAvailableGb": 100.0,
- "minMainMemoryAvailableGb": 1.0,
+ "minMainMemoryAvailableGb": 8.0,
"minCpuCores": 1.0,
"fastDisk": true,
"bandwidthGbps": 1.0,
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json
index e7e2c7607e4..62ca45dc540 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/v2/responses/node5.json
@@ -6,10 +6,10 @@
"hostname": "host5.yahoo.com",
"parentHostname": "dockerhost2.yahoo.com",
"openStackId": "node5",
- "flavor": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
- "canonicalFlavor": "[vcpu: 1.0, memory: 1.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
+ "flavor": "[vcpu: 1.0, memory: 8.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
+ "canonicalFlavor": "[vcpu: 1.0, memory: 8.0 Gb, disk 100.0 Gb, bandwidth: 1.0 Gbps]",
"minDiskAvailableGb": 100.0,
- "minMainMemoryAvailableGb": 1.0,
+ "minMainMemoryAvailableGb": 8.0,
"minCpuCores": 1.0,
"fastDisk": true,
"bandwidthGbps": 1.0,