diff options
4 files changed, 23 insertions, 8 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 5a797038f94..05b171f36b0 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 @@ -609,10 +609,14 @@ public class NodeRepository extends AbstractComponent { children.forEach(child -> requireRemovable(child, true, force)); db.removeNodes(children); List<Node> removed = new ArrayList<>(children); - if (zone.cloud().value().equals("aws")) + if (zone.cloud().value().equals("aws")) { db.removeNodes(List.of(node)); - else + } + else { + node = node.withWantToRetire(false, Agent.system, clock.instant()); + node = node.with(node.status().withWantToDeprovision(false)); move(node, State.deprovisioned, Agent.system, Optional.empty()); + } removed.add(node); return removed; } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java index 2bbd429fe4e..d2fa773a5a2 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocatableClusterResources.java @@ -44,7 +44,7 @@ public class AllocatableClusterResources { } /** - * Returns the resources which will actually be available in this cluster with this allocation. + * Returns the resources which will actually be available per node in this cluster with this allocation. * These should be used for reasoning about allocation to meet measured demand. */ public NodeResources realResources() { return realResources; } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java index eaa5aebda90..d4a237f8e23 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/AutoscalingMaintainer.java @@ -75,7 +75,7 @@ public class AutoscalingMaintainer extends Maintainer { private String toString(int nodes, int groups, NodeResources resources) { return String.format(nodes + (groups > 1 ? " (in " + groups + " groups)" : "") + " * [vcpu: %1$.1f, memory: %2$.1f Gb, disk %3$.1f Gb]" + - " (total: [vcpu: %4$.1f, memory: %5$.1f Gb, disk %6$.1f Gb])," + + " (total: [vcpu: %4$.1f, memory: %5$.1f Gb, disk: %6$.1f Gb])," + resources.vcpu(), resources.memoryGb(), resources.diskGb(), nodes * resources.vcpu(), nodes * resources.memoryGb(), nodes * resources.diskGb()); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java index 8830204547e..56b848a5cf2 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeRepositoryTest.java @@ -157,12 +157,23 @@ public class NodeRepositoryTest { tester.addNode("id2", "host2", "default", NodeType.host); assertFalse(tester.nodeRepository().getNode("host1").get().history().hasEventAfter(History.Event.Type.deprovisioned, testStart)); + // Set host 1 properties and remove it + Node host1 = tester.nodeRepository().getNode("host1").get(); + host1 = host1.withWantToRetire(true, Agent.system, tester.nodeRepository().clock().instant()); + host1 = host1.with(host1.status().withWantToDeprovision(true)); + tester.nodeRepository().write(host1, tester.nodeRepository().lock(host1)); tester.nodeRepository().removeRecursively("host1"); - assertEquals(Node.State.deprovisioned, tester.nodeRepository().getNode("host1").get().state()); - assertTrue(tester.nodeRepository().getNode("host1").get().history().hasEventAfter(History.Event.Type.deprovisioned, testStart)); - Node existing = tester.addNode("id1", "host1", "default", NodeType.host); - assertTrue(existing.history().hasEventAfter(History.Event.Type.deprovisioned, testStart)); + // Host 1 is deprovisioned and unwanted properties are cleared + host1 = tester.nodeRepository().getNode("host1").get(); + assertEquals(Node.State.deprovisioned, host1.state()); + assertTrue(host1.history().hasEventAfter(History.Event.Type.deprovisioned, testStart)); + assertFalse(host1.status().wantToRetire()); + assertFalse(host1.status().wantToDeprovision()); + + // Adding it again moves it from deprovisioned + host1 = tester.addNode("id1", "host1", "default", NodeType.host); + assertTrue(host1.history().hasEventAfter(History.Event.Type.deprovisioned, testStart)); } @Test |