diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2023-03-29 14:35:32 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2023-03-29 14:35:32 +0200 |
commit | 954c8eb9d03e092669ccc10354ef0e96799071d6 (patch) | |
tree | 7a2c1f01a1fd6f8ee4741152af1286326ab6cca3 /controller-server | |
parent | 468844f6de586f30aa468ee6596f201fe61e63d6 (diff) |
Add availabilityZone to deployment object in /application/v4
Diffstat (limited to 'controller-server')
3 files changed, 15 insertions, 4 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 6c614738ddf..8a0e2d01d8c 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 @@ -27,6 +27,7 @@ import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.ZoneEndpoint.AllowedUrn; import com.yahoo.config.provision.zone.RoutingMethod; +import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.container.handler.metrics.JsonResponse; import com.yahoo.container.jdisc.EmptyResponse; @@ -1659,6 +1660,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { else { deploymentObject.setString("environment", deployment.zone().environment().value()); deploymentObject.setString("region", deployment.zone().region().value()); + addAvailabilityZone(deploymentObject, deployment.zone()); deploymentObject.setString("url", withPath(request.getUri().getPath() + "/instance/" + instance.name().value() + "/environment/" + deployment.zone().environment().value() + @@ -1755,6 +1757,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { deploymentObject.setString("environment", deployment.zone().environment().value()); deploymentObject.setString("region", deployment.zone().region().value()); deploymentObject.setString("instance", instance.id().instance().value()); // pointless + addAvailabilityZone(deploymentObject, deployment.zone()); deploymentObject.setString("url", withPath(request.getUri().getPath() + "/environment/" + deployment.zone().environment().value() + "/region/" + deployment.zone().region().value(), @@ -1837,6 +1840,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { response.setString("instance", deploymentId.applicationId().instance().value()); // pointless response.setString("environment", deploymentId.zoneId().environment().value()); response.setString("region", deploymentId.zoneId().region().value()); + addAvailabilityZone(response, deployment.zone()); var application = controller.applications().requireApplication(TenantAndApplicationId.from(deploymentId.applicationId())); // Add zone endpoints @@ -3020,6 +3024,12 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { return new MessageResponse("All deployments removed"); } + private void addAvailabilityZone(Cursor object, ZoneId zoneId) { + ZoneApi zone = controller.zoneRegistry().get(zoneId); + if (!zone.getCloudName().equals(CloudName.AWS)) return; + object.setString("availabilityZone", zone.getCloudNativeAvailabilityZone()); + } + private ZoneId requireZone(String environment, String region) { return requireZone(ZoneId.from(environment, region)); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java index 8b279adc4fa..611f0bab904 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java @@ -63,9 +63,9 @@ public class ZoneRegistryMock extends AbstractComponent implements ZoneRegistry if (system.isPublic()) { this.zones = List.of(ZoneApiMock.fromId("test.us-east-1"), ZoneApiMock.fromId("staging.us-east-3"), - ZoneApiMock.fromId("prod.aws-us-east-1c"), - ZoneApiMock.fromId("prod.aws-eu-west-1a"), - ZoneApiMock.fromId("dev.aws-us-east-1c")); + ZoneApiMock.newBuilder().withId("prod.aws-us-east-1c").withCloud("aws").withCloudNativeAvailabilityZone("use1-az2").build(), + ZoneApiMock.newBuilder().withId("prod.aws-eu-west-1a").withCloud("aws").withCloudNativeAvailabilityZone("euw1-az3").build(), + ZoneApiMock.newBuilder().withId("dev.aws-us-east-1c").withCloud("aws").withCloudNativeAvailabilityZone("use1-az2").build()); setRoutingMethod(this.zones, RoutingMethod.exclusive); } else { this.zones = List.of(ZoneApiMock.fromId("test.us-east-1"), diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-cloud.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-cloud.json index 4d0f1259c07..bb4136ed0ba 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-cloud.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-cloud.json @@ -4,6 +4,7 @@ "instance": "default", "environment": "prod", "region": "aws-us-east-1c", + "availabilityZone": "use1-az2", "endpoints": [ { "cluster": "default", @@ -30,7 +31,7 @@ }, "status": "complete", "quota": 1.304, - "activity": { }, + "activity": {}, "metrics": { "queriesPerSecond": 0.0, "writesPerSecond": 0.0, |