summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VcmrMaintainer.java16
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java21
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VcmrMaintainerTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/patched-vcmr.json3
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmr.json3
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmrs.json3
11 files changed, 38 insertions, 27 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java
index e16d52703e9..320f15a8b18 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainer.java
@@ -121,7 +121,7 @@ public class ChangeRequestMaintainer extends ControllerMaintainer {
private boolean shouldDeleteChangeRequest(ChangeRequestSource source) {
return source.isClosed() &&
- source.getPlannedStartTime()
+ source.plannedStartTime()
.plus(Duration.ofDays(7))
.isBefore(ZonedDateTime.now());
}
@@ -129,7 +129,7 @@ public class ChangeRequestMaintainer extends ControllerMaintainer {
private void approveChangeRequest(ChangeRequest changeRequest) {
if (system.equals(SystemName.main) &&
changeRequest.getApproval() == ChangeRequest.Approval.REQUESTED) {
- logger.info("Approving " + changeRequest.getChangeRequestSource().getId());
+ logger.info("Approving " + changeRequest.getChangeRequestSource().id());
changeRequestClient.approveChangeRequest(changeRequest);
}
}
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 d4c4b4efda7..df6e89fb5ef 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
@@ -170,7 +170,7 @@ public class VcmrMaintainer extends ControllerMaintainer {
.orElse(new HostAction(node.hostname().value(), State.NONE, Instant.now()));
if (changeRequest.getChangeRequestSource().isClosed()) {
- LOG.fine(() -> changeRequest.getChangeRequestSource().getId() + " is closed, recycling " + node.hostname());
+ LOG.fine(() -> changeRequest.getChangeRequestSource().id() + " is closed, recycling " + node.hostname());
recycleNode(zoneId, node, hostAction);
removeReport(zoneId, changeRequest, node);
return hostAction.withState(State.COMPLETE);
@@ -179,14 +179,14 @@ public class VcmrMaintainer extends ControllerMaintainer {
if (isLowImpact(changeRequest))
return hostAction;
- if (shouldAddReport(node, changeRequest.getChangeRequestSource().getId(), hostAction))
+ if (shouldAddReport(node, changeRequest.getChangeRequestSource().id(), hostAction))
addReport(zoneId, changeRequest, node);
if (isOutOfSync(node, hostAction))
return hostAction.withState(State.OUT_OF_SYNC);
if (isPostponed(changeRequest, hostAction)) {
- LOG.fine(() -> changeRequest.getChangeRequestSource().getId() + " is postponed, recycling " + node.hostname());
+ LOG.fine(() -> changeRequest.getChangeRequestSource().id() + " is postponed, recycling " + node.hostname());
recycleNode(zoneId, node, hostAction);
return hostAction.withState(State.PENDING_RETIREMENT);
}
@@ -203,7 +203,7 @@ public class VcmrMaintainer extends ControllerMaintainer {
if (shouldRetire(changeRequest, hostAction)) {
if (!wantToRetireRecursive(zoneId, node)) {
- LOG.info(Text.format("Retiring %s due to %s", node.hostname().value(), changeRequest.getChangeRequestSource().getId()));
+ LOG.info(Text.format("Retiring %s due to %s", node.hostname().value(), changeRequest.getChangeRequestSource().id()));
// TODO: Remove try/catch once retirement is stabilized
try {
setWantToRetire(zoneId, node, true);
@@ -256,14 +256,14 @@ public class VcmrMaintainer extends ControllerMaintainer {
private boolean isPostponed(VespaChangeRequest changeRequest, HostAction action) {
return List.of(State.RETIRED, State.RETIRING).contains(action.getState()) &&
- changeRequest.getChangeRequestSource().getPlannedStartTime()
+ changeRequest.getChangeRequestSource().plannedStartTime()
.minus(ALLOWED_POSTPONEMENT_TIME)
.isAfter(ZonedDateTime.now());
}
private boolean shouldRetire(VespaChangeRequest changeRequest, HostAction action) {
return action.getState() == State.PENDING_RETIREMENT &&
- getRetirementStartTime(changeRequest.getChangeRequestSource().getPlannedStartTime())
+ getRetirementStartTime(changeRequest.getChangeRequestSource().plannedStartTime())
.isBefore(ZonedDateTime.now());
}
@@ -348,14 +348,14 @@ public class VcmrMaintainer extends ControllerMaintainer {
if (changeRequest.getApproval() != ChangeRequest.Approval.REQUESTED)
return;
- LOG.info("Approving " + changeRequest.getChangeRequestSource().getId());
+ LOG.info("Approving " + changeRequest.getChangeRequestSource().id());
changeRequestClient.approveChangeRequest(changeRequest);
}
private void removeReport(ZoneId zoneId, VespaChangeRequest changeRequest, Node node) {
var report = VcmrReport.fromReports(node.reports());
- if (report.removeVcmr(changeRequest.getChangeRequestSource().getId())) {
+ if (report.removeVcmr(changeRequest.getChangeRequestSource().id())) {
updateReport(zoneId, node, report);
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java
index dbf14f4df87..ba11ad1756f 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializer.java
@@ -45,6 +45,7 @@ public class ChangeRequestSerializer {
private static final String ACTION_STATE_FIELD = "state";
private static final String LAST_UPDATED_FIELD = "lastUpdated";
private static final String HOSTS_FIELD = "hosts";
+ private static final String CATEGORY_FIELD = "category";
public static VespaChangeRequest fromSlime(Slime slime) {
@@ -56,6 +57,8 @@ public class ChangeRequestSerializer {
var status = VespaChangeRequest.Status.valueOf(inspector.field(STATUS_FIELD).asString());
var impact = ChangeRequest.Impact.valueOf(inspector.field(IMPACT_FIELD).asString());
var approval = ChangeRequest.Approval.valueOf(inspector.field(APPROVAL_FIELD).asString());
+ var category = inspector.field(CATEGORY_FIELD).valid() ?
+ inspector.field(CATEGORY_FIELD).asString() : "Unknown";
var impactedHosts = new ArrayList<String>();
inspector.field(IMPACTED_HOSTS_FIELD)
@@ -111,22 +114,26 @@ public class ChangeRequestSerializer {
}
private static void writeChangeRequestSource(Cursor cursor, ChangeRequestSource source) {
- cursor.setString(SOURCE_SYSTEM_FIELD, source.getSystem());
- cursor.setString(ID_FIELD, source.getId());
- cursor.setString(URL_FIELD, source.getUrl());
- cursor.setString(START_TIME_FIELD, source.getPlannedStartTime().toString());
- cursor.setString(END_TIME_FIELD, source.getPlannedEndTime().toString());
- cursor.setString(STATUS_FIELD, source.getStatus().name());
+ cursor.setString(SOURCE_SYSTEM_FIELD, source.system());
+ cursor.setString(ID_FIELD, source.id());
+ cursor.setString(URL_FIELD, source.url());
+ cursor.setString(START_TIME_FIELD, source.plannedStartTime().toString());
+ cursor.setString(END_TIME_FIELD, source.plannedEndTime().toString());
+ cursor.setString(STATUS_FIELD, source.status().name());
+ cursor.setString(CATEGORY_FIELD, source.category());
}
public static ChangeRequestSource readChangeRequestSource(Inspector inspector) {
+ var category = inspector.field(CATEGORY_FIELD).valid() ?
+ inspector.field(CATEGORY_FIELD).asString() : "Unknown";
return new ChangeRequestSource(
inspector.field(SOURCE_SYSTEM_FIELD).asString(),
inspector.field(ID_FIELD).asString(),
inspector.field(URL_FIELD).asString(),
ChangeRequestSource.Status.valueOf(inspector.field(STATUS_FIELD).asString()),
ZonedDateTime.parse(inspector.field(START_TIME_FIELD).asString()),
- ZonedDateTime.parse(inspector.field(END_TIME_FIELD).asString())
+ ZonedDateTime.parse(inspector.field(END_TIME_FIELD).asString()),
+ category
);
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java
index a72e0fdfe52..f0c851f50ef 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandler.java
@@ -106,7 +106,7 @@ public class ChangeManagementApiHandler extends AuditLoggingRequestHandler {
private HttpResponse changeRequestAssessment(String changeRequestId) {
var optionalChangeRequest = controller.curator().readChangeRequests()
.stream()
- .filter(request -> changeRequestId.equals(request.getChangeRequestSource().getId()))
+ .filter(request -> changeRequestId.equals(request.getChangeRequestSource().id()))
.findFirst();
if (optionalChangeRequest.isEmpty())
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java
index a20a2e26d22..a25304ee297 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/ChangeRequestMaintainerTest.java
@@ -36,9 +36,9 @@ public class ChangeRequestMaintainerTest {
changeRequestMaintainer.maintain();
persistedChangeRequest = tester.curator().readChangeRequest("some-id").get();
- assertEquals(Status.CANCELED, persistedChangeRequest.getChangeRequestSource().getStatus());
+ assertEquals(Status.CANCELED, persistedChangeRequest.getChangeRequestSource().status());
assertEquals(ChangeRequest.Approval.APPROVED, persistedChangeRequest.getApproval());
- assertEquals(time, persistedChangeRequest.getChangeRequestSource().getPlannedStartTime());
+ assertEquals(time, persistedChangeRequest.getChangeRequestSource().plannedStartTime());
assertEquals(0, changeRequestClient.getApprovedChangeRequests().size());
}
@@ -99,6 +99,7 @@ public class ChangeRequestMaintainerTest {
.url("some-url")
.system("some-system")
.status(status)
+ .category("some-category")
.build())
.build();
}
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 39bf61df9ed..cba916df52a 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
@@ -58,7 +58,7 @@ public class VcmrMaintainerTest {
@Test
void recycle_hosts_after_completion() {
var vcmrReport = new VcmrReport();
- vcmrReport.addVcmr(new ChangeRequestSource("aws", "id123", "url", ChangeRequestSource.Status.WAITING_FOR_APPROVAL , ZonedDateTime.now(), ZonedDateTime.now()));
+ vcmrReport.addVcmr(new ChangeRequestSource("aws", "id123", "url", ChangeRequestSource.Status.WAITING_FOR_APPROVAL , ZonedDateTime.now(), ZonedDateTime.now(), "N/A"));
var parkedNode = createNode(host1, NodeType.host, Node.State.parked, true);
var failedNode = createNode(host2, NodeType.host, Node.State.failed, false);
var reports = vcmrReport.toNodeReports();
@@ -285,7 +285,7 @@ public class VcmrMaintainerTest {
private VespaChangeRequest newChangeRequest(ChangeRequestSource.Status sourceStatus, State state1, State state2, ZonedDateTime startTime) {
- var source = new ChangeRequestSource("aws", changeRequestId, "url", sourceStatus , startTime, ZonedDateTime.now());
+ var source = new ChangeRequestSource("aws", changeRequestId, "url", sourceStatus , startTime, ZonedDateTime.now(), "N/A");
var actionPlan = List.of(
new HostAction(host1.value(), state1, Instant.now()),
new HostAction(host2.value(), state2, Instant.now())
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializerTest.java
index 77686467336..a429e9090cc 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ChangeRequestSerializerTest.java
@@ -21,7 +21,7 @@ public class ChangeRequestSerializerTest {
@Test
void reserialization_equality() {
- var source = new ChangeRequestSource("aws", "id321", "url", ChangeRequestSource.Status.STARTED, ZonedDateTime.now(), ZonedDateTime.now());
+ var source = new ChangeRequestSource("aws", "id321", "url", ChangeRequestSource.Status.STARTED, ZonedDateTime.now(), ZonedDateTime.now(), "Some category");
var actionPlan = List.of(
new HostAction("host1", HostAction.State.RETIRING, Instant.now()),
new HostAction("host2", HostAction.State.RETIRED, Instant.now())
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java
index de2bf70997a..8a915d72b25 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/ChangeManagementApiHandlerTest.java
@@ -86,7 +86,7 @@ public class ChangeManagementApiHandlerTest extends ControllerContainerTest {
private VespaChangeRequest createChangeRequest() {
var instant = Instant.ofEpochMilli(9001);
var date = ZonedDateTime.ofInstant(instant, java.time.ZoneId.of("UTC"));
- var source = new ChangeRequestSource("aws", "id321", "url", ChangeRequestSource.Status.STARTED, date, date);
+ var source = new ChangeRequestSource("aws", "id321", "url", ChangeRequestSource.Status.STARTED, date, date, "N/A");
var actionPlan = List.of(
new HostAction("host1", HostAction.State.RETIRING, instant),
new HostAction("host2", HostAction.State.RETIRED, instant)
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/patched-vcmr.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/patched-vcmr.json
index 3db8b226b21..b05a299bc4d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/patched-vcmr.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/patched-vcmr.json
@@ -10,7 +10,8 @@
"url": "url",
"plannedStartTime": "1970-01-01T00:00:09.001Z[UTC]",
"plannedEndTime": "1970-01-01T00:00:09.001Z[UTC]",
- "status": "STARTED"
+ "status": "STARTED",
+ "category": "N/A"
},
"actionPlan": {
"hosts": [
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmr.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmr.json
index 545fe289be8..531a182cad6 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmr.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmr.json
@@ -10,7 +10,8 @@
"url": "url",
"plannedStartTime": "1970-01-01T00:00:09.001Z[UTC]",
"plannedEndTime": "1970-01-01T00:00:09.001Z[UTC]",
- "status": "STARTED"
+ "status": "STARTED",
+ "category": "N/A"
},
"actionPlan": {
"hosts": [
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmrs.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmrs.json
index 4ae079ebfb4..3a456d09bc5 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmrs.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/changemanagement/responses/vcmrs.json
@@ -12,7 +12,8 @@
"url": "url",
"plannedStartTime": "1970-01-01T00:00:09.001Z[UTC]",
"plannedEndTime": "1970-01-01T00:00:09.001Z[UTC]",
- "status": "STARTED"
+ "status": "STARTED",
+ "category": "N/A"
},
"actionPlan": {
"hosts": [