aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
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 /config-model
parent8485d1312a9765aeb708c0b6407370eab6c24d47 (diff)
Support container endpoint weights
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java1
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java18
2 files changed, 17 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
index 083a5308386..f6a0eb9ce8d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
@@ -244,6 +244,7 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
.forEach(ce -> ce.names().forEach(
name -> endpoints.add(ApplicationClusterEndpoint.builder()
.scope(ce.scope())
+ .weight(Long.valueOf(ce.weight().orElse(1)).intValue()) // Default to weight=1 if not set
.sharedL4Routing()
.dnsName(ApplicationClusterEndpoint.DnsName.from(name))
.hosts(hosts)
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
index 07ccc356c18..87dd91a8a11 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
@@ -39,6 +39,8 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
+import java.util.OptionalInt;
+import java.util.OptionalLong;
import java.util.Set;
import java.util.stream.Collectors;
@@ -384,7 +386,7 @@ public class ContainerClusterTest {
assertNames(main,
ApplicationId.from("t1", "a1", "default"),
Set.of(new ContainerEndpoint("search-cluster", ApplicationClusterEndpoint.Scope.global, List.of("rotation-1.x.y.z", "rotation-2.x.y.z")),
- new ContainerEndpoint("search-cluster", ApplicationClusterEndpoint.Scope.application, List.of("app-rotation.x.y.z"))),
+ new ContainerEndpoint("search-cluster", ApplicationClusterEndpoint.Scope.application, List.of("app-rotation.x.y.z"), OptionalInt.of(3))),
List.of("search-cluster.a1.t1.endpoint.suffix", "search-cluster--a1--t1.endpoint.suffix", "rotation-1.x.y.z", "rotation-2.x.y.z", "app-rotation.x.y.z"));
// cd system:
@@ -411,7 +413,7 @@ public class ContainerClusterTest {
assertNames(cd,
ApplicationId.from("t1", "a1", "default"),
Set.of(new ContainerEndpoint("search-cluster", ApplicationClusterEndpoint.Scope.global, List.of("rotation-1.x.y.z", "rotation-2.x.y.z")),
- new ContainerEndpoint("search-cluster", ApplicationClusterEndpoint.Scope.application, List.of("app-rotation.x.y.z"))),
+ new ContainerEndpoint("search-cluster", ApplicationClusterEndpoint.Scope.application, List.of("app-rotation.x.y.z"), OptionalInt.of(3))),
List.of("search-cluster.cd.a1.t1.endpoint.suffix", "search-cluster--cd--a1--t1.endpoint.suffix", "rotation-1.x.y.z", "rotation-2.x.y.z", "app-rotation.x.y.z"));
}
@@ -433,6 +435,18 @@ public class ContainerClusterTest {
List<ApplicationClusterEndpoint> endpoints = cluster.endpoints();
assertEquals(expectedNames.size(), endpoints.size());
expectedNames.forEach(expected -> assertTrue("Endpoint not matched " + expected + " was: " + endpoints, endpoints.stream().anyMatch(e -> Objects.equals(e.dnsName().value(), expected))));
+
+ List<ContainerEndpoint> endpointsWithWeight =
+ globalEndpoints.stream().filter(endpoint -> endpoint.weight().isPresent()).collect(Collectors.toList());
+ endpointsWithWeight.stream()
+ .filter(ce -> ce.weight().isPresent())
+ .forEach(ce -> assertTrue(endpointsMatch(ce, endpoints)));
+ }
+
+ private boolean endpointsMatch(ContainerEndpoint configuredEndpoint, List<ApplicationClusterEndpoint> clusterEndpoints) {
+ return clusterEndpoints.stream().anyMatch(e ->
+ configuredEndpoint.names().contains(e.dnsName().value()) &&
+ configuredEndpoint.weight().getAsInt() == e.weight());
}
private void verifyTesterApplicationInstalledBundles(Zone zone, List<String> expectedBundleNames) {