Exemplo n.º 1
0
    def run(self):
        # we use 'downloadFile' remote command on the worker
        self.checkWorkerHasCommand("downloadFile")
        self.stdio_log = yield self.addLog("stdio")

        # we are currently in the buildmaster's basedir, so any non-absolute
        # paths will be interpreted relative to that
        workerdest = self.workerdest
        log.msg("StringDownload started, from master to worker %r" %
                workerdest)

        self.descriptionDone = ["downloading to", os.path.basename(workerdest)]

        # setup structures for reading the file
        fileReader = remotetransfer.StringFileReader(self.s)

        # default arguments
        args = {
            'maxsize': self.maxsize,
            'reader': fileReader,
            'blocksize': self.blocksize,
            'workdir': self.workdir,
            'mode': self.mode,
        }

        if self.workerVersionIsOlderThan('downloadFile', '3.0'):
            args['slavedest'] = workerdest
        else:
            args['workerdest'] = workerdest

        cmd = makeStatusRemoteCommand(self, 'downloadFile', args)
        res = yield self.runTransferCommand(cmd)
        return res
Exemplo n.º 2
0
    def start(self):
        # we use 'downloadFile' remote command on the slave
        self.checkSlaveHasCommand("downloadFile")

        # we are currently in the buildmaster's basedir, so any non-absolute
        # paths will be interpreted relative to that
        slavedest = self.slavedest
        log.msg("StringDownload started, from master to slave %r" % slavedest)

        self.descriptionDone = "downloading to %s" % os.path.basename(
            slavedest)

        # setup structures for reading the file
        fileReader = remotetransfer.StringFileReader(self.s)

        # default arguments
        args = {
            'slavedest': slavedest,
            'maxsize': self.maxsize,
            'reader': fileReader,
            'blocksize': self.blocksize,
            'workdir': self.workdir,
            'mode': self.mode,
        }

        cmd = makeStatusRemoteCommand(self, 'downloadFile', args)
        d = self.runTransferCommand(cmd)
        d.addCallback(self.finished).addErrback(self.failed)
Exemplo n.º 3
0
    def downloadFileContentToWorker(self,
                                    workerdest,
                                    strfile,
                                    abandonOnFailure=False,
                                    mode=None,
                                    workdir=None):
        if workdir is None:
            workdir = self.workdir

        self.checkWorkerHasCommand("downloadFile")
        fileReader = remotetransfer.StringFileReader(strfile)
        # default arguments
        args = {
            'workdir': workdir,
            'maxsize': None,
            'mode': mode,
            'reader': fileReader,
            'blocksize': 32 * 1024,
        }

        if self.workerVersionIsOlderThan('downloadFile', '3.0'):
            args['slavedest'] = workerdest
        else:
            args['workerdest'] = workerdest

        def commandComplete(cmd):
            if cmd.didFail():
                return None
            return fileReader

        return self.runRemoteCommand('downloadFile',
                                     args,
                                     abandonOnFailure=abandonOnFailure,
                                     evaluateCommand=commandComplete)
Exemplo n.º 4
0
        def _downloadFile(buf, filename):
            filereader = remotetransfer.StringFileReader(buf)
            args = {
                'maxsize': None,
                'reader': filereader,
                'blocksize': 16 * 1024,
                'workdir': self.workdir,
                'mode': None
            }

            if self.workerVersionIsOlderThan('downloadFile', '3.0'):
                args['slavedest'] = filename
            else:
                args['workerdest'] = filename

            cmd = remotecommand.RemoteCommand('downloadFile', args)
            cmd.useLog(self.stdio_log, False)
            log.msg("Downloading file: %s" % (filename))
            d = self.runCommand(cmd)

            @d.addCallback
            def evaluateCommand(_):
                if cmd.didFail():
                    raise buildstep.BuildStepFailed()
                return cmd.rc
            return d