diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-05-05 17:39:58 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-05-05 17:42:08 +0200 |
commit | 7b79be735b5acaa4c8b1c967496cd6295068b08f (patch) | |
tree | d31d2de746ada864dd6bdd0babde22625dbf573a /controller-server | |
parent | 87284fba0fe6ed3cf99e61657ca96287ae8ef4b5 (diff) |
Only return legacy global endpoints if they exist
Diffstat (limited to 'controller-server')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/RoutingController.java | 14 | ||||
-rw-r--r-- | controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java | 13 |
2 files changed, 23 insertions, 4 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/RoutingController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/RoutingController.java index 7861c154a54..52ad813d7cc 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/RoutingController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/RoutingController.java @@ -189,9 +189,7 @@ public class RoutingController { /** Returns the global endpoints for given deployment as container endpoints */ public Set<ContainerEndpoint> containerEndpointsOf(Application application, InstanceName instanceName, ZoneId zone) { Instance instance = application.require(instanceName); - boolean registerLegacyNames = application.deploymentSpec().instance(instanceName) - .flatMap(DeploymentInstanceSpec::globalServiceId) - .isPresent(); + boolean registerLegacyNames = legacyNamesAvailable(application, instanceName); Set<ContainerEndpoint> containerEndpoints = new HashSet<>(); EndpointList endpoints = endpointsOf(application, instanceName); // Add endpoints backed by a rotation, and register them in DNS if necessary @@ -305,6 +303,7 @@ public class RoutingController { var directMethods = 0; var zones = deployments.stream().map(DeploymentId::zoneId).collect(Collectors.toList()); var availableRoutingMethods = routingMethodsOfAll(deployments, application); + boolean legacyNamesAvailable = legacyNamesAvailable(application, routingId.application().instance()); for (var method : availableRoutingMethods) { if (method.isDirect() && ++directMethods > 1) { @@ -317,7 +316,7 @@ public class RoutingController { .routingMethod(method) .in(controller.system())); // Add legacy endpoints - if (method == RoutingMethod.shared) { + if (legacyNamesAvailable && method == RoutingMethod.shared) { endpoints.add(Endpoint.of(routingId.application()) .target(routingId.endpointId(), cluster, zones) .on(Port.plain(4080)) @@ -335,6 +334,13 @@ public class RoutingController { return endpoints; } + /** Whether legacy global DNS names should be available for given application */ + private static boolean legacyNamesAvailable(Application application, InstanceName instanceName) { + return application.deploymentSpec().instance(instanceName) + .flatMap(DeploymentInstanceSpec::globalServiceId) + .isPresent(); + } + /** Returns direct routing endpoints if any exist and feature flag is set for given application */ // TODO: Remove this when feature flag is removed, and in-line .direct() filter where relevant public EndpointList directEndpoints(EndpointList endpoints, ApplicationId application) { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java index efe17abc612..422c856ca01 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java @@ -254,6 +254,11 @@ public class ControllerTest { assertTrue(record.isPresent()); assertEquals("app1--tenant1.global.vespa.oath.cloud", record.get().name().asString()); assertEquals("rotation-fqdn-01.", record.get().data().asString()); + + List<String> globalDnsNames = tester.controller().routing().endpointsOf(context.instanceId()) + .scope(Endpoint.Scope.global) + .mapToList(Endpoint::dnsName); + assertEquals(List.of("app1--tenant1.global.vespa.oath.cloud"), globalDnsNames); } @Test @@ -293,6 +298,14 @@ public class ControllerTest { assertTrue(record.isPresent()); assertEquals("app1.tenant1.global.vespa.yahooapis.com", record.get().name().asString()); assertEquals("rotation-fqdn-01.", record.get().data().asString()); + + List<String> globalDnsNames = tester.controller().routing().endpointsOf(context.instanceId()) + .scope(Endpoint.Scope.global) + .mapToList(Endpoint::dnsName); + assertEquals(List.of("app1--tenant1.global.vespa.oath.cloud", + "app1.tenant1.global.vespa.yahooapis.com", + "app1--tenant1.global.vespa.yahooapis.com"), + globalDnsNames); } @Test |