Esempio n. 1
0
  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)
Esempio n. 2
0
    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)
Esempio n. 3
0
 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)
Esempio n. 4
0
  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)