From 70364d62619155652ff4e3697ef4fab4016ddf89 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Fri, 7 Jan 2022 13:00:56 +0100 Subject: Add info about whether an application is deployed to a zone --- .../ai/vespa/hosted/api/ControllerHttpClient.java | 34 +++++++++++++++------- 1 file changed, 24 insertions(+), 10 deletions(-) (limited to 'hosted-api/src/main') diff --git a/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java b/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java index 4a79857955a..1352220166c 100644 --- a/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java +++ b/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java @@ -40,6 +40,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.OptionalLong; import java.util.Set; import java.util.concurrent.Callable; @@ -480,10 +481,11 @@ public abstract class ControllerHttpClient { // Note: Much more data in response, only the interesting parts of response are included in InstanceInfo for now private static InstanceInfo toInstanceInfo(HttpResponse response, ApplicationId applicationId) { - Set zones = new HashSet<>(); + List zones = new ArrayList<>(); toInspector(response).field("instances").traverse((ArrayTraverser) (___, entryObject) -> - zones.add(ZoneId.from(entryObject.field("environment").asString(), - entryObject.field("region").asString()))); + zones.add(new ZoneDeployment(ZoneId.from(entryObject.field("environment").asString(), + entryObject.field("region").asString()), + entryObject.field("url").valid() ? Optional.of(entryObject.field("url").asString()) : Optional.empty()))); return new InstanceInfo(applicationId, zones); } @@ -561,21 +563,33 @@ public abstract class ControllerHttpClient { public static class InstanceInfo { private final ApplicationId applicationId; - private final Set zones; + private final List zones; - InstanceInfo(ApplicationId applicationId, Set zones) { + InstanceInfo(ApplicationId applicationId, List zones) { this.applicationId = applicationId; this.zones = zones; } - public ApplicationId applicationId() { - return applicationId; - } + public ApplicationId applicationId() { return applicationId; } + + public List zones() { return zones; } + + } - public Set zones() { - return zones; + public static class ZoneDeployment { + + private final ZoneId zone; + private final Optional uri; + + public ZoneDeployment(ZoneId zone, Optional uri) { + this.zone = zone; + this.uri = uri; } + public ZoneId zone() { return zone; } + + public boolean isDeployed() { return uri.isPresent(); } + } } -- cgit v1.2.3