aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2021-11-26 14:44:45 +0100
committerMorten Tokle <mortent@verizonmedia.com>2021-11-26 14:44:45 +0100
commit693fc5f9ec179eb0d4b7b3cb749aff15403c0c75 (patch)
tree7666151e2af47b2149d3f2f80b8da749390a939c /config-model
parent59850885588f1f4e75a3eaf115da9a3c0d02c9eb (diff)
Use routingMethod from controller
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java4
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java59
2 files changed, 42 insertions, 21 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 f6a0eb9ce8d..d47cddcdf96 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
@@ -237,7 +237,7 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
.build());
}
- // Then get all endpoints provided by controller. Can be created with L4 routing only
+ // Then get all endpoints provided by controller.
Set<ContainerEndpoint> endpointsFromController = deployState.getEndpoints();
endpointsFromController.stream()
.filter(ce -> ce.clusterId().equals(getName()))
@@ -245,7 +245,7 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
name -> endpoints.add(ApplicationClusterEndpoint.builder()
.scope(ce.scope())
.weight(Long.valueOf(ce.weight().orElse(1)).intValue()) // Default to weight=1 if not set
- .sharedL4Routing()
+ .routingMethod(ce.routingMethod())
.dnsName(ApplicationClusterEndpoint.DnsName.from(name))
.hosts(hosts)
.clusterId(getName())
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 87dd91a8a11..a4bfba9e657 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
@@ -44,6 +44,10 @@ import java.util.OptionalLong;
import java.util.Set;
import java.util.stream.Collectors;
+import static com.yahoo.config.model.api.ApplicationClusterEndpoint.RoutingMethod.shared;
+import static com.yahoo.config.model.api.ApplicationClusterEndpoint.RoutingMethod.sharedLayer4;
+import static com.yahoo.config.model.api.ApplicationClusterEndpoint.Scope.application;
+import static com.yahoo.config.model.api.ApplicationClusterEndpoint.Scope.global;
import static com.yahoo.config.provision.SystemName.cd;
import static com.yahoo.config.provision.SystemName.main;
import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -366,59 +370,70 @@ public class ContainerClusterTest {
assertNames(main,
ApplicationId.from("t1", "a1", "i1"),
Set.of(),
- List.of("search-cluster.i1.a1.t1.endpoint.suffix", "search-cluster--i1--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.i1.a1.t1.endpoint.suffix"),
+ List.of("search-cluster--i1--a1--t1.endpoint.suffix"));
assertNames(main,
ApplicationId.from("t1", "a1", "default"),
Set.of(),
- List.of("search-cluster.a1.t1.endpoint.suffix", "search-cluster--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.a1.t1.endpoint.suffix"),
+ List.of("search-cluster--a1--t1.endpoint.suffix"));
assertNames(main,
ApplicationId.from("t1", "default", "default"),
Set.of(),
- List.of("search-cluster.default.t1.endpoint.suffix", "search-cluster--default--t1.endpoint.suffix"));
+ List.of("search-cluster.default.t1.endpoint.suffix"),
+ List.of("search-cluster--default--t1.endpoint.suffix"));
assertNames(main,
ApplicationId.from("t1", "a1", "default"),
- Set.of(new ContainerEndpoint("not-in-this-cluster", ApplicationClusterEndpoint.Scope.global, List.of("foo", "bar"))),
- List.of("search-cluster.a1.t1.endpoint.suffix", "search-cluster--a1--t1.endpoint.suffix"));
+ Set.of(new ContainerEndpoint("not-in-this-cluster", global, List.of("foo", "bar"))),
+ List.of("search-cluster.a1.t1.endpoint.suffix"),
+ List.of("search-cluster--a1--t1.endpoint.suffix"));
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"), 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"));
+ Set.of(new ContainerEndpoint("search-cluster", global, List.of("rotation-1.x.y.z", "rotation-2.x.y.z"), OptionalInt.empty(), sharedLayer4),
+ new ContainerEndpoint("search-cluster", application, List.of("app-rotation.x.y.z"), OptionalInt.of(3), sharedLayer4)),
+ List.of("search-cluster.a1.t1.endpoint.suffix", "rotation-1.x.y.z", "rotation-2.x.y.z", "app-rotation.x.y.z"),
+ List.of("search-cluster--a1--t1.endpoint.suffix"));
// cd system:
assertNames(cd,
ApplicationId.from("t1", "a1", "i1"),
Set.of(),
- List.of("search-cluster.cd.i1.a1.t1.endpoint.suffix", "search-cluster--cd--i1--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.cd.i1.a1.t1.endpoint.suffix"),
+ List.of("search-cluster--cd--i1--a1--t1.endpoint.suffix"));
assertNames(cd,
ApplicationId.from("t1", "a1", "default"),
Set.of(),
- List.of("search-cluster.cd.a1.t1.endpoint.suffix", "search-cluster--cd--a1--t1.endpoint.suffix"));
+ List.of("search-cluster.cd.a1.t1.endpoint.suffix"),
+ List.of("search-cluster--cd--a1--t1.endpoint.suffix"));
assertNames(cd,
ApplicationId.from("t1", "default", "default"),
Set.of(),
- List.of("search-cluster.cd.default.t1.endpoint.suffix", "search-cluster--cd--default--t1.endpoint.suffix"));
+ List.of("search-cluster.cd.default.t1.endpoint.suffix"),
+ List.of("search-cluster--cd--default--t1.endpoint.suffix"));
assertNames(cd,
ApplicationId.from("t1", "a1", "default"),
- Set.of(new ContainerEndpoint("not-in-this-cluster", ApplicationClusterEndpoint.Scope.global, List.of("foo", "bar"))),
- List.of("search-cluster.cd.a1.t1.endpoint.suffix", "search-cluster--cd--a1--t1.endpoint.suffix"));
+ Set.of(new ContainerEndpoint("not-in-this-cluster", global, List.of("foo", "bar"))),
+ List.of("search-cluster.cd.a1.t1.endpoint.suffix"),
+ List.of("search-cluster--cd--a1--t1.endpoint.suffix"));
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"), 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"));
+ Set.of(new ContainerEndpoint("search-cluster", global, List.of("rotation-1.x.y.z", "rotation-2.x.y.z"), OptionalInt.empty(), sharedLayer4),
+ new ContainerEndpoint("search-cluster", global, List.of("a--b.x.y.z", "rotation-2.x.y.z"), OptionalInt.empty(), shared),
+ new ContainerEndpoint("search-cluster", application, List.of("app-rotation.x.y.z"), OptionalInt.of(3), sharedLayer4)),
+ List.of("search-cluster.cd.a1.t1.endpoint.suffix", "rotation-1.x.y.z", "rotation-2.x.y.z", "app-rotation.x.y.z"),
+ List.of("search-cluster--cd--a1--t1.endpoint.suffix", "a--b.x.y.z", "rotation-2.x.y.z"));
}
- private void assertNames(SystemName systemName, ApplicationId appId, Set<ContainerEndpoint> globalEndpoints, List<String> expectedNames) {
+ private void assertNames(SystemName systemName, ApplicationId appId, Set<ContainerEndpoint> globalEndpoints, List<String> expectedSharedL4Names, List<String> expectedSharedNames) {
Zone zone = new Zone(systemName, Environment.defaultEnvironment(), RegionName.defaultName());
DeployState state = new DeployState.Builder()
.zone(zone)
@@ -433,8 +448,9 @@ public class ContainerClusterTest {
addContainer(root, cluster, "c1", "host-c1");
cluster.doPrepare(state);
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))));
+
+ assertNames(expectedSharedNames, endpoints.stream().filter(e -> e.routingMethod() == shared).collect(Collectors.toList()));
+ assertNames(expectedSharedL4Names, endpoints.stream().filter(e -> e.routingMethod() == sharedLayer4).collect(Collectors.toList()));
List<ContainerEndpoint> endpointsWithWeight =
globalEndpoints.stream().filter(endpoint -> endpoint.weight().isPresent()).collect(Collectors.toList());
@@ -443,6 +459,11 @@ public class ContainerClusterTest {
.forEach(ce -> assertTrue(endpointsMatch(ce, endpoints)));
}
+ private void assertNames(List<String> expectedNames, List<ApplicationClusterEndpoint> 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))));
+ }
+
private boolean endpointsMatch(ContainerEndpoint configuredEndpoint, List<ApplicationClusterEndpoint> clusterEndpoints) {
return clusterEndpoints.stream().anyMatch(e ->
configuredEndpoint.names().contains(e.dnsName().value()) &&