diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-11-11 15:59:31 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-11-11 15:59:31 +0100 |
commit | 420a0079965cc568800fe14df1dd59e261cad6c2 (patch) | |
tree | 6b87568a7284b12492ac9c09505cd45f29ef910b /controller-server | |
parent | 9c5c41e68a5b3166c4d0d8cac98ac5763957878a (diff) |
Skip node when already deprovisioning
Diffstat (limited to 'controller-server')
2 files changed, 3 insertions, 3 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java index 34f41ce2784..98e9fc7c159 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTracker.java @@ -55,7 +55,7 @@ public class CloudEventTracker extends ControllerMaintainer { private void deprovisionAffectedHosts(String region, CloudEvent event) { for (var zone : zonesByCloudNativeRegion.get(region)) { for (var node : nodeRepository.list(zone.getId(), NodeFilter.all())) { - if (!affects(node, event)) continue; + if (!deprovision(node, event)) continue; log.info("Retiring and deprovisioning " + node.hostname().value() + " in " + zone.getId() + ": Affected by maintenance event " + event.instanceEventId); nodeRepository.retire(zone.getId(), node.hostname().value(), true, true); @@ -63,8 +63,9 @@ public class CloudEventTracker extends ControllerMaintainer { } } - private static boolean affects(Node node, CloudEvent event) { + private static boolean deprovision(Node node, CloudEvent event) { if (!node.type().isHost()) return false; // Non-hosts are never affected + if (node.wantToRetire() && node.wantToDeprovision()) return false; // Already deprovisioning return event.affectedInstances.stream() .anyMatch(instance -> node.hostname().value().contains(instance)); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java index f0aef75bb11..8daedc05e96 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventTrackerTest.java @@ -31,7 +31,6 @@ public class CloudEventTrackerTest { private final ZoneApiMock zone1 = createZone("prod.zone1", "region-1", "aws"); private final ZoneApiMock zone2 = createZone("prod.zone2", "region-2", "aws"); - /** * Test scenario: Consider three zones, two of which are supported * |