[PR #9649/19d00496 backport][stable-9] cloudflare_dns: fix crash when deleting a DNS record or when updating a record with solo=true (#9654)
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>
(cherry picked from commit 19d0049698
)
Co-authored-by: valievkarim <valievkarim@gmail.com>
pull/9670/head
parent
2eb067e3e0
commit
5d86045048
|
@ -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).
|
|
@ -645,6 +645,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:
|
||||
|
@ -652,11 +653,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