cloudflare_dns: fix crash when deleting a DNS record or when updating a record with solo=true (#9649)
* cloudflare_dns: fix crash when deleting a DNS record or when updating a record with solo=true On 2025-01-27, Cloudflare removed the 'zone_id' field from the DNS record API responses. This caused a KeyError in the delete_dns_records method, which previously relied on rr['zone_id']. This commit ensures the zone ID is retrieved via _get_zone_id() rather than using the no-longer-provided 'zone_id' field in the record response. Reference: https://developers.cloudflare.com/dns/changelog/#2025-01-27 * Add changelog fragment * Update changelogs/fragments/9649-cloudflare_dns-fix-crash-when-deleting-record.yml Co-authored-by: Felix Fontein <felix@fontein.de> * Update changelogs/fragments/9649-cloudflare_dns-fix-crash-when-deleting-record.yml Co-authored-by: Felix Fontein <felix@fontein.de> --------- Co-authored-by: Felix Fontein <felix@fontein.de>pull/9660/head
parent
37a9413a80
commit
19d0049698
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- cloudflare_dns - fix crash when deleting a DNS record or when updating a record with ``solo=true`` (https://github.com/ansible-collections/community.general/issues/9652, https://github.com/ansible-collections/community.general/pull/9649).
|
|
@ -685,6 +685,7 @@ class CloudflareAPI(object):
|
|||
else:
|
||||
search_value = content
|
||||
|
||||
zone_id = self._get_zone_id(params['zone'])
|
||||
records = self.get_dns_records(params['zone'], params['type'], search_record, search_value)
|
||||
|
||||
for rr in records:
|
||||
|
@ -692,11 +693,11 @@ class CloudflareAPI(object):
|
|||
if not ((rr['type'] == params['type']) and (rr['name'] == search_record) and (rr['content'] == content)):
|
||||
self.changed = True
|
||||
if not self.module.check_mode:
|
||||
result, info = self._cf_api_call('/zones/{0}/dns_records/{1}'.format(rr['zone_id'], rr['id']), 'DELETE')
|
||||
result, info = self._cf_api_call('/zones/{0}/dns_records/{1}'.format(zone_id, rr['id']), 'DELETE')
|
||||
else:
|
||||
self.changed = True
|
||||
if not self.module.check_mode:
|
||||
result, info = self._cf_api_call('/zones/{0}/dns_records/{1}'.format(rr['zone_id'], rr['id']), 'DELETE')
|
||||
result, info = self._cf_api_call('/zones/{0}/dns_records/{1}'.format(zone_id, rr['id']), 'DELETE')
|
||||
return self.changed
|
||||
|
||||
def ensure_dns_record(self, **kwargs):
|
||||
|
|
Loading…
Reference in New Issue