summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Bradberry <jeff.bradberry@gmail.com>2014-12-14 20:48:36 -0500
committerJames Cammarata <jimi@sngx.net>2015-02-17 14:38:09 -0600
commit1b022e9c91e72d64ff1513828fa67f32ba855173 (patch)
treeb8404612a975f453e90d00139179db44dcadda2b
parent0cdd237368c7e9a0b03654f3d2a55e9b2b81cc50 (diff)
downloadansible-modules-core-1b022e9c91e72d64ff1513828fa67f32ba855173.tar.gz
Fix breakage in lineinfile check mode when target file does not exist.
Similarly to https://github.com/ansible/ansible/issues/6182, checking of the file attributes should be avoided in check mode when the file didn't originally exist. Also, avoid creating parent directories in check mode. Fixes https://github.com/ansible/ansible/issues/9546
-rw-r--r--files/lineinfile.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/files/lineinfile.py b/files/lineinfile.py
index c72b7f9d..9660979e 100644
--- a/files/lineinfile.py
+++ b/files/lineinfile.py
@@ -192,7 +192,7 @@ def present(module, dest, regexp, line, insertafter, insertbefore, create,
if not create:
module.fail_json(rc=257, msg='Destination %s does not exist !' % dest)
destpath = os.path.dirname(dest)
- if not os.path.exists(destpath):
+ if not os.path.exists(destpath) and not module.check_mode:
os.makedirs(destpath)
lines = []
else:
@@ -282,6 +282,9 @@ def present(module, dest, regexp, line, insertafter, insertbefore, create,
backupdest = module.backup_local(dest)
write_changes(module, lines, dest)
+ if module.check_mode and not os.path.exists(dest):
+ module.exit_json(changed=changed, msg=msg, backup=backupdest)
+
msg, changed = check_file_attrs(module, changed, msg)
module.exit_json(changed=changed, msg=msg, backup=backupdest)