dnsconfig: Fix management of forwarders.

If one tries to set a list of forwarders which include an already
existing forwarder, the existing forwarder is removed, and the list
of configured forwarders contain only the new ones.

This patch fixes this behavior by setting a union of the currently
available forwarders and the list of forwarders provided in the
playbook.

Tests were added to ensure this behavior.
This commit is contained in:
Rafael Guterres Jeffman
2022-01-19 09:54:16 -03:00
parent 04a8299be6
commit dead467982
2 changed files with 50 additions and 3 deletions

View File

@@ -144,8 +144,8 @@ def gen_args(module, state, dnsconfig, forwarders, forward_policy,
_args['idnsforwarders'] = [''] _args['idnsforwarders'] = ['']
elif state == 'present': elif state == 'present':
_args['idnsforwarders'] = [ _args['idnsforwarders'] = \
fwd for fwd in _forwarders if fwd not in global_forwarders] list(set(list(_forwarders) + list(global_forwarders)))
# If no forwarders should be added, remove argument. # If no forwarders should be added, remove argument.
if not _args['idnsforwarders']: if not _args['idnsforwarders']:
del _args['idnsforwarders'] del _args['idnsforwarders']

View File

@@ -171,7 +171,6 @@
register: result register: result
failed_when: not result.changed or result.failed failed_when: not result.changed or result.failed
- name: Ensure all forwarders are absent, again. - name: Ensure all forwarders are absent, again.
ipadnsconfig: ipadnsconfig:
ipaadmin_password: SomeADMINpassword ipaadmin_password: SomeADMINpassword
@@ -185,6 +184,54 @@
register: result register: result
failed_when: result.changed or result.failed failed_when: result.changed or result.failed
- name: Ensure forwarder is present.
ipadnsconfig:
ipaadmin_password: SomeADMINpassword
ipaapi_context: "{{ ipa_context | default(omit) }}"
forwarders:
- ip_address: 8.8.8.8
register: result
failed_when: not result.changed or result.failed
- name: Ensure forwarders are present.
ipadnsconfig:
ipaadmin_password: SomeADMINpassword
ipaapi_context: "{{ ipa_context | default(omit) }}"
forwarders:
- ip_address: 8.8.4.4
- ip_address: 8.8.8.8
register: result
failed_when: not result.changed or result.failed
- name: Ensure forwarders are present, again.
ipadnsconfig:
ipaadmin_password: SomeADMINpassword
ipaapi_context: "{{ ipa_context | default(omit) }}"
forwarders:
- ip_address: 8.8.4.4
- ip_address: 8.8.8.8
register: result
failed_when: result.changed or result.failed
- name: Ensure another forwarder is present.
ipadnsconfig:
ipaadmin_password: SomeADMINpassword
ipaapi_context: "{{ ipa_context | default(omit) }}"
forwarders:
- ip_address: 8.8.4.4
register: result
failed_when: result.changed or result.failed
- name: Ensure forwarders are present.
ipadnsconfig:
ipaadmin_password: SomeADMINpassword
ipaapi_context: "{{ ipa_context | default(omit) }}"
forwarders:
- ip_address: 8.8.4.4
- ip_address: 8.8.8.8
register: result
failed_when: result.changed or result.failed
# Cleanup. # Cleanup.
- name: Ensure forwarders are absent. - name: Ensure forwarders are absent.
ipadnsconfig: ipadnsconfig: