mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-03-26 21:33:05 +00:00
Merge pull request #433 from rjeffman/fix_dns_naptr_record
ipadnsrecord: fix record update when multiple records exist.
This commit is contained in:
@@ -1329,6 +1329,8 @@ def define_commands_for_present_state(module, zone_name, entry, res_find):
|
||||
name = to_text(entry['name'])
|
||||
args = gen_args(entry)
|
||||
|
||||
existing = find_dnsrecord(module, zone_name, name)
|
||||
|
||||
for record, fields in _RECORD_PARTS.items():
|
||||
part_fields = [f for f in fields if f in args]
|
||||
if part_fields and record in args:
|
||||
@@ -1359,19 +1361,14 @@ def define_commands_for_present_state(module, zone_name, entry, res_find):
|
||||
module.fail_json(msg="Cannot modify multiple records "
|
||||
"of the same type at once.")
|
||||
|
||||
if res_find is None or record not in res_find:
|
||||
mod_record = args[record][0]
|
||||
if existing is None:
|
||||
module.fail_json(msg="`%s` not found." % record)
|
||||
else:
|
||||
search_record = args[record][0]
|
||||
# update DNS record
|
||||
_args = {k: args[k] for k in part_fields if k in args}
|
||||
_args["idnsname"] = to_text(args["idnsname"])
|
||||
for dnsrecord in res_find[record]:
|
||||
if dnsrecord == search_record:
|
||||
_args[record] = search_record
|
||||
break
|
||||
else:
|
||||
module.fail_json(msg="`%s` not found." % record)
|
||||
_args[record] = mod_record
|
||||
if 'dns_ttl' in args:
|
||||
_args['dns_ttl'] = args['dns_ttl']
|
||||
_commands.append([zone_name, 'dnsrecord_mod', _args])
|
||||
|
||||
@@ -482,7 +482,7 @@
|
||||
# digest is sha1sum of 'host04."{{ testzone }}"'
|
||||
dlv_digest: 08ff468cb25ccd21642989294cc33570da5eb2ba
|
||||
register: result
|
||||
failed_when: not result.changed
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that 'host04' DLV record is present, again.
|
||||
ipadnsrecord:
|
||||
@@ -494,27 +494,40 @@
|
||||
dlv_digest_type: 1
|
||||
dlv_digest: 08ff468cb25ccd21642989294cc33570da5eb2ba
|
||||
register: result
|
||||
failed_when: result.changed
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure that 'host04' DLV record is present, with a different key tag.
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
zone_name: "{{ testzone }}"
|
||||
name: host04
|
||||
dlv_key_tag: 54321
|
||||
dlv_key_tag: 4321
|
||||
dlv_record: 12345 3 1 08ff468cb25ccd21642989294cc33570da5eb2ba
|
||||
register: result
|
||||
failed_when: not result.changed
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that 'host04' DLV record is present, with a different key tag, again.
|
||||
- name: Ensure that 'host04' DLV second record is present.
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
zone_name: "{{ testzone }}"
|
||||
name: host04
|
||||
dlv_key_tag: 4321
|
||||
dlv_algorithm: 2
|
||||
dlv_digest_type: 2
|
||||
# digest is sha1sum of 'second record'
|
||||
dlv_digest: da39a3ee5e6b4b0d3255bfef95601890afd80709
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that 'host04' DLV record is changed, in presence of multiple records.
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
zone_name: "{{ testzone }}"
|
||||
name: host04
|
||||
dlv_key_tag: 54321
|
||||
dlv_record: 12345 3 1 08ff468cb25ccd21642989294cc33570da5eb2ba
|
||||
dlv_record: 4321 3 1 08ff468cb25ccd21642989294cc33570da5eb2ba
|
||||
register: result
|
||||
failed_when: result.changed
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that 'host04' DLV record is absent.
|
||||
ipadnsrecord:
|
||||
@@ -524,7 +537,7 @@
|
||||
dlv_record: 54321 3 1 08ff468cb25ccd21642989294cc33570da5eb2ba
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: not result.changed
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that 'host04' DLV record is absent, again.
|
||||
ipadnsrecord:
|
||||
@@ -534,7 +547,17 @@
|
||||
dlv_record: 54321 3 1 08ff468cb25ccd21642989294cc33570da5eb2ba
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.changed
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure that 'host04' DLV record is absent.
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
zone_name: "{{ testzone }}"
|
||||
name: host04
|
||||
dlv_record: 4321 2 2 da39a3ee5e6b4b0d3255bfef95601890afd80709
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that dns record 'iron01' is present
|
||||
ipadnsrecord:
|
||||
@@ -843,17 +866,6 @@
|
||||
register: result
|
||||
failed_when: result.changed
|
||||
|
||||
- name: Ensure that '_sip._udp' service has NAPTR record is absent, again.
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
zone_name: "{{ testzone }}"
|
||||
name: _sip._udp
|
||||
record_type: NAPTR
|
||||
record_value: '100 10 U SIP+D2U !^.*$!sip:customer-service@example.com! .'
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.changed
|
||||
|
||||
- name: Ensure that 'host04' LOC record is present.
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
@@ -933,10 +945,10 @@
|
||||
naptr_preference: 10
|
||||
naptr_flags: "U"
|
||||
naptr_service: "SIP+D2U"
|
||||
naptr_regexp: "!^.*$!sip:customer-service@example.com!"
|
||||
naptr_regexp: "!^.*$!sip:info@example.com!"
|
||||
naptr_replacement: "."
|
||||
register: result
|
||||
failed_when: not result.changed
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that '_sip._udp' service has NAPTR record, again.
|
||||
ipadnsrecord:
|
||||
@@ -947,10 +959,10 @@
|
||||
naptr_preference: 10
|
||||
naptr_flags: "U"
|
||||
naptr_service: "SIP+D2U"
|
||||
naptr_regexp: "!^.*$!sip:customer-service@example.com!"
|
||||
naptr_regexp: "!^.*$!sip:info@example.com!"
|
||||
naptr_replacement: "."
|
||||
register: result
|
||||
failed_when: result.changed
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Change '_sip._udp' service NAPTR record `preference` to 20.
|
||||
ipadnsrecord:
|
||||
@@ -958,9 +970,43 @@
|
||||
zone_name: "{{ testzone }}"
|
||||
name: _sip._udp
|
||||
naptr_preference: 20
|
||||
naptr_rec: '100 10 U SIP+D2U !^.*$!sip:customer-service@example.com! .'
|
||||
naptr_rec: '100 10 U SIP+D2U !^.*$!sip:info@example.com! .'
|
||||
register: result
|
||||
failed_when: not result.changed
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that '_sip._udp' service has NAPTR record.
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
zone_name: "{{ testzone }}"
|
||||
name: _sip._udp
|
||||
naptr_order: 101
|
||||
naptr_preference: 11
|
||||
naptr_flags: "U"
|
||||
naptr_service: "SIP+D2U"
|
||||
naptr_regexp: "!^.*$!sip:debug@example.com!"
|
||||
naptr_replacement: "."
|
||||
|
||||
- name: Ensure that '_sip._udp' service has NAPTR record.
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
zone_name: "{{ testzone }}"
|
||||
name: _sip._udp
|
||||
naptr_order: 102
|
||||
naptr_preference: 12
|
||||
naptr_flags: "U"
|
||||
naptr_service: "SIP+D2U"
|
||||
naptr_regexp: "!^.*$!sip:prio@example.com!"
|
||||
naptr_replacement: "."
|
||||
|
||||
- name: Change '_sip._udp' service NAPTR record `preference` to 50, when multiple records are present. (BZ 1881436)
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
zone_name: "{{ testzone }}"
|
||||
name: _sip._udp
|
||||
naptr_preference: 50
|
||||
naptr_rec: '100 20 U SIP+D2U !^.*$!sip:info@example.com! .'
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that '_sip._udp' service has NAPTR record is absent.
|
||||
ipadnsrecord:
|
||||
@@ -968,10 +1014,10 @@
|
||||
zone_name: "{{ testzone }}"
|
||||
name: _sip._udp
|
||||
record_type: NAPTR
|
||||
record_value: '100 20 U SIP+D2U !^.*$!sip:customer-service@example.com! .'
|
||||
record_value: '100 50 U SIP+D2U !^.*$!sip:info@example.com! .'
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: not result.changed
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure that '_sip._udp' service has NAPTR record is absent, again.
|
||||
ipadnsrecord:
|
||||
@@ -979,10 +1025,19 @@
|
||||
zone_name: "{{ testzone }}"
|
||||
name: _sip._udp
|
||||
record_type: NAPTR
|
||||
record_value: '100 20 U SIP+D2U !^.*$!sip:customer-service@example.com! .'
|
||||
record_value: '100 50 U SIP+D2U !^.*$!sip:info@example.com! .'
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.changed
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Clear NAPTR records.
|
||||
ipadnsrecord:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
zone_name: "{{ testzone }}"
|
||||
name: _sip._udp
|
||||
del_all: yes
|
||||
state: absent
|
||||
|
||||
|
||||
- name: Ensure that '_sip._udp' service has SRV record.
|
||||
ipadnsrecord:
|
||||
|
||||
Reference in New Issue
Block a user