mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Implement populate exists for DynProvider
This commit is contained in:
@@ -353,6 +353,7 @@ class DynProvider(BaseProvider):
|
|||||||
self.log.debug('populate: name=%s, target=%s, lenient=%s', zone.name,
|
self.log.debug('populate: name=%s, target=%s, lenient=%s', zone.name,
|
||||||
target, lenient)
|
target, lenient)
|
||||||
|
|
||||||
|
exists = False
|
||||||
before = len(zone.records)
|
before = len(zone.records)
|
||||||
|
|
||||||
self._check_dyn_sess()
|
self._check_dyn_sess()
|
||||||
@@ -360,10 +361,12 @@ class DynProvider(BaseProvider):
|
|||||||
td_records = set()
|
td_records = set()
|
||||||
if self.traffic_directors_enabled:
|
if self.traffic_directors_enabled:
|
||||||
td_records = self._populate_traffic_directors(zone)
|
td_records = self._populate_traffic_directors(zone)
|
||||||
|
exists = True
|
||||||
|
|
||||||
dyn_zone = _CachingDynZone.get(zone.name[:-1])
|
dyn_zone = _CachingDynZone.get(zone.name[:-1])
|
||||||
|
|
||||||
if dyn_zone:
|
if dyn_zone:
|
||||||
|
exists = True
|
||||||
values = defaultdict(lambda: defaultdict(list))
|
values = defaultdict(lambda: defaultdict(list))
|
||||||
for _type, records in dyn_zone.get_all_records().items():
|
for _type, records in dyn_zone.get_all_records().items():
|
||||||
if _type == 'soa_records':
|
if _type == 'soa_records':
|
||||||
@@ -382,8 +385,9 @@ class DynProvider(BaseProvider):
|
|||||||
if record not in td_records:
|
if record not in td_records:
|
||||||
zone.add_record(record)
|
zone.add_record(record)
|
||||||
|
|
||||||
self.log.info('populate: found %s records',
|
self.log.info('populate: found %s records, exists=%s',
|
||||||
len(zone.records) - before)
|
len(zone.records) - before, exists)
|
||||||
|
return exists
|
||||||
|
|
||||||
def _kwargs_for_A(self, record):
|
def _kwargs_for_A(self, record):
|
||||||
return [{
|
return [{
|
||||||
|
@@ -430,6 +430,7 @@ class TestDynProvider(TestCase):
|
|||||||
update_mock.assert_not_called()
|
update_mock.assert_not_called()
|
||||||
provider.apply(plan)
|
provider.apply(plan)
|
||||||
update_mock.assert_called()
|
update_mock.assert_called()
|
||||||
|
self.assertFalse(plan.exists)
|
||||||
add_mock.assert_called()
|
add_mock.assert_called()
|
||||||
# Once for each dyn record (8 Records, 2 of which have dual values)
|
# Once for each dyn record (8 Records, 2 of which have dual values)
|
||||||
self.assertEquals(15, len(add_mock.call_args_list))
|
self.assertEquals(15, len(add_mock.call_args_list))
|
||||||
@@ -474,6 +475,7 @@ class TestDynProvider(TestCase):
|
|||||||
plan = provider.plan(new)
|
plan = provider.plan(new)
|
||||||
provider.apply(plan)
|
provider.apply(plan)
|
||||||
update_mock.assert_called()
|
update_mock.assert_called()
|
||||||
|
self.assertTrue(plan.exists)
|
||||||
# we expect 4 deletes, 2 from actual deletes and 2 from
|
# we expect 4 deletes, 2 from actual deletes and 2 from
|
||||||
# updates which delete and recreate
|
# updates which delete and recreate
|
||||||
self.assertEquals(4, len(delete_mock.call_args_list))
|
self.assertEquals(4, len(delete_mock.call_args_list))
|
||||||
|
Reference in New Issue
Block a user