diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2020-01-23 21:29:12 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2020-01-23 21:29:12 +0100 |
commit | fd89173ecc6ea1a196a86ee4c43852bcda31fe6a (patch) | |
tree | 351280383a5e38f8f6c8fae90285a8926b4a52eb /node-admin | |
parent | 51d4b6fcc2dd00909365ebe9e9c797d341a12d33 (diff) |
Support patching reservedTo
Diffstat (limited to 'node-admin')
3 files changed, 17 insertions, 1 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java index 5317aa74737..a6c876117b9 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; import com.fasterxml.jackson.databind.JsonNode; import com.yahoo.component.Version; import com.yahoo.config.provision.DockerImage; +import com.yahoo.config.provision.TenantName; import java.time.Instant; import java.util.Map; @@ -29,6 +30,7 @@ public class NodeAttributes { private Optional<Version> currentOsVersion = Optional.empty(); private Optional<Instant> currentFirmwareCheck = Optional.empty(); private Optional<Boolean> wantToDeprovision = Optional.empty(); + private Optional<TenantName> reservedTo = Optional.empty(); /** The list of reports to patch. A null value is used to remove the report. */ private Map<String, JsonNode> reports = new TreeMap<>(); @@ -121,10 +123,14 @@ public class NodeAttributes { return reports; } + public Optional<TenantName> getReservedTo() { + return reservedTo; + } + @Override public int hashCode() { return Objects.hash(restartGeneration, rebootGeneration, dockerImage, vespaVersion, currentOsVersion, - currentFirmwareCheck, wantToDeprovision, reports); + currentFirmwareCheck, wantToDeprovision, reports, reservedTo); } public boolean isEmpty() { @@ -145,6 +151,7 @@ public class NodeAttributes { && Objects.equals(currentOsVersion, other.currentOsVersion) && Objects.equals(currentFirmwareCheck, other.currentFirmwareCheck) && Objects.equals(reports, other.reports) + && Objects.equals(reservedTo, other.reservedTo) && Objects.equals(wantToDeprovision, other.wantToDeprovision); } @@ -158,6 +165,7 @@ public class NodeAttributes { currentOsVersion.map(ver -> "currentOsVersion=" + ver.toFullString()), currentFirmwareCheck.map(at -> "currentFirmwareCheck=" + at), Optional.ofNullable(reports.isEmpty() ? null : "reports=" + reports), + Optional.ofNullable(reservedTo.isEmpty() ? null : "reservedTo=" + reservedTo), wantToDeprovision.map(depr -> "wantToDeprovision=" + depr)) .filter(Optional::isPresent) .map(Optional::get) diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java index 38459979e7c..afe092fa325 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java @@ -8,6 +8,7 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; +import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.host.FlavorOverrides; import com.yahoo.vespa.hosted.node.admin.configserver.ConfigServerApi; import com.yahoo.vespa.hosted.node.admin.configserver.HttpException; @@ -243,6 +244,7 @@ public class RealNodeRepository implements NodeRepository { node.resources.diskSpeed = toString(resources.diskSpeed()); node.resources.storageType = toString(resources.storageType()); }); + node.reservedTo = addNode.reservedTo.map(TenantName::value).orElse(null); node.type = addNode.nodeType.name(); node.ipAddresses = addNode.ipAddresses; node.additionalIpAddresses = addNode.additionalIpAddresses; @@ -258,10 +260,12 @@ public class RealNodeRepository implements NodeRepository { node.currentOsVersion = nodeAttributes.getCurrentOsVersion().map(Version::toFullString).orElse(null); node.currentFirmwareCheck = nodeAttributes.getCurrentFirmwareCheck().map(Instant::toEpochMilli).orElse(null); node.wantToDeprovision = nodeAttributes.getWantToDeprovision().orElse(null); + node.reservedTo = nodeAttributes.getReservedTo().map(TenantName::value).orElse(null); Map<String, JsonNode> reports = nodeAttributes.getReports(); node.reports = reports == null || reports.isEmpty() ? null : new TreeMap<>(reports); return node; } + } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java index 3fdb8b420ce..4c1f74290e9 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java @@ -62,6 +62,8 @@ public class NodeRepositoryNode { public Integer failCount; @JsonProperty("environment") public String environment; + @JsonProperty("reservedTo") + public String reservedTo; @JsonProperty("type") public String type; @JsonProperty("wantedDockerImage") @@ -106,6 +108,7 @@ public class NodeRepositoryNode { ", wantedFirmwareCheck=" + wantedFirmwareCheck + ", failCount=" + failCount + ", environment='" + environment + '\'' + + ", reservedTo='" + reservedTo + "'" + ", type='" + type + '\'' + ", wantedDockerImage='" + wantedDockerImage + '\'' + ", currentDockerImage='" + currentDockerImage + '\'' + @@ -188,4 +191,5 @@ public class NodeRepositoryNode { '}'; } } + } |