From 64ccc2cc94cfb05e90e65f67ff6c44c414b97e83 Mon Sep 17 00:00:00 2001 From: helmutm Date: Thu, 24 Jul 2008 05:54:53 +0000 Subject: [PATCH] remote transport working via test script git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2769 fd906abe-77d9-0310-91a1-e0d9ade77398 --- agent/testing/main_transport.py | 6 +----- agent/testing/test_rpcserver.py | 3 ++- agent/testing/test_sftp.py | 2 +- agent/testing/transporter.cfg | 33 ++++++++++++++++---------------- agent/transport/file/sftp.py | 7 +++---- agent/transport/remote.py | 34 ++++++++------------------------- 6 files changed, 32 insertions(+), 53 deletions(-) diff --git a/agent/testing/main_transport.py b/agent/testing/main_transport.py index 0efb8ab..57d73b8 100644 --- a/agent/testing/main_transport.py +++ b/agent/testing/main_transport.py @@ -24,10 +24,6 @@ $Id$ """ import sys - -print "****printing sys.path****" -for elem in sys.path: - print elem import os from twisted.internet import reactor @@ -81,6 +77,6 @@ if __name__ == '__main__': metadata01 = Metadata(dict(filename='dummy.txt')) res01 = Resource() res01.metadata = metadata01 - res01.path = '/dummydir/dummyfile' + res01.path = 'data/file1.txt' controller.enterJob('sample', 'sample03', params=dict(resource=res01)) startReactor() diff --git a/agent/testing/test_rpcserver.py b/agent/testing/test_rpcserver.py index 995567d..af597a5 100644 --- a/agent/testing/test_rpcserver.py +++ b/agent/testing/test_rpcserver.py @@ -64,7 +64,7 @@ class RPCServer(xmlrpc.XMLRPC): # this is done AFTER the resource (like e.g. file or mail) # is handed over pass - print metadata + print '*** metadata', metadata metadata = "Echo: ", metadata return metadata @@ -76,4 +76,5 @@ if __name__ == '__main__': from twisted.internet import reactor site = RPCServer() reactor.listenTCP(8082, server.Site(site)) + print '*** listening...' reactor.run() \ No newline at end of file diff --git a/agent/testing/test_sftp.py b/agent/testing/test_sftp.py index 13e4d6b..773cb2b 100644 --- a/agent/testing/test_sftp.py +++ b/agent/testing/test_sftp.py @@ -7,7 +7,7 @@ from cybertools.agent.transport.file.sftp import FileTransfer def output(x): print x -ft = FileTransfer('cy05.de', 22, 'scrat', 'pyjmfha') +ft = FileTransfer('cy05.de', 22, 'scrat', '...') d = ft.upload('d:\\text2.rtf', 'text.txt') d.addCallback(output) diff --git a/agent/testing/transporter.cfg b/agent/testing/transporter.cfg index 7a0989a..ee54b59 100644 --- a/agent/testing/transporter.cfg +++ b/agent/testing/transporter.cfg @@ -1,16 +1,17 @@ -# -# sample.cfg - agent configuration for demonstration and testing purposes -# -# $Id$ -# -# transportserver.xmlrpc='testing' - -controller(names=['core.sample']) -scheduler(name='core') -logger(name='default', standard=30) -transport.remote.server = 'testing' -transport.remote.url = 'http://localhost:8123' -transport.remote.ftp.url = 'http://cy05.de' -transport.remote.ftp.user = 'scrat' -transport.remote.sftp = 'testing' -transport.remote.chunksize = 4096 +# +# sample.cfg - agent configuration for demonstration and testing purposes +# +# $Id$ +# +# transportserver.xmlrpc='testing' + +controller(names=['core.sample']) +scheduler(name='core') +logger(name='default', standard=30) +#transport.remote.server = 'testing' +transport.remote.url = 'http://localhost:8082' +transport.remote.ftp.url = 'cy05.de' +transport.remote.ftp.user = 'scrat' +transport.remote.ftp.password = '...' +transport.remote.sftp = 'http://cy05.de' +transport.remote.chunksize = 4096 diff --git a/agent/transport/file/sftp.py b/agent/transport/file/sftp.py index a1e8000..7fd8f91 100644 --- a/agent/transport/file/sftp.py +++ b/agent/transport/file/sftp.py @@ -46,7 +46,7 @@ class FileTransfer(protocol.ClientFactory): def upload(self, localPath, remotePath): """ Copies a file, returning a deferred. """ - d = defer.Deferred() + d = self.deferred = defer.Deferred() # we put everything in a queue so that more than one file may # be transferred in one connection. self.queue.append(dict(deferred=d, @@ -56,7 +56,6 @@ class FileTransfer(protocol.ClientFactory): if len(self.queue) == 1 and self.channel is not None: # the channel has emptied the queue self.channel.execute() - self.deferred = d return d def close(self): @@ -102,7 +101,6 @@ class SFTPChannel(channel.SSHChannel): self.localFile = open(localPath, 'rb') d = self.client.openFile(remotePath, filetransfer.FXF_WRITE | filetransfer.FXF_CREAT, {}) - print 'command_upload', params d.addCallbacks(self.writeChunk, self.logError) def writeChunk(self, remoteFile): @@ -123,7 +121,8 @@ class SFTPChannel(channel.SSHChannel): def finished(self, result): self.localFile.close() self.remFile.close() - self.d.callback('finished') + #self.d.callback('finished') + self.conn.factory.deferred.callback('finished') # classes for managing the SSH protocol and connection diff --git a/agent/transport/remote.py b/agent/transport/remote.py index bd822ae..56f4617 100644 --- a/agent/transport/remote.py +++ b/agent/transport/remote.py @@ -44,25 +44,18 @@ class Transporter(QueueableAgent): implements(ITransporter) - serverURL = '' - server = '' - host = port = None - method = '' + port = 22 machineName = '' - userName = '' - password = '' - resource = None def __init__(self, master): super(Transporter, self).__init__(master) config = master.config - self.serverURL = config.transport.remote.url - self.server = rpcapi.xmlrpc.Proxy(self.serverURL) - self.ftpServer = sftpapi.FileTransfer(self.host, self.port, self.userName, self.password) - #self.method = params[method] - #self.machineName = params[machineName] - #self.userName = params[userName] - #self.password = params[password] + serverURL = config.transport.remote.url + self.server = rpcapi.xmlrpc.Proxy(serverURL) + userName = config.transport.remote.ftp.user + password = config.transport.remote.ftp.password + host = config.transport.remote.ftp.url + self.ftpServer = sftpapi.FileTransfer(host, self.port, userName, password) def process(self): return self.transfer(self.params['resource']) @@ -71,12 +64,9 @@ class Transporter(QueueableAgent): """ Transfer the resource (an object providing IResource) to the server and return a Deferred. """ - #return self.server.callRemote('getMetadata', resource.metadata) self.deferred = defer.Deferred() - #print "**** RESOURCE.PATH: ", resource.path remoteFile = os.path.basename(resource.path) d = self.ftpServer.upload(resource.path, remoteFile) - #d = self.server.callRemote('getMetadata', resource.metadata) d.addErrback(self.errorHandler) d.addCallback(lambda result: self.server.callRemote('getMetadata', dict(resource.metadata))) @@ -97,14 +87,6 @@ class Transporter(QueueableAgent): This callback method is called when resource and metadata have been transferred successfully. """ - #print 'transferDone:', successMessage self.deferred.callback(result) -# def process(self): -# return self.collect() - -# def collect(self, filter=None): -# d = defer.succeed([]) -# return d - -agents.register(Transporter, Master, name='transport.remote') \ No newline at end of file +agents.register(Transporter, Master, name='transport.remote')