adds diff info for file info

This commit is contained in:
Brian Coca 2016-01-05 14:28:39 -05:00 committed by Matt Clay
parent 60ca6e2f85
commit 288a5c9a77

View file

@ -190,6 +190,7 @@ def main():
prev_state = get_state(path)
# state should default to file, but since that creates many conflicts,
# default to 'current' when it exists.
if state is None:
@ -226,10 +227,23 @@ def main():
module.fail_json(path=path, msg="recurse option requires state to be 'directory'")
file_args = module.load_file_common_arguments(params)
changed = False
diff = {'before':
{'path': path}
,
'after':
{'path': path}
}
state_change = False
if prev_state != state:
diff['before']['state'] = prev_state
diff['after']['state'] = state
state_change = True
if state == 'absent':
if state != prev_state:
if state_change:
if not module.check_mode:
if prev_state == 'directory':
try:
@ -241,13 +255,13 @@ def main():
os.unlink(path)
except Exception, e:
module.fail_json(path=path, msg="unlinking failed: %s " % str(e))
module.exit_json(path=path, changed=True)
module.exit_json(path=path, changed=True, diff=diff)
else:
module.exit_json(path=path, changed=False)
elif state == 'file':
if state != prev_state:
if state_change:
if follow and prev_state == 'link':
# follow symlink and operate on original
path = os.path.realpath(path)
@ -258,8 +272,8 @@ def main():
# file is not absent and any other state is a conflict
module.fail_json(path=path, msg='file (%s) is %s, cannot continue' % (path, prev_state))
changed = module.set_fs_attributes_if_different(file_args, changed)
module.exit_json(path=path, changed=changed)
changed = module.set_fs_attributes_if_different(file_args, changed, diff)
module.exit_json(path=path, changed=changed, diff=diff)
elif state == 'directory':
if follow and prev_state == 'link':
@ -268,7 +282,7 @@ def main():
if prev_state == 'absent':
if module.check_mode:
module.exit_json(changed=True)
module.exit_json(changed=True, diff=diff)
changed = True
curpath = ''
@ -292,7 +306,7 @@ def main():
raise
tmp_file_args = file_args.copy()
tmp_file_args['path']=curpath
changed = module.set_fs_attributes_if_different(tmp_file_args, changed)
changed = module.set_fs_attributes_if_different(tmp_file_args, changed, diff)
except Exception, e:
module.fail_json(path=path, msg='There was an issue creating %s as requested: %s' % (curpath, str(e)))
@ -300,12 +314,12 @@ def main():
elif prev_state != 'directory':
module.fail_json(path=path, msg='%s already exists as a %s' % (path, prev_state))
changed = module.set_fs_attributes_if_different(file_args, changed)
changed = module.set_fs_attributes_if_different(file_args, changed, diff)
if recurse:
changed |= recursive_set_attributes(module, file_args['path'], follow, file_args)
module.exit_json(path=path, changed=changed)
module.exit_json(path=path, changed=changed, diff=diff)
elif state in ['link','hard']:
@ -374,10 +388,10 @@ def main():
module.fail_json(path=path, msg='Error while linking: %s' % str(e))
if module.check_mode and not os.path.exists(path):
module.exit_json(dest=path, src=src, changed=changed)
module.exit_json(dest=path, src=src, changed=changed, diff=diff)
changed = module.set_fs_attributes_if_different(file_args, changed)
module.exit_json(dest=path, src=src, changed=changed)
changed = module.set_fs_attributes_if_different(file_args, changed, diff)
module.exit_json(dest=path, src=src, changed=changed, diff=diff)
elif state == 'touch':
if not module.check_mode:
@ -395,7 +409,7 @@ def main():
else:
module.fail_json(msg='Cannot touch other than files, directories, and hardlinks (%s is %s)' % (path, prev_state))
try:
module.set_fs_attributes_if_different(file_args, True)
module.set_fs_attributes_if_different(file_args, True, diff)
except SystemExit, e:
if e.code:
# We take this to mean that fail_json() was called from
@ -405,7 +419,7 @@ def main():
os.remove(path)
raise e
module.exit_json(dest=path, changed=True)
module.exit_json(dest=path, changed=True, diff=diff)
module.fail_json(path=path, msg='unexpected position reached')