diff --git a/lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py b/lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py index 3f14970f39..7530aa118e 100644 --- a/lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py +++ b/lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py @@ -211,7 +211,7 @@ RECORD_ARGSPECS = dict( target=dict(type='str', required=True, aliases=['entry']) ), TXT=dict( - value=dict(type='str', required=True, aliases=['entry']) + value=dict(type='list', required=True, aliases=['entry']) ), # FUTURE: ensure all record types are supported (see https://github.com/Azure/azure-sdk-for-python/tree/master/azure-mgmt-dns/azure/mgmt/dns/models) ) @@ -375,7 +375,11 @@ class AzureRMRecordSet(AzureRMModuleBase): def gethash(self): if not getattr(self, '_cachedhash', None): spec = inspect.getargspec(self.__init__) - valuetuple = tuple([getattr(self, x, None) for x in spec.args if x != 'self']) + valuetuple = tuple( + map(lambda v: v if not isinstance(v, list) else str(v), [ + getattr(self, x, None) for x in spec.args if x != 'self' + ]) + ) self._cachedhash = hash(valuetuple) return self._cachedhash diff --git a/test/integration/targets/azure_rm_dnsrecordset/tasks/main.yml b/test/integration/targets/azure_rm_dnsrecordset/tasks/main.yml index 332b95a23c..800f292c0d 100644 --- a/test/integration/targets/azure_rm_dnsrecordset/tasks/main.yml +++ b/test/integration/targets/azure_rm_dnsrecordset/tasks/main.yml @@ -158,6 +158,26 @@ that: - results.changed +- name: create TXT records in a new record set + azure_rm_dnsrecordset: + resource_group: "{{ resource_group }}" + relative_name: "_txt.{{ domain_name }}.com" + zone_name: "{{ domain_name }}.com" + record_type: TXT + state: present + records: + - entry: "v=spf1 a -all" + - entry: "foo" + - entry: + - "bar" + - "baz" + register: results + +- name: Assert that TXT record set was created + assert: + that: + - results.changed + - name: Delete DNS zone azure_rm_dnszone: resource_group: "{{ resource_group }}"