do not return the body even if it failed (#69706)
* 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 <jack.zhang@aspiraconnect.com>
This commit is contained in:
parent
723a904f4e
commit
80f09efd03
4 changed files with 60 additions and 2 deletions
3
changelogs/fragments/21003-uri-return-content.yml
Normal file
3
changelogs/fragments/21003-uri-return-content.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
bugfixes:
|
||||
- uri - Don't return the body even if it failed
|
||||
(https://github.com/ansible/ansible/issues/21003)
|
|
@ -75,7 +75,7 @@ options:
|
|||
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
|
||||
|
@ -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:
|
||||
|
|
|
@ -595,3 +595,6 @@
|
|||
|
||||
- name: Check unexpected failures
|
||||
import_tasks: unexpected-failures.yml
|
||||
|
||||
- name: Check return-content
|
||||
import_tasks: return-content.yml
|
||||
|
|
49
test/integration/targets/uri/tasks/return-content.yml
Normal file
49
test/integration/targets/uri/tasks/return-content.yml
Normal file
|
@ -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"
|
Loading…
Reference in a new issue