summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-04-26 14:18:48 +0200
committerMartin Polden <mpolden@mpolden.no>2019-04-29 13:11:37 +0200
commit555d63309ff1a798ab093ecdb91d00665ed3c7b0 (patch)
treeff7ddbb8399a8138ae04579768bcb7119e0f93fc /controller-api
parentc9f9f467df69a65fe1a403f58411259e3c0fa823 (diff)
Add persistent queue for 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));