diff --git a/changelogs/fragments/dns-records-order-is-not-guaranteed.yml b/changelogs/fragments/dns-records-order-is-not-guaranteed.yml new file mode 100644 index 0000000..5740103 --- /dev/null +++ b/changelogs/fragments/dns-records-order-is-not-guaranteed.yml @@ -0,0 +1,2 @@ +bugfixes: + - zone_rrset - Records order is not guaranteed, the module will not generate a diff if the order of records changes. diff --git a/plugins/modules/zone_rrset.py b/plugins/modules/zone_rrset.py index 795f270..1871316 100644 --- a/plugins/modules/zone_rrset.py +++ b/plugins/modules/zone_rrset.py @@ -321,6 +321,9 @@ class AnsibleHCloudZoneRRSet(AnsibleHCloud): current = [self._prepare_result_record(o) for o in self.hcloud_zone_rrset.records] wanted = [self._prepare_result_record(ZoneRecord.from_dict(o)) for o in self.module.params.get("records")] + current = sorted(current, key=lambda x: x["value"]) + wanted = sorted(wanted, key=lambda x: x["value"]) + return current != wanted def present(self): diff --git a/tests/integration/targets/zone_rrset/tasks/test.yml b/tests/integration/targets/zone_rrset/tasks/test.yml index 38d1ae2..f6e7391 100644 --- a/tests/integration/targets/zone_rrset/tasks/test.yml +++ b/tests/integration/targets/zone_rrset/tasks/test.yml @@ -123,10 +123,11 @@ key: changed new: value records: - - value: 201.118.10.11 - comment: web server 1 + # Order is not guaranteed, should still be idempotent - value: 201.118.10.13 comment: web server 3 + - value: 201.118.10.11 + comment: web server 1 change_protection: true register: result - name: Verify update idempotency