diff options
author | Martin Polden <mpolden@mpolden.no> | 2024-01-24 11:03:59 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2024-01-24 11:05:57 +0100 |
commit | 93130ab1cba443c3953893de31b2a36021403d77 (patch) | |
tree | ac386c6e7f5d042710d9fb098cb86d3d329b0df6 /node-repository | |
parent | 056a486a55fd66c39b9b30065865d29655f338f7 (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')
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", |