summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2019-08-28 16:19:41 +0200
committerGitHub <noreply@github.com>2019-08-28 16:19:41 +0200
commit3956de568b255b3f9a408d7664c4295eb9a9961a (patch)
treef6a64d9610bce8e4a34bec207e4676c6242a5ae1
parent5316c3c24c15cac4e8ab62671a23d2b1eea868e5 (diff)
parentfa7f7dfe5abc10ffd42b48108dcd429a86720390 (diff)
Merge pull request #10444 from vespa-engine/freva/extend-nodes-api
Add resources to application nodes API
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java34
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java5
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java25
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java7
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application-nodes.json5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java3
7 files changed, 78 insertions, 6 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java
index d618464fc2a..e6639a33738 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/Node.java
@@ -31,6 +31,11 @@ public class Node {
private final long wantedRestartGeneration;
private final long rebootGeneration;
private final long wantedRebootGeneration;
+ private final double vcpu;
+ private final double memoryGb;
+ private final double diskGb;
+ private final double bandwidthGbps;
+ private final boolean fastDisk;
private final String canonicalFlavor;
private final String clusterId;
private final ClusterType clusterType;
@@ -38,7 +43,7 @@ public class Node {
public Node(HostName hostname, State state, NodeType type, Optional<ApplicationId> owner,
Version currentVersion, Version wantedVersion, Version currentOsVersion, Version wantedOsVersion, ServiceState serviceState,
long restartGeneration, long wantedRestartGeneration, long rebootGeneration, long wantedRebootGeneration,
- String canonicalFlavor, String clusterId, ClusterType clusterType) {
+ double vcpu, double memoryGb, double diskGb, double bandwidthGbps, boolean fastDisk, String canonicalFlavor, String clusterId, ClusterType clusterType) {
this.hostname = hostname;
this.state = state;
this.type = type;
@@ -52,6 +57,11 @@ public class Node {
this.wantedRestartGeneration = wantedRestartGeneration;
this.rebootGeneration = rebootGeneration;
this.wantedRebootGeneration = wantedRebootGeneration;
+ this.vcpu = vcpu;
+ this.memoryGb = memoryGb;
+ this.diskGb = diskGb;
+ this.bandwidthGbps = bandwidthGbps;
+ this.fastDisk = fastDisk;
this.canonicalFlavor = canonicalFlavor;
this.clusterId = clusterId;
this.clusterType = clusterType;
@@ -62,7 +72,7 @@ public class Node {
Version currentVersion, Version wantedVersion) {
this(hostname, state, type, owner, currentVersion, wantedVersion,
Version.emptyVersion, Version.emptyVersion, ServiceState.unorchestrated, 0, 0, 0, 0,
- "d-2-8-50", "cluster", ClusterType.container);
+ 2, 8, 50, 1, true, "d-2-8-50", "cluster", ClusterType.container);
}
public HostName hostname() {
@@ -115,6 +125,26 @@ public class Node {
return wantedRebootGeneration;
}
+ public double vcpu() {
+ return vcpu;
+ }
+
+ public double memoryGb() {
+ return memoryGb;
+ }
+
+ public double diskGb() {
+ return diskGb;
+ }
+
+ public double bandwidthGbps() {
+ return bandwidthGbps;
+ }
+
+ public boolean fastDisk() {
+ return fastDisk;
+ }
+
public String canonicalFlavor() {
return canonicalFlavor;
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
index 916a388692e..fd6b5b48d10 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepository.java
@@ -49,6 +49,11 @@ public interface NodeRepository {
n.getRestartGeneration(),
n.getCurrentRebootGeneration(),
n.getRebootGeneration(),
+ n.getMinCpuCores(),
+ n.getMinMainMemoryAvailableGb(),
+ n.getMinDiskAvailableGb(),
+ n.getBandwidth() / 1000,
+ n.getFastDisk(),
n.getCanonicalFlavor(),
n.getMembership().clusterid,
clusterTypeOf(n.getMembership().clustertype)))
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
index 3392576643f..a04f9a99ec0 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
@@ -391,6 +391,11 @@ public class ApplicationApiHandler extends LoggingRequestHandler {
nodeObject.setString("orchestration", valueOf(node.serviceState()));
nodeObject.setString("version", node.currentVersion().toString());
nodeObject.setString("flavor", node.canonicalFlavor());
+ nodeObject.setDouble("vcpu", node.vcpu());
+ nodeObject.setDouble("memoryGb", node.memoryGb());
+ nodeObject.setDouble("diskGb", node.diskGb());
+ nodeObject.setDouble("bandwidthGbps", node.bandwidthGbps());
+ nodeObject.setBool("fastDisk", node.fastDisk());
nodeObject.setString("clusterId", node.clusterId());
nodeObject.setString("clusterType", valueOf(node.clusterType()));
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java
index 45c2df5cb77..61cb5c4a2ed 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java
@@ -124,6 +124,11 @@ public class NodeRepositoryMock implements NodeRepository {
node.wantedRestartGeneration(),
node.rebootGeneration(),
node.wantedRebootGeneration(),
+ node.vcpu(),
+ node.memoryGb(),
+ node.diskGb(),
+ node.bandwidthGbps(),
+ node.fastDisk(),
node.canonicalFlavor(),
node.clusterId(),
node.clusterType()))
@@ -169,6 +174,11 @@ public class NodeRepositoryMock implements NodeRepository {
node.wantedRestartGeneration() + 1,
node.rebootGeneration(),
node.wantedRebootGeneration(),
+ node.vcpu(),
+ node.memoryGb(),
+ node.diskGb(),
+ node.bandwidthGbps(),
+ node.fastDisk(),
node.canonicalFlavor(),
node.clusterId(),
node.clusterType()));
@@ -188,6 +198,11 @@ public class NodeRepositoryMock implements NodeRepository {
node.wantedRestartGeneration(),
node.rebootGeneration(),
node.wantedRebootGeneration(),
+ node.vcpu(),
+ node.memoryGb(),
+ node.diskGb(),
+ node.bandwidthGbps(),
+ node.fastDisk(),
node.canonicalFlavor(),
node.clusterId(),
node.clusterType()));
@@ -207,6 +222,11 @@ public class NodeRepositoryMock implements NodeRepository {
node.wantedRestartGeneration(),
node.rebootGeneration(),
node.wantedRebootGeneration() + 1,
+ node.vcpu(),
+ node.memoryGb(),
+ node.diskGb(),
+ node.bandwidthGbps(),
+ node.fastDisk(),
node.canonicalFlavor(),
node.clusterId(),
node.clusterType()));
@@ -226,6 +246,11 @@ public class NodeRepositoryMock implements NodeRepository {
node.wantedRestartGeneration(),
node.rebootGeneration() + 1,
node.wantedRebootGeneration(),
+ node.vcpu(),
+ node.memoryGb(),
+ node.diskGb(),
+ node.bandwidthGbps(),
+ node.fastDisk(),
node.canonicalFlavor(),
node.clusterId(),
node.clusterType()));
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java
index 38aa4af4756..4bee9fe2f75 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java
@@ -4,10 +4,10 @@ package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.component.Version;
import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.SystemName;
-import com.yahoo.config.provision.zone.ZoneApi;
-import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
import com.yahoo.config.provision.zone.UpgradePolicy;
+import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.config.provision.zone.ZoneId;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import com.yahoo.vespa.hosted.controller.integration.NodeRepositoryMock;
@@ -164,7 +164,8 @@ public class OsUpgraderTest {
node.hostname(), node.state(), node.type(), node.owner(), node.currentVersion(),
node.wantedVersion(), node.wantedOsVersion(), node.wantedOsVersion(), node.serviceState(),
node.restartGeneration(), node.wantedRestartGeneration(), node.rebootGeneration(),
- node.wantedRebootGeneration(), node.canonicalFlavor(), node.clusterId(), node.clusterType()));
+ node.wantedRebootGeneration(), node.vcpu(), node.memoryGb(), node.diskGb(),
+ node.bandwidthGbps(), node.fastDisk(), node.canonicalFlavor(), node.clusterId(), node.clusterType()));
}
assertCurrent(version, application, zone);
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application-nodes.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application-nodes.json
index e673a610f87..a83c13719d9 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application-nodes.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/application-nodes.json
@@ -6,6 +6,11 @@
"orchestration": "unorchestrated",
"version": "6.1",
"flavor": "d-2-8-50",
+ "vcpu": 2.0,
+ "memoryGb": 8.0,
+ "diskGb": 50.0,
+ "bandwidthGbps": 1.0,
+ "fastDisk": true,
"clusterId": "cluster",
"clusterType": "container"
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java
index 745a7af203b..653ab38dc3a 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java
@@ -149,7 +149,8 @@ public class OsApiTest extends ControllerContainerTest {
node.hostname(), node.state(), node.type(), node.owner(), node.currentVersion(),
node.wantedVersion(), node.wantedOsVersion(), node.wantedOsVersion(), node.serviceState(),
node.restartGeneration(), node.wantedRestartGeneration(), node.rebootGeneration(),
- node.wantedRebootGeneration(), node.canonicalFlavor(), node.clusterId(), node.clusterType()));
+ node.wantedRebootGeneration(), node.vcpu(), node.memoryGb(), node.diskGb(),
+ node.bandwidthGbps(), node.fastDisk(), node.canonicalFlavor(), node.clusterId(), node.clusterType()));
}
}
}