aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-07-12 10:39:39 +0200
committerMartin Polden <mpolden@mpolden.no>2022-07-12 10:39:39 +0200
commit4d9ce035350d8e726530d398665e0c6fcd76c02a (patch)
tree5cd485c1ad156bf326579d95f19308031e4c0d1f /node-repository
parentd01c10d78f8ef2cb8d31a31220a5ffd9beae0ee3 (diff)
Allow failed node to be deprovisioned
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java6
2 files changed, 6 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
index 1d11d67c7cb..a9e7ded66e6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainer.java
@@ -216,7 +216,8 @@ public class DynamicProvisioningMaintainer extends NodeRepositoryMaintainer {
}
private static boolean canDeprovision(Node node) {
- return node.status().wantToDeprovision() && node.state() == Node.State.parked;
+ return node.status().wantToDeprovision() && (node.state() == Node.State.parked ||
+ node.state() == Node.State.failed);
}
private Map<String, Node> findSharedHosts(NodeList nodeList) {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
index 8b363881fde..e5e361da379 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java
@@ -577,10 +577,11 @@ public class DynamicProvisioningMaintainerTest {
Node host4 = tester.addNode("host4", Optional.empty(), NodeType.host, Node.State.parked);
Node host41 = tester.addNode("host4-1", Optional.of("host4"), NodeType.tenant, Node.State.parked, DynamicProvisioningTester.tenantApp);
Node host42 = tester.addNode("host4-2", Optional.of("host4"), NodeType.tenant, Node.State.active, DynamicProvisioningTester.tenantApp);
+ Node host43 = tester.addNode("host4-3", Optional.of("host4"), NodeType.tenant, Node.State.failed, DynamicProvisioningTester.tenantApp);
// Host and children are marked for deprovisioning
tester.nodeRepository.nodes().deprovision("host4", Agent.operator, Instant.now());
- for (var node : List.of(host4, host41, host42)) {
+ for (var node : List.of(host4, host41, host42, host43)) {
assertTrue(tester.nodeRepository.nodes().node(node.hostname()).map(n -> n.status().wantToDeprovision()).get());
}
@@ -590,13 +591,14 @@ public class DynamicProvisioningMaintainerTest {
assertEquals(Node.State.parked, tester.nodeRepository.nodes().node(node.hostname()).get().state());
}
assertEquals(Node.State.active, tester.nodeRepository.nodes().node(host42.hostname()).get().state());
+ assertEquals(Node.State.failed, tester.nodeRepository.nodes().node(host43.hostname()).get().state());
// Last child is parked
tester.nodeRepository.nodes().park(host42.hostname(), true, Agent.system, getClass().getSimpleName());
// Host and children can now be removed
tester.maintainer.maintain();
- for (var node : List.of(host4, host41, host42)) {
+ for (var node : List.of(host4, host41, host42, host43)) {
assertTrue(node.hostname() + " removed", tester.nodeRepository.nodes().node(node.hostname()).isEmpty());
}
}