diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-02-01 16:30:46 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2018-02-01 16:30:46 +0100 |
commit | d7f2611dadd3e450addbd58922d23883925ea2fb (patch) | |
tree | 2c2e3c62c294e39bfc713df061883a3c5b08d130 /node-repository | |
parent | 8fe219712f3a825764ea6ad3e6c551c3a7aabc65 (diff) |
Refactoring, no functional changes
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java | 52 |
1 files changed, 24 insertions, 28 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 d0149be2747..afb50fa536e 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 @@ -172,36 +172,32 @@ public class NodePrioritizer { void addNewDockerNodes() { if (!isDocker) return; DockerHostCapacity capacity = new DockerHostCapacity(allNodes); + ResourceCapacity wantedResourceCapacity = ResourceCapacity.of(getFlavor(requestedNodes)); + NodeList list = new NodeList(allNodes); for (Node node : allNodes) { - 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); - for (Node child : childrenWithSameApp.asList()) { - // Look for nodes from the same cluster - if (child.allocation().get().membership().cluster().id().equals(clusterSpec.id())) { - conflictingCluster = true; - break; - } - } - - if (!conflictingCluster && capacity.hasCapacity(node, ResourceCapacity.of(getFlavor(requestedNodes)))) { - Set<String> ipAddresses = DockerHostCapacity.findFreeIps(node, allNodes); - if (ipAddresses.isEmpty()) continue; - String ipAddress = ipAddresses.stream().findFirst().get(); - Optional<String> hostname = nameResolver.getHostname(ipAddress); - if (!hostname.isPresent()) continue; - Node newNode = Node.createDockerNode("fake-" + hostname.get(), - Collections.singleton(ipAddress), - Collections.emptySet(), hostname.get(), - Optional.of(node.hostname()), getFlavor(requestedNodes), - NodeType.tenant); - PrioritizableNode nodePri = toNodePriority(newNode, false, true); - if (!nodePri.violatesSpares || isAllocatingForReplacement) { - nodes.put(newNode, nodePri); - } - } + if (node.type() != NodeType.host) continue; + if (node.state() != Node.State.active) continue; + + boolean hostHasCapacityForWantedFlavor = capacity.hasCapacity(node, wantedResourceCapacity); + boolean conflictingCluster = list.childNodes(node).owner(appId).asList().stream() + .anyMatch(child -> child.allocation().get().membership().cluster().id().equals(clusterSpec.id())); + + if (!hostHasCapacityForWantedFlavor || conflictingCluster) continue; + + Set<String> ipAddresses = DockerHostCapacity.findFreeIps(node, allNodes); + if (ipAddresses.isEmpty()) continue; + String ipAddress = ipAddresses.stream().findFirst().get(); + Optional<String> hostname = nameResolver.getHostname(ipAddress); + if (!hostname.isPresent()) continue; + Node newNode = Node.createDockerNode("fake-" + hostname.get(), + Collections.singleton(ipAddress), + Collections.emptySet(), hostname.get(), + Optional.of(node.hostname()), getFlavor(requestedNodes), + NodeType.tenant); + PrioritizableNode nodePri = toNodePriority(newNode, false, true); + if (!nodePri.violatesSpares || isAllocatingForReplacement) { + nodes.put(newNode, nodePri); } } } |