def action_create(self): path = self.resource.path if not sudo.path_exists(path): Logger.info("Creating directory %s since it doesn't exist." % self.resource) # dead links should be followed, else we gonna have failures on trying to create directories on top of them. if self.resource.follow: # Follow symlink until the tail. followed_links = set() while sudo.path_lexists(path): if path in followed_links: raise Fail("Applying %s failed, looped symbolic links found while resolving %s" % (self.resource, path)) followed_links.add(path) path = sudo.readlink(path) if path != self.resource.path: Logger.info("Following the link {0} to {1} to create the directory".format(self.resource.path, path)) if self.resource.create_parents: sudo.makedirs(path, self.resource.mode or 0755) else: dirname = os.path.dirname(path) if not sudo.path_isdir(dirname): raise Fail("Applying %s failed, parent directory %s doesn't exist" % (self.resource, dirname)) sudo.makedir(path, self.resource.mode or 0755) if not sudo.path_isdir(path): raise Fail("Applying %s failed, file %s already exists" % (self.resource, path)) _ensure_metadata(path, self.resource.owner, self.resource.group, mode=self.resource.mode, cd_access=self.resource.cd_access, recursive_ownership=self.resource.recursive_ownership, recursive_mode_flags=self.resource.recursive_mode_flags, recursion_follow_links=self.resource.recursion_follow_links, safemode_folders=self.resource.safemode_folders)
def _create_local_directory(self, target): if not os.path.exists(target): Logger.info(format("Creating local directory {target}")) sudo.makedir(target, "") owner_name = "" if not self.main_resource.resource.owner else self.main_resource.resource.owner group_name = "" if not self.main_resource.resource.group else self.main_resource.resource.group owner = pwd.getpwnam(owner_name) group = grp.getgrnam(group_name) sudo.chown(target, owner, group)
def makedirs_and_set_permission_recursively(path, owner, group, mode): folders=[] path,folder=os.path.split(path) while folder!="": folders.append(folder) path,folder=os.path.split(path) if path!="": folders.append(path) folders.reverse() dir_prefix="" for folder in folders: dir_prefix=os.path.join(dir_prefix, folder) if not sudo.path_exists(dir_prefix): sudo.makedir(dir_prefix, mode or 0755) _ensure_metadata(dir_prefix, None, None, mode)
def action_create(self): path = self.resource.path if not sudo.path_exists(path): Logger.info("Creating directory %s" % self.resource) if self.resource.recursive: if self.resource.recursive_permission: DirectoryProvider.makedirs_and_set_permission_recursively(path, self.resource.owner, self.resource.group, self.resource.mode) else: sudo.makedirs(path, self.resource.mode or 0755) else: dirname = os.path.dirname(path) if not sudo.path_isdir(dirname): raise Fail("Applying %s failed, parent directory %s doesn't exist" % (self.resource, dirname)) sudo.makedir(path, self.resource.mode or 0755) if not sudo.path_isdir(path): raise Fail("Applying %s failed, file %s already exists" % (self.resource, path)) _ensure_metadata(path, self.resource.owner, self.resource.group, mode=self.resource.mode, cd_access=self.resource.cd_access)