diff --git a/changelogs/fragments/311-jira-error-handling.yaml b/changelogs/fragments/311-jira-error-handling.yaml new file mode 100644 index 0000000000..11d73455fe --- /dev/null +++ b/changelogs/fragments/311-jira-error-handling.yaml @@ -0,0 +1,2 @@ +bugfixes: +- jira - improve error message handling (https://github.com/ansible-collections/community.general/pull/311). diff --git a/plugins/modules/web_infrastructure/jira.py b/plugins/modules/web_infrastructure/jira.py index e1eb6db1b9..9936439d52 100644 --- a/plugins/modules/web_infrastructure/jira.py +++ b/plugins/modules/web_infrastructure/jira.py @@ -286,7 +286,7 @@ import sys from ansible.module_utils.six.moves.urllib.request import pathname2url -from ansible.module_utils._text import to_text, to_bytes +from ansible.module_utils._text import to_text, to_bytes, to_native from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.urls import fetch_url @@ -311,10 +311,17 @@ def request(url, user, passwd, timeout, data=None, method=None): if info['status'] not in (200, 201, 204): error = json.loads(info['body']) if error: - module.fail_json(msg=error['errorMessages']) + msg = [] + for key in ('errorMessages', 'errors'): + if error.get(key): + msg.append(error[key]) + if msg: + module.fail_json(msg=to_native(', '.join(msg))) + else: + module.fail_json(msg=to_native(error)) else: # Fallback print body, if it cant be decoded - module.fail_json(msg=info['body']) + module.fail_json(msg=to_native(info['body'])) body = response.read()