mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Handle non-existent zones case in extra_changes
This commit is contained in:
@@ -1130,16 +1130,21 @@ class Ns1Provider(BaseProvider):
|
||||
|
||||
def _get_ns1_filters(self, ns1_zone_name):
|
||||
ns1_filters = {}
|
||||
ns1_zone = self._client.zones_retrieve(ns1_zone_name)
|
||||
for ns1_record in ns1_zone['records']:
|
||||
if ns1_record.get('tier', 1) > 1:
|
||||
# Need to get the full record data for geo records
|
||||
full_rec = self._client.records_retrieve(ns1_zone_name,
|
||||
ns1_record['domain'],
|
||||
ns1_record['type'])
|
||||
if 'filters' in full_rec:
|
||||
filter_key = '{}.'.format(ns1_record['domain'])
|
||||
ns1_filters[filter_key] = full_rec['filters']
|
||||
try:
|
||||
ns1_zone = self._client.zones_retrieve(ns1_zone_name)
|
||||
for ns1_record in ns1_zone['records']:
|
||||
if ns1_record.get('tier', 1) > 1:
|
||||
# Need to get the full record data for geo records
|
||||
full_rec = self._client.records_retrieve(
|
||||
ns1_zone_name,
|
||||
ns1_record['domain'],
|
||||
ns1_record['type'])
|
||||
if 'filters' in full_rec:
|
||||
filter_key = '{}.'.format(ns1_record['domain'])
|
||||
ns1_filters[filter_key] = full_rec['filters']
|
||||
except ResourceException as e:
|
||||
if e.message != self.ZONE_NOT_FOUND_MESSAGE:
|
||||
raise
|
||||
return ns1_filters
|
||||
|
||||
def _disabled_flag_in_filters(self, filters, domain):
|
||||
|
||||
@@ -1219,10 +1219,27 @@ class TestNs1ProviderDynamic(TestCase):
|
||||
self.assertFalse(extra)
|
||||
monitors_for_mock.assert_not_called()
|
||||
|
||||
# Simple record, ignored
|
||||
# Non-existent zone. No changes
|
||||
monitors_for_mock.reset_mock()
|
||||
zones_retrieve_mock.side_effect = \
|
||||
ResourceException('server error: zone not found')
|
||||
records_retrieve_mock.reset_mock()
|
||||
extra = provider._extra_changes(desired, [])
|
||||
self.assertFalse(extra)
|
||||
|
||||
# Unexpected exception message
|
||||
zones_retrieve_mock.reset_mock()
|
||||
zones_retrieve_mock.side_effect = ResourceException('boom')
|
||||
with self.assertRaises(ResourceException) as ctx:
|
||||
extra = provider._extra_changes(desired, [])
|
||||
self.assertEquals(zones_retrieve_mock.side_effect, ctx.exception)
|
||||
|
||||
# Simple record, ignored, filter update lookups ignored
|
||||
monitors_for_mock.reset_mock()
|
||||
zones_retrieve_mock.reset_mock()
|
||||
records_retrieve_mock.reset_mock()
|
||||
zones_retrieve_mock.side_effect = \
|
||||
ResourceException('server error: zone not found')
|
||||
|
||||
simple = Record.new(desired, '', {
|
||||
'ttl': 32,
|
||||
|
||||
Reference in New Issue
Block a user