uri: do not write the file after failure (#53515)

* uri: do not write the file after failure

Fixes #53491

* Add changelog
This commit is contained in:
Martin Krizek 2019-03-22 15:32:43 +01:00 committed by Matt Martz
parent 6a2b9c2a86
commit bafa291af9
3 changed files with 29 additions and 5 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- uri - do not write the file after failure (https://github.com/ansible/ansible/issues/53491)

View file

@ -599,12 +599,11 @@ def main():
dict_headers, socket_timeout) dict_headers, socket_timeout)
resp['elapsed'] = (datetime.datetime.utcnow() - start).seconds resp['elapsed'] = (datetime.datetime.utcnow() - start).seconds
resp['status'] = int(resp['status']) resp['status'] = int(resp['status'])
resp['changed'] = False
# Write the file out if requested # Write the file out if requested
if dest is not None: if dest is not None:
if resp['status'] == 304: if resp['status'] in status_code and resp['status'] != 304:
resp['changed'] = False
else:
write_file(module, url, dest, content, resp) write_file(module, url, dest, content, resp)
# allow file attribute changes # allow file attribute changes
resp['changed'] = True resp['changed'] = True
@ -613,8 +612,6 @@ def main():
file_args['path'] = dest file_args['path'] = dest
resp['changed'] = module.set_fs_attributes_if_different(file_args, resp['changed']) resp['changed'] = module.set_fs_attributes_if_different(file_args, resp['changed'])
resp['path'] = dest resp['path'] = dest
else:
resp['changed'] = False
# Transmogrify the headers, replacing '-' with '_', since variables don't # Transmogrify the headers, replacing '-' with '_', since variables don't
# work with dashes. # work with dashes.

View file

@ -514,6 +514,31 @@
that: that:
- result.json.json[0] == 'JSON Test Pattern pass1' - result.json.json[0] == 'JSON Test Pattern pass1'
- name: Create a testing file
copy:
content: "content"
dest: "{{ output_dir }}/output"
- name: Download a file from non existing location
uri:
url: http://does/not/exist
dest: "{{ output_dir }}/output"
ignore_errors: yes
- name: Save testing file's output
command: "cat {{ output_dir }}/output"
register: file_out
- name: Test the testing file was not overwritten
assert:
that:
- "'content' in file_out.stdout"
- name: Clean up
file:
dest: "{{ output_dir }}/output"
state: absent
- name: Test follow_redirects=none - name: Test follow_redirects=none
import_tasks: redirect-none.yml import_tasks: redirect-none.yml