def fsStat(self, request, context): stv = os.statvfs(request.path) data = dict((key, getattr(stv, key)) for key in ('f_bavail', 'f_bfree', 'f_blocks', 'f_bsize', 'f_favail', 'f_ffree', 'f_files', 'f_flag', 'f_frsize', 'f_namemax')) return users_pb2.JsonReply(data=json.dumps(data))
def fsReadDir(self, request, context): dirents = ['.', '..'] if os.path.isdir(request.path): dirents.extend(os.listdir(request.path)) return users_pb2.JsonReply(data=json.dumps(dirents))
def fileWrite(self, request, context): global lock lock.acquire() os.lseek(request.fh, request.offset, os.SEEK_SET) reply = users_pb2.JsonReply( data=json.dumps(os.write(request.fh, request.buf))) lock.release() return reply
def fsGetAttr(self, request, context): error = False data = {} try: st = os.lstat(request.path) data = dict( (key, getattr(st, key)) for key in ('st_atime', 'st_ctime', 'st_gid', 'st_mode', 'st_mtime', 'st_nlink', 'st_size', 'st_uid')) except: error = True return users_pb2.JsonReply(data=json.dumps(data), error=error)
def fileCreate(self, request, context): data = os.open(request.path, os.O_RDWR | os.O_CREAT, request.mode) return users_pb2.JsonReply(data=json.dumps(data))
def fileOpen(self, request, context): data = os.open(request.path, request.flags) return users_pb2.JsonReply(data=json.dumps(data))
def fsFlock(self, request, context): data = os.flock(request.fileDescriptor, request.lockOperation) return users_pb2.JsonReply(data=json.dumps(data))
def fsLink(self, request, context): data = os.link(request.name, request.target) return users_pb2.JsonReply(data=json.dumps(data))
def fsRename(self, request, context): data = os.rename(request.oldPath, request.newPath) return users_pb2.JsonReply(data=json.dumps(data))
def fsChmod(self, request, context): data = os.chmod(request.path, request.mode) return users_pb2.JsonReply(data=json.dumps(data))
def fsUtimens(self, request, context): data = os.utime(request.path, (request.aTime, request.mTime)) return users_pb2.JsonReply(data=json.dumps(data))
def fsMkDir(self, request, context): data = os.mkdir(request.path, request.mode) return users_pb2.JsonReply(data=json.dumps(data))
def fsRmDir(self, request, context): data = os.rmdir(request.path) return users_pb2.JsonReply(data=json.dumps(data))
def fsChown(self, request, context): data = os.chown(request.path, request.uid, request.gid) return users_pb2.JsonReply(data=json.dumps(data))
def fileFlush(self, request, context): return users_pb2.JsonReply(data=json.dumps(os.fsync(request.fh)))
def fsUnlink(self, request, context): global lock lock.acquire() data = os.unlink(request.path) lock.release() return users_pb2.JsonReply(data=json.dumps(data))
def fileRelease(self, request, context): return users_pb2.JsonReply(data=json.dumps(os.close(request.fh)))
def fsAccess(self, request, context): if not os.access(request.path, request.mode): return users_pb2.JsonReply(error=True) return users_pb2.JsonReply(error=False)