summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-07-12 14:33:49 +0200
committerJon Bratseth <bratseth@gmail.com>2022-07-12 14:33:49 +0200
commit7f3afcb4d074b5f038d1fe204bd1cbc24c88b0a1 (patch)
tree3738a8ac98e2fd6580269090a934cf4b04b9ba2a
parent548b8ed3214c5c637017038f837b3cc527de7045 (diff)
Pass total cost through controller
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java9
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java9
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/stats.json4
5 files changed, 23 insertions, 3 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java
index 68ebc5e86aa..5ddf5aaff28 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java
@@ -8,16 +8,23 @@ import java.util.List;
*/
public class NodeRepoStats {
+ private final double totalCost;
+ private final double totalAllocatedCost;
private final Load load;
private final Load activeLoad;
private final List<ApplicationStats> applicationStats;
- public NodeRepoStats(Load load, Load activeLoad, List<ApplicationStats> applicationStats) {
+ public NodeRepoStats(double totalCost, double totalAllocatedCost,
+ Load load, Load activeLoad, List<ApplicationStats> applicationStats) {
+ this.totalCost = totalCost;
+ this.totalAllocatedCost = totalAllocatedCost;
this.load = load;
this.activeLoad = activeLoad;
this.applicationStats = List.copyOf(applicationStats);
}
+ public double totalCost() { return totalCost; }
+ public double totalAllocatedCost() { return totalAllocatedCost; }
public Load load() { return load; }
public Load activeLoad() { return activeLoad; }
public List<ApplicationStats> applicationStats() { return applicationStats; }
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java
index 36677143f7a..75ac919f776 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/noderepository/NodeRepoStatsData.java
@@ -16,6 +16,12 @@ import java.util.stream.Collectors;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class NodeRepoStatsData {
+ @JsonProperty("totalCost")
+ public Double totalCost;
+
+ @JsonProperty("totalAllocatedCost")
+ public Double totalAllocatedCost;
+
@JsonProperty("load")
public LoadData load;
@@ -26,7 +32,8 @@ public class NodeRepoStatsData {
public List<ApplicationStatsData> applications;
public NodeRepoStats toNodeRepoStats() {
- return new NodeRepoStats(load.toLoad(), activeLoad.toLoad(),
+ return new NodeRepoStats(totalCost, totalAllocatedCost,
+ load.toLoad(), activeLoad.toLoad(),
applications.stream().map(stats -> stats.toApplicationStats()).collect(Collectors.toList()));
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java
index 19f1ac5449f..96a3c9f177d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/StatsResponse.java
@@ -30,6 +30,8 @@ public class StatsResponse extends SlimeJsonResponse {
if (stats.applicationStats().isEmpty()) continue; // skip empty zones
Cursor zoneObject = zonesArray.addObject();
zoneObject.setString("id", zone.toString());
+ zoneObject.setDouble("totalCost", stats.totalCost());
+ zoneObject.setDouble("totalAllocatedCost", stats.totalAllocatedCost());
toSlime(stats.load(), zoneObject.setObject("load"));
toSlime(stats.activeLoad(), zoneObject.setObject("activeLoad"));
Cursor applicationsArray = zoneObject.setArray("applications");
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 3f1ca3f9706..93ebdcf3171 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
@@ -107,7 +107,7 @@ public class NodeRepositoryMock implements NodeRepository {
.collect(Collectors.toList())
: List.of();
- return new NodeRepoStats(Load.zero(), Load.zero(), applicationStats);
+ return new NodeRepoStats(0.0, 0.0, Load.zero(), Load.zero(), applicationStats);
}
@Override
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/stats.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/stats.json
index 673767c13a0..44b52e5be2c 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/stats.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/stats.json
@@ -2,6 +2,8 @@
"zones": [
{
"id": "prod.us-east-3",
+ "totalCost": 0.0,
+ "totalAllocatedCost": 0.0,
"load": {
"cpu": 0.0,
"memory": 0.0,
@@ -27,6 +29,8 @@
},
{
"id": "prod.us-west-1",
+ "totalCost": 0.0,
+ "totalAllocatedCost": 0.0,
"load": {
"cpu": 0.0,
"memory": 0.0,