diff options
author | Bjorn Meland <bjormel@verizonmedia.com> | 2021-04-15 14:07:01 +0200 |
---|---|---|
committer | Bjorn Meland <bjormel@verizonmedia.com> | 2021-04-15 14:07:01 +0200 |
commit | d9833fd8287ee046e3fde147040b2649f11847d6 (patch) | |
tree | 0cf3986812fd5da5ac8d575e64b2e80ebf6fdc9a /controller-server | |
parent | 81fad70d16a8494ce0464af6ee4ba9c0e12f6a6e (diff) |
Update modelinfo from OpsDbInfoUpdater
Diffstat (limited to 'controller-server')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java | 2 | ||||
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OpsDbInfoUpdater.java (renamed from controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostSwitchUpdater.java) | 15 | ||||
-rw-r--r-- | controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java | 3 | ||||
-rw-r--r-- | controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OpsDbInfoUpdaterTest.java (renamed from controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostSwitchUpdaterTest.java) | 24 | ||||
-rw-r--r-- | controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json | 6 |
5 files changed, 31 insertions, 19 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java index 19199c5a281..2b312d888da 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ControllerMaintenance.java @@ -61,7 +61,7 @@ public class ControllerMaintenance extends AbstractComponent { maintainers.add(new SystemRoutingPolicyMaintainer(controller, intervals.systemRoutingPolicyMaintainer)); maintainers.add(new ApplicationMetaDataGarbageCollector(controller, intervals.applicationMetaDataGarbageCollector)); maintainers.add(new ContainerImageExpirer(controller, intervals.containerImageExpirer)); - maintainers.add(new HostSwitchUpdater(controller, intervals.hostSwitchUpdater)); + maintainers.add(new OpsDbInfoUpdater(controller, intervals.hostSwitchUpdater)); maintainers.add(new ReindexingTriggerer(controller, intervals.reindexingTriggerer)); maintainers.add(new EndpointCertificateMaintainer(controller, intervals.endpointCertificateMaintainer)); maintainers.add(new TrafficShareUpdater(controller, intervals.trafficFractionUpdater)); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostSwitchUpdater.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OpsDbInfoUpdater.java index 87326bdac42..08f49c868c9 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostSwitchUpdater.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OpsDbInfoUpdater.java @@ -19,18 +19,18 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; /** - * Ensures that the switch information for all hosts is up to date. + * Ensures that the OpsDB information for all hosts is up to date. * - * @author mpolden + * @author mpolden, bjormel */ -public class HostSwitchUpdater extends ControllerMaintainer { +public class OpsDbInfoUpdater extends ControllerMaintainer { - private static final Logger LOG = Logger.getLogger(HostSwitchUpdater.class.getName()); + private static final Logger LOG = Logger.getLogger(OpsDbInfoUpdater.class.getName()); private static final Pattern HOST_PATTERN = Pattern.compile("^(proxy|cfg|controller)host(.+)$"); private final NodeRepository nodeRepository; - public HostSwitchUpdater(Controller controller, Duration interval) { + public OpsDbInfoUpdater(Controller controller, Duration interval) { super(controller, interval, null, EnumSet.of(SystemName.cd, SystemName.main)); this.nodeRepository = controller.serviceRegistry().configServer().nodeRepository(); } @@ -50,6 +50,7 @@ public class HostSwitchUpdater extends ControllerMaintainer { NodeRepositoryNode updatedNode = new NodeRepositoryNode(); updatedNode.setSwitchHostname(nodeEntity.switchHostname().get()); + updatedNode.setModelName(nodeEntity.model().get()); nodeRepository.patchNode(zone, node.hostname().value(), updatedNode); nodesUpdated++; } @@ -73,8 +74,8 @@ public class HostSwitchUpdater extends ControllerMaintainer { private static boolean shouldUpdate(Node node, NodeEntity nodeEntity) { if (nodeEntity == null) return false; - if (nodeEntity.switchHostname().isEmpty()) return false; - return !node.switchHostname().equals(nodeEntity.switchHostname()); + if (nodeEntity.switchHostname().isEmpty() || nodeEntity.model().isEmpty()) return false; + return !node.switchHostname().equals(nodeEntity.switchHostname()) || !node.modelName().equals(nodeEntity.model()); } } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java index bcede747405..bb1ff5c0189 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java @@ -277,8 +277,9 @@ public class NodeRepositoryMock implements NodeRepository { List<Node> existing = list(zoneId, List.of(HostName.from(hostName))); if (existing.size() != 1) throw new IllegalArgumentException("Node " + hostName + " not found in " + zoneId); - // Note: Only supports switchHostname + // Note: Only supports switchHostname and modelName Node newNode = new Node.Builder(existing.get(0)).switchHostname(node.getSwitchHostname()) + .modelName(node.getModelName()) .build(); putNodes(zoneId, newNode); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostSwitchUpdaterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OpsDbInfoUpdaterTest.java index 50c96b19d30..68aa3b0a8e6 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/HostSwitchUpdaterTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OpsDbInfoUpdaterTest.java @@ -18,9 +18,9 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** - * @author mpolden + * @author mpolden, bjormel */ -public class HostSwitchUpdaterTest { +public class OpsDbInfoUpdaterTest { @Test public void maintain() { @@ -29,7 +29,7 @@ public class HostSwitchUpdaterTest { addNodeEntities(tester); // First iteration patches all hosts - HostSwitchUpdater maintainer = new HostSwitchUpdater(tester.controller(), Duration.ofDays(1)); + OpsDbInfoUpdater maintainer = new OpsDbInfoUpdater(tester.controller(), Duration.ofDays(1)); maintainer.maintain(); List<Node> nodes = allNodes(tester); assertFalse(nodes.isEmpty()); @@ -48,7 +48,7 @@ public class HostSwitchUpdaterTest { // One host is moved to a different switch Node host = allNodes(tester).stream().filter(node -> node.type().isHost()).findFirst().get(); String newSwitch = "tor2-" + host.hostname().value(); - NodeEntity nodeEntity = new NodeEntity(host.hostname().value(), "", "", newSwitch); + NodeEntity nodeEntity = new NodeEntity(host.hostname().value(), "Lenovo RD350G", "", newSwitch); tester.serviceRegistry().entityService().addNodeEntity(nodeEntity); // Host is updated @@ -56,8 +56,18 @@ public class HostSwitchUpdaterTest { maintainer.maintain(); assertEquals(newSwitch, getNode(host.hostname(), tester).switchHostname().get()); + // Host has updated model + String newModel = "quanta computer Quanta q801"; + nodeEntity = new NodeEntity(host.hostname().value(), newModel, "", newSwitch); + tester.serviceRegistry().entityService().addNodeEntity(nodeEntity); + + // Host is updated + tester.serviceRegistry().configServer().nodeRepository().allowPatching(true); + maintainer.maintain(); + assertEquals(newModel, getNode(host.hostname(), tester).modelName().get()); + // Host keeps old switch hostname if removed from the node entity - nodeEntity = new NodeEntity(host.hostname().value(), "", "", ""); + nodeEntity = new NodeEntity(host.hostname().value(), "Lenovo RD350G", "", ""); tester.serviceRegistry().entityService().addNodeEntity(nodeEntity); maintainer.maintain(); assertEquals(newSwitch, getNode(host.hostname(), tester).switchHostname().get()); @@ -73,7 +83,7 @@ public class HostSwitchUpdaterTest { .build(); tester.serviceRegistry().configServer().nodeRepository().putNodes(zone, List.of(configNode, configHost)); String switchHostname = switchHostname(configHost); - NodeEntity configNodeEntity = new NodeEntity("cfg3" + hostnameSuffix, "", "", switchHostname); + NodeEntity configNodeEntity = new NodeEntity("cfg3" + hostnameSuffix, "Lenovo RD350G", "", switchHostname); tester.serviceRegistry().entityService().addNodeEntity(configNodeEntity); maintainer.maintain(); assertEquals(switchHostname, getNode(configHost.hostname(), tester).switchHostname().get()); @@ -102,7 +112,7 @@ public class HostSwitchUpdaterTest { private static void addNodeEntities(ControllerTester tester) { for (var node : allNodes(tester)) { if (!node.type().isHost()) continue; - NodeEntity nodeEntity = new NodeEntity(node.hostname().value(), "", "", switchHostname(node)); + NodeEntity nodeEntity = new NodeEntity(node.hostname().value(), "Lenovo RD350G", "", switchHostname(node)); tester.serviceRegistry().entityService().addNodeEntity(nodeEntity); } } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json index 17c93c070fb..20df7818346 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/maintenance.json @@ -43,9 +43,6 @@ "name": "EndpointCertificateMaintainer" }, { - "name": "HostSwitchUpdater" - }, - { "name": "JobRunner" }, { @@ -55,6 +52,9 @@ "name": "NameServiceDispatcher" }, { + "name": "OpsDbInfoUpdater" + }, + { "name": "OsUpgradeScheduler" }, { |