diff --git a/plugins/modules/ipadnsforwardzone.py b/plugins/modules/ipadnsforwardzone.py index b28f28db..3968e6a1 100644 --- a/plugins/modules/ipadnsforwardzone.py +++ b/plugins/modules/ipadnsforwardzone.py @@ -217,6 +217,11 @@ def main(): # Make sure forwardzone exists existing_resource = find_dnsforwardzone(ansible_module, name) + # validate parameters + if state == 'present': + if existing_resource is None and not forwarders: + ansible_module.fail_json(msg='No forwarders specified.') + if existing_resource is None and operation == "update": # does not exist and is updating # trying to update something that doesn't exist, so error diff --git a/tests/dnsforwardzone/test_dnsforwardzone.yml b/tests/dnsforwardzone/test_dnsforwardzone.yml index ac08a48f..d94db9e5 100644 --- a/tests/dnsforwardzone/test_dnsforwardzone.yml +++ b/tests/dnsforwardzone/test_dnsforwardzone.yml @@ -5,10 +5,12 @@ gather_facts: false tasks: - - name: ensure forwardzone example.com is absent - prep + - name: ensure test forwardzones are absent - prep ipadnsforwardzone: ipaadmin_password: SomeADMINpassword - name: example.com + name: + - example.com + - newfailzone.com state: absent - name: ensure forwardzone example.com is created @@ -207,6 +209,13 @@ register: result failed_when: result.changed + - name: Ensure forwardzone is not added without forwarders, with correct message. + ipadnsforwardzone: + ipaadmin_password: SomeADMINpassword + name: newfailzone.com + register: result + failed_when: not result.failed or "No forwarders specified" not in result.msg + - name: ensure forwardzone example.com is absent - tidy up ipadnsforwardzone: ipaadmin_password: SomeADMINpassword