add @ support and make cname records absolute

This commit is contained in:
Ivan Schaller 2023-11-10 16:32:07 +01:00
parent d4c095540f
commit 9d79906f96
1 changed files with 15 additions and 11 deletions

View File

@ -121,24 +121,28 @@ class NetBoxDNSSource(octodns.provider.base.BaseProvider):
nb_records = self._api.plugins.netbox_dns.records.filter(zone_id=nb_zone.id)
for nb_record in nb_records:
self.log.debug(f"{nb_record.name!r} {nb_record.type!r} {nb_record.value!r}")
name = nb_record.name
if name == "@":
name = ""
nb_zone_default_ttl = nb_zone.default_ttl
rcd_name: str = nb_record.name if nb_record.name != "@" else ""
rcd_value: str = nb_record.value if nb_record.value != "@" else nb_record.zone.name
# make CNAME record absolute
if nb_record.type == "CNAME" and rcd_value[-1] != ".":
rcd_value = rcd_value + "."
if nb_record.ttl:
nb_ttl = nb_record.ttl
elif nb_record.type == "NS":
nb_ttl = nb_zone.soa_refresh
else:
nb_ttl = nb_zone_default_ttl
nb_ttl = nb_zone.default_ttl
data = {
"name": name,
"name": rcd_name,
"type": nb_record.type,
"ttl": nb_ttl,
"values": [],
}
rdata = dns.rdata.from_text("IN", nb_record.type, nb_record.value)
rdata = dns.rdata.from_text("IN", nb_record.type, rcd_value)
match rdata.rdtype.name:
case "A" | "AAAA":
value = rdata.address
@ -197,7 +201,7 @@ class NetBoxDNSSource(octodns.provider.base.BaseProvider):
continue
case "SPF" | "TXT":
value = nb_record.value
value = rcd_value
case "SRV":
value = {
@ -210,9 +214,9 @@ class NetBoxDNSSource(octodns.provider.base.BaseProvider):
case _:
raise ValueError
if (name, nb_record.type) not in records:
records[(name, nb_record.type)] = data
records[(name, nb_record.type)]["values"].append(value)
if (rcd_name, nb_record.type) not in records:
records[(rcd_name, nb_record.type)] = data
records[(rcd_name, nb_record.type)]["values"].append(value)
for data in records.values():
if len(data["values"]) == 1: