Browse Source

check for identical monitor and skip creating one if found

pull/746/head
Sham 4 years ago
parent
commit
65056fb4cd
2 changed files with 14 additions and 4 deletions
  1. +10
    -4
      octodns/provider/ns1.py
  2. +4
    -0
      tests/test_octodns_provider_ns1.py

+ 10
- 4
octodns/provider/ns1.py View File

@ -1162,15 +1162,21 @@ class Ns1Provider(BaseProvider):
# Build a list of primary values for each pool, including their
# feed_id (monitor)
value_feed = dict()
pool_answers = defaultdict(list)
for pool_name, pool in sorted(pools.items()):
for value in pool.data['values']:
weight = value['weight']
value = value['value']
existing = existing_monitors.get(value)
monitor_id, feed_id = self._monitor_sync(record, value,
existing)
active_monitors.add(monitor_id)
feed_id = value_feed.get(value)
# check for identical monitor and skip creating one if found
if not feed_id:
existing = existing_monitors.get(value)
monitor_id, feed_id = self._monitor_sync(record, value,
existing)
value_feed[value] = feed_id
active_monitors.add(monitor_id)
pool_answers[pool_name].append({
'answer': [value],
'weight': weight,


+ 4
- 0
tests/test_octodns_provider_ns1.py View File

@ -1332,6 +1332,10 @@ class TestNs1ProviderDynamic(TestCase):
# This indirectly calls into _params_for_dynamic and tests the
# handling to get there
record = self.record()
# copy an existing answer from a different pool to 'lhr' so
# in order to test answer repetition across pools (monitor reuse)
record.dynamic._data()['pools']['lhr']['values'].append(
record.dynamic._data()['pools']['iad']['values'][0])
ret, _ = provider._params_for_A(record)
# Given that record has both country and region in the rules,


Loading…
Cancel
Save