diff --git a/src/octodns_netbox_dns/__init__.py b/src/octodns_netbox_dns/__init__.py index 56edd41..b660b60 100644 --- a/src/octodns_netbox_dns/__init__.py +++ b/src/octodns_netbox_dns/__init__.py @@ -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) diff --git a/tests/test_make_absolute.py b/tests/test_make_absolute.py index a36b5dd..39a7a3a 100644 --- a/tests/test_make_absolute.py +++ b/tests/test_make_absolute.py @@ -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." \ No newline at end of file