From 1361b4520f31326be91f0671ab4984b5c54107bf Mon Sep 17 00:00:00 2001 From: Jon Marius Venstad Date: Thu, 5 Mar 2020 13:14:26 +0100 Subject: 404 on listing applications for tenant which does not exist --- .../controller/restapi/application/ApplicationApiHandler.java | 4 ++++ .../hosted/controller/restapi/application/ApplicationApiTest.java | 6 ++++++ 2 files changed, 10 insertions(+) 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 aa4e2d97a27..5c1affbae12 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 @@ -48,6 +48,7 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.TenantId; import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException; import com.yahoo.vespa.hosted.controller.api.integration.configserver.Log; import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node; +import com.yahoo.vespa.hosted.controller.api.integration.configserver.NotFoundException; import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion; import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobId; import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType; @@ -422,6 +423,9 @@ public class ApplicationApiHandler extends LoggingRequestHandler { private HttpResponse applications(String tenantName, Optional applicationName, HttpRequest request) { TenantName tenant = TenantName.from(tenantName); + if (controller.tenants().get(tenantName).isEmpty()) + return ErrorResponse.notFoundError("Tenant '" + tenantName + "' does not exist"); + Slime slime = new Slime(); Cursor applicationArray = slime.setArray(); for (Application application : controller.applications().asList(tenant)) { 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 b488c0f9d0a..3ceaaac630a 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 @@ -1039,6 +1039,12 @@ public class ApplicationApiTest extends ControllerContainerTest { "{\"error-code\":\"NOT_FOUND\",\"message\":\"Tenant 'tenant1' does not exist\"}", 404); + // GET non-existing tenant's applications + tester.assertResponse(request("/application/v4/tenant/tenant1/application", GET) + .userIdentity(USER_ID), + "{\"error-code\":\"NOT_FOUND\",\"message\":\"Tenant 'tenant1' does not exist\"}", + 404); + // GET non-existing application tester.assertResponse(request("/application/v4/tenant/tenant1/application/application1", GET) .userIdentity(USER_ID), -- cgit v1.2.3