diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-02-11 13:14:38 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-02-16 08:44:02 +0100 |
commit | 361a48b3b924e07e9157db1d0bc80ec2cc841215 (patch) | |
tree | 0cf1fae86f69a185f72f7347df476b9ad7b5d0b7 /routing-generator | |
parent | 80bf8df285a1ecf1f5f253eeb4e49f600fcbad9a (diff) |
Switch to /routing/v2/status in RoutingStatusClient
Diffstat (limited to 'routing-generator')
2 files changed, 18 insertions, 22 deletions
diff --git a/routing-generator/src/main/java/com/yahoo/vespa/hosted/routing/status/RoutingStatusClient.java b/routing-generator/src/main/java/com/yahoo/vespa/hosted/routing/status/RoutingStatusClient.java index a4a37277f5a..0f2368d944d 100644 --- a/routing-generator/src/main/java/com/yahoo/vespa/hosted/routing/status/RoutingStatusClient.java +++ b/routing-generator/src/main/java/com/yahoo/vespa/hosted/routing/status/RoutingStatusClient.java @@ -5,7 +5,7 @@ import com.google.inject.Inject; import com.yahoo.component.AbstractComponent; import com.yahoo.lang.CachedSupplier; import com.yahoo.routing.config.ZoneConfig; -import com.yahoo.slime.Inspector; +import com.yahoo.slime.Cursor; import com.yahoo.slime.Slime; import com.yahoo.slime.SlimeUtils; import com.yahoo.vespa.athenz.api.AthenzService; @@ -91,11 +91,12 @@ public class RoutingStatusClient extends AbstractComponent implements RoutingSta } private Status status() { - Set<String> inactiveDeployments = SlimeUtils.entriesStream(get("/routing/v1/status").get()) - .map(Inspector::asString) + Slime slime = get("/routing/v2/status"); + Cursor root = slime.get(); + Set<String> inactiveDeployments = SlimeUtils.entriesStream(root.field("inactiveDeployments")) + .map(inspector -> inspector.field("upstreamName").asString()) .collect(Collectors.toUnmodifiableSet()); - boolean zoneActive = get("/routing/v1/status/zone").get().field("status").asString() - .equalsIgnoreCase("in"); + boolean zoneActive = root.field("zoneActive").asBool(); return new Status(zoneActive, inactiveDeployments); } diff --git a/routing-generator/src/test/java/com/yahoo/vespa/hosted/routing/status/RoutingStatusClientTest.java b/routing-generator/src/test/java/com/yahoo/vespa/hosted/routing/status/RoutingStatusClientTest.java index d30774a686a..2e923292280 100644 --- a/routing-generator/src/test/java/com/yahoo/vespa/hosted/routing/status/RoutingStatusClientTest.java +++ b/routing-generator/src/test/java/com/yahoo/vespa/hosted/routing/status/RoutingStatusClientTest.java @@ -19,18 +19,16 @@ public class RoutingStatusClientTest { @Test public void client() { - String deploymentUrl = "http://host/routing/v1/status"; - String zoneUrl = "http://host/routing/v1/status/zone"; + String statusUrl = "http://host/routing/v2/status"; HttpClientMock httpClient = new HttpClientMock(); RoutingStatusClient client = new RoutingStatusClient(httpClient, URI.create("http://host")); // Nothing is inactive - httpClient.setResponse("GET", deploymentUrl, inactiveDeployments()) - .setResponse("GET", zoneUrl, zoneActive(true)); + httpClient.setResponse("GET", statusUrl, response(true)); assertTrue(client.isActive("foo")); // Two upstreams are set inactive - httpClient.setResponse("GET", deploymentUrl, inactiveDeployments("bar", "foo")); + httpClient.setResponse("GET", statusUrl, response(true, "bar", "foo")); client.invalidateCache(); assertFalse(client.isActive("foo")); assertFalse(client.isActive("bar")); @@ -38,18 +36,17 @@ public class RoutingStatusClientTest { // Bad response results in active status client.invalidateCache(); - httpClient.setResponse("GET", deploymentUrl, badRequest("something went wrong")); + httpClient.setResponse("GET", statusUrl, badRequest("something went wrong")); assertTrue(client.isActive("foo")); // Inactive zone overrides deployment status client.invalidateCache(); - httpClient.setResponse("GET", deploymentUrl, inactiveDeployments("bar")); - httpClient.setResponse("GET", zoneUrl, zoneActive(false)); + httpClient.setResponse("GET", statusUrl, response(false, "bar")); assertFalse(client.isActive("foo")); assertFalse(client.isActive("bar")); // Zone is active again. Fall back to reading deployment status - httpClient.setResponse("GET", zoneUrl, zoneActive(true)); + httpClient.setResponse("GET", statusUrl, response(true, "bar")); client.invalidateCache(); assertTrue(client.isActive("foo")); assertFalse(client.isActive("bar")); @@ -59,14 +56,12 @@ public class RoutingStatusClientTest { return new JsonResponse("{\"message\":\"" + message + "\"}", 400); } - private static JsonResponse zoneActive(boolean active) { - return new JsonResponse("{\"status\":\"" + (active ? "IN" : "OUT") + "\"}", 200); - } - - private static JsonResponse inactiveDeployments(String... deployments) { - return new JsonResponse("[" + Arrays.stream(deployments) - .map(d -> "\"" + d + "\"") - .collect(Collectors.joining(",")) + "]", 200); + private static JsonResponse response(boolean zoneActive, String... inactiveUpstreams) { + String inactiveDeployments = "[" + Arrays.stream(inactiveUpstreams) + .map(d -> "{\"upstreamName\":\"" + d + "\"}") + .collect(Collectors.joining(",")) + "]"; + String json = "{\"inactiveDeployments\":" + inactiveDeployments + ",\"zoneActive\":" + zoneActive + "}"; + return new JsonResponse(json, 200); } } |