summaryrefslogtreecommitdiff
path: root/lib/ansible/modules/file.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ansible/modules/file.py')
-rw-r--r--lib/ansible/modules/file.py58
1 files changed, 31 insertions, 27 deletions
diff --git a/lib/ansible/modules/file.py b/lib/ansible/modules/file.py
index b691d3d976..72b510c3ca 100644
--- a/lib/ansible/modules/file.py
+++ b/lib/ansible/modules/file.py
@@ -553,34 +553,38 @@ def execute_touch(path, follow, timestamps):
mtime = get_timestamp_for_time(timestamps['modification_time'], timestamps['modification_time_format'])
atime = get_timestamp_for_time(timestamps['access_time'], timestamps['access_time_format'])
- if not module.check_mode:
- if prev_state == 'absent':
- # Create an empty file if the filename did not already exist
- try:
- open(b_path, 'wb').close()
- changed = True
- except (OSError, IOError) as e:
- raise AnsibleModuleError(results={'msg': 'Error, could not touch target: %s'
- % to_native(e, nonstring='simplerepr'),
- 'path': path})
-
- # Update the attributes on the file
- diff = initial_diff(path, 'touch', prev_state)
- file_args = module.load_file_common_arguments(module.params)
+ # If the file did not already exist
+ if prev_state == 'absent':
+ # if we are in check mode and the file is absent
+ # we can set the changed status to True and return
+ if module.check_mode:
+ result['changed'] = True
+ return result
+ # Create an empty file
try:
- changed = module.set_fs_attributes_if_different(file_args, changed, diff, expand=False)
- changed |= update_timestamp_for_file(file_args['path'], mtime, atime, diff)
- except SystemExit as e:
- if e.code: # this is the exit code passed to sys.exit, not a constant -- pylint: disable=using-constant-test
- # We take this to mean that fail_json() was called from
- # somewhere in basic.py
- if prev_state == 'absent':
- # If we just created the file we can safely remove it
- os.remove(b_path)
- raise
-
- result['changed'] = changed
- result['diff'] = diff
+ open(b_path, 'wb').close()
+ changed = True
+ except (OSError, IOError) as e:
+ raise AnsibleModuleError(results={'msg': 'Error, could not touch target: %s'
+ % to_native(e, nonstring='simplerepr'),
+ 'path': path})
+ # Update the attributes on the file
+ diff = initial_diff(path, 'touch', prev_state)
+ file_args = module.load_file_common_arguments(module.params)
+ try:
+ changed = module.set_fs_attributes_if_different(file_args, changed, diff, expand=False)
+ changed |= update_timestamp_for_file(file_args['path'], mtime, atime, diff)
+ except SystemExit as e:
+ if e.code: # this is the exit code passed to sys.exit, not a constant -- pylint: disable=using-constant-test
+ # We take this to mean that fail_json() was called from
+ # somewhere in basic.py
+ if prev_state == 'absent':
+ # If we just created the file we can safely remove it
+ os.remove(b_path)
+ raise
+
+ result['changed'] = changed
+ result['diff'] = diff
return result