From 58f002d8f022493b196d3102e1c086f62eea652b Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Fri, 24 Mar 2017 12:24:59 -0700 Subject: [PATCH] Handle the case where HTTPError.info() returns an object that aren't (#22894) dict-like enough (can't be used with **). This should give a better error message for #22872 (cherry picked from commit 29f623571eace54afc98e966c0e1ca66a19d03f2) --- lib/ansible/module_utils/urls.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/ansible/module_utils/urls.py b/lib/ansible/module_utils/urls.py index ac60ee260a..f3c3b635fd 100644 --- a/lib/ansible/module_utils/urls.py +++ b/lib/ansible/module_utils/urls.py @@ -1009,8 +1009,16 @@ def fetch_url(module, url, data=None, headers=None, method=None, body = e.read() except AttributeError: body = '' - info.update(dict(msg=str(e), body=body, **e.info())) - info['status'] = e.code + + # Try to add exception info to the output but don't fail if we can't + exc_info = e.info() + try: + info.update(dict(**e.info())) + except: + pass + + info.update({'msg': str(e), 'body': body, 'status': e.code}) + except urllib_error.URLError: e = get_exception() code = int(getattr(e, 'code', -1))