summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorBjorn Meland <bjormel@verizonmedia.com>2021-04-15 14:07:01 +0200
committerBjorn Meland <bjormel@verizonmedia.com>2021-04-15 14:07:01 +0200
commitd9833fd8287ee046e3fde147040b2649f11847d6 (patch)
tree0cf3986812fd5da5ac8d575e64b2e80ebf6fdc9a /controller-server
parent81fad70d16a8494ce0464af6ee4ba9c0e12f6a6e (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.java2
-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.java3
-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.json6
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"
},
{