Fix check mode for blockinfile when 'create: yes' is specified (#2413)
Make the module more semantically similar to lineinfile when the destination does not exist. This fixes #2021.
This commit is contained in:
parent
cd2dbed79c
commit
fc417a5ab0
1 changed files with 9 additions and 2 deletions
|
@ -212,7 +212,8 @@ def main():
|
||||||
module.fail_json(rc=256,
|
module.fail_json(rc=256,
|
||||||
msg='Destination %s is a directory !' % dest)
|
msg='Destination %s is a directory !' % dest)
|
||||||
|
|
||||||
if not os.path.exists(dest):
|
path_exists = os.path.exists(dest)
|
||||||
|
if not path_exists:
|
||||||
if not module.boolean(params['create']):
|
if not module.boolean(params['create']):
|
||||||
module.fail_json(rc=257,
|
module.fail_json(rc=257,
|
||||||
msg='Destination %s does not exist !' % dest)
|
msg='Destination %s does not exist !' % dest)
|
||||||
|
@ -230,6 +231,9 @@ def main():
|
||||||
marker = params['marker']
|
marker = params['marker']
|
||||||
present = params['state'] == 'present'
|
present = params['state'] == 'present'
|
||||||
|
|
||||||
|
if not present and not path_exists:
|
||||||
|
module.exit_json(changed=False, msg="File not present")
|
||||||
|
|
||||||
if insertbefore is None and insertafter is None:
|
if insertbefore is None and insertafter is None:
|
||||||
insertafter = 'EOF'
|
insertafter = 'EOF'
|
||||||
|
|
||||||
|
@ -299,10 +303,13 @@ def main():
|
||||||
changed = True
|
changed = True
|
||||||
|
|
||||||
if changed and not module.check_mode:
|
if changed and not module.check_mode:
|
||||||
if module.boolean(params['backup']) and os.path.exists(dest):
|
if module.boolean(params['backup']) and path_exists:
|
||||||
module.backup_local(dest)
|
module.backup_local(dest)
|
||||||
write_changes(module, result, dest)
|
write_changes(module, result, dest)
|
||||||
|
|
||||||
|
if module.check_mode and not path_exists:
|
||||||
|
module.exit_json(changed=changed, msg=msg)
|
||||||
|
|
||||||
msg, changed = check_file_attrs(module, changed, msg)
|
msg, changed = check_file_attrs(module, changed, msg)
|
||||||
module.exit_json(changed=changed, msg=msg)
|
module.exit_json(changed=changed, msg=msg)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue