diff --git a/plugins/modules/ipahost.py b/plugins/modules/ipahost.py index 1fe11dc56a8d93dea917e8dd2b7c4a3a86d4c8a7..ccec5d796a72895f46631a587e7372000c137695 100644 --- a/plugins/modules/ipahost.py +++ b/plugins/modules/ipahost.py @@ -439,6 +439,12 @@ def find_host(module, name): def find_dnsrecord(module, name): + """ + Search for a DNS record. + + This function may raise ipalib_errors.NotFound in some cases, + and it should be handled by the caller. + """ domain_name = name[name.find(".")+1:] host_name = name[:name.find(".")] @@ -447,14 +453,8 @@ def find_dnsrecord(module, name): "idnsname": to_text(host_name) } - try: - _result = api_command(module, "dnsrecord_show", to_text(domain_name), - _args) - except ipalib_errors.NotFound as e: - msg = str(e) - if "record not found" in msg or "zone not found" in msg: - return None - module.fail_json(msg="dnsrecord_show failed: %s" % msg) + _result = api_command(module, "dnsrecord_show", to_text(domain_name), + _args) return _result["result"] @@ -876,8 +876,11 @@ def main(): msg = str(e) dns_not_configured = "DNS is not configured" in msg dns_zone_not_found = "DNS zone not found" in msg - if ip_address is None and ( - dns_not_configured or dns_zone_not_found + dns_res_not_found = "DNS resource record not found" in msg + if ( + dns_res_not_found + or ip_address is None + and (dns_not_configured or dns_zone_not_found) ): # IP address(es) not given and no DNS support in IPA # -> Ignore failure diff --git a/tests/README.md b/tests/README.md index cbc8aa0cd9741f4ae0903f70b54e145486bc971c..b1a3168e9e09e4671fcd74b5d7b43813e38cfc11 100644 --- a/tests/README.md +++ b/tests/README.md @@ -9,11 +9,10 @@ You will also need to have a remote host with freeipa server installed and confi Some other requirements: * The `controller` must be able to connect to `ipaserver` through ssh using keys. - * `ipaserver` must be configured with DNS and KRA support. - See [ipaserver role](../roles/ipaserver/README.md). * IPA admin password must be `SomeADMINpassword`. * Directory Server admin password must be `SomeDMpassword`. +To provide broader test coverage, `ipaserver` should be configured with DNS and KRA support, and playbook tests are written based on this configuration. Without such support, some tests are expected to fail. Use a different configuration to evaluate those scenarios. See also [ipaserver role](../roles/ipaserver/README.md). ## Running the tests