summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2017-09-06 13:20:30 +0200
committerMartin Polden <mpolden@mpolden.no>2017-09-06 13:20:30 +0200
commitb62cfd6bb8f86977dc36c02c1e065f9bc403e475 (patch)
treebc024202a59199ebcc41f2de2fd17a8952811d6a /controller-server
parentfb1818824b94e1ee4ca553065a2f6ba73b219ca7 (diff)
Use alias in record lookup
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java21
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java12
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; }