aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2024-01-24 11:03:59 +0100
committerMartin Polden <mpolden@mpolden.no>2024-01-24 11:05:57 +0100
commit93130ab1cba443c3953893de31b2a36021403d77 (patch)
treeac386c6e7f5d042710d9fb098cb86d3d329b0df6 /node-repository
parent056a486a55fd66c39b9b30065865d29655f338f7 (diff)
Add additional fields to application response
Controller needs to know this information when calculating cost. Today it lists all nodes in the zone (multiple times) to get the information, which is slow.
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java12
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application2.json2
3 files changed, 15 insertions, 1 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java
index 89853896104..bbe6ef772fb 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/restapi/ApplicationSerializer.java
@@ -1,10 +1,12 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.restapi;
-import com.yahoo.config.provision.IntRange;
+import com.yahoo.component.Version;
import com.yahoo.config.provision.ClusterResources;
+import com.yahoo.config.provision.IntRange;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Slime;
+import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.applications.Application;
@@ -15,6 +17,7 @@ import com.yahoo.vespa.hosted.provision.autoscale.Limits;
import com.yahoo.vespa.hosted.provision.autoscale.Load;
import java.net.URI;
+import java.util.Comparator;
import java.util.List;
/**
@@ -40,6 +43,13 @@ public class ApplicationSerializer {
URI applicationUri) {
object.setString("url", applicationUri.toString());
object.setString("id", application.id().toFullString());
+ Version version = applicationNodes.stream()
+ .map(node -> node.status().vespaVersion()
+ .orElse(node.allocation().get().membership().cluster().vespaVersion()))
+ .min(Comparator.naturalOrder())
+ .get();
+ object.setString("version", version.toFullString());
+ object.setString("cloudAccount", applicationNodes.stream().findFirst().map(Node::cloudAccount).get().value());
clustersToSlime(application, applicationNodes, nodeRepository, object.setObject("clusters"));
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json
index 7b2cf1dc8e4..d5bbc648ed8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json
@@ -1,6 +1,8 @@
{
"url" : "http://localhost:8080/nodes/v2/applications/tenant1.application1.instance1",
"id" : "tenant1.application1.instance1",
+ "cloudAccount": "aws:111222333444",
+ "version": "5.104.142",
"clusters" : {
"id1" : {
"type": "container",
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application2.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application2.json
index 10173089f75..abd76f9be96 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application2.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application2.json
@@ -1,6 +1,8 @@
{
"url": "http://localhost:8080/nodes/v2/applications/tenant2.application2.instance2",
"id": "tenant2.application2.instance2",
+ "cloudAccount": "aws:111222333444",
+ "version": "6.42.0",
"clusters": {
"id2": {
"type": "content",