add @ support and make cname records absolute
This commit is contained in:
parent
d4c095540f
commit
9d79906f96
|
@ -121,24 +121,28 @@ class NetBoxDNSSource(octodns.provider.base.BaseProvider):
|
||||||
nb_records = self._api.plugins.netbox_dns.records.filter(zone_id=nb_zone.id)
|
nb_records = self._api.plugins.netbox_dns.records.filter(zone_id=nb_zone.id)
|
||||||
for nb_record in nb_records:
|
for nb_record in nb_records:
|
||||||
self.log.debug(f"{nb_record.name!r} {nb_record.type!r} {nb_record.value!r}")
|
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:
|
if nb_record.ttl:
|
||||||
nb_ttl = nb_record.ttl
|
nb_ttl = nb_record.ttl
|
||||||
elif nb_record.type == "NS":
|
elif nb_record.type == "NS":
|
||||||
nb_ttl = nb_zone.soa_refresh
|
nb_ttl = nb_zone.soa_refresh
|
||||||
else:
|
else:
|
||||||
nb_ttl = nb_zone_default_ttl
|
nb_ttl = nb_zone.default_ttl
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
"name": name,
|
"name": rcd_name,
|
||||||
"type": nb_record.type,
|
"type": nb_record.type,
|
||||||
"ttl": nb_ttl,
|
"ttl": nb_ttl,
|
||||||
"values": [],
|
"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:
|
match rdata.rdtype.name:
|
||||||
case "A" | "AAAA":
|
case "A" | "AAAA":
|
||||||
value = rdata.address
|
value = rdata.address
|
||||||
|
@ -197,7 +201,7 @@ class NetBoxDNSSource(octodns.provider.base.BaseProvider):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
case "SPF" | "TXT":
|
case "SPF" | "TXT":
|
||||||
value = nb_record.value
|
value = rcd_value
|
||||||
|
|
||||||
case "SRV":
|
case "SRV":
|
||||||
value = {
|
value = {
|
||||||
|
@ -210,9 +214,9 @@ class NetBoxDNSSource(octodns.provider.base.BaseProvider):
|
||||||
case _:
|
case _:
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
|
||||||
if (name, nb_record.type) not in records:
|
if (rcd_name, nb_record.type) not in records:
|
||||||
records[(name, nb_record.type)] = data
|
records[(rcd_name, nb_record.type)] = data
|
||||||
records[(name, nb_record.type)]["values"].append(value)
|
records[(rcd_name, nb_record.type)]["values"].append(value)
|
||||||
|
|
||||||
for data in records.values():
|
for data in records.values():
|
||||||
if len(data["values"]) == 1:
|
if len(data["values"]) == 1:
|
||||||
|
|
Loading…
Reference in New Issue