Skip to content

Commit

Permalink
do not return the body even if it failed (ansible#69706)
Browse files Browse the repository at this point in the history
* do not return the body even if it failed

* add some tests for this and rebase

* import test task

* ignore_errors when fails

Co-authored-by: Jack Zhang <[email protected]>
  • Loading branch information
zhan9san and Jack Zhang authored Jun 1, 2020
1 parent 723a904 commit 80f09ef
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 2 deletions.
3 changes: 3 additions & 0 deletions changelogs/fragments/21003-uri-return-content.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
bugfixes:
- uri - Don't return the body even if it failed
(https://github.com/ansible/ansible/issues/21003)
7 changes: 5 additions & 2 deletions lib/ansible/modules/uri.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
return_content:
description:
- Whether or not to return the body of the response as a "content" key in
the dictionary result.
the dictionary result no matter it succeeded or failed.
- Independently of this option, if the reported Content-type is "application/json", then the JSON is
always loaded into a key called C(json) in the dictionary results.
type: bool
Expand Down Expand Up @@ -739,7 +739,10 @@ def main():

if resp['status'] not in status_code:
uresp['msg'] = 'Status code was %s and not %s: %s' % (resp['status'], status_code, uresp.get('msg', ''))
module.fail_json(content=u_content, **uresp)
if return_content:
module.fail_json(content=u_content, **uresp)
else:
module.fail_json(**uresp)
elif return_content:
module.exit_json(content=u_content, **uresp)
else:
Expand Down
3 changes: 3 additions & 0 deletions test/integration/targets/uri/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -595,3 +595,6 @@

- name: Check unexpected failures
import_tasks: unexpected-failures.yml

- name: Check return-content
import_tasks: return-content.yml
49 changes: 49 additions & 0 deletions test/integration/targets/uri/tasks/return-content.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
- name: Test when return_content is yes
uri:
url: https://{{ httpbin_host }}/get
return_content: yes
register: result

- name: Assert content exists when return_content is yes and request succeeds
assert:
that:
- result is successful
- "'content' in result"

- name: Test when return_content is yes
uri:
url: http://does/not/exist
return_content: yes
register: result
ignore_errors: true

- name: Assert content exists when return_content is yes and request fails
assert:
that:
- result is failed
- "'content' in result"

- name: Test when return_content is no
uri:
url: https://{{ httpbin_host }}/get
return_content: no
register: result

- name: Assert content does not exist when return_content is no and request succeeds
assert:
that:
- result is successful
- "'content' not in result"

- name: Test when return_content is no
uri:
url: http://does/not/exist
return_content: no
register: result
ignore_errors: true

- name: Assert content does not exist when return_content is no and request fails
assert:
that:
- result is failed
- "'content' not in result"

0 comments on commit 80f09ef

Please sign in to comment.