def copy_put(self, fd, tmppath): tpool.execute(os.fsync, fd) if self.obj_path: dir_objs = self.obj_path.split('/') tmp_path = '' if len(dir_objs): for dir_name in dir_objs: if tmp_path: tmp_path = tmp_path + '/' + dir_name else: tmp_path = dir_name if not self.create_dir_object(os.path.join(self.container_path, tmp_path)): self.logger.error("Failed in subdir %s",\ os.path.join(self.container_path,tmp_path)) return False renamer(tmppath, os.path.join(self.datadir, self.obj)) do_chown(os.path.join(self.datadir, self.obj), self.uid, self.gid) return True
def copy(self,srcfile): # cmd = 'scp -r %s %s' % (srcfile,self.data_file) # os.system(cmd) cmd = ['scp','-r',srcfile,self.data_file] ps = subprocess.Popen(cmd) ps.wait() do_chown(os.path.join(self.datadir, self.obj), self.uid, self.gid)
def create_dir_object(self, dir_path): if os.path.exists(dir_path) and not os.path.isdir(dir_path): self.logger.error("Deleting file %s", dir_path) do_unlink(dir_path) mkdirs(dir_path) do_chown(dir_path, self.uid, self.gid) return True
def move(self, srcfile): # cmd = 'mv %s %s' % (srcfile,self.data_file) # os.system(cmd) cmd = ["mv", srcfile, self.data_file] ps = subprocess.Popen(cmd) ps.wait() do_chown(os.path.join(self.datadir, self.obj), self.uid, self.gid)
def create_dir_object(self, dir_path): # TODO: if object already exists??? if os.path.exists(dir_path) and not os.path.isdir(dir_path): self.logger.error("Deleting file %s", dir_path) do_unlink(dir_path) # If dir aleady exist just override metadata. mkdirs(dir_path) do_chown(dir_path, self.uid, self.gid) return True
def put(self, fd, tmppath, metadata,extension=''): if extension == '.ts': # TombStone marker (deleted) return True metadata[X_TYPE] = OBJECT if extension == '.meta': # Metadata recorded separately from the file self.meta_put_metadata(metadata) return True # Check if directory already exists. if self.is_dir: self.logger.error('Directory already exists %s/%s' % \ (self.datadir , self.obj)) return False meta_write_metadata(self.metafile, metadata) if X_CONTENT_LENGTH in metadata: self.drop_cache(fd, 0, int(metadata[X_CONTENT_LENGTH])) tpool.execute(os.fsync, fd) if self.obj_path: dir_objs = self.obj_path.split('/') tmp_path = '' if len(dir_objs): for dir_name in dir_objs: if tmp_path: tmp_path = tmp_path + '/' + dir_name else: tmp_path = dir_name if not self.create_dir_object(os.path.join(self.container_path, tmp_path)): self.logger.error("Failed in subdir %s",\ os.path.join(self.container_path,tmp_path)) return False renamer(tmppath, os.path.join(self.datadir, self.obj)) do_chown(os.path.join(self.datadir, self.obj), self.uid, self.gid) self.metadata = metadata return True