diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2021-04-14 12:46:57 +0200 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2021-04-16 11:34:44 +0200 |
commit | dc8cf2848a7bd3e535b6296128cb28064e66bf6f (patch) | |
tree | 2a6870065f7a9ec21934411eab7d6b7e02b4ce0c /controller-api | |
parent | 3aef0ca8a0ffa0423b0e2299e5fa139770d21793 (diff) |
Add VCMRMaintainer
Diffstat (limited to 'controller-api')
3 files changed, 42 insertions, 2 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestSource.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestSource.java index 632999ed1c3..6cf0f6e0ebd 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestSource.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequestSource.java @@ -2,8 +2,11 @@ package com.yahoo.vespa.hosted.controller.api.integration.vcmr; import java.time.ZonedDateTime; +import java.util.List; import java.util.Objects; +import static com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequestSource.Status.*; + /** * @author olaa */ @@ -80,6 +83,10 @@ public class ChangeRequestSource { return Objects.hash(system, id, status, url, plannedStartTime, plannedEndTime); } + public boolean isClosed() { + return List.of(CLOSED, CANCELED, COMPLETE).contains(status); + } + public enum Status { DRAFT, WAITING_FOR_APPROVAL, diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/HostAction.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/HostAction.java index eeb7d89cbe7..b92ea665d13 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/HostAction.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/HostAction.java @@ -7,6 +7,7 @@ import java.util.Objects; /** * @author olaa * + * Contains planned/current action for a host impacted by a change request */ public class HostAction { @@ -32,6 +33,10 @@ public class HostAction { return lastUpdated; } + public HostAction withState(State state) { + return new HostAction(hostname, state, this.state == state ? lastUpdated : Instant.now()); + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -47,6 +52,15 @@ public class HostAction { return Objects.hash(hostname, state, lastUpdated); } + @Override + public String toString() { + return "HostAction{" + + "hostname='" + hostname + '\'' + + ", state=" + state + + ", lastUpdated=" + lastUpdated + + '}'; + } + public enum State { REQUIRES_OPERATOR_ACTION, PENDING_RETIREMENT, 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 1dda6bb099c..eec5684d522 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 @@ -40,12 +40,16 @@ public class VespaChangeRequest extends ChangeRequest { return zoneId; } + public VespaChangeRequest withStatus(Status status) { + return new VespaChangeRequest(getId(), getChangeRequestSource(), getImpactedSwitches(), getImpactedHosts(), getApproval(), getImpact(), status, hostActionPlan, zoneId); + } + public VespaChangeRequest withSource(ChangeRequestSource source) { return new VespaChangeRequest(getId(), source, getImpactedSwitches(), getImpactedHosts(), getApproval(), getImpact(), status, hostActionPlan, zoneId); } - public VespaChangeRequest withImpactedHosts(List<String> hosts) { - return new VespaChangeRequest(getId(), getChangeRequestSource(), getImpactedSwitches(), new ArrayList<>(hosts), getApproval(), getImpact(), status, hostActionPlan, zoneId); + public VespaChangeRequest withActionPlan(List<HostAction> hostActionPlan) { + return new VespaChangeRequest(getId(), getChangeRequestSource(), getImpactedSwitches(), getImpactedHosts(), getApproval(), getImpact(), status, hostActionPlan, zoneId); } @Override @@ -64,6 +68,21 @@ public class VespaChangeRequest extends ChangeRequest { return Objects.hash(super.hashCode(), status, hostActionPlan, zoneId); } + @Override + public String toString() { + return "VespaChangeRequest{" + + "id='" + getId() + '\'' + + ", changeRequestSource=" + getChangeRequestSource() + + ", impactedSwitches=" + getImpactedSwitches() + + ", impactedHosts=" + getImpactedHosts() + + ", approval=" + getApproval() + + ", impact=" + getImpact() + + ", status=" + status + + ", zoneId=" + zoneId + + ", hostActionPlan=" + hostActionPlan + + '}'; + } + public enum Status { COMPLETED, IN_PROGRESS, |