From b5dfd903915595b6144c7666854c09f86b11a65c Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Thu, 5 Dec 2019 16:15:56 +0100 Subject: Add cpuCores to node-admin NodeSpec --- .../configserver/noderepository/NodeSpec.java | 22 +++++++++++++++++++--- .../noderepository/RealNodeRepository.java | 1 + .../bindings/NodeRepositoryNode.java | 3 +++ 3 files changed, 23 insertions(+), 3 deletions(-) (limited to 'node-admin') 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 a9bb42e4dde..d51717d2c5c 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 @@ -25,6 +25,7 @@ public class NodeSpec { private final NodeState state; private final NodeType type; private final String flavor; + private final Optional cpuCores; private final Optional wantedDockerImage; private final Optional currentDockerImage; @@ -66,6 +67,7 @@ public class NodeSpec { NodeState state, NodeType type, String flavor, + Optional cpuCores, Optional wantedVespaVersion, Optional currentVespaVersion, Optional wantedOsVersion, @@ -99,7 +101,8 @@ public class NodeSpec { this.state = Objects.requireNonNull(state); this.type = Objects.requireNonNull(type); this.flavor = Objects.requireNonNull(flavor); - this.modelName = modelName; + this.cpuCores = Objects.requireNonNull(cpuCores); + this.modelName = Objects.requireNonNull(modelName); this.wantedVespaVersion = Objects.requireNonNull(wantedVespaVersion); this.currentVespaVersion = Objects.requireNonNull(currentVespaVersion); this.wantedOsVersion = Objects.requireNonNull(wantedOsVersion); @@ -137,6 +140,10 @@ public class NodeSpec { return flavor; } + public Optional cpuCores() { + return cpuCores; + } + public Optional wantedDockerImage() { return wantedDockerImage; } @@ -256,6 +263,7 @@ public class NodeSpec { Objects.equals(state, that.state) && Objects.equals(type, that.type) && Objects.equals(flavor, that.flavor) && + Objects.equals(cpuCores, that.cpuCores) && Objects.equals(wantedVespaVersion, that.wantedVespaVersion) && Objects.equals(currentVespaVersion, that.currentVespaVersion) && Objects.equals(wantedOsVersion, that.wantedOsVersion) && @@ -286,6 +294,7 @@ public class NodeSpec { state, type, flavor, + cpuCores, wantedVespaVersion, currentVespaVersion, wantedOsVersion, @@ -316,6 +325,7 @@ public class NodeSpec { + " state=" + state + " type=" + type + " flavor=" + flavor + + " cpuCores=" + cpuCores + " wantedVespaVersion=" + wantedVespaVersion + " currentVespaVersion=" + currentVespaVersion + " wantedOsVersion=" + wantedOsVersion @@ -343,6 +353,7 @@ public class NodeSpec { private NodeState state; private NodeType type; private String flavor; + private Optional cpuCores = Optional.empty(); private Optional wantedDockerImage = Optional.empty(); private Optional currentDockerImage = Optional.empty(); private Optional wantedVespaVersion = Optional.empty(); @@ -379,7 +390,7 @@ public class NodeSpec { wantedRebootGeneration(node.wantedRebootGeneration); currentRebootGeneration(node.currentRebootGeneration); reports(new NodeReports(node.reports)); - + node.cpuCores.ifPresent(this::cpuCores); node.wantedDockerImage.ifPresent(this::wantedDockerImage); node.currentDockerImage.ifPresent(this::currentDockerImage); node.wantedVespaVersion.ifPresent(this::wantedVespaVersion); @@ -427,6 +438,11 @@ public class NodeSpec { return this; } + public Builder cpuCores(double cpuCores) { + this.cpuCores = Optional.of(cpuCores); + return this; + } + public Builder wantedVespaVersion(Version wantedVespaVersion) { this.wantedVespaVersion = Optional.of(wantedVespaVersion); return this; @@ -656,7 +672,7 @@ public class NodeSpec { } public NodeSpec build() { - return new NodeSpec(hostname, wantedDockerImage, currentDockerImage, state, type, flavor, + return new NodeSpec(hostname, wantedDockerImage, currentDockerImage, state, type, flavor, cpuCores, wantedVespaVersion, currentVespaVersion, wantedOsVersion, currentOsVersion, allowedToBeDown, wantToDeprovision, owner, membership, wantedRestartGeneration, currentRestartGeneration, 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 7ea39aaa709..38459979e7c 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 @@ -157,6 +157,7 @@ public class RealNodeRepository implements NodeRepository { nodeState, nodeType, node.flavor, + Optional.ofNullable(node.cpuCores), Optional.ofNullable(node.wantedVespaVersion).map(Version::fromString), Optional.ofNullable(node.vespaVersion).map(Version::fromString), Optional.ofNullable(node.wantedOsVersion).map(Version::fromString), 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 1cf2c4decf5..3fdb8b420ce 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 @@ -28,6 +28,8 @@ public class NodeRepositoryNode { public String openStackId; @JsonProperty("flavor") public String flavor; + @JsonProperty("cpuCores") + public Double cpuCores; @JsonProperty("resources") public NodeResources resources; @JsonProperty("membership") @@ -88,6 +90,7 @@ public class NodeRepositoryNode { ", openStackId='" + openStackId + '\'' + ", modelName='" + modelName + '\'' + ", flavor='" + flavor + '\'' + + ", cpuCores=" + cpuCores + ", resources=" + resources + ", membership=" + membership + ", owner=" + owner + -- cgit v1.2.3