aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2021-11-25 23:52:52 +0100
committerMorten Tokle <mortent@verizonmedia.com>2021-11-26 09:38:10 +0100
commit65267c31e3214faa33f3811f67d55e6c5c2066ef (patch)
tree6fc27b45502a999e90282c287e746026b6f7d4a0 /configserver
parent8485d1312a9765aeb708c0b6407370eab6c24d47 (diff)
Support container endpoint weights
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializer.java7
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java11
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/ContainerEndpointSerializerTest.java4
3 files changed, 15 insertions, 7 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 55986e71b3d..3bbf98357f5 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
@@ -30,6 +30,7 @@ public class ContainerEndpointSerializer {
private static final String clusterIdField = "clusterId";
private static final String scopeField = "scope";
private static final String namesField = "names";
+ private static final String weightField = "weight";
private ContainerEndpointSerializer() {}
@@ -39,7 +40,7 @@ public class ContainerEndpointSerializer {
// TODO: Remove default assignment after 7.500
final var scope = SlimeUtils.optionalString(inspector.field(scopeField)).orElse(ApplicationClusterEndpoint.Scope.global.name());
final var namesInspector = inspector.field(namesField);
-
+ final var weight = SlimeUtils.optionalInteger(inspector.field(weightField));
if (clusterId.isEmpty()) {
throw new IllegalStateException("'clusterId' missing on serialized ContainerEndpoint");
}
@@ -59,7 +60,7 @@ public class ContainerEndpointSerializer {
names.add(containerName);
});
- return new ContainerEndpoint(clusterId, ApplicationClusterEndpoint.Scope.valueOf(scope), names);
+ return new ContainerEndpoint(clusterId, ApplicationClusterEndpoint.Scope.valueOf(scope), names, weight);
}
public static List<ContainerEndpoint> endpointListFromSlime(Slime slime) {
@@ -81,7 +82,7 @@ public class ContainerEndpointSerializer {
public static void endpointToSlime(Cursor cursor, ContainerEndpoint endpoint) {
cursor.setString(clusterIdField, endpoint.clusterId());
cursor.setString(scopeField, endpoint.scope().name());
-
+ endpoint.weight().ifPresent(w -> cursor.setLong(weightField, w));
final var namesInspector = cursor.setArray(namesField);
endpoint.names().forEach(namesInspector::addString);
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java
index 2c97d0b9382..cd824967fc3 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/PrepareParamsTest.java
@@ -43,6 +43,8 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
+import java.util.OptionalInt;
+import java.util.OptionalLong;
import java.util.stream.Collectors;
import static org.hamcrest.CoreMatchers.is;
@@ -90,18 +92,21 @@ public class PrepareParamsTest {
public void testCorrectParsingWithContainerEndpoints() throws IOException {
var endpoints = List.of(new ContainerEndpoint("qrs1", ApplicationClusterEndpoint.Scope.global,
List.of("c1.example.com",
- "c2.example.com")),
+ "c2.example.com"), OptionalInt.of(3)),
new ContainerEndpoint("qrs2",ApplicationClusterEndpoint.Scope.global,
List.of("c3.example.com",
"c4.example.com")));
var param = "[\n" +
" {\n" +
" \"clusterId\": \"qrs1\",\n" +
- " \"names\": [\"c1.example.com\", \"c2.example.com\"]\n" +
+ " \"names\": [\"c1.example.com\", \"c2.example.com\"],\n" +
+ " \"scope\": \"global\",\n" +
+ " \"weight\": 3\n" +
" },\n" +
" {\n" +
" \"clusterId\": \"qrs2\",\n" +
- " \"names\": [\"c3.example.com\", \"c4.example.com\"]\n" +
+ " \"names\": [\"c3.example.com\", \"c4.example.com\"],\n" +
+ " \"scope\": \"global\"\n" +
" }\n" +
"]";
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 2d767cfded4..2b746a9c1c6 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
@@ -7,6 +7,8 @@ import com.yahoo.slime.Slime;
import org.junit.Test;
import java.util.List;
+import java.util.OptionalInt;
+import java.util.OptionalLong;
import static org.junit.Assert.assertEquals;
@@ -50,7 +52,7 @@ public class ContainerEndpointSerializerTest {
@Test
public void writeReadSingleEndpoint() {
- final var endpoint = new ContainerEndpoint("foo", ApplicationClusterEndpoint.Scope.global, List.of("a", "b"));
+ final var endpoint = new ContainerEndpoint("foo", ApplicationClusterEndpoint.Scope.global, List.of("a", "b"), OptionalInt.of(1));
final var serialized = new Slime();
ContainerEndpointSerializer.endpointToSlime(serialized.setObject(), endpoint);
final var deserialized = ContainerEndpointSerializer.endpointFromSlime(serialized.get());