diff options
3 files changed, 9 insertions, 3 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VespaChangeRequest.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VespaChangeRequest.java index a8be4a77c71..915f43dc369 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VespaChangeRequest.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/VespaChangeRequest.java @@ -89,6 +89,7 @@ public class VespaChangeRequest extends ChangeRequest { public enum Status { COMPLETED, + READY, IN_PROGRESS, PENDING_ACTION, PENDING_ASSESSMENT, diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainer.java index a8de70a56a2..3630986aa23 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainer.java @@ -24,6 +24,7 @@ import java.time.ZonedDateTime; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.function.Predicate; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -77,7 +78,7 @@ public class VCMRMaintainer extends ControllerMaintainer { * Status is based on: * 1. Whether the source has reportedly closed the request * 2. Whether any host requires operator action - * 3. Whether any host has started/finished retiring + * 3. Whether any host is pending/started/finished retirement */ private Status getStatus(List<HostAction> nextActions, VespaChangeRequest changeRequest) { if (changeRequest.getChangeRequestSource().isClosed()) { @@ -90,10 +91,14 @@ public class VCMRMaintainer extends ControllerMaintainer { return Status.REQUIRES_OPERATOR_ACTION; } - if (byActionState.getOrDefault(State.RETIRING, 0L) + byActionState.getOrDefault(State.RETIRED, 0L) > 0) { + if (byActionState.getOrDefault(State.RETIRING, 0L) > 0) { return Status.IN_PROGRESS; } + if (Set.of(State.RETIRED, State.NONE).containsAll(byActionState.keySet())) { + return Status.READY; + } + if (byActionState.getOrDefault(State.PENDING_RETIREMENT, 0L) > 0) { return Status.PENDING_ACTION; } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainerTest.java index d5c35f806f4..d29656eef75 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainerTest.java @@ -121,7 +121,7 @@ public class VCMRMaintainerTest { var writtenChangeRequest = tester.curator().readChangeRequest(changeRequestId).orElseThrow(); var parkedNodeAction = writtenChangeRequest.getHostActionPlan().get(0); assertEquals(State.RETIRED, parkedNodeAction.getState()); - assertEquals(Status.IN_PROGRESS, writtenChangeRequest.getStatus()); + assertEquals(Status.READY, writtenChangeRequest.getStatus()); } @Test |