aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorMorten Tokle <morten.tokle@gmail.com>2021-11-29 07:59:25 +0100
committerGitHub <noreply@github.com>2021-11-29 07:59:25 +0100
commitf1e06c49e55de92d407819736d2844faae078278 (patch)
tree1df54b8b399543396e56d8276b6606f53cd0fcde /configserver
parent59e178e3ac014becaf9b4efc2c38e26564d24626 (diff)
Revert "Revert "read routingmethod""
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java16
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java17
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializerTest.java18
3 files changed, 26 insertions, 25 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java
index 3bbf98357f5..b813d56b345 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java
@@ -31,16 +31,18 @@ public class ContainerEndpointSerializer {
private static final String scopeField = "scope";
private static final String namesField = "names";
private static final String weightField = "weight";
+ private static final String routingMethodField = "routingMethod";
private ContainerEndpointSerializer() {}
public static ContainerEndpoint endpointFromSlime(Inspector inspector) {
final var clusterId = inspector.field(clusterIdField).asString();
- // Currently assigned endpoints that do not have scope should be interpreted as global endpoints
- // TODO: Remove default assignment after 7.500
- final var scope = SlimeUtils.optionalString(inspector.field(scopeField)).orElse(ApplicationClusterEndpoint.Scope.global.name());
+ final var scope = inspector.field(scopeField).asString();
final var namesInspector = inspector.field(namesField);
final var weight = SlimeUtils.optionalInteger(inspector.field(weightField));
+ // assign default routingmethod. Remove when 7.507 is latest version
+ // Cannot be used before all endpoints are assigned explicit routingmethod (from controller)
+ final var routingMethod = SlimeUtils.optionalString(inspector.field(routingMethodField)).orElse(ApplicationClusterEndpoint.RoutingMethod.sharedLayer4.name());
if (clusterId.isEmpty()) {
throw new IllegalStateException("'clusterId' missing on serialized ContainerEndpoint");
}
@@ -53,6 +55,10 @@ public class ContainerEndpointSerializer {
throw new IllegalStateException("'names' missing on serialized ContainerEndpoint");
}
+ if(routingMethod.isEmpty()) {
+ throw new IllegalStateException("'routingMethod' missing on serialized ContainerEndpoint");
+ }
+
final var names = new ArrayList<String>();
namesInspector.traverse((ArrayTraverser) (idx, nameInspector) -> {
@@ -60,7 +66,8 @@ public class ContainerEndpointSerializer {
names.add(containerName);
});
- return new ContainerEndpoint(clusterId, ApplicationClusterEndpoint.Scope.valueOf(scope), names, weight);
+ return new ContainerEndpoint(clusterId, ApplicationClusterEndpoint.Scope.valueOf(scope), names, weight,
+ ApplicationClusterEndpoint.RoutingMethod.valueOf(routingMethod));
}
public static List<ContainerEndpoint> endpointListFromSlime(Slime slime) {
@@ -85,6 +92,7 @@ public class ContainerEndpointSerializer {
endpoint.weight().ifPresent(w -> cursor.setLong(weightField, w));
final var namesInspector = cursor.setArray(namesField);
endpoint.names().forEach(namesInspector::addString);
+ cursor.setString(routingMethodField, endpoint.routingMethod().name());
}
public static Slime endpointListToSlime(List<ContainerEndpoint> endpoints) {
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
index 08e6a353fbb..79632b8446b 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
@@ -63,6 +63,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.OptionalInt;
import java.util.Set;
import java.util.logging.Level;
@@ -248,14 +249,18 @@ public class SessionPreparerTest {
" \"names\": [\n" +
" \"foo.app1.tenant1.global.vespa.example.com\",\n" +
" \"rotation-042.vespa.global.routing\"\n" +
- " ]\n" +
+ " ],\n" +
+ " \"scope\": \"global\", \n" +
+ " \"routingMethod\": \"shared\"\n" +
" },\n" +
" {\n" +
" \"clusterId\": \"bar\",\n" +
" \"names\": [\n" +
" \"bar.app1.tenant1.global.vespa.example.com\",\n" +
" \"rotation-043.vespa.global.routing\"\n" +
- " ]\n" +
+ " ],\n" +
+ " \"scope\": \"global\",\n" +
+ " \"routingMethod\": \"sharedLayer4\"\n" +
" }\n" +
"]";
var applicationId = applicationId("test");
@@ -267,11 +272,15 @@ public class SessionPreparerTest {
var expected = List.of(new ContainerEndpoint("foo",
ApplicationClusterEndpoint.Scope.global,
List.of("foo.app1.tenant1.global.vespa.example.com",
- "rotation-042.vespa.global.routing")),
+ "rotation-042.vespa.global.routing"),
+ OptionalInt.empty(),
+ ApplicationClusterEndpoint.RoutingMethod.shared),
new ContainerEndpoint("bar",
ApplicationClusterEndpoint.Scope.global,
List.of("bar.app1.tenant1.global.vespa.example.com",
- "rotation-043.vespa.global.routing")));
+ "rotation-043.vespa.global.routing"),
+ OptionalInt.empty(),
+ ApplicationClusterEndpoint.RoutingMethod.sharedLayer4));
assertEquals(expected, readContainerEndpoints(applicationId));
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializerTest.java
index 2b746a9c1c6..c8f31697c5e 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializerTest.java
@@ -35,22 +35,6 @@ public class ContainerEndpointSerializerTest {
}
@Test
- public void readEndpointWithoutScope() {
- final var slime = new Slime();
- final var entry = slime.setObject();
-
- entry.setString("clusterId", "foobar");
- final var entryNames = entry.setArray("names");
- entryNames.addString("a");
- entryNames.addString("b");
-
- final var endpoint = ContainerEndpointSerializer.endpointFromSlime(slime.get());
- assertEquals("foobar", endpoint.clusterId());
- assertEquals(ApplicationClusterEndpoint.Scope.global, endpoint.scope());
- assertEquals(List.of("a", "b"), endpoint.names());
- }
-
- @Test
public void writeReadSingleEndpoint() {
final var endpoint = new ContainerEndpoint("foo", ApplicationClusterEndpoint.Scope.global, List.of("a", "b"), OptionalInt.of(1));
final var serialized = new Slime();
@@ -62,7 +46,7 @@ public class ContainerEndpointSerializerTest {
@Test
public void writeReadEndpoints() {
- final var endpoints = List.of(new ContainerEndpoint("foo", ApplicationClusterEndpoint.Scope.global, List.of("a", "b")));
+ final var endpoints = List.of(new ContainerEndpoint("foo", ApplicationClusterEndpoint.Scope.global, List.of("a", "b"), OptionalInt.of(3), ApplicationClusterEndpoint.RoutingMethod.shared));
final var serialized = ContainerEndpointSerializer.endpointListToSlime(endpoints);
final var deserialized = ContainerEndpointSerializer.endpointListFromSlime(serialized);