summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2021-03-16 13:26:02 +0100
committerOla Aunrønning <olaa@verizonmedia.com>2021-03-16 13:26:02 +0100
commitaa8e6e177a5d418d90e9afec815b5087e2a3fd12 (patch)
tree3abbf1a45982e6c7ad2395ef856ab85bc3cd943a /controller-api
parent58b46f88e30d34c339d86f4954e77db56e9295e0 (diff)
Only approve change requests pending approval. Replace noop change client with mock.
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java31
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/MockChangeRequestClient.java33
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/NoopChangeRequestClient.java19
3 files changed, 52 insertions, 31 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java
index a56f96955de..31665c8ae0a 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/ChangeRequest.java
@@ -13,15 +13,15 @@ public class ChangeRequest {
private final ChangeRequestSource changeRequestSource;
private final List<String> impactedSwitches;
private final List<String> impactedHosts;
- private final boolean isApproved;
+ private final Approval approval;
private final Impact impact;
- private ChangeRequest(String id, ChangeRequestSource changeRequestSource, List<String> impactedSwitches, List<String> impactedHosts, boolean isApproved, Impact impact) {
+ private ChangeRequest(String id, ChangeRequestSource changeRequestSource, List<String> impactedSwitches, List<String> impactedHosts, Approval approval, Impact impact) {
this.id = Objects.requireNonNull(id);
this.changeRequestSource = Objects.requireNonNull(changeRequestSource);
this.impactedSwitches = Objects.requireNonNull(impactedSwitches);
this.impactedHosts = Objects.requireNonNull(impactedHosts);
- this.isApproved = Objects.requireNonNull(isApproved);
+ this.approval = Objects.requireNonNull(approval);
this.impact = Objects.requireNonNull(impact);
}
@@ -41,8 +41,8 @@ public class ChangeRequest {
return impactedHosts;
}
- public boolean isApproved() {
- return isApproved;
+ public Approval getApproval() {
+ return approval;
}
public Impact getImpact() {
@@ -56,7 +56,7 @@ public class ChangeRequest {
", changeRequestSource=" + changeRequestSource +
", impactedSwitches=" + impactedSwitches +
", impactedHosts=" + impactedHosts +
- ", isApproved=" + isApproved +
+ ", approval=" + approval +
", impact=" + impact +
'}';
}
@@ -66,7 +66,7 @@ public class ChangeRequest {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ChangeRequest that = (ChangeRequest) o;
- return isApproved == that.isApproved &&
+ return approval == that.approval &&
Objects.equals(id, that.id) &&
Objects.equals(changeRequestSource, that.changeRequestSource) &&
Objects.equals(impactedSwitches, that.impactedSwitches) &&
@@ -76,7 +76,7 @@ public class ChangeRequest {
@Override
public int hashCode() {
- return Objects.hash(id, changeRequestSource, impactedSwitches, impactedHosts, isApproved, impact);
+ return Objects.hash(id, changeRequestSource, impactedSwitches, impactedHosts, approval, impact);
}
public static class Builder {
@@ -84,7 +84,7 @@ public class ChangeRequest {
private ChangeRequestSource changeRequestSource;
private List<String> impactedSwitches;
private List<String> impactedHosts;
- private boolean isApproved;
+ private Approval approval;
private Impact impact;
@@ -108,8 +108,8 @@ public class ChangeRequest {
return this;
}
- public Builder isApproved(boolean isApproved) {
- this.isApproved = isApproved;
+ public Builder approval(Approval approval) {
+ this.approval = approval;
return this;
}
@@ -119,7 +119,7 @@ public class ChangeRequest {
}
public ChangeRequest build() {
- return new ChangeRequest(id, changeRequestSource, impactedSwitches, impactedHosts, isApproved, impact);
+ return new ChangeRequest(id, changeRequestSource, impactedSwitches, impactedHosts, approval, impact);
}
public String getId() {
@@ -136,4 +136,11 @@ public class ChangeRequest {
UNKNOWN
}
+ public enum Approval {
+ REQUESTED,
+ APPROVED,
+ REJECTED,
+ OTHER
+ }
+
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/MockChangeRequestClient.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/MockChangeRequestClient.java
new file mode 100644
index 00000000000..e85c0afcb0e
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/MockChangeRequestClient.java
@@ -0,0 +1,33 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author olaa
+ */
+public class MockChangeRequestClient implements ChangeRequestClient {
+
+ private List<ChangeRequest> upcomingChangeRequests = new ArrayList<>();
+ private List<ChangeRequest> approvedChangeRequests = new ArrayList<>();
+
+ @Override
+ public List<ChangeRequest> getUpcomingChangeRequests() {
+ return upcomingChangeRequests;
+ }
+
+ @Override
+ public void approveChangeRequests(List<ChangeRequest> changeRequests) {
+ approvedChangeRequests.addAll(changeRequests);
+ }
+
+ public void setUpcomingChangeRequests(List<ChangeRequest> changeRequests) {
+ upcomingChangeRequests = changeRequests;
+ }
+
+ public List<ChangeRequest> getApprovedChangeRequests() {
+ return approvedChangeRequests;
+ }
+
+}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/NoopChangeRequestClient.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/NoopChangeRequestClient.java
deleted file mode 100644
index d548620b062..00000000000
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/vcmr/NoopChangeRequestClient.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.api.integration.vcmr;
-
-import java.util.List;
-
-/**
- * @author olaa
- */
-public class NoopChangeRequestClient implements ChangeRequestClient {
-
- @Override
- public List<ChangeRequest> getUpcomingChangeRequests() {
- return List.of();
- }
-
- @Override
- public void approveChangeRequests(List<ChangeRequest> changeRequests) {}
-
-}