diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2020-11-06 19:25:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-06 19:25:00 +0100 |
commit | 8905185c86ea99afb2d05066d1b093a4a6081893 (patch) | |
tree | 627c5f8500bebe7ac11725915f1ac07bda4dbf9d /controller-server | |
parent | 846feef93e16dd971e15a4c98e391948d50b5d27 (diff) | |
parent | 6dc92b5b36bec70f143453a6e7a924a663b42cff (diff) |
Merge pull request #15210 from vespa-engine/olaa/maintain-all-breakfixed-nodes
Maintain all nodes in breakfixed state
Diffstat (limited to 'controller-server')
2 files changed, 15 insertions, 37 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostRepairMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostRepairMaintainer.java index e3c6862384f..57727e64e30 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostRepairMaintainer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostRepairMaintainer.java @@ -47,15 +47,12 @@ public class HostRepairMaintainer extends ControllerMaintainer { controller().zoneRegistry().zones() .reachable().zones().stream() .forEach(zoneApi -> { - var nodeTicketMap = nodeRepository.list((zoneApi).getId()) + var breakfixedNodes = nodeRepository.list((zoneApi).getId()) .stream() - .filter(this::hasOpenTicket) - .collect(Collectors.toMap( - node -> node, - this::getTicketReport) - ); + .filter(node -> node.state() == Node.State.breakfixed) + .collect(Collectors.toList()); try { - repairClient.updateRepairStatus(zoneApi, nodeTicketMap); + repairClient.updateRepairStatus(zoneApi, breakfixedNodes); } catch (Exception e) { log.warning("Failed to update repair status; " + Exceptions.toMessageString(e)); exceptions.incrementAndGet(); @@ -66,16 +63,4 @@ public class HostRepairMaintainer extends ControllerMaintainer { return exceptions.get() == 0; } - - private boolean hasOpenTicket(Node node) { - var reports = node.reports(); - if (!reports.containsKey(RepairTicketReport.getReportId())) { - return false; - } - return "OPEN".equals(getTicketReport(node).getStatus()); - } - - private RepairTicketReport getTicketReport(Node node) { - return uncheck(() -> RepairTicketReport.fromJsonNode(node.reports().get(RepairTicketReport.getReportId()))); - } } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostRepairMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostRepairMaintainerTest.java index 556755581fe..ab6e13bb5a2 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostRepairMaintainerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostRepairMaintainerTest.java @@ -3,10 +3,7 @@ package com.yahoo.vespa.hosted.controller.maintenance; import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.vespa.hosted.controller.ControllerTester; -import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode; -import com.yahoo.vespa.hosted.controller.api.integration.repair.HostRepairClient; -import com.yahoo.vespa.hosted.controller.api.integration.repair.MockRepairClient; -import com.yahoo.vespa.hosted.controller.api.integration.repair.RepairTicketReport; +import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node; import org.junit.Test; import java.time.Duration; @@ -29,23 +26,19 @@ public class HostRepairMaintainerTest { var hostname1 = HostName.from("node-1-tenant-host-dev.us-east-1"); var hostname2 = HostName.from("node-2-tenant-host-dev.us-east-1"); var timestamp = Instant.now().toEpochMilli(); - var openTicket = new RepairTicketReport("OPEN", "ticket-1", timestamp, timestamp); - var closedTicket = new RepairTicketReport("CLOSED", "ticket-2", timestamp, timestamp); - - tester.configServer().nodeRepository().addReport( - zoneId, - hostname1, - RepairTicketReport.getReportId(), - openTicket.toJsonNode()); - tester.configServer().nodeRepository().addReport( - zoneId, - hostname2, - RepairTicketReport.getReportId(), - closedTicket.toJsonNode()); + var node1 = new Node.Builder() + .state(Node.State.active) + .hostname(hostname1) + .build(); + var node2 = new Node.Builder() + .state(Node.State.breakfixed) + .hostname(hostname2) + .build(); + tester.configServer().nodeRepository().putNodes(zoneId, List.of(node1, node2)); maintainer.maintain(); var updatedNodes = tester.serviceRegistry().hostRepairClient().getUpdatedNodes(); assertEquals(1, updatedNodes.size()); - assertEquals(hostname1, updatedNodes.get(0).hostname()); + assertEquals(hostname2, updatedNodes.get(0).hostname()); } }
\ No newline at end of file |