summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2020-01-23 21:29:12 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2020-01-23 21:29:12 +0100
commitfd89173ecc6ea1a196a86ee4c43852bcda31fe6a (patch)
tree351280383a5e38f8f6c8fae90285a8926b4a52eb /node-admin
parent51d4b6fcc2dd00909365ebe9e9c797d341a12d33 (diff)
Support patching reservedTo
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeAttributes.java10
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java4
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java4
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 {
'}';
}
}
+
}