diff options
3 files changed, 17 insertions, 13 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DnsMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DnsMaintainer.java index 4dca8bc2811..2fe6af02480 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DnsMaintainer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DnsMaintainer.java @@ -47,16 +47,19 @@ public class DnsMaintainer extends Maintainer { protected void maintain() { try (RotationLock lock = rotationRepository().lock()) { Map<RotationId, Rotation> unassignedRotations = rotationRepository().availableRotations(lock); - rotationToCheckOf(unassignedRotations.values()).ifPresent(this::removeDnsAlias); + rotationToCheckOf(unassignedRotations.values()).ifPresent(this::removeCname); } } - /** Remove DNS alias for unassigned rotation */ - private void removeDnsAlias(Rotation rotation) { + /** Remove CNAME(s) for unassigned rotation */ + private void removeCname(Rotation rotation) { // When looking up CNAME by data, the data must be a FQDN List<Record> records = nameService.findRecords(Record.Type.CNAME, RecordData.fqdn(rotation.name())).stream() .filter(DnsMaintainer::canUpdate) .collect(Collectors.toList()); + if (records.isEmpty()) { + return; + } log.info(String.format("Removing DNS records %s because they point to the unassigned " + "rotation %s (%s)", records, rotation.id().asString(), rotation.name())); nameService.removeRecords(records); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicyMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicyMaintainer.java index d977db03dec..80b03f50ebd 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicyMaintainer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicyMaintainer.java @@ -95,7 +95,7 @@ public class RoutingPolicyMaintainer extends Maintainer { Set<AliasTarget> targets = route.getValue() .stream() .filter(policy -> policy.dnsZone().isPresent()) - .map(policy -> new AliasTarget(policy.alias(), + .map(policy -> new AliasTarget(policy.canonicalName(), policy.dnsZone().get(), policy.zone())) .collect(Collectors.toSet()); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicyMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicyMaintainerTest.java index f0d17fcf167..c3e8e63e805 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicyMaintainerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicyMaintainerTest.java @@ -34,6 +34,7 @@ import static org.junit.Assert.assertTrue; /** * @author mortent + * @author mpolden */ public class RoutingPolicyMaintainerTest { @@ -62,8 +63,8 @@ public class RoutingPolicyMaintainerTest { maintainer.maintain(); Supplier<List<Record>> records1 = () -> tester.controllerTester().nameService().findRecords(Record.Type.ALIAS, RecordName.from("r0--app1--tenant1.global.vespa.oath.cloud")); assertEquals(2, records1.get().size()); - assertEquals("c0--app1--tenant1.prod.us-central-1.vespa.oath.cloud.", records1.get().get(0).data().asString()); - assertEquals("c0--app1--tenant1.prod.us-west-1.vespa.oath.cloud.", records1.get().get(1).data().asString()); + assertEquals("lb-0--tenant1:app1:default--prod.us-central-1.", records1.get().get(0).data().asString()); + assertEquals("lb-0--tenant1:app1:default--prod.us-west-1.", records1.get().get(1).data().asString()); // Applications gains a new deployment ApplicationPackage updatedApplicationPackage = new ApplicationPackageBuilder() @@ -79,9 +80,9 @@ public class RoutingPolicyMaintainerTest { provisionLoadBalancers(app1, 2, rotations); maintainer.maintain(); assertEquals(numberOfDeployments, records1.get().size()); - assertEquals("c0--app1--tenant1.prod.us-central-1.vespa.oath.cloud.", records1.get().get(0).data().asString()); - assertEquals("c0--app1--tenant1.prod.us-east-3.vespa.oath.cloud.", records1.get().get(1).data().asString()); - assertEquals("c0--app1--tenant1.prod.us-west-1.vespa.oath.cloud.", records1.get().get(2).data().asString()); + assertEquals("lb-0--tenant1:app1:default--prod.us-central-1.", records1.get().get(0).data().asString()); + assertEquals("lb-0--tenant1:app1:default--prod.us-east-3.", records1.get().get(1).data().asString()); + assertEquals("lb-0--tenant1:app1:default--prod.us-west-1.", records1.get().get(2).data().asString()); // Another application is deployed Supplier<List<Record>> records2 = () -> tester.controllerTester().nameService().findRecords(Record.Type.ALIAS, RecordName.from("r0--app2--tenant1.global.vespa.oath.cloud")); @@ -89,8 +90,8 @@ public class RoutingPolicyMaintainerTest { provisionLoadBalancers(app2, 1, Map.of(0, Set.of(RotationName.from("r0")))); maintainer.maintain(); assertEquals(2, records2.get().size()); - assertEquals("c0--app2--tenant1.prod.us-central-1.vespa.oath.cloud.", records2.get().get(0).data().asString()); - assertEquals("c0--app2--tenant1.prod.us-west-1.vespa.oath.cloud.", records2.get().get(1).data().asString()); + assertEquals("lb-0--tenant1:app2:default--prod.us-central-1.", records2.get().get(0).data().asString()); + assertEquals("lb-0--tenant1:app2:default--prod.us-west-1.", records2.get().get(1).data().asString()); // All rotations for app1 are removed provisionLoadBalancers(app1, clustersPerZone, Collections.emptyMap()); @@ -224,8 +225,8 @@ public class RoutingPolicyMaintainerTest { new LoadBalancer("LB-" + i + "-Z-" + zone.value(), application, ClusterSpec.Id.from("c" + i), - HostName.from("loadbalancer-" + i + "-" + application.serializedForm() + - "-zone-" + zone.value()), + HostName.from("lb-" + i + "--" + application.serializedForm() + + "--" + zone.value()), Optional.of("dns-zone-1"), rotations)); } |