From 81e87cefd7173a9a2be767623f55a50d693186e8 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Tue, 9 Aug 2016 12:39:25 -0400 Subject: [PATCH] unsafe writes! (#4314) * unsafe writes! * moved unsafe_write docs and args to file common * added unsafe_writes option handling --- lib/ansible/modules/files/assemble.py | 2 +- lib/ansible/modules/files/copy.py | 9 ++++----- lib/ansible/modules/files/lineinfile.py | 2 +- lib/ansible/modules/files/replace.py | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/ansible/modules/files/assemble.py b/lib/ansible/modules/files/assemble.py index 9d51834aa11..bf3001367eb 100644 --- a/lib/ansible/modules/files/assemble.py +++ b/lib/ansible/modules/files/assemble.py @@ -233,7 +233,7 @@ def main(): if backup and dest_hash is not None: result['backup_file'] = module.backup_local(dest) - module.atomic_move(path, dest) + module.atomic_move(path, dest, unsafe_writes=module.params['unsafe_writes']) changed = True cleanup(path, result) diff --git a/lib/ansible/modules/files/copy.py b/lib/ansible/modules/files/copy.py index 74f7b28ed64..3b2c79be799 100644 --- a/lib/ansible/modules/files/copy.py +++ b/lib/ansible/modules/files/copy.py @@ -321,12 +321,11 @@ def main(): (rc,out,err) = module.run_command(validate % src) if rc != 0: module.fail_json(msg="failed to validate", exit_status=rc, stdout=out, stderr=err) + mysrc = src if remote_src: - _, tmpdest = tempfile.mkstemp(dir=os.path.dirname(dest)) - shutil.copy2(src, tmpdest) - module.atomic_move(tmpdest, dest) - else: - module.atomic_move(src, dest) + _, mysrc = tempfile.mkstemp(dir=os.path.dirname(dest)) + shutil.copy2(src, mysrc) + module.atomic_move(mysrc, dest, unsafe_writes=module.params['unsafe_writes']) except IOError: module.fail_json(msg="failed to copy: %s to %s" % (src, dest), traceback=traceback.format_exc()) changed = True diff --git a/lib/ansible/modules/files/lineinfile.py b/lib/ansible/modules/files/lineinfile.py index 076108bbbcd..e3d870c3855 100644 --- a/lib/ansible/modules/files/lineinfile.py +++ b/lib/ansible/modules/files/lineinfile.py @@ -164,7 +164,7 @@ def write_changes(module,lines,dest): module.fail_json(msg='failed to validate: ' 'rc:%s error:%s' % (rc,err)) if valid: - module.atomic_move(tmpfile, os.path.realpath(dest)) + module.atomic_move(tmpfile, os.path.realpath(dest), unsafe_writes=module.params['unsafe_writes']) def check_file_attrs(module, changed, message, diff): diff --git a/lib/ansible/modules/files/replace.py b/lib/ansible/modules/files/replace.py index 634e492953b..651503fd7b1 100644 --- a/lib/ansible/modules/files/replace.py +++ b/lib/ansible/modules/files/replace.py @@ -101,7 +101,7 @@ def write_changes(module,contents,dest): module.fail_json(msg='failed to validate: ' 'rc:%s error:%s' % (rc,err)) if valid: - module.atomic_move(tmpfile, dest) + module.atomic_move(tmpfile, dest, unsafe_writes=module.params['unsafe_writes']) def check_file_attrs(module, changed, message):