From 051565a155b9fa55d5e165985dfaf689ae4f40a2 Mon Sep 17 00:00:00 2001 From: scrat Date: Sat, 19 Jul 2008 09:10:44 +0000 Subject: [PATCH] adaptions to get main_transport working git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2763 fd906abe-77d9-0310-91a1-e0d9ade77398 --- agent/testing/main_transport.py | 8 ++++++++ agent/testing/test_sftp.py | 2 +- agent/transport/file/sftp.py | 26 +++++++++++++++++++------- agent/transport/remote.py | 4 ++-- 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/agent/testing/main_transport.py b/agent/testing/main_transport.py index 64c2029..0efb8ab 100644 --- a/agent/testing/main_transport.py +++ b/agent/testing/main_transport.py @@ -23,6 +23,11 @@ Agent application. $Id$ """ +import sys + +print "****printing sys.path****" +for elem in sys.path: + print elem import os from twisted.internet import reactor @@ -59,6 +64,8 @@ def setupEnvironment(config): from cybertools.agent.control import cmdline from cybertools.agent.system import rpcapi rpcapi.setup(config) + from cybertools.agent.system import sftpapi + sftpapi.setup(config) from cybertools.agent.transport import remote @@ -74,5 +81,6 @@ if __name__ == '__main__': metadata01 = Metadata(dict(filename='dummy.txt')) res01 = Resource() res01.metadata = metadata01 + res01.path = '/dummydir/dummyfile' controller.enterJob('sample', 'sample03', params=dict(resource=res01)) startReactor() diff --git a/agent/testing/test_sftp.py b/agent/testing/test_sftp.py index 67a55e1..9a1f552 100644 --- a/agent/testing/test_sftp.py +++ b/agent/testing/test_sftp.py @@ -9,7 +9,7 @@ def output(x): ft = FileTransfer('cy05.de', 22, 'scrat', '...') -d = ft.upload('text.txt', 'text.txt') +d = ft.upload('d:\\text.txt', 'text.txt') d.addCallback(output) reactor.callLater(3, ft.close) diff --git a/agent/transport/file/sftp.py b/agent/transport/file/sftp.py index a34cb9e..dc5f8e4 100644 --- a/agent/transport/file/sftp.py +++ b/agent/transport/file/sftp.py @@ -26,6 +26,7 @@ from twisted.conch.ssh import channel, common, connection from twisted.conch.ssh import filetransfer, transport, userauth from twisted.internet import defer, protocol, reactor +CHUNKSIZE = 8096 class FileTransfer(protocol.ClientFactory): """ Transfers files to a remote SCP/SFTP server. @@ -104,19 +105,30 @@ class SFTPChannel(channel.SSHChannel): d.addCallbacks(self.writeChunk, self.logError) def writeChunk(self, remoteFile): - # data = self.localFile.read(chunkSize) - # if len(data) < chunkSize(): - # write rest - # addCallbacks(self.finished, self.logError) - print 'writeChunk', remoteFile - d = remoteFile.writeChunk(0, 'Hello World') + data = self.localFile.read(CHUNKSIZE) + if len(data) < CHUNKSIZE: + # write rest + print "[DEBUG] **** WRITING REMAINING CHUNK\n" + print "[DEBUG] **** len(data): ", len(data) + print "[DEBUG] **** data: %s \n" %(data) + self.d = remoteFile.writeChunk(len(data), data) + self.d.addCallbacks(self.finished, self.logError) + print "[DEBUG] **** WRITING CHUNK\n" + #self.d = remoteFile.writeChunk(CHUNKSIZE, data) + #self.d.addCallbacks(self.writeChunk, self.logError) + d = remoteFile.writeChunk(CHUNKSIZE, data) d.addCallbacks(self.writeChunk, self.logError) def logError(self, reason): print 'error', reason def finished(self, result): - self.deferred.callback('finished') + #self.deferred.callback('finished') + print "[DEBUG] **** finished has been called\n" + print "[DEBUG] **** result: ", result + self.localFile.close() + self.d.callback('finished') + #result.callback('finished') # classes for managing the SSH protocol and connection diff --git a/agent/transport/remote.py b/agent/transport/remote.py index 03e4ae1..2aa7559 100644 --- a/agent/transport/remote.py +++ b/agent/transport/remote.py @@ -58,8 +58,7 @@ class Transporter(QueueableAgent): 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.ftpServer = sftpapi.FileTransfer(self.host, self.port, self.userName, self.password) #self.method = params[method] #self.machineName = params[machineName] #self.userName = params[userName] @@ -74,6 +73,7 @@ class Transporter(QueueableAgent): """ #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)