diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-02-23 10:49:01 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-02-23 10:52:44 +0100 |
commit | 3311d5399ab20bde59beb09c88118d93e372a297 (patch) | |
tree | c390b1b4f49b36858029c06a27491dcb91117e72 /node-repository | |
parent | ca12adcd84dea21451ef6f5094702ad9f555ec7c (diff) |
Always park deprovisioning infrastructure node
PR #20879 assumes that all deprovisioning child nodes should be parked, but this
is not the case for infrastructure as it breaks assumptions done by dynamic
provisioning.
Diffstat (limited to 'node-repository')
2 files changed, 11 insertions, 9 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 57a3b436e37..e5e5ce27cf1 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 @@ -834,7 +834,7 @@ public class Nodes { private static boolean parkOnDeallocationOf(Node node, Agent agent) { if (node.state() == Node.State.parked) return false; if (agent == Agent.operator) return false; - if (!node.type().isHost() && node.status().wantToDeprovision()) return false; + if (node.type() == NodeType.tenant && node.status().wantToDeprovision()) return false; boolean retirementRequestedByOperator = node.status().wantToRetire() && node.history().event(History.Event.Type.wantToRetire) .map(History.Event::agent) 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 7ce26354739..68d75db8a4c 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 @@ -486,19 +486,21 @@ public class DynamicProvisioningMaintainerTest { tester.prepareAndActivateInfraApplication(configSrvApp, hostType.childNodeType()); assertEquals("Node moves to inactive", Node.State.inactive, nodeToRemove.get().state()); - // Node is completely removed (done by InactiveExpirer and host-admin in a real system) - Node inactiveConfigServer = nodeToRemove.get(); - int removedIndex = inactiveConfigServer.allocation().get().membership().index(); - tester.nodeRepository().nodes().removeRecursively(inactiveConfigServer, true); - assertEquals(2, tester.nodeRepository().nodes().list().nodeType(hostType.childNodeType()).size()); + // Node is parked (done by InactiveExpirer and host-admin in a real system) + int removedIndex = nodeToRemove.get().allocation().get().membership().index(); + Node parkedConfigServer = tester.nodeRepository().nodes().deallocate(nodeToRemove.get(), Agent.system, getClass().getSimpleName()); + assertSame("Node moves to parked", Node.State.parked, parkedConfigServer.state()); + assertEquals(2, tester.nodeRepository().nodes().list().nodeType(hostType.childNodeType()).state(Node.State.active).size()); - // ExpiredRetirer moves host to inactive after child has moved to parked + // ... same for host tester.nodeRepository().nodes().deallocate(hostToRemove.get(), Agent.system, getClass().getSimpleName()); assertSame("Host moves to parked", Node.State.parked, hostToRemove.get().state()); - // Host is removed + // Host and child is removed dynamicProvisioningTester.maintainer.maintain(); - assertEquals(2, tester.nodeRepository().nodes().list().nodeType(hostType).size()); + allNodes = tester.nodeRepository().nodes().list(); + assertEquals(2, allNodes.nodeType(hostType).size()); + assertEquals(2, allNodes.nodeType(hostType.childNodeType()).size()); // Deployment by the removed host has no effect HostName.setHostNameForTestingOnly("cfg2.example.com"); |