summaryrefslogtreecommitdiffstats
path: root/controller-server/src/main
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-07-15 09:52:33 +0200
committerMartin Polden <mpolden@mpolden.no>2021-07-16 09:02:31 +0200
commit6a558ebb82bb58b42990ff7dad8af35c70812424 (patch)
tree95d0bf6ea0b319333b388b5d8ce32072f6cf3ab6 /controller-server/src/main
parent073c5be0df2970bd4e6d926a56d14657965992d3 (diff)
Stop using NodeRepositoryNode in patch operations
Diffstat (limited to 'controller-server/src/main')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporter.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java42
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/VCMRMaintainer.java14
3 files changed, 24 insertions, 34 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporter.java
index 3c5495a6bfe..a8089555ffc 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporter.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/CloudEventReporter.java
@@ -59,7 +59,7 @@ public class CloudEventReporter extends ControllerMaintainer {
if (!affects(node, event)) continue;
log.info("Retiring and deprovisioning " + node.hostname().value() + " in " + zone.getId() +
": Affected by maintenance event " + event.instanceEventId);
- nodeRepository.retireAndDeprovision(zone.getId(), node.hostname().value());
+ nodeRepository.retire(zone.getId(), node.hostname().value(), true, true);
}
}
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java
index 10e6f9eb039..5622fcdac4e 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/HostInfoUpdater.java
@@ -7,7 +7,6 @@ import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
import com.yahoo.vespa.hosted.controller.api.integration.entity.EntityService;
import com.yahoo.vespa.hosted.controller.api.integration.entity.NodeEntity;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
import java.time.Duration;
import java.util.EnumSet;
@@ -48,13 +47,24 @@ public class HostInfoUpdater extends ControllerMaintainer {
for (var node : nodeRepository.list(zone, false)) {
if (!node.type().isHost()) continue;
NodeEntity nodeEntity = nodeEntities.get(registeredHostnameOf(node));
- if (!shouldUpdateSwitch(node, nodeEntity) && !shouldUpdateModel(node, nodeEntity)) continue;
+ if (nodeEntity == null) continue;
- NodeRepositoryNode updatedNode = new NodeRepositoryNode();
- nodeEntity.switchHostname().ifPresent(updatedNode::setSwitchHostname);
- buildModelName(nodeEntity).ifPresent(updatedNode::setModelName);
- nodeRepository.patchNode(zone, node.hostname().value(), updatedNode);
- hostsUpdated++;
+ boolean updatedHost = false;
+ Optional<String> modelName = modelNameOf(nodeEntity);
+ if (modelName.isPresent() && !modelName.equals(node.modelName())) {
+ nodeRepository.updateModel(zone, node.hostname().value(), modelName.get());
+ updatedHost = true;
+ }
+
+ Optional<String> switchHostname = nodeEntity.switchHostname();
+ if (switchHostname.isPresent() && !switchHostname.equals(node.switchHostname())) {
+ nodeRepository.updateSwitchHostname(zone, node.hostname().value(), switchHostname.get());
+ updatedHost = true;
+ }
+
+ if (updatedHost) {
+ hostsUpdated++;
+ }
}
}
} finally {
@@ -65,9 +75,8 @@ public class HostInfoUpdater extends ControllerMaintainer {
return 1.0;
}
- private static Optional<String> buildModelName(NodeEntity nodeEntity) {
- if(nodeEntity.manufacturer().isEmpty() || nodeEntity.model().isEmpty())
- return Optional.empty();
+ private static Optional<String> modelNameOf(NodeEntity nodeEntity) {
+ if (nodeEntity.manufacturer().isEmpty() || nodeEntity.model().isEmpty()) return Optional.empty();
return Optional.of(nodeEntity.manufacturer().get() + " " + nodeEntity.model().get());
}
@@ -80,17 +89,4 @@ public class HostInfoUpdater extends ControllerMaintainer {
return matcher.replaceFirst("$1$2");
}
- private static boolean shouldUpdateSwitch(Node node, NodeEntity nodeEntity) {
- if (nodeEntity == null) return false;
- if (nodeEntity.switchHostname().isEmpty()) return false;
- return !node.switchHostname().equals(nodeEntity.switchHostname());
- }
-
- private static boolean shouldUpdateModel(Node node, NodeEntity nodeEntity) {
- if (nodeEntity == null) return false;
- if (nodeEntity.model().isEmpty()) return false;
- if (nodeEntity.manufacturer().isEmpty()) return false;
- return !node.modelName().equals(buildModelName(nodeEntity));
- }
-
}
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 19617a1f293..96ba87575e4 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
@@ -1,7 +1,6 @@
// 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.maintenance;
-import com.fasterxml.jackson.databind.JsonNode;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.SystemName;
@@ -10,8 +9,6 @@ import com.yahoo.text.Text;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeRepository;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeRepositoryNode;
-import com.yahoo.vespa.hosted.controller.api.integration.noderepository.NodeState;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequest;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequest.Impact;
import com.yahoo.vespa.hosted.controller.api.integration.vcmr.ChangeRequestClient;
@@ -201,7 +198,7 @@ public class VCMRMaintainer extends ControllerMaintainer {
if (hostAction.getState() == State.RETIRED &&
node.state() == Node.State.parked) {
logger.info("Setting " + node.hostname() + " to dirty");
- nodeRepository.setState(zoneId, NodeState.dirty, node.hostname().value());
+ nodeRepository.setState(zoneId, Node.State.dirty, node.hostname().value());
}
if (hostAction.getState() == State.RETIRING && node.wantToRetire()) {
try {
@@ -275,9 +272,7 @@ public class VCMRMaintainer extends ControllerMaintainer {
}
private void setWantToRetire(ZoneId zoneId, Node node, boolean wantToRetire) {
- var newNode = new NodeRepositoryNode();
- newNode.setWantToRetire(wantToRetire);
- nodeRepository.patchNode(zoneId, node.hostname().value(), newNode);
+ nodeRepository.retire(zoneId, node.hostname().value(), wantToRetire, false);
}
private void approveChangeRequest(VespaChangeRequest changeRequest) {
@@ -311,8 +306,7 @@ public class VCMRMaintainer extends ControllerMaintainer {
private void updateReport(ZoneId zoneId, Node node, VCMRReport report) {
logger.info(Text.format("Updating report for %s: %s", node.hostname(), report));
- var newNode = new NodeRepositoryNode();
- newNode.setReports(report.toNodeReports());
- nodeRepository.patchNode(zoneId, node.hostname().value(), newNode);
+ nodeRepository.updateReports(zoneId, node.hostname().value(), report.toNodeReports());
}
+
}