summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2019-05-23 13:03:25 +0200
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2019-05-23 13:03:25 +0200
commite2ddffe8251f732d9f2b787d2e91d94b8ca547fa (patch)
treebee828a9de2843f5061af07e92ff4eae91269f3b /controller-server
parent599f1554410d682ce4bff384f3aadf2ce24ed578 (diff)
Listen to /api/zone/v1 with the zone api handler
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerCloudTest.java7
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java8
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java28
4 files changed, 31 insertions, 16 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java
index fcf01f461a1..b115e659c28 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiHandler.java
@@ -28,6 +28,8 @@ import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class ZoneApiHandler extends LoggingRequestHandler {
+ private static final String OPTIONAL_PREFIX = "/api";
+
private final ZoneRegistry zoneRegistry;
public ZoneApiHandler(LoggingRequestHandler.Context parentCtx, ZoneRegistry zoneRegistry) {
@@ -54,7 +56,7 @@ public class ZoneApiHandler extends LoggingRequestHandler {
}
private HttpResponse get(HttpRequest request) {
- Path path = new Path(request.getUri());
+ Path path = new Path(request.getUri(), OPTIONAL_PREFIX);
if (path.matches("/zone/v1")) {
return root(request);
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerCloudTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerCloudTest.java
index 4f068451d24..102326d0a5e 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerCloudTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerCloudTest.java
@@ -34,6 +34,13 @@ public class ControllerContainerCloudTest extends ControllerContainerTest {
" <binding>http://*/api/application/v4/*</binding>\n" +
" </handler>\n" +
+ " <handler id='com.yahoo.vespa.hosted.controller.restapi.zone.v1.ZoneApiHandler'>\n" +
+ " <binding>http://*/zone/v1</binding>\n" +
+ " <binding>http://*/zone/v1/*</binding>\n" +
+ " <binding>http://*/api/zone/v1</binding>\n" +
+ " <binding>http://*/api/zone/v1/*</binding>\n" +
+ " </handler>\n" +
+
" <handler id='com.yahoo.vespa.hosted.controller.restapi.user.UserApiHandler'>\n" +
" <binding>http://*/user/v1/*</binding>\n" +
" <binding>http://*/api/user/v1/*</binding>\n" +
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
index 8e12268c197..e974f55c9f6 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
@@ -106,10 +106,6 @@ public class ControllerContainerTest {
" <handler id='com.yahoo.vespa.hosted.controller.restapi.cost.CostApiHandler'>\n" +
" <binding>http://*/cost/v1/*</binding>\n" +
" </handler>\n" +
- " <handler id='com.yahoo.vespa.hosted.controller.restapi.zone.v1.ZoneApiHandler'>\n" +
- " <binding>http://*/zone/v1</binding>\n" +
- " <binding>http://*/zone/v1/*</binding>\n" +
- " </handler>\n" +
" <handler id='com.yahoo.vespa.hosted.controller.restapi.zone.v2.ZoneApiHandler'>\n" +
" <binding>http://*/zone/v2</binding>\n" +
" <binding>http://*/zone/v2/*</binding>\n" +
@@ -132,6 +128,10 @@ public class ControllerContainerTest {
" <handler id='com.yahoo.vespa.hosted.controller.restapi.athenz.AthenzApiHandler'>\n" +
" <binding>http://*/athenz/v1/*</binding>\n" +
" </handler>\n" +
+ " <handler id='com.yahoo.vespa.hosted.controller.restapi.zone.v1.ZoneApiHandler'>\n" +
+ " <binding>http://*/zone/v1</binding>\n" +
+ " <binding>http://*/zone/v1/*</binding>\n" +
+ " </handler>\n" +
" <http>\n" +
" <server id='default' port='8080' />\n" +
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java
index 9c853f211ed..ca4061f8376 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/ZoneApiTest.java
@@ -4,27 +4,29 @@ package com.yahoo.vespa.hosted.controller.restapi.zone.v1;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.zone.ZoneId;
+import com.yahoo.vespa.hosted.controller.api.role.Role;
import com.yahoo.vespa.hosted.controller.integration.ZoneRegistryMock;
import com.yahoo.vespa.hosted.controller.restapi.ContainerControllerTester;
+import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerCloudTest;
import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerTest;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.util.List;
+import java.util.Set;
/**
* @author mpolden
*/
-public class ZoneApiTest extends ControllerContainerTest {
+public class ZoneApiTest extends ControllerContainerCloudTest {
private static final String responseFiles = "src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v1/responses/";
- private static final List<ZoneId> zones = List.of(
- ZoneId.from(Environment.prod, RegionName.from("us-north-1")),
- ZoneId.from(Environment.dev, RegionName.from("us-north-2")),
- ZoneId.from(Environment.test, RegionName.from("us-north-3")),
- ZoneId.from(Environment.staging, RegionName.from("us-north-4"))
- );
+ private static final List<ZoneId> zones = List.of(ZoneId.from(Environment.prod, RegionName.from("us-north-1")),
+ ZoneId.from(Environment.dev, RegionName.from("us-north-2")),
+ ZoneId.from(Environment.test, RegionName.from("us-north-3")),
+ ZoneId.from(Environment.staging, RegionName.from("us-north-4")));
+ private static final Set<Role> everyone = Set.of(Role.everyone());
private ContainerControllerTester tester;
@@ -40,22 +42,26 @@ public class ZoneApiTest extends ControllerContainerTest {
@Test
public void test_requests() {
// GET /zone/v1
- tester.containerTester().assertResponse(authenticatedRequest("http://localhost:8080/zone/v1"),
+ tester.containerTester().assertResponse(request("/zone/v1")
+ .roles(everyone),
new File("root.json"));
// GET /zone/v1/environment/prod
- tester.containerTester().assertResponse(authenticatedRequest("http://localhost:8080/zone/v1/environment/prod"),
+ tester.containerTester().assertResponse(request("/zone/v1/environment/prod")
+ .roles(everyone),
new File("prod.json"));
// GET /zone/v1/environment/dev/default
- tester.containerTester().assertResponse(authenticatedRequest("http://localhost:8080/zone/v1/environment/dev/default"),
+ tester.containerTester().assertResponse(request("/api/zone/v1/environment/dev/default")
+ .roles(everyone),
new File("default-for-region.json"));
}
@Test
public void test_invalid_requests() {
// GET /zone/v1/environment/prod/default: No default region
- tester.containerTester().assertResponse(authenticatedRequest("http://localhost:8080/zone/v1/environment/prod/default"),
+ tester.containerTester().assertResponse(request("/zone/v1/environment/prod/default")
+ .roles(everyone),
new File("no-default-region.json"),
400);
}