diff options
author | Martin Polden <mpolden@mpolden.no> | 2017-09-06 13:20:30 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2017-09-06 13:20:30 +0200 |
commit | b62cfd6bb8f86977dc36c02c1e065f9bc403e475 (patch) | |
tree | bc024202a59199ebcc41f2de2fd17a8952811d6a /controller-server | |
parent | fb1818824b94e1ee4ca553065a2f6ba73b219ca7 (diff) |
Use alias in record lookup
Diffstat (limited to 'controller-server')
3 files changed, 29 insertions, 6 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java index 63711b55d27..d48bd8d3c77 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java @@ -373,7 +373,7 @@ public class ApplicationController { Rotation rotation = applicationRotation.rotations().iterator().next(); // at this time there should be only one rotation assigned String endpointName = alias.toString(); try { - Optional<Record> record = nameService.findRecord(Record.Type.CNAME, rotation.rotationName); + Optional<Record> record = nameService.findRecord(Record.Type.CNAME, endpointName); if (!record.isPresent()) { RecordId recordId = nameService.createCname(endpointName, rotation.rotationName); log.info("Registered mapping with record ID " + recordId.id() + ": " + 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 95f4400b2b5..3d756034b71 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 @@ -33,6 +33,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.BuildService.BuildJob; import com.yahoo.vespa.hosted.controller.api.integration.athens.NToken; import com.yahoo.vespa.hosted.controller.api.integration.athens.mock.AthensDbMock; import com.yahoo.vespa.hosted.controller.api.integration.athens.mock.NTokenMock; +import com.yahoo.vespa.hosted.controller.api.integration.dns.Record; import com.yahoo.vespa.hosted.controller.application.ApplicationPackage; import com.yahoo.vespa.hosted.controller.application.ApplicationRevision; import com.yahoo.vespa.hosted.controller.application.Change; @@ -607,7 +608,6 @@ public class ControllerTest { // Current system version, matches version in test data Version version = Version.fromString("6.141.117"); - Version oldVersion = Version.fromString("6.98.12"); tester.configServerClientMock().setDefaultConfigServerVersion(version); tester.updateVersionStatus(version); assertEquals(version, tester.controller().versionStatus().systemVersion().get().versionNumber()); @@ -661,4 +661,23 @@ public class ControllerTest { assertEquals("Relevant (cd) data is not removed.", cdJobsCount, newCdJobsCount); } + @Test + public void testDnsAliasRegistration() { + DeploymentTester tester = new DeploymentTester(); + Application application = tester.createApplication("app1", "tenant1", 1, 1L); + + ApplicationPackage applicationPackage = new ApplicationPackageBuilder() + .environment(Environment.prod) + .region("us-west-1") + .region("us-central-1") // Two deployments should result in DNS alias being registered once + .build(); + + tester.deployCompletely(application, applicationPackage); + assertEquals(1, tester.controllerTester().nameService().records().size()); + Optional<Record> record = tester.controllerTester().nameService().findRecord(Record.Type.CNAME, "app1.tenant1.global.vespa.yahooapis.com"); + assertTrue(record.isPresent()); + assertEquals("app1.tenant1.global.vespa.yahooapis.com", record.get().name()); + assertEquals("fake-global-rotation-tenant1.app1", record.get().value()); + } + } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java index 41d9bbea5b2..63feb01f1f2 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java @@ -63,12 +63,14 @@ public final class ControllerTester { private final ZoneRegistryMock zoneRegistryMock = new ZoneRegistryMock(); private final GitHubMock gitHubMock = new GitHubMock(); private final CuratorDb curator = new MockCuratorDb(); - private Controller controller = createController(db, curator, configServerClientMock, clock, gitHubMock, zoneRegistryMock, athensDb); + private final MemoryNameService memoryNameService = new MemoryNameService(); + private Controller controller = createController(db, curator, configServerClientMock, clock, gitHubMock, + zoneRegistryMock, athensDb, memoryNameService); private static final Controller createController(ControllerDb db, CuratorDb curator, ConfigServerClientMock configServerClientMock, ManualClock clock, GitHubMock gitHubClientMock, ZoneRegistryMock zoneRegistryMock, - AthensDbMock athensDb) { + AthensDbMock athensDb, MemoryNameService nameService) { Controller controller = new Controller(db, curator, new MemoryRotationRepository(), @@ -80,7 +82,7 @@ public final class ControllerTester { new CostMock(new MockInsightBackend()), configServerClientMock, new MockMetricsService(), - new MemoryNameService(), + nameService, new MockRoutingGenerator(), new ChefMock(), clock, @@ -93,10 +95,12 @@ public final class ControllerTester { public CuratorDb curator() { return curator; } public ManualClock clock() { return clock; } public AthensDbMock athensDb() { return athensDb; } + public MemoryNameService nameService() { return memoryNameService; } /** Create a new controller instance. Useful to verify that controller state is rebuilt from persistence */ public final void createNewController() { - controller = createController(db, curator, configServerClientMock, clock, gitHubMock, zoneRegistryMock, athensDb); + controller = createController(db, curator, configServerClientMock, clock, gitHubMock, zoneRegistryMock, + athensDb, memoryNameService); } public ZoneRegistryMock getZoneRegistryMock() { return zoneRegistryMock; } |