aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorTorbjørn Smørgrav <smorgrav@users.noreply.github.com>2017-08-22 13:37:53 +0200
committerGitHub <noreply@github.com>2017-08-22 13:37:53 +0200
commitec442090847f02930d4ad950aef1a9909fea17fc (patch)
tree44e8356817d3c3b430ced20a4a5391e24c3e051a /node-repository
parent4a511bd63e6a869f371ca06aa8995162d518fbf5 (diff)
parent3402d837ef9795347dbd9f33cb0dc2221c325750 (diff)
Merge pull request #3181 from vespa-engine/hmusum/only-create-docker-nodes-on-active-docker-hosts
Only create Docker nodes for active Docker hosts
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java17
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java7
3 files changed, 23 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
index 3a590b9b0f4..960d0b9d729 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
@@ -185,7 +185,7 @@ public class NodePrioritizer {
DockerHostCapacity capacity = new DockerHostCapacity(allNodes);
for (Node node : allNodes) {
- if (node.type() == NodeType.host) {
+ if (node.type() == NodeType.host && node.state() == Node.State.active) {
boolean conflictingCluster = false;
NodeList list = new NodeList(allNodes);
NodeList childrenWithSameApp = list.childNodes(node).owner(appId);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java
index 8254cd23030..f2b5624d3b8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java
@@ -32,6 +32,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.UUID;
import java.util.stream.Collectors;
import static org.hamcrest.CoreMatchers.is;
@@ -46,7 +47,7 @@ import static org.junit.Assert.fail;
public class DynamicDockerProvisioningTest {
/**
- * Test reloaction of nodes that violates headroom.
+ * Test relocation of nodes that violate headroom.
*
* Setup 4 docker hosts and allocate one container on each (from two different applications)
* No spares - only headroom (4xd-2)
@@ -321,6 +322,20 @@ public class DynamicDockerProvisioningTest {
assertThat(initialSpareCapacity.size(), is(0));
}
+ @Test(expected = OutOfCapacityException.class)
+ public void allocation_should_fail_when_host_is_not_active() {
+ ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")), flavorsConfig());
+ enableDynamicAllocation(tester);
+
+ tester.makeProvisionedNodes(3, UUID.randomUUID().toString(), "host-small", NodeType.host, 32);
+ deployZoneApp(tester);
+
+ ApplicationId application = tester.makeApplicationId();
+ Flavor flavor = tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("d-3");
+ tester.prepare(application, ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent"), Version.fromString("6.100")),
+ 1, 1, flavor.canonicalName());
+ }
+
private ApplicationId makeApplicationId(String tenant, String appName) {
return ApplicationId.from(tenant, appName, "default");
}
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 bd50a9fc581..6bd158e8311 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
@@ -229,7 +229,7 @@ public class ProvisioningTester implements AutoCloseable {
return makeReadyNodes(n, UUID.randomUUID().toString(), flavor, type, additionalIps);
}
- public List<Node> makeReadyNodes(int n, String prefix, String flavor, NodeType type, int additionalIps) {
+ public List<Node> makeProvisionedNodes(int n, String prefix, String flavor, NodeType type, int additionalIps) {
List<Node> nodes = new ArrayList<>(n);
for (int i = 0; i < n; i++) {
Set<String> ips = IntStream.range(additionalIps * i, additionalIps * (i+1))
@@ -245,6 +245,11 @@ public class ProvisioningTester implements AutoCloseable {
type));
}
nodes = nodeRepository.addNodes(nodes);
+ return nodes;
+ }
+
+ public List<Node> makeReadyNodes(int n, String prefix, String flavor, NodeType type, int additionalIps) {
+ List<Node> nodes = makeProvisionedNodes(n, prefix, flavor, type, additionalIps);
nodes = nodeRepository.setDirty(nodes);
return nodeRepository.setReady(nodes);
}