Ensure uri module always returns status even on failure (#56240)

- Also return url and update docs for other values to indicate they are only returned on success.
- Add integration tests
- Use info variable for common return values
- Use -1 as default status rather than None. This is lines up with with existing code in urls.py
- Add unit tests to ensure status and url are returned on failure
This commit is contained in:
Sam Doran
2019-05-23 10:17:17 -04:00
committed by GitHub
parent 22b9525aa9
commit 8f4f3750fe
5 changed files with 19 additions and 8 deletions

View File

@@ -1429,7 +1429,7 @@ def fetch_url(module, url, data=None, headers=None, method=None,
cookies = cookiejar.LWPCookieJar()
r = None
info = dict(url=url)
info = dict(url=url, status=-1)
try:
r = open_url(url, data=data, headers=headers, method=method,
use_proxy=use_proxy, force=force, last_mod_time=last_mod_time, timeout=timeout,
@@ -1471,11 +1471,11 @@ def fetch_url(module, url, data=None, headers=None, method=None,
except NoSSLError as e:
distribution = get_distribution()
if distribution is not None and distribution.lower() == 'redhat':
module.fail_json(msg='%s. You can also install python-ssl from EPEL' % to_native(e))
module.fail_json(msg='%s. You can also install python-ssl from EPEL' % to_native(e), **info)
else:
module.fail_json(msg='%s' % to_native(e))
module.fail_json(msg='%s' % to_native(e), **info)
except (ConnectionError, ValueError) as e:
module.fail_json(msg=to_native(e))
module.fail_json(msg=to_native(e), **info)
except urllib_error.HTTPError as e:
try:
body = e.read()