diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-05-25 10:07:51 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-05-25 10:07:51 +0200 |
commit | 78ad2acf63c772c4926ac38977adba388b58b468 (patch) | |
tree | 8f9b9a2c3827a9189312c5d2c3a4fde95dbb4438 /node-repository | |
parent | 3b356d04f24a7cb5fa5a2bc087152fe74106e50a (diff) |
Simplify
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java index 266855002ea..cd96bdf1241 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java @@ -526,26 +526,23 @@ public class Nodes { * If only removing the container node: node in state ready * If also removing the parent node: child is in state provisioned|failed|parked|dirty|ready */ - private void requireRemovable(Node node, boolean removingAsChild, boolean force) { + private void requireRemovable(Node node, boolean removingRecursively, boolean force) { if (force) return; if (node.type() == NodeType.tenant && node.allocation().isPresent()) illegal(node + " is currently allocated and cannot be removed"); - if (!node.type().isHost() && !removingAsChild) { - if (node.state() != Node.State.ready) - illegal(node + " can not be removed as it is not in the state " + Node.State.ready); - } - else if (!node.type().isHost()) { // removing a child node - Set<Node.State> legalStates = EnumSet.of(Node.State.provisioned, Node.State.failed, Node.State.parked, Node.State.dirty, Node.State.ready); - if ( ! legalStates.contains(node.state())) - illegal(node + " can not be removed as it is not in the states " + legalStates); - } - else { // a host - Set<Node.State> legalStates = EnumSet.of(Node.State.provisioned, Node.State.failed, Node.State.parked); - if (! legalStates.contains(node.state())) - illegal(node + " can not be removed as it is not in the states " + legalStates); + final Set<Node.State> removableStates; + if (node.type().isHost()) { + removableStates = EnumSet.of(Node.State.provisioned, Node.State.failed, Node.State.parked); + } else { + removableStates = removingRecursively + ? EnumSet.of(Node.State.provisioned, Node.State.failed, Node.State.parked, Node.State.dirty, Node.State.ready) + // When not removing recursively, we can only remove children in state ready + : EnumSet.of(Node.State.ready); } + if (!removableStates.contains(node.state())) + illegal(node + " can not be removed as it is not in the states " + removableStates); } /** |