aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-02-01 16:30:46 +0100
committerValerij Fredriksen <valerijf@oath.com>2018-02-01 16:30:46 +0100
commitd7f2611dadd3e450addbd58922d23883925ea2fb (patch)
tree2c2e3c62c294e39bfc713df061883a3c5b08d130 /node-repository
parent8fe219712f3a825764ea6ad3e6c551c3a7aabc65 (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.java52
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);
}
}
}