aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@yahooinc.com>2023-03-29 14:35:32 +0200
committerValerij Fredriksen <valerijf@yahooinc.com>2023-03-29 14:35:32 +0200
commit954c8eb9d03e092669ccc10354ef0e96799071d6 (patch)
tree7a2c1f01a1fd6f8ee4741152af1286326ab6cca3 /controller-server
parent468844f6de586f30aa468ee6596f201fe61e63d6 (diff)
Add availabilityZone to deployment object in /application/v4
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java10
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ZoneRegistryMock.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-cloud.json3
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,