summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-05-05 17:39:58 +0200
committerMartin Polden <mpolden@mpolden.no>2021-05-05 17:42:08 +0200
commit7b79be735b5acaa4c8b1c967496cd6295068b08f (patch)
treed31d2de746ada864dd6bdd0babde22625dbf573a /controller-server
parent87284fba0fe6ed3cf99e61657ca96287ae8ef4b5 (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.java14
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java13
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