diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-04-16 18:55:58 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2020-04-16 18:55:58 +0200 |
commit | 1d8f3d526b87b59a345c1877272430adb4bf810c (patch) | |
tree | ec591f2cd8b31ef14020da3c488820d0d890e4e0 /node-repository | |
parent | 056478081264fb74f38223fb0b59074c03939827 (diff) |
Allow resizing a node coming out of retirement
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java index a2c0370d074..a5bc946f45a 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java @@ -229,12 +229,8 @@ class NodeAllocation { node = node.with(node.allocation().get().withRequestedResources(requestedNodes.resources().orElse(node.flavor().resources()))); if (! wantToRetire) { - if (resize && ! ( node.allocation().isPresent() && node.allocation().get().membership().retired())) { - NodeResources hostResources = allNodes.parentOf(node).get().flavor().resources(); - node = node.with(new Flavor(requestedNodes.resources().get() - .with(hostResources.diskSpeed()) - .with(hostResources.storageType()))); - } + if (resize && ! ( node.allocation().isPresent() && node.allocation().get().membership().retired())) + node = resize(node); if (node.state() != Node.State.active) // reactivated node - make sure its not retired node = node.unretire(); @@ -256,6 +252,13 @@ class NodeAllocation { return node; } + private Node resize(Node node) { + NodeResources hostResources = allNodes.parentOf(node).get().flavor().resources(); + return node.with(new Flavor(requestedNodes.resources().get() + .with(hostResources.diskSpeed()) + .with(hostResources.storageType()))); + } + private Node setCluster(ClusterSpec cluster, Node node) { ClusterMembership membership = node.allocation().get().membership().with(cluster); return node.with(node.allocation().get().with(membership)); @@ -321,7 +324,9 @@ class NodeAllocation { } else if (deltaRetiredCount < 0) { // unretire until deltaRetiredCount is 0 for (PrioritizableNode node : byIncreasingIndex(nodes)) { - if ( node.node.allocation().get().membership().retired() && hasCompatibleFlavor(node)) { + if ( node.node.allocation().get().membership().retired() && ( hasCompatibleFlavor(node) || node.isResizable) ) { + if (node.isResizable) + node.node = resize(node.node); node.node = node.node.unretire(); if (++deltaRetiredCount == 0) break; } |