@ -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