def upload(self, dest_path, size, mode, sender): try: f = open(dest_path, 'wb') except OSError as e: raise RpcException(e.errno, e) token = self.dispatcher.token_store.issue_token( FileToken(user=sender.user, lifetime=60, direction='upload', file=f, name=os.path.basename(dest_path), size=size)) return token
def download(self, path, sender): try: f = open(path, 'rb') except OSError as e: raise RpcException(e.errno, e) token = self.dispatcher.token_store.issue_token( FileToken(user=sender.user, lifetime=60, direction='download', file=f, name=os.path.basename(f.name), size=os.path.getsize(path))) return token
def submit_with_download(self, task_name, args, sender, env=None): task_metadata = self.dispatcher.tasks[task_name]._get_metadata() schema = task_metadata['schema'] url_list = [] if schema is None: raise RpcException( errno.ENOENT, "Task {0} has no schema associated with it".format(task_name)) for idx, arg in enumerate(schema): if arg.get('type') == 'fd': rfd, wfd = os.pipe() url_list.append("/dispatcher/filedownload?token={0}".format( self.dispatcher.token_store.issue_token( FileToken(user=sender.user, lifetime=60, direction='download', file=FileObjectPosix(rfd, 'rb', close=True), name=args[idx])))) args[idx] = FileDescriptor(wfd) task_id = self.submit(task_name, args, sender, env) return task_id, url_list
def submit_with_upload(self, task_name, args, sender, env=None): task_metadata = self.dispatcher.tasks[task_name]._get_metadata() schema = task_metadata['schema'] if schema is None: raise RpcException( errno.ENOENT, "Task {0} has no schema associated with it".format(task_name)) upload_token_list = [] for idx, arg in enumerate(schema): if arg.get('type') == 'fd': rfd, wfd = os.pipe() token = self.dispatcher.token_store.issue_token( FileToken(user=sender.user, lifetime=600, direction='upload', file=FileObjectPosix(wfd, 'wb', close=True), name=str(uuid.uuid4()), size=None)) upload_token_list.append(token) args[idx] = FileDescriptor(rfd) task_id = self.submit(task_name, args, sender, env) return task_id, upload_token_list
}, } } @pass_sender @accepts(str) @returns(str) def download(self, path, sender): try: f = open(path, 'r') except OSError, e: raise RpcException(e.errno, e.message) token = self.dispatcher.token_store.issue_token( FileToken(user=sender.user, lifetime=60, direction='download', file=f)) return token @pass_sender @accepts(str, long, str) @returns(str) def upload(self, dest_path, size, mode, sender): try: f = open(dest_path, 'w') except OSError, e: raise RpcException(e.errno, e.message) token = self.dispatcher.token_store.issue_token( FileToken(user=sender.user,