From 14fc13778844fea9038530582dc90960068b577a Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Wed, 16 Feb 2022 15:46:46 -0800 Subject: [PATCH] Use Zone.root_ns to avoid lookping/searching --- octodns/provider/base.py | 34 +++++++++++++++++----------------- tests/test_octodns_manager.py | 2 ++ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/octodns/provider/base.py b/octodns/provider/base.py index 357dc83..3bc8094 100644 --- a/octodns/provider/base.py +++ b/octodns/provider/base.py @@ -94,14 +94,15 @@ class BaseProvider(BaseSource): record = record.copy() record.values = [record.value] desired.add_record(record, replace=True) - elif record._type == 'NS' and record.name == '' and \ - not self.SUPPORTS_ROOT_NS: - # ignore, we can't manage root NS records - msg = \ - f'root NS record not supported for {record.fqdn}' - fallback = 'ignoring it' - self.supports_warn_or_except(msg, fallback) - desired.remove_record(record) + + record = desired.root_ns + if record and not self.SUPPORTS_ROOT_NS: + # ignore, we can't manage root NS records + msg = \ + f'root NS record not supported for {record.fqdn}' + fallback = 'ignoring it' + self.supports_warn_or_except(msg, fallback) + desired.remove_record(record) return desired @@ -124,15 +125,14 @@ class BaseProvider(BaseSource): provider configuration. ''' - for record in existing.records: - if record._type == 'NS' and record.name == '' and \ - not self.SUPPORTS_ROOT_NS: - # ignore, we can't manage root NS records - msg = \ - f'root NS record not supported for {record.fqdn}' - fallback = 'ignoring it' - self.supports_warn_or_except(msg, fallback) - existing.remove_record(record) + record = existing.root_ns + if record and not self.SUPPORTS_ROOT_NS: + # ignore, we can't manage root NS records + msg = \ + f'root NS record not supported for {record.fqdn}' + fallback = 'ignoring it' + self.supports_warn_or_except(msg, fallback) + existing.remove_record(record) return existing diff --git a/tests/test_octodns_manager.py b/tests/test_octodns_manager.py index 1e65386..9e68030 100644 --- a/tests/test_octodns_manager.py +++ b/tests/test_octodns_manager.py @@ -216,6 +216,8 @@ class TestManager(TestCase): with open(join(tmpdir.dirname, 'unit.tests.yaml'), 'w') as fh: fh.write('---\n{}') + # compare doesn't use _process_desired_zone and thus doesn't filter + # out root NS records, that seems fine/desirable changes = manager.compare(['in'], ['dump'], 'unit.tests.') self.assertEqual(21, len(changes))