diff options
author | Morten Tokle <mortent@oath.com> | 2019-11-25 09:04:41 +0100 |
---|---|---|
committer | Morten Tokle <mortent@oath.com> | 2019-11-25 09:07:01 +0100 |
commit | 1c2f216620f208a28de4985112ee87fe3c582ec3 (patch) | |
tree | 5b2112f791c09ca92411f570f5f0748dec568460 /node-repository | |
parent | bf04cdc3471570c4cfd1ffa57a66eaad1f4263ae (diff) |
Allow tenant containers to run on dev hosts
Diffstat (limited to 'node-repository')
4 files changed, 24 insertions, 2 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacity.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacity.java index 781dae020b9..f46cde995d7 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacity.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacity.java @@ -71,7 +71,7 @@ public class DockerHostCapacity { NodeResources freeCapacityOf(Node host, boolean excludeInactive) { // Only hosts have free capacity - if (host.type() != NodeType.host) return new NodeResources(0, 0, 0, 0); + if (!host.type().supportsChild(NodeType.tenant)) return new NodeResources(0, 0, 0, 0); NodeResources hostResources = hostResourcesCalculator.availableCapacityOf(host.flavor().resources()); return allNodes.childrenOf(host).asList().stream() diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java index 55bea5b83a7..c7a86b283ca 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/FlavorConfigBuilder.java @@ -42,6 +42,8 @@ public class FlavorConfigBuilder { flavorConfigBuilder.addFlavor(flavorName, 2. /* cpu*/, 4. /* mem GB*/, 4. /*disk GB*/, 0.5, /* bandwidth Gbps*/ Flavor.Type.DOCKER_CONTAINER); else if (flavorName.equals("host")) flavorConfigBuilder.addFlavor(flavorName, 7. /* cpu*/, 10. /* mem GB*/, 12. /*disk GB*/, 5 /* bandwidth Gbps*/, Flavor.Type.BARE_METAL); + else if (flavorName.equals("devhost")) + flavorConfigBuilder.addFlavor(flavorName, 4. /* cpu*/, 8. /* mem GB*/, 10 /*disk GB*/, 10 /* bandwidth Gbps*/, Flavor.Type.BARE_METAL); else flavorConfigBuilder.addFlavor(flavorName, 1. /* cpu*/, 3. /* mem GB*/, 2. /*disk GB*/, 3 /* bandwidth Gbps*/, Flavor.Type.BARE_METAL); } 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 f80ccff94e9..a0d81385cad 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 @@ -138,7 +138,7 @@ public class NodePrioritizer { NodeResources wantedResources = resources(requestedNodes); for (Node host : candidates) { - if (host.type() != NodeType.host) continue; + if (!host.type().supportsChild(requestedNodes.type())) continue; if (host.status().wantToRetire()) continue; boolean hostHasCapacityForWantedFlavor = capacity.hasCapacity(host, wantedResources); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacityTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacityTest.java index a41b61fd352..e2015cfd30a 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacityTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacityTest.java @@ -105,6 +105,26 @@ public class DockerHostCapacityTest { capacity.freeCapacityOf(host3, false)); } + @Test + public void devhostCapacityTest() { + // Dev host can assign both configserver and tenant containers. + + var nodeFlavors = FlavorConfigBuilder.createDummies("devhost", "container"); + var devHost = Node.create("devhost", new IP.Config(Set.of("::1"), generateIPs(2, 10)), "devhost", Optional.empty(), Optional.empty(), nodeFlavors.getFlavorOrThrow("devhost"), NodeType.devhost); + + var cfg = Node.createDockerNode(Set.of("::2"), "cfg", "devhost", resources1, NodeType.config); + + var nodes = new ArrayList<>(List.of(cfg)); + var capacity = new DockerHostCapacity(new LockedNodeList(nodes, () -> {}), hostResourcesCalculator); + assertTrue(capacity.hasCapacity(devHost, resources1)); + + var container1 = Node.createDockerNode(Set.of("::3"), "container1", "devhost", resources1, NodeType.tenant); + nodes = new ArrayList<>(List.of(cfg, container1)); + capacity = new DockerHostCapacity(new LockedNodeList(nodes, () -> {}), hostResourcesCalculator); + assertFalse(capacity.hasCapacity(devHost, resources1)); + + } + private Set<String> generateIPs(int start, int count) { // Allow 4 containers Set<String> ipAddressPool = new LinkedHashSet<>(); |