summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-04-30 10:28:09 +0200
committerGitHub <noreply@github.com>2019-04-30 10:28:09 +0200
commitfd28fac6ac4983a9f1c8bdc8bff9955d2a6ab8f4 (patch)
treebb15138f8ef07bfee3b38df521744b72021c0f5c /controller-api
parent7fb9ed41d77810803772f9459a6df5076127555c (diff)
parent141f7976be4cc43cce142e95bd32a3478d31f341 (diff)
Merge pull request #9224 from vespa-engine/mpolden/name-service-queue
Queue name service requests
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java14
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java3
2 files changed, 15 insertions, 2 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java
index c377b68bb22..b92eb80df80 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/AliasTarget.java
@@ -38,6 +38,11 @@ public class AliasTarget {
return zone;
}
+ /** Returns the fields in this encoded as record data */
+ public RecordData asData() {
+ return RecordData.from(name.value() + "/" + dnsZone + "/" + zone.value());
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -56,4 +61,13 @@ public class AliasTarget {
return String.format("rotation target %s [zone: %s] in %s", name, dnsZone, zone);
}
+ public static AliasTarget from(RecordData data) {
+ var parts = data.asString().split("/");
+ if (parts.length != 3) {
+ throw new IllegalArgumentException("Expected data to be on format [hostname]/[DNS zone]/[zone], but got " +
+ data.asString());
+ }
+ return new AliasTarget(HostName.from(parts[0]), parts[1], ZoneId.from(parts[2]));
+ }
+
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java
index dfed0476aab..80b3a0bf25c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/dns/MemoryNameService.java
@@ -33,8 +33,7 @@ public class MemoryNameService implements NameService {
public List<Record> createAlias(RecordName name, Set<AliasTarget> targets) {
var records = targets.stream()
.sorted((a, b) -> Comparator.comparing(AliasTarget::name).compare(a, b))
- .map(target -> new Record(Record.Type.ALIAS, name,
- RecordData.fqdn(target.name().value())))
+ .map(target -> new Record(Record.Type.ALIAS, name, target.asData()))
.collect(Collectors.toList());
// Satisfy idempotency contract of interface
removeRecords(findRecords(Record.Type.ALIAS, name));