def read(self, path, length, offset, fh): logger.debug("read %s, ln: %d of: %d fh %d" % (os.path.basename(path), length, offset, fh)) node, _ = query.resolve(path, trash=False) if node.size == 0: return b'' return StreamedResponseCache.get(node.id, offset, length, node.size)
def write(self, path, data, offset, fh): if offset == 0: n, p = query.resolve(path, False) node_id = n.id else: node_id = "" WriteProxy.write(node_id, fh, offset, data) return len(data)
def write(self, path, data, offset, fh): if offset == 0: n, p = query.resolve(path, False) node_id = n.id else: node_id = '' WriteProxy.write(node_id, fh, offset, data) return len(data)
def readdir(self, path, fh): logger.debug('readdir %s' % path) node, _ = query.resolve(path, trash=False) if not node: raise FuseOSError(errno.ENOENT) return [_ for _ in ['.', '..'] + [c.name for c in node.available_children()]]
def readdir(self, path, fh): node, _ = query.resolve(path, trash=False) if not node: raise FuseOSError(errno.ENOENT) return [ _ for _ in ['.', '..'] + [c.name for c in node.available_children()] ]
def read(self, path, length, offset, fh): node, _ = query.resolve(path, trash=False) if not node: raise(FuseOSError(errno.ENOENT)) if node.size == 0 or node.size == offset: return b'' return ReadProxy.get(node.id, offset, length, node.size)
def getxattr(self, path, name, position=0): node, _ = query.resolve(path, trash=False) if name == self.XATTRS.ID: return bytes(node.id, encoding="utf-8") elif name == self.XATTRS.DESCR: return bytes(node.description if node.description else "", encoding="utf-8") elif name == self.FXATTRS.MD5: return bytes(node.md5, encoding="utf-8") raise FuseOSError(errno.ENODATA)
def getxattr(self, path, name, position=0): node, _ = query.resolve(path, trash=False) if name == self.XATTRS.ID: return bytes(node.id, encoding='utf-8') elif name == self.XATTRS.DESCR: return bytes(node.description if node.description else '', encoding='utf-8') elif name == self.FXATTRS.MD5: return bytes(node.md5, encoding='utf-8') raise FuseOSError(errno.ENODATA)
def getattr(self, path, fh=None): node, _ = query.resolve(path, trash=False) if not node: raise FuseOSError(errno.ENOENT) times = dict(st_atime=time(), st_mtime=(node.modified - datetime(1970, 1, 1)) / timedelta(seconds=1), st_ctime=(node.created - datetime(1970, 1, 1)) / timedelta(seconds=1)) if node.is_folder(): return dict(st_mode=stat.S_IFDIR | 0o0777, st_nlink=node.size if self.nlinks else 1, **times) if node.is_file(): return dict(st_mode=stat.S_IFREG | 0o0666, st_nlink=len(node.parents) if self.nlinks else 1, st_size=node.size, **times)
def _trash(path): logger.debug('trash %s' % path) node, parent = query.resolve(path, False) if not node: # or not parent: raise FuseOSError(errno.ENOENT) logger.debug('%s %s' % (node, parent)) try: # if len(node.parents) > 1: # r = metadata.remove_child(parent.id, node.id) # else: r = trash.move_to_trash(node.id) except RequestError as e: FuseOSError.convert(e) else: sync.insert_node(r)
def _trash(path): logger.debug("trash %s" % path) node, parent = query.resolve(path, False) if not node: # or not parent: raise FuseOSError(errno.ENOENT) logger.debug("%s %s" % (node, parent)) try: # if len(node.parents) > 1: # r = metadata.remove_child(parent.id, node.id) # else: r = trash.move_to_trash(node.id) except RequestError as e: FuseOSError.convert(e) else: sync.insert_node(r)
def _trash(path): logger.debug('trash %s' % path) node, parent = query.resolve(path) if not node or not parent: raise FuseOSError(errno.ENOENT) logger.debug('%s %s' % (node, parent)) try: # if len(node.parents) > 1: # r = metadata.remove_child(parent.id, node.id) # else: r = trash.move_to_trash(node.id) except RequestError as e: if e.status_code == e.CODE.CONN_EXCEPTION: raise FuseOSError(errno.ECOMM) else: raise FuseOSError(errno.EREMOTEIO) else: sync.insert_node(r)
def getattr(self, path, fh=None): node, _ = query.resolve(path, trash=False) if not node: raise FuseOSError(errno.ENOENT) times = dict(st_atime=time(), st_mtime=(node.modified - datetime(1970, 1, 1)) / timedelta(seconds=1), st_ctime=(node.created - datetime(1970, 1, 1)) / timedelta(seconds=1)) if node.is_folder(): nlinks = dict(st_nlink=node.size) if self.nlinks else dict() return dict(st_mode=stat.S_IFDIR | 0o0777, st_nlink=node.size if self.nlinks else 1, **times) if node.is_file(): return dict(st_mode=stat.S_IFREG | 0o0666, st_nlink=len(node.parents) if self.nlinks else 1, st_size=node.size, **times)
def release(self, path, fh): logger.debug('release %s, %d' % (path, fh)) node, _ = query.resolve(path, trash=False) StreamedResponseCache.release(node.id)
def readdir(self, path, fh): node, _ = query.resolve(path, trash=False) if not node: raise FuseOSError(errno.ENOENT) return [_ for _ in [".", ".."] + [c.name for c in node.available_children()]]
def release(self, path, fh): node, _ = query.resolve(path, trash=False) ReadProxy.release(node.id) WriteProxy.release(fh)
def listxattr(self, path): node, _ = query.resolve(path, trash=False) if node.is_file(): return self.FXATTRS.vars() elif node.is_folder(): return self.XATTRS.vars()
def read(self, path, length, offset, fh): node, _ = query.resolve(path, trash=False) if node.size == 0 or node.size == offset: return b'' return ReadProxy.get(node.id, offset, length, node.size)
def read(self, path, length, offset, fh): node, _ = query.resolve(path, trash=False) if node.size == 0 or node.size == offset: return b"" return ReadProxy.get(node.id, offset, length, node.size)