示例#1
0
    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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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
示例#5
0
                },
            }
        }

    @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,