diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-06-15 15:57:09 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-07-08 14:18:54 +0200 |
commit | a453ea9b9f4bfe417fb38dd60952394c9dd11292 (patch) | |
tree | a8638b5dbe5dbf56881a4bc672806d920e6c10b6 /controller-server | |
parent | 550d57e908feab278830c80f3ba6b4084b3f8c2f (diff) |
Create global routing policy with legacy syntax
Diffstat (limited to 'controller-server')
2 files changed, 28 insertions, 3 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java index e5a99c2e69d..7ae43691e4c 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java @@ -418,12 +418,16 @@ public class RoutingPolicies { if (instanceSpec.isEmpty()) { return Set.of(); } + if (instanceSpec.get().globalServiceId().filter(id -> id.equals(loadBalancer.cluster().value())).isPresent()) { + // Legacy assignment always has the default endpoint Id + return Set.of(EndpointId.defaultId()); + } return instanceSpec.get().endpoints().stream() .filter(endpoint -> endpoint.containerId().equals(loadBalancer.cluster().value())) .filter(endpoint -> endpoint.regions().contains(deployment.zoneId().region())) .map(com.yahoo.config.application.api.Endpoint::endpointId) .map(EndpointId::of) - .collect(Collectors.toSet()); + .collect(Collectors.toUnmodifiableSet()); } } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java index 3ee4c6961a4..b6e593017ff 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java @@ -176,8 +176,8 @@ public class RoutingPoliciesTest { // Weight of inactive zone is set to zero tester.assertTargets(context.instanceId(), EndpointId.of("r0"), 0, ImmutableMap.of(zone1, 1L, - zone3, 1L, - zone4, 0L)); + zone3, 1L, + zone4, 0L)); // Other zone in shared region is set out. Entire record group for the region is removed as all zones in the // region are out (weight sum = 0) @@ -198,6 +198,27 @@ public class RoutingPoliciesTest { } @Test + public void global_routing_policies_legacy_global_service_id() { + var tester = new RoutingPoliciesTester(); + var context = tester.newDeploymentContext("tenant1", "app1", "default"); + int clustersPerZone = 2; + int numberOfDeployments = 2; + var applicationPackage = applicationPackageBuilder() + .region(zone1.region()) + .region(zone2.region()) + .globalServiceId("c0") + .build(); + tester.provisionLoadBalancers(clustersPerZone, context.instanceId(), zone1, zone2); + + // Creates alias records + context.submit(applicationPackage).deferLoadBalancerProvisioningIn(Environment.prod).deploy(); + tester.assertTargets(context.instanceId(), EndpointId.defaultId(), 0, zone1, zone2); + assertEquals("Routing policy count is equal to cluster count", + numberOfDeployments * clustersPerZone, + tester.policiesOf(context.instance().id()).size()); + } + + @Test public void zone_routing_policies() { zone_routing_policies(false); zone_routing_policies(true); |