diff options
author | jonmv <venstad@gmail.com> | 2023-01-25 14:52:18 +0100 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-01-25 14:52:52 +0100 |
commit | c0937025e512e59943d331db431086642e16b5e9 (patch) | |
tree | daaf0e70ff81235f21dfa28018b73cd63b768351 /controller-server | |
parent | 904dd2bd8e3a19d4552719ca52baa427d511fcde (diff) |
Add "type" to private services info
Diffstat (limited to 'controller-server')
2 files changed, 15 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 e92fd35025b..8876cee5550 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 @@ -16,6 +16,7 @@ import com.yahoo.config.application.api.DeploymentInstanceSpec; import com.yahoo.config.application.api.DeploymentSpec; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationName; +import com.yahoo.config.provision.CloudName; import com.yahoo.config.provision.ClusterResources; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; @@ -1968,6 +1969,13 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { instance.id().toShortString(), zone, inService ? "in" : "out of")); } + private String serviceTypeIn(DeploymentId id) { + CloudName cloud = controller.zoneRegistry().zones().all().get(id.zoneId()).get().getCloudName(); + if (CloudName.AWS.equals(cloud)) return "aws-private-link"; + if (CloudName.GCP.equals(cloud)) return "gcp-service-connect"; + return "unknown"; + } + private HttpResponse getPrivateServiceInfo(String tenantName, String applicationName, String instanceName, String environment, String region) { DeploymentId id = new DeploymentId(ApplicationId.from(tenantName, applicationName, instanceName), ZoneId.from(environment, region)); @@ -1975,11 +1983,12 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { Slime slime = new Slime(); Cursor lbArray = slime.setObject().setArray("privateServices"); for (LoadBalancer lb : lbs) { - Cursor lbObject = lbArray.addObject(); - lbObject.setString("cluster", lb.cluster().value()); + Cursor serviceObject = lbArray.addObject(); + serviceObject.setString("cluster", lb.cluster().value()); lb.service().ifPresent(service -> { - lbObject.setString("serviceId", service.id()); // Really the "serviceName", but this is what the user needs >_< - Cursor urnsArray = lbObject.setArray("allowedUrns"); + serviceObject.setString("serviceId", service.id()); // Really the "serviceName", but this is what the user needs >_< + serviceObject.setString("type", serviceTypeIn(id)); + Cursor urnsArray = serviceObject.setArray("allowedUrns"); for (AllowedUrn urn : service.allowedUrns()) { Cursor urnObject = urnsArray.addObject(); urnObject.setString("type", switch (urn.type()) { @@ -1988,7 +1997,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { }); urnObject.setString("urn", urn.urn()); } - Cursor endpointsArray = lbObject.setArray("endpoints"); + Cursor endpointsArray = serviceObject.setArray("endpoints"); controller.serviceRegistry().vpcEndpointService() .getConnections(new ClusterId(id, lb.cluster()), controller.applications().decideCloudAccountOf(id, controller.applications().requireApplication(TenantAndApplicationId.from(tenantName, applicationName)).deploymentSpec())) diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java index 95f3415095d..f1b061da58b 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java @@ -701,7 +701,7 @@ public class ApplicationApiTest extends ControllerContainerTest { tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/environment/prod/region/us-central-1/private-services", GET) .userIdentity(USER_ID), """ - {"privateServices":[{"cluster":"default","serviceId":"service","allowedUrns":[{"type":"aws-private-link","urn":"arne"}],"endpoints":[{"endpointId":"endpoint-1","state":"available"}]}]}"""); + {"privateServices":[{"cluster":"default","serviceId":"service","type":"unknown","allowedUrns":[{"type":"aws-private-link","urn":"arne"}],"endpoints":[{"endpointId":"endpoint-1","state":"available"}]}]}"""); // GET service/state/v1 tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1/instance/instance1/environment/prod/region/us-central-1/service/storagenode/host.com/state/v1/?foo=bar", GET) |