diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2021-06-21 17:15:21 +0200 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2021-06-21 17:18:19 +0200 |
commit | e8b510547ccb197fb34c56bb2978ba4bbd870ed2 (patch) | |
tree | d56c733cbf12a59f898d1683c0bef5a7a8e6b8d0 /controller-server/src | |
parent | 7bc3a365acbc0e8ae56347fc55f50846a45b244b (diff) |
Allow filtering on instances with active deployments
Diffstat (limited to 'controller-server/src')
2 files changed, 14 insertions, 3 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 23754f6d57f..1510bb05a62 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 @@ -2095,14 +2095,16 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { for (Application application : applications) { DeploymentStatus status = null; for (Instance instance : showOnlyProductionInstances(request) ? application.productionInstances().values() - : application.instances().values()) + : application.instances().values()) { + if (showOnlyActiveInstances(request) && instance.deployments().isEmpty()) + continue; if (recurseOverApplications(request)) { if (status == null) status = controller.jobController().deploymentStatus(application); toSlime(applicationArray.addObject(), instance, status, request); - } - else { + } else { toSlime(instance.id(), applicationArray.addObject(), request); } + } } tenantMetaDataToSlime(tenant, applications, object.setObject("metaData")); } @@ -2393,6 +2395,10 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { return "true".equals(request.getProperty("production")); } + private static boolean showOnlyActiveInstances(HttpRequest request) { + return "true".equals(request.getProperty("activeInstances")); + } + private static String tenantType(Tenant tenant) { switch (tenant.type()) { case athenz: return "ATHENS"; 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 01d39c0ea1c..ed81ce36600 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 @@ -217,6 +217,11 @@ public class ApplicationApiTest extends ControllerContainerTest { tester.assertResponse(request("/application/v4/tenant/tenant1", GET).userIdentity(USER_ID), new File("tenant-with-application.json")); + tester.assertResponse(request("/application/v4/tenant/tenant1", GET) + .userIdentity(USER_ID) + .properties(Map.of("activeInstances", "true")), + new File("tenant-without-applications.json")); + // GET tenant applications tester.assertResponse(request("/application/v4/tenant/tenant1/application/", GET).userIdentity(USER_ID), new File("application-list.json")); |