summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-02-23 10:49:01 +0100
committerMartin Polden <mpolden@mpolden.no>2022-02-23 10:52:44 +0100
commit3311d5399ab20bde59beb09c88118d93e372a297 (patch)
treec390b1b4f49b36858029c06a27491dcb91117e72 /node-repository
parentca12adcd84dea21451ef6f5094702ad9f555ec7c (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')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/DynamicProvisioningMaintainerTest.java18
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");