always normalize zones

This commit is contained in:
Erik Hansson 2024-08-08 15:47:49 +02:00
parent 96d4bff5ff
commit f1f6602985
2 changed files with 27 additions and 5 deletions

View file

@ -75,14 +75,19 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
self.make_absolute = make_absolute
self.disable_ptr = disable_ptr
def _make_absolute(self, value: str) -> str:
def _make_absolute(self, value: str, force : bool = False) -> str:
"""return dns name with trailing dot to make it absolute
@param value: dns record value
@param force: when `True`, disregard configuration option `make_absolute`
@return: absolute dns record value
"""
if not self.make_absolute or value.endswith("."):
if value.endswith("."):
return value
if not (self.make_absolute or force):
return value
absolute_value = value + "."
@ -438,5 +443,6 @@ class NetBoxDNSProvider(octodns.provider.base.BaseProvider):
"""
query_params = {"status": "active", **self.nb_view}
zones = self.api.plugins.netbox_dns.zones.filter(**query_params)
zones = [self._make_absolute(z.name, True) for z in zones]
return sorted([self._make_absolute(z.name) for z in zones])
return sorted(zones)

View file

@ -11,7 +11,7 @@ DEFAULT_CONFIG = {
}
def test1():
def test_absolute():
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
rcd = "example.com"
absolute = nbdns._make_absolute(rcd)
@ -19,9 +19,25 @@ def test1():
assert absolute == "example.com."
def test2():
def test_noop():
nbdns = NetBoxDNSProvider(**DEFAULT_CONFIG)
rcd = "example.com."
absolute = nbdns._make_absolute(rcd)
assert absolute == "example.com."
def test_disabled():
args = {**DEFAULT_CONFIG, "make_absolute": False}
nbdns = NetBoxDNSProvider(**args)
rcd = "example.com"
relative = nbdns._make_absolute(rcd, force=False)
assert relative == "example.com"
def test_force():
args = {**DEFAULT_CONFIG, "make_absolute": False}
nbdns = NetBoxDNSProvider(**args)
rcd = "example.com"
absolute = nbdns._make_absolute(rcd, force=True)
assert absolute == "example.com."