aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2021-09-08 09:29:19 +0200
committerValerij Fredriksen <valerijf@verizonmedia.com>2021-09-08 09:29:19 +0200
commitec14327675541b9acd57c6af1cfc0bcbc92c5caa (patch)
treeafab663a9aa42d2ceb5a674ef4baa8b8c70e68fe /node-admin
parent9cfe8bd748d1bc813e701cc94ca20da87f9de198 (diff)
Add real resources to NodeSpec
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java28
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java19
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java3
3 files changed, 40 insertions, 10 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
index fa1f8528b31..37932836e06 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java
@@ -55,6 +55,7 @@ public class NodeSpec {
private final Optional<NodeMembership> membership;
private final NodeResources resources;
+ private final NodeResources realResources;
private final Set<String> ipAddresses;
private final Set<String> additionalIpAddresses;
@@ -88,6 +89,7 @@ public class NodeSpec {
Optional<Instant> currentFirmwareCheck,
Optional<String> modelName,
NodeResources resources,
+ NodeResources realResources,
Set<String> ipAddresses,
Set<String> additionalIpAddresses,
NodeReports reports,
@@ -125,6 +127,7 @@ public class NodeSpec {
this.wantedFirmwareCheck = Objects.requireNonNull(wantedFirmwareCheck);
this.currentFirmwareCheck = Objects.requireNonNull(currentFirmwareCheck);
this.resources = Objects.requireNonNull(resources);
+ this.realResources = Objects.requireNonNull(realResources);
this.ipAddresses = Objects.requireNonNull(ipAddresses);
this.additionalIpAddresses = Objects.requireNonNull(additionalIpAddresses);
this.reports = Objects.requireNonNull(reports);
@@ -222,6 +225,10 @@ public class NodeSpec {
return resources;
}
+ public NodeResources realResources() {
+ return realResources;
+ }
+
public double vcpu() {
return resources.vcpu();
}
@@ -297,6 +304,7 @@ public class NodeSpec {
Objects.equals(wantedFirmwareCheck, that.wantedFirmwareCheck) &&
Objects.equals(currentFirmwareCheck, that.currentFirmwareCheck) &&
Objects.equals(resources, that.resources) &&
+ Objects.equals(realResources, that.realResources) &&
Objects.equals(ipAddresses, that.ipAddresses) &&
Objects.equals(additionalIpAddresses, that.additionalIpAddresses) &&
Objects.equals(reports, that.reports) &&
@@ -330,6 +338,7 @@ public class NodeSpec {
wantedFirmwareCheck,
currentFirmwareCheck,
resources,
+ realResources,
ipAddresses,
additionalIpAddresses,
reports,
@@ -363,6 +372,7 @@ public class NodeSpec {
+ " wantedFirmwareCheck=" + wantedFirmwareCheck
+ " currentFirmwareCheck=" + currentFirmwareCheck
+ " resources=" + resources
+ + " realResources=" + realResources
+ " ipAddresses=" + ipAddresses
+ " additionalIpAddresses=" + additionalIpAddresses
+ " reports=" + reports
@@ -394,7 +404,8 @@ public class NodeSpec {
private Optional<Instant> wantedFirmwareCheck = Optional.empty();
private Optional<Instant> currentFirmwareCheck = Optional.empty();
private Optional<String> modelName = Optional.empty();
- private NodeResources resources = new NodeResources(0, 0, 0, 0, slow);
+ private NodeResources resources = NodeResources.zero();
+ private NodeResources realResources = NodeResources.zero();
private Set<String> ipAddresses = Set.of();
private Set<String> additionalIpAddresses = Set.of();
private NodeReports reports = new NodeReports();
@@ -410,6 +421,7 @@ public class NodeSpec {
type(node.type);
flavor(node.flavor);
resources(node.resources);
+ realResources(node.realResources);
ipAddresses(node.ipAddresses);
additionalIpAddresses(node.additionalIpAddresses);
wantedRebootGeneration(node.wantedRebootGeneration);
@@ -538,6 +550,11 @@ public class NodeSpec {
return this;
}
+ public Builder realResources(NodeResources realResources) {
+ this.realResources = realResources;
+ return this;
+ }
+
public Builder vcpu(double vcpu) {
return resources(resources.withVcpu(vcpu));
}
@@ -681,6 +698,10 @@ public class NodeSpec {
return resources;
}
+ public NodeResources realResources() {
+ return realResources;
+ }
+
public Set<String> ipAddresses() {
return ipAddresses;
}
@@ -708,7 +729,7 @@ public class NodeSpec {
wantedRestartGeneration, currentRestartGeneration,
wantedRebootGeneration, currentRebootGeneration,
wantedFirmwareCheck, currentFirmwareCheck, modelName,
- resources, ipAddresses, additionalIpAddresses,
+ resources, realResources, ipAddresses, additionalIpAddresses,
reports, parentHostname, archiveUri, exclusiveTo);
}
@@ -727,7 +748,8 @@ public class NodeSpec {
.state(state)
.type(NodeType.tenant)
.flavor("d-2-8-50")
- .resources(new NodeResources(2, 8, 50, 10));
+ .resources(new NodeResources(2, 8, 50, 10))
+ .realResources(new NodeResources(2, 8, 50, 10));
// Set the required allocated fields
if (EnumSet.of(NodeState.active, NodeState.inactive, NodeState.reserved).contains(state)) {
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 8e069ab923b..50c39d5407c 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
@@ -173,13 +173,8 @@ public class RealNodeRepository implements NodeRepository {
Optional.ofNullable(node.wantedFirmwareCheck).map(Instant::ofEpochMilli),
Optional.ofNullable(node.currentFirmwareCheck).map(Instant::ofEpochMilli),
Optional.ofNullable(node.modelName),
- new NodeResources(
- node.resources.vcpu,
- node.resources.memoryGb,
- node.resources.diskGb,
- node.resources.bandwidthGbps,
- diskSpeedFromString(node.resources.diskSpeed),
- storageTypeFromString(node.resources.storageType)),
+ nodeResources(node.resources),
+ nodeResources(node.realResources),
node.ipAddresses,
node.additionalIpAddresses,
reports,
@@ -188,6 +183,16 @@ public class RealNodeRepository implements NodeRepository {
Optional.ofNullable(node.exclusiveTo).map(ApplicationId::fromSerializedForm));
}
+ private static NodeResources nodeResources(NodeRepositoryNode.NodeResources nodeResources) {
+ return new NodeResources(
+ nodeResources.vcpu,
+ nodeResources.memoryGb,
+ nodeResources.diskGb,
+ nodeResources.bandwidthGbps,
+ diskSpeedFromString(nodeResources.diskSpeed),
+ storageTypeFromString(nodeResources.storageType));
+ }
+
private static NodeResources.DiskSpeed diskSpeedFromString(String diskSpeed) {
if (diskSpeed == null) return NodeResources.DiskSpeed.getDefault();
switch (diskSpeed) {
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 988bd2a4bf3..86caab9bf51 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
@@ -30,6 +30,8 @@ public class NodeRepositoryNode {
public String flavor;
@JsonProperty("resources")
public NodeResources resources;
+ @JsonProperty("realResources")
+ public NodeResources realResources;
@JsonProperty("membership")
public Membership membership;
@JsonProperty("owner")
@@ -95,6 +97,7 @@ public class NodeRepositoryNode {
", modelName='" + modelName + '\'' +
", flavor='" + flavor + '\'' +
", resources=" + resources +
+ ", realResources=" + realResources +
", membership=" + membership +
", owner=" + owner +
", restartGeneration=" + restartGeneration +