Skip to content

Commit ad474fb

Browse files
authored
Merge pull request #122 from rlaakkol/output-nameservers
Add option to log name server information on apply
2 parents f944a33 + a555ed9 commit ad474fb

File tree

2 files changed

+27
-11
lines changed

2 files changed

+27
-11
lines changed

octodns_cloudflare/__init__.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,15 @@ def zones(self):
231231
else:
232232
page = None
233233

234-
self._zones = IdnaDict({f'{z["name"]}.': z['id'] for z in zones})
234+
self._zones = IdnaDict(
235+
{
236+
f'{z["name"]}.': {
237+
'id': z['id'],
238+
'name_servers': z['name_servers'],
239+
}
240+
for z in zones
241+
}
242+
)
235243

236244
return self._zones
237245

@@ -485,7 +493,7 @@ def _data_for_SSHFP(self, _type, records):
485493

486494
def zone_records(self, zone):
487495
if zone.name not in self._zone_records:
488-
zone_id = self.zones.get(zone.name, False)
496+
zone_id = self.zones.get(zone.name, {}).get('id', False)
489497
if not zone_id:
490498
return []
491499

@@ -1033,7 +1041,7 @@ def _gen_key(self, data):
10331041

10341042
def _apply_Create(self, change):
10351043
new = change.new
1036-
zone_id = self.zones[new.zone.name]
1044+
zone_id = self.zones[new.zone.name]['id']
10371045
if new._type == 'URLFWD':
10381046
path = f'/zones/{zone_id}/pagerules'
10391047
else:
@@ -1043,7 +1051,7 @@ def _apply_Create(self, change):
10431051

10441052
def _apply_Update(self, change):
10451053
zone = change.new.zone
1046-
zone_id = self.zones[zone.name]
1054+
zone_id = self.zones[zone.name]['id']
10471055
hostname = zone.hostname_from_fqdn(change.new.fqdn[:-1])
10481056
_type = change.new._type
10491057

@@ -1176,7 +1184,7 @@ def _apply_Delete(self, change):
11761184
existing_name = existing.fqdn[:-1]
11771185
# Make sure to map ALIAS to CNAME when looking for the target to delete
11781186
existing_type = 'CNAME' if existing._type == 'ALIAS' else existing._type
1179-
zone_id = self.zones[existing.zone.name]
1187+
zone_id = self.zones.get(existing.zone.name, {}).get('id', False)
11801188
for record in self.zone_records(existing.zone):
11811189
if 'targets' in record and self.pagerules:
11821190
uri = record['targets'][0]['constraint']['value']
@@ -1224,9 +1232,17 @@ def _apply(self, plan):
12241232
data['account'] = {'id': self.account_id}
12251233
resp = self._try_request('POST', '/zones', data=data)
12261234
zone_id = resp['result']['id']
1227-
self.zones[name] = zone_id
1235+
name_servers = resp['result']['name_servers']
1236+
self.zones[name] = {'id': zone_id, 'name_servers': name_servers}
12281237
self._zone_records[name] = {}
12291238

1239+
self.log.info(
1240+
'zone %s (id %s) name servers: %s',
1241+
name,
1242+
self.zones[name]['id'],
1243+
self.zones[name]['name_servers'],
1244+
)
1245+
12301246
# Force the operation order to be Delete() -> Create() -> Update()
12311247
# This will help avoid problems in updating a CNAME record into an
12321248
# A record and vice-versa

tests/test_octodns_provider_cloudflare.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ def test_apply(self):
285285

286286
provider._request.side_effect = [
287287
self.empty, # no zones
288-
{'result': {'id': 42}}, # zone create
288+
{'result': {'id': 42, 'name_servers': ['foo']}}, # zone create
289289
] + [
290290
None
291291
] * 34 # individual record creates
@@ -595,7 +595,7 @@ def test_apply(self):
595595

596596
provider._request.side_effect = [
597597
self.empty, # no zones
598-
{'result': {'id': 42}}, # zone create
598+
{'result': {'id': 42, 'name_servers': ['foo']}}, # zone create
599599
] + [
600600
None
601601
] * 34 # individual record creates
@@ -715,7 +715,7 @@ def test_update_add_swap(self):
715715
provider._request.side_effect = [
716716
CloudflareRateLimitError('{}'),
717717
self.empty, # no zones
718-
{'result': {'id': 42}}, # zone create
718+
{'result': {'id': 42, 'name_servers': ['foo']}}, # zone create
719719
None,
720720
None,
721721
None,
@@ -888,7 +888,7 @@ def test_update_delete(self):
888888
provider._request.side_effect = [
889889
CloudflareRateLimitError('{}'),
890890
self.empty, # no zones
891-
{'result': {'id': 42}}, # zone create
891+
{'result': {'id': 42, 'name_servers': ['foo']}}, # zone create
892892
None,
893893
None,
894894
None,
@@ -1024,7 +1024,7 @@ def test_pagerules(self):
10241024
# Set things up to preexist/mock as necessary
10251025
zone = Zone('unit.tests.', [])
10261026
# Stuff a fake zone id in place
1027-
provider._zones = {zone.name: '42'}
1027+
provider._zones = {zone.name: {'id': '42', 'name_servers': ['foo']}}
10281028
provider._request = Mock()
10291029
side_effect = [
10301030
{

0 commit comments

Comments
 (0)