summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2019-11-25 15:56:41 +0100
committerGitHub <noreply@github.com>2019-11-25 15:56:41 +0100
commitfbced1d4f2023735ae2036d6bda06d99b6109dee (patch)
tree12e6518c0e925db56e38baafec2c8218103dec10 /node-admin
parent3f1c5a2c64cd24fd85f5af58b9a7bdd89dca80c5 (diff)
parenta2de561b37bfe2cdcd336f1d3f65277a2f340121 (diff)
Merge pull request #11406 from vespa-engine/freva/add-remote-storage
Use resources in node response
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java72
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java50
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 + '\'' +
+ '}';
+ }
+ }
}