summaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-06-05 14:39:41 +0200
committerMartin Polden <mpolden@mpolden.no>2020-06-05 14:39:41 +0200
commit8db974f7f46c4fa56d16e584bf1514a5860798b2 (patch)
tree38edd21f48de2f56625abb44d48b9772d63545c6 /node-repository/src/main/java
parente260e9d3b5eaa3d0709a065be0aa57b4d87ddb21 (diff)
Support recursive removal of all host types
Diffstat (limited to 'node-repository/src/main/java')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java13
1 files changed, 7 insertions, 6 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
index b5e36abd076..b41820a461b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
@@ -650,7 +650,7 @@ public class NodeRepository extends AbstractComponent {
try (Mutex lock = lockUnallocated()) {
requireRemovable(node, false, force);
- if (node.type() == NodeType.host) {
+ if (node.type().isDockerHost()) {
List<Node> children = list().childrenOf(node).asList();
children.forEach(child -> requireRemovable(child, true, force));
db.removeNodes(children);
@@ -665,8 +665,9 @@ public class NodeRepository extends AbstractComponent {
return removed;
}
else {
- db.removeNodes(List.of(node));
- return List.of(node);
+ List<Node> removed = List.of(node);
+ db.removeNodes(removed);
+ return removed;
}
}
}
@@ -681,8 +682,8 @@ public class NodeRepository extends AbstractComponent {
/**
* Throws if the given node cannot be removed. Removal is allowed if:
* - Tenant node: node is unallocated
- * - Non-Docker-container node: iff in state provisioned|failed|parked
- * - Docker-container-node:
+ * - Host node: iff in state provisioned|failed|parked
+ * - Child node:
* 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
*/
@@ -694,7 +695,7 @@ public class NodeRepository extends AbstractComponent {
if (node.flavor().getType() == Flavor.Type.DOCKER_CONTAINER && !removingAsChild) {
if (node.state() != State.ready)
- illegal(node + " can not be removed as it is not in the state [ready]");
+ illegal(node + " can not be removed as it is not in the state " + State.ready);
}
else if (node.flavor().getType() == Flavor.Type.DOCKER_CONTAINER) { // removing a child node
Set<State> legalStates = EnumSet.of(State.provisioned, State.failed, State.parked, State.dirty, State.ready);