diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-02-06 11:40:32 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-02-06 11:46:05 +0100 |
commit | ce7d49ae1f19bf541556e2f0c097428c44168c93 (patch) | |
tree | 8228364f4e862122002303d5db6ebc0303bb804a /controller-server | |
parent | fdf01ef9afad82ea5d60bac5a070b53b78498c54 (diff) |
Include global endpoints in endpoints field
Diffstat (limited to 'controller-server')
2 files changed, 32 insertions, 6 deletions
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 6911dd974d2..316e29bd247 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 @@ -1031,11 +1031,22 @@ public class ApplicationApiHandler extends LoggingRequestHandler { var endpointArray = response.setArray("endpoints"); for (var policy : controller.routingController().policies().get(deploymentId).values()) { if (!policy.status().isActive()) continue; - Cursor endpointObject = endpointArray.addObject(); - Endpoint endpoint = policy.endpointIn(controller.system()); - endpointObject.setString("cluster", policy.id().cluster().value()); - endpointObject.setBool("tls", endpoint.tls()); - endpointObject.setString("url", endpoint.url().toString()); + { + var endpointObject = endpointArray.addObject(); + var endpoint = policy.endpointIn(controller.system()); + endpointObject.setString("cluster", policy.id().cluster().value()); + endpointObject.setBool("tls", endpoint.tls()); + endpointObject.setString("url", endpoint.url().toString()); + endpointObject.setString("scope", endpointScopeString(endpoint.scope())); + } + // Add all global endpoints that point to this policy + for (var endpoint : policy.globalEndpointsIn(controller.system()).asList()) { + var endpointObject = endpointArray.addObject(); + endpointObject.setString("cluster", policy.id().cluster().value()); + endpointObject.setBool("tls", endpoint.tls()); + endpointObject.setString("url", endpoint.url().toString()); + endpointObject.setString("scope", endpointScopeString(endpoint.scope())); + } } // serviceUrls contains all valid endpoints for this deployment, including global. The name of these endpoints @@ -2070,6 +2081,14 @@ public class ApplicationApiHandler extends LoggingRequestHandler { return "UNKNOWN"; } + private static String endpointScopeString(Endpoint.Scope scope) { + switch (scope) { + case global: return "global"; + case zone: return "zone"; + } + throw new IllegalArgumentException("Unknown endpoint scope " + scope); + } + private static <T> T getAttribute(HttpRequest request, String attributeName, Class<T> cls) { return Optional.ofNullable(request.getJDiscRequest().context().get(attributeName)) .filter(cls::isInstance) diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-with-routing-policy.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-with-routing-policy.json index 22ba83a4730..a70f23d26f5 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-with-routing-policy.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-with-routing-policy.json @@ -8,7 +8,14 @@ { "cluster": "default", "tls": true, - "url": "https://instance1.application1.tenant1.us-west-1.vespa.oath.cloud/" + "url": "https://instance1.application1.tenant1.us-west-1.vespa.oath.cloud/", + "scope": "zone" + }, + { + "cluster": "default", + "tls": true, + "url": "https://c0.instance1.application1.tenant1.global.vespa.oath.cloud/", + "scope": "global" } ], "serviceUrls": [ |