From 4d9ce035350d8e726530d398665e0c6fcd76c02a Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Tue, 12 Jul 2022 10:39:39 +0200 Subject: Allow failed node to be deprovisioned --- .../hosted/provision/maintenance/DynamicProvisioningMaintainer.java | 3 ++- .../provision/maintenance/DynamicProvisioningMaintainerTest.java | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'node-repository') 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 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()); } } -- cgit v1.2.3