[Buildbot-commits] buildbot/buildbot/process step.py,1.107,1.108
Brian Warner
warner at users.sourceforge.net
Fri Sep 15 14:49:27 UTC 2006
Update of /cvsroot/buildbot/buildbot/buildbot/process
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21626/buildbot/process
Modified Files:
step.py
Log Message:
[project @ filetransfer: move out to buildbot/steps/transfer.py]
Original author: warner at lothar.com
Date: 2006-09-08 21:49:07
Index: step.py
===================================================================
RCS file: /cvsroot/buildbot/buildbot/buildbot/process/step.py,v
retrieving revision 1.107
retrieving revision 1.108
diff -u -d -r1.107 -r1.108
--- step.py 15 Sep 2006 14:49:18 -0000 1.107
+++ step.py 15 Sep 2006 14:49:25 -0000 1.108
@@ -1061,228 +1061,6 @@
self.step_status.setText(self.getText(cmd, results))
self.step_status.setText2(self.maybeGetText2(cmd, results))
-#
-# =================================================================
-#
-
-class FileIO(pb.Referenceable):
- """
- Helper base class that acts as remote-accessible file-object
- """
-
- def __init__(self,fp):
- self.fp = fp
-
- def remote_close(self):
- """
- Called by remote slave to state that no more data will be transfered
- """
- if self.fp is not None:
- self.fp.close()
- self.fp = None
-
-class FileWriter(FileIO):
- """
- Helper class that acts as a file-object with write access
- """
-
- def __init__(self,fp, maxsize=None):
- FileIO.__init__(self,fp)
- self.maxsize = maxsize
-
- def remote_write(self,data):
- """
- Called from remote slave to write L{data} to L{fp} within boundaries
- of L{maxsize}
-
- @type data: C{string}
- @param data: String of data to write
- """
- if self.fp is not None:
- if self.maxsize is not None:
- if len(data) > self.maxsize:
- data = data[:self.maxsize]
- self.fp.write(data)
- self.maxsize = self.maxsize - len(data)
- else:
- self.fp.write(data)
-
-class FileReader(FileIO):
- """
- Helper class that acts as a file-object with read access
- """
-
- def remote_read(self,maxlength):
- """
- Called from remote slave to read at most L{maxlength} bytes of data
-
- @type maxlength: C{integer}
- @param maxlength: Maximum number of data bytes that can be returned
-
- @return: Data read from L{fp}
- @rtype: C{string} of bytes read from file
- """
- if self.fp is None:
- return ''
-
- data = self.fp.read(maxlength)
- return data
-
-
-class StatusRemoteCommand(RemoteCommand):
- def __init__(self, remote_command, args):
- RemoteCommand.__init__(self, remote_command, args)
-
- self.rc = None
- self.stderr = ''
-
- def remoteUpdate(self, update):
- #log.msg('StatusRemoteCommand: update=%r' % update)
- if 'rc' in update:
- self.rc = update['rc']
- if 'stderr' in update:
- self.stderr = self.stderr + update['stderr'] + '\n'
-
-
-class FileUpload(BuildStep):
- """
- Build step to transfer a file from the slave to the master.
-
- arguments:
-
- - ['slavesrc'] filename of source file at slave, relative to workdir
- - ['masterdest'] filename of destination file at master
- - ['workdir'] string with slave working directory relative to builder
- base dir, default 'build'
- - ['maxsize'] maximum size of the file, default None (=unlimited)
- - ['blocksize'] maximum size of each block being transfered
-
- """
-
- name = 'upload'
-
- def __init__(self, build, **kwargs):
- buildstep_kwargs = {}
- for k in kwargs.keys()[:]:
- if k in BuildStep.parms:
- buildstep_kwargs[k] = kwargs[k]
- del kwargs[k]
- BuildStep.__init__(self,build,**buildstep_kwargs)
-
- self.args = kwargs
- self.fileWriter = None
-
- def start(self):
- log.msg("FileUpload started, from slave %r to master %r"
- % (self.args['slavesrc'],self.args['masterdest']))
-
- self.step_status.setColor('yellow')
- self.step_status.setText(['uploading', self.args['slavesrc']])
-
- fp = open(self.args['masterdest'],'w')
- self.fileWriter = FileWriter(fp)
-
- # default arguments
- args = {
- 'maxsize': None,
- 'blocksize': 16*1024,
- 'workdir': 'build',
- }
- args.update(self.args)
- args['writer'] = self.fileWriter
-
- self.cmd = StatusRemoteCommand('uploadFile', args)
- d = self.runCommand(self.cmd)
- d.addCallback(self.finished).addErrback(self.failed)
-
- def finished(self,result):
- if self.cmd.stderr != '':
- self.addCompleteLog('stderr', self.cmd.stderr)
-
- self.fileWriter = None
-
- if self.cmd.rc is None or self.cmd.rc == 0:
- self.step_status.setColor('green')
- return BuildStep.finished(self,SUCCESS)
- self.step_status.setColor('red')
- return BuildStep.finished(self,FAILURE)
-
-class FileDownload(BuildStep):
- """
- Build step to download a file
- arguments:
-
- ['mastersrc'] filename of source file at master
- ['slavedest'] filename of destination file at slave
- ['workdir'] string with slave working directory relative to builder
- base dir, default 'build'
- ['maxsize'] maximum size of the file, default None (=unlimited)
- ['blocksize'] maximum size of each block being transfered
-
- """
-
- name = 'download'
-
- def __init__(self,build, **kwargs):
- buildstep_kwargs = {}
- for k in kwargs.keys()[:]:
- if k in BuildStep.parms:
- buildstep_kwargs[k] = kwargs[k]
- del kwargs[k]
- BuildStep.__init__(self,build,**buildstep_kwargs)
-
- self.args = kwargs
- self.fileReader = None
-
- def start(self):
- log.msg("FileDownload started, from master %r to slave %r"
- % (self.args['mastersrc'],self.args['slavedest']))
-
- self.step_status.setColor('yellow')
- self.step_status.setText(['downloading', self.args['slavedest']])
-
- # If file does not exist, bail out with an error
- if not os.path.isfile(self.args['mastersrc']):
- self.addCompleteLog('stderr',
- 'File %r not available at master' % self.args['mastersrc'])
- reactor.callLater(0, self.reportFail)
- return
-
- # setup structures for reading the file
- fp = open(self.args['mastersrc'],'r')
- self.fileReader = FileReader(fp)
-
- a = self.args.copy()
- a['reader'] = self.fileReader
-
- # add defaults for optional settings
- for k,dv in [('maxsize',None),('blocksize',16*1024),('workdir','build')]:
- if k not in a:
- a[k] = dv
-
- self.cmd = StatusRemoteCommand('downloadFile', a)
- d = self.runCommand(self.cmd)
- d.addCallback(self.finished).addErrback(self.failed)
-
- def finished(self,result):
- if self.cmd.stderr != '':
- self.addCompleteLog('stderr', self.cmd.stderr)
-
- self.fileReader = None
-
- if self.cmd.rc is None or self.cmd.rc == 0:
- self.step_status.setColor('green')
- return BuildStep.finished(self,SUCCESS)
- return self.reportFail()
-
- def reportFail(self):
- self.step_status.setColor('red')
- return BuildStep.finished(self,FAILURE)
-
-#
-# =================================================================
-#
-
# legacy compatibility
More information about the Commits
mailing list