diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2019-11-25 15:56:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-25 15:56:41 +0100 |
commit | fbced1d4f2023735ae2036d6bda06d99b6109dee (patch) | |
tree | 12e6518c0e925db56e38baafec2c8218103dec10 /node-admin | |
parent | 3f1c5a2c64cd24fd85f5af58b9a7bdd89dca80c5 (diff) | |
parent | a2de561b37bfe2cdcd336f1d3f65277a2f340121 (diff) |
Merge pull request #11406 from vespa-engine/freva/add-remote-storage
Use resources in node response
Diffstat (limited to 'node-admin')
2 files changed, 83 insertions, 39 deletions
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 deb7f5f9549..7ea39aaa709 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,28 +173,54 @@ public class RealNodeRepository implements NodeRepository { Optional.ofNullable(node.currentFirmwareCheck).map(Instant::ofEpochMilli), Optional.ofNullable(node.modelName), new NodeResources( - node.minCpuCores, - node.minMainMemoryAvailableGb, - node.minDiskAvailableGb, - node.bandwidthGbps, - toDiskSpeed(node.fastDisk), - toStorageType(node.remoteStorage)), + node.resources.vcpu, + node.resources.memoryGb, + node.resources.diskGb, + node.resources.bandwidthGbps, + diskSpeedFromString(node.resources.diskSpeed), + storageTypeFromString(node.resources.storageType)), node.ipAddresses, node.additionalIpAddresses, reports, Optional.ofNullable(node.parentHostname)); } - private static NodeResources.DiskSpeed toDiskSpeed(Boolean fastDisk) { - if (fastDisk == null) return NodeResources.DiskSpeed.any; - if (fastDisk) return NodeResources.DiskSpeed.fast; - else return NodeResources.DiskSpeed.slow; + private static NodeResources.DiskSpeed diskSpeedFromString(String diskSpeed) { + if (diskSpeed == null) return NodeResources.DiskSpeed.getDefault(); + switch (diskSpeed) { + case "fast": return NodeResources.DiskSpeed.fast; + case "slow": return NodeResources.DiskSpeed.slow; + case "any": return NodeResources.DiskSpeed.any; + default: throw new IllegalArgumentException("Unknown disk speed '" + diskSpeed + "'"); + } } - private static NodeResources.StorageType toStorageType(Boolean remoteStorage) { - if (remoteStorage == null) return NodeResources.StorageType.any; - if (remoteStorage) return NodeResources.StorageType.remote; - else return NodeResources.StorageType.local; + private static NodeResources.StorageType storageTypeFromString(String storageType) { + if (storageType == null) return NodeResources.StorageType.getDefault(); + switch (storageType) { + case "remote": return NodeResources.StorageType.remote; + case "local": return NodeResources.StorageType.local; + case "any": return NodeResources.StorageType.any; + default: throw new IllegalArgumentException("Unknown storage type '" + storageType + "'"); + } + } + + private static String toString(NodeResources.DiskSpeed diskSpeed) { + switch (diskSpeed) { + case fast : return "fast"; + case slow : return "slow"; + case any : return "any"; + default: throw new IllegalArgumentException("Unknown disk speed '" + diskSpeed.name() + "'"); + } + } + + private static String toString(NodeResources.StorageType storageType) { + switch (storageType) { + case remote : return "remote"; + case local : return "local"; + case any : return "any"; + default: throw new IllegalArgumentException("Unknown storage type '" + storageType.name() + "'"); + } } private static NodeRepositoryNode nodeRepositoryNodeFromAddNode(AddNode addNode) { @@ -203,14 +229,18 @@ public class RealNodeRepository implements NodeRepository { node.hostname = addNode.hostname; node.parentHostname = addNode.parentHostname.orElse(null); addNode.nodeFlavor.ifPresent(f -> node.flavor = f); - addNode.flavorOverrides.flatMap(FlavorOverrides::diskGb).ifPresent(d -> node.minDiskAvailableGb = d); + addNode.flavorOverrides.flatMap(FlavorOverrides::diskGb).ifPresent(d -> { + node.resources = new NodeRepositoryNode.NodeResources(); + node.resources.diskGb = d; + }); addNode.nodeResources.ifPresent(resources -> { - node.minCpuCores = resources.vcpu(); - node.minMainMemoryAvailableGb = resources.memoryGb(); - node.minDiskAvailableGb = resources.diskGb(); - node.bandwidthGbps = resources.bandwidthGbps(); - node.fastDisk = resources.diskSpeed() == NodeResources.DiskSpeed.fast; - node.remoteStorage = resources.storageType() == NodeResources.StorageType.remote; + node.resources = new NodeRepositoryNode.NodeResources(); + node.resources.vcpu = resources.vcpu(); + node.resources.memoryGb = resources.memoryGb(); + node.resources.diskGb = resources.diskGb(); + node.resources.bandwidthGbps = resources.bandwidthGbps(); + node.resources.diskSpeed = toString(resources.diskSpeed()); + node.resources.storageType = toString(resources.storageType()); }); node.type = addNode.nodeType.name(); node.ipAddresses = addNode.ipAddresses; 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 bf124f4ad86..1cf2c4decf5 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("resources") + public NodeResources resources; @JsonProperty("membership") public Membership membership; @JsonProperty("owner") @@ -56,12 +58,6 @@ public class NodeRepositoryNode { public String modelName; @JsonProperty("failCount") public Integer failCount; - @JsonProperty("fastDisk") - public Boolean fastDisk; - @JsonProperty("remoteStorage") - public Boolean remoteStorage; - @JsonProperty("bandwidthGbps") - public Double bandwidthGbps; @JsonProperty("environment") public String environment; @JsonProperty("type") @@ -76,12 +72,6 @@ public class NodeRepositoryNode { public Boolean wantToRetire; @JsonProperty("wantToDeprovision") public Boolean wantToDeprovision; - @JsonProperty("minDiskAvailableGb") - public Double minDiskAvailableGb; - @JsonProperty("minMainMemoryAvailableGb") - public Double minMainMemoryAvailableGb; - @JsonProperty("minCpuCores") - public Double minCpuCores; @JsonProperty("allowedToBeDown") public Boolean allowedToBeDown; @@ -98,6 +88,7 @@ public class NodeRepositoryNode { ", openStackId='" + openStackId + '\'' + ", modelName='" + modelName + '\'' + ", flavor='" + flavor + '\'' + + ", resources=" + resources + ", membership=" + membership + ", owner=" + owner + ", restartGeneration=" + restartGeneration + @@ -111,9 +102,6 @@ public class NodeRepositoryNode { ", currentFirmwareCheck=" + currentFirmwareCheck + ", wantedFirmwareCheck=" + wantedFirmwareCheck + ", failCount=" + failCount + - ", fastDisk=" + fastDisk + - ", remoteStorage=" + remoteStorage + - ", bandwidthGbps=" + bandwidthGbps + ", environment='" + environment + '\'' + ", type='" + type + '\'' + ", wantedDockerImage='" + wantedDockerImage + '\'' + @@ -121,9 +109,6 @@ public class NodeRepositoryNode { ", parentHostname='" + parentHostname + '\'' + ", wantToRetire=" + wantToRetire + ", wantToDeprovision=" + wantToDeprovision + - ", minDiskAvailableGb=" + minDiskAvailableGb + - ", minMainMemoryAvailableGb=" + minMainMemoryAvailableGb + - ", minCpuCores=" + minCpuCores + ", allowedToBeDown=" + allowedToBeDown + ", reports=" + reports + '}'; @@ -171,4 +156,33 @@ public class NodeRepositoryNode { " }"; } } + + @JsonIgnoreProperties(ignoreUnknown = true) + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class NodeResources { + @JsonProperty + public Double vcpu; + @JsonProperty + public Double memoryGb; + @JsonProperty + public Double diskGb; + @JsonProperty + public Double bandwidthGbps; + @JsonProperty + public String diskSpeed; + @JsonProperty + public String storageType; + + @Override + public String toString() { + return "NodeResources{" + + "vcpu=" + vcpu + + ", memoryGb=" + memoryGb + + ", diskGb=" + diskGb + + ", bandwidthGbps=" + bandwidthGbps + + ", diskSpeed='" + diskSpeed + '\'' + + ", storageType='" + storageType + '\'' + + '}'; + } + } } |