diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-04-26 14:18:48 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-04-29 13:11:37 +0200 |
commit | 555d63309ff1a798ab093ecdb91d00665ed3c7b0 (patch) | |
tree | ff7ddbb8399a8138ae04579768bcb7119e0f93fc /controller-api | |
parent | c9f9f467df69a65fe1a403f58411259e3c0fa823 (diff) |
Add persistent queue for name service requests
Diffstat (limited to 'controller-api')
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)); |