Browse Source

Added suggestions from comments

pull/1161/head
William Gauthier 2 years ago
parent
commit
aa85f7e533
2 changed files with 34 additions and 35 deletions
  1. +16
    -5
      octodns/processor/arpa.py
  2. +18
    -30
      tests/test_octodns_processor_arpa.py

+ 16
- 5
octodns/processor/arpa.py View File

@ -44,6 +44,20 @@ class AutoArpa(BaseProcessor):
return desired
def _order_and_unique_fqdns(self, fqdns, max_auto_arpa):
fqdns = sorted(fqdns)
seen = set()
ordered = sorted(fqdns)
fqdns = []
for _, fqdn in ordered:
if fqdn in seen:
continue
fqdns.append(fqdn)
seen.add(fqdn)
if len(seen) >= max_auto_arpa:
break
return fqdns
def populate(self, zone, target=False, lenient=False):
self.log.debug(
'populate: name=%s, target=%s, lenient=%s',
@ -59,11 +73,8 @@ class AutoArpa(BaseProcessor):
for arpa, fqdns in self._records.items():
if arpa.endswith(f'.{zone_name}'):
name = arpa[:-n]
fqdns = list(set(fqdns))
fqdns = sorted(fqdns)
fqdns = [d[1] for d in fqdns]
fqdns = fqdns[:self.max_auto_arpa]
# Note: this takes a list of (priority, fqdn) tuples and returns the ordered and uniqified list of fqdns.
fqdns = self._order_and_unique_fqdns(fqdns, self.max_auto_arpa)
record = Record.new(
zone,
name,


+ 18
- 30
tests/test_octodns_processor_arpa.py View File

@ -165,17 +165,13 @@ class TestAutoArpa(TestCase):
zone.add_record(record)
aa = AutoArpa('auto-arpa')
aa.process_source_zone(zone, [])
aa._records = list(set(aa._records))
self.assertEqual(
{
'4.3.2.1.in-addr.arpa.': [(999, 'dynamic.unit.tests.')],
'5.3.2.1.in-addr.arpa.': [(999, 'dynamic.unit.tests.')],
'3.3.3.3.in-addr.arpa.': [(999, 'dynamic.unit.tests.')],
'4.4.4.4.in-addr.arpa.': [(999, 'dynamic.unit.tests.')],
'5.5.5.5.in-addr.arpa.': [(999, 'dynamic.unit.tests.')],
},
aa._records,
)
zones = ['4.3.2.1.in-addr.arpa.', '5.3.2.1.in-addr.arpa.', '3.3.3.3.in-addr.arpa.', '4.4.4.4.in-addr.arpa.', '5.5.5.5.in-addr.arpa.']
for zone in zones:
unique_values = aa._order_and_unique_fqdns(aa._records[f'{zone}'], 999)
self.assertEqual(
[('dynamic.unit.tests.')],
unique_values
)
def test_multiple_names(self):
zone = Zone('unit.tests.', [])
@ -268,24 +264,16 @@ class TestAutoArpa(TestCase):
self.assertEqual(3600, ptr.ttl)
def test_arpa_priority(self):
zone = Zone('unit.tests.', [])
record = Record.new(
zone,
'a',
{'ttl': 32, 'type': 'A', 'value': '1.2.3.4'},
)
zone.add_record(record)
record2 = Record.new(
zone,
'b',
{'ttl': 32, 'type': 'A', 'value': '1.2.3.4', 'octodns': { 'auto_arpa_priority': 1}},
)
zone.add_record(record2)
aa = AutoArpa('auto-arpa')
aa = AutoArpa('auto-arpa', ttl=1600, populate_should_replace=False, max_auto_arpa=1)
aa.process_source_zone(zone, [])
duplicate_values = [(999, 'a.unit.tests.'), (1, 'a.unit.tests.')]
self.assertEqual(['a.unit.tests.'], aa._order_and_unique_fqdns(duplicate_values, max_auto_arpa=999))
arpa = Zone('3.2.1.in-addr.arpa.', [])
aa.populate(arpa)
(ptr), = arpa.records
self.assertEqual(record2.fqdn, ptr.value)
duplicate_values_2 = [(999, 'a.unit.tests.'), (999, 'a.unit.tests.')]
self.assertEqual(['a.unit.tests.'], aa._order_and_unique_fqdns(duplicate_values_2, max_auto_arpa=999))
ordered_values = [(999, 'a.unit.tests.'), (1, 'b.unit.tests.')]
self.assertEqual(['b.unit.tests.', 'a.unit.tests.'], aa._order_and_unique_fqdns(ordered_values, max_auto_arpa=999))
max_one_value = [(999, 'a.unit.tests.'), (1, 'b.unit.tests.')]
self.assertEqual(['b.unit.tests.'], aa._order_and_unique_fqdns(max_one_value, max_auto_arpa=1))

Loading…
Cancel
Save