summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-05-25 10:07:51 +0200
committerMartin Polden <mpolden@mpolden.no>2021-05-25 10:07:51 +0200
commit78ad2acf63c772c4926ac38977adba388b58b468 (patch)
tree8f9b9a2c3827a9189312c5d2c3a4fde95dbb4438 /node-repository
parent3b356d04f24a7cb5fa5a2bc087152fe74106e50a (diff)
Simplify
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java25
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);
}
/**