copy module: cleanup and if directory_mode not set default to umask

This commit is contained in:
Richard C Isaacson 2014-02-28 10:00:54 -06:00
parent cf4a6b39cc
commit 890202e4c0

View file

@ -103,7 +103,12 @@ EXAMPLES = '''
- copy: src=/mine/sudoers dest=/etc/sudoers validate='visudo -cf %s' - copy: src=/mine/sudoers dest=/etc/sudoers validate='visudo -cf %s'
''' '''
def split_pre_existing_dir(dirname): def split_pre_existing_dir(dirname):
'''
Return the first pre-existing directory and a list of the new directories that will be created.
'''
head, tail = os.path.split(dirname) head, tail = os.path.split(dirname)
if not os.path.exists(head): if not os.path.exists(head):
(pre_existing_dir, new_directory_list) = split_pre_existing_dir(head) (pre_existing_dir, new_directory_list) = split_pre_existing_dir(head)
@ -112,7 +117,12 @@ def split_pre_existing_dir(dirname):
new_directory_list.insert(0, tail) new_directory_list.insert(0, tail)
return (pre_existing_dir, new_directory_list) return (pre_existing_dir, new_directory_list)
def adjust_recursive_directory_permissions(pre_existing_dir, new_directory_list, module, directory_args, changed): def adjust_recursive_directory_permissions(pre_existing_dir, new_directory_list, module, directory_args, changed):
'''
Walk the new directories list and make sure that permissions are as we would expect
'''
if len(new_directory_list) > 0: if len(new_directory_list) > 0:
working_dir = os.path.join(pre_existing_dir, new_directory_list.pop(0)) working_dir = os.path.join(pre_existing_dir, new_directory_list.pop(0))
directory_args['path'] = working_dir directory_args['path'] = working_dir
@ -120,6 +130,7 @@ def adjust_recursive_directory_permissions(pre_existing_dir, new_directory_list,
changed = adjust_recursive_directory_permissions(working_dir, new_directory_list, module, directory_args, changed) changed = adjust_recursive_directory_permissions(working_dir, new_directory_list, module, directory_args, changed)
return changed return changed
def main(): def main():
module = AnsibleModule( module = AnsibleModule(
@ -165,6 +176,8 @@ def main():
directory_mode = module.params["directory_mode"] directory_mode = module.params["directory_mode"]
if directory_mode is not None: if directory_mode is not None:
directory_args['mode'] = directory_mode directory_args['mode'] = directory_mode
else:
directory_args['mode'] = None
adjust_recursive_directory_permissions(pre_existing_dir, new_directory_list, module, directory_args, changed) adjust_recursive_directory_permissions(pre_existing_dir, new_directory_list, module, directory_args, changed)
if os.path.exists(dest): if os.path.exists(dest):