adaptions to get main_transport working

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2763 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
scrat 2008-07-19 09:10:44 +00:00
parent c89431fbf1
commit 051565a155
4 changed files with 30 additions and 10 deletions

View file

@ -23,6 +23,11 @@ Agent application.
$Id$ $Id$
""" """
import sys
print "****printing sys.path****"
for elem in sys.path:
print elem
import os import os
from twisted.internet import reactor from twisted.internet import reactor
@ -59,6 +64,8 @@ def setupEnvironment(config):
from cybertools.agent.control import cmdline from cybertools.agent.control import cmdline
from cybertools.agent.system import rpcapi from cybertools.agent.system import rpcapi
rpcapi.setup(config) rpcapi.setup(config)
from cybertools.agent.system import sftpapi
sftpapi.setup(config)
from cybertools.agent.transport import remote from cybertools.agent.transport import remote
@ -74,5 +81,6 @@ if __name__ == '__main__':
metadata01 = Metadata(dict(filename='dummy.txt')) metadata01 = Metadata(dict(filename='dummy.txt'))
res01 = Resource() res01 = Resource()
res01.metadata = metadata01 res01.metadata = metadata01
res01.path = '/dummydir/dummyfile'
controller.enterJob('sample', 'sample03', params=dict(resource=res01)) controller.enterJob('sample', 'sample03', params=dict(resource=res01))
startReactor() startReactor()

View file

@ -9,7 +9,7 @@ def output(x):
ft = FileTransfer('cy05.de', 22, 'scrat', '...') ft = FileTransfer('cy05.de', 22, 'scrat', '...')
d = ft.upload('text.txt', 'text.txt') d = ft.upload('d:\\text.txt', 'text.txt')
d.addCallback(output) d.addCallback(output)
reactor.callLater(3, ft.close) reactor.callLater(3, ft.close)

View file

@ -26,6 +26,7 @@ from twisted.conch.ssh import channel, common, connection
from twisted.conch.ssh import filetransfer, transport, userauth from twisted.conch.ssh import filetransfer, transport, userauth
from twisted.internet import defer, protocol, reactor from twisted.internet import defer, protocol, reactor
CHUNKSIZE = 8096
class FileTransfer(protocol.ClientFactory): class FileTransfer(protocol.ClientFactory):
""" Transfers files to a remote SCP/SFTP server. """ Transfers files to a remote SCP/SFTP server.
@ -104,19 +105,30 @@ class SFTPChannel(channel.SSHChannel):
d.addCallbacks(self.writeChunk, self.logError) d.addCallbacks(self.writeChunk, self.logError)
def writeChunk(self, remoteFile): def writeChunk(self, remoteFile):
# data = self.localFile.read(chunkSize) data = self.localFile.read(CHUNKSIZE)
# if len(data) < chunkSize(): if len(data) < CHUNKSIZE:
# write rest # write rest
# addCallbacks(self.finished, self.logError) print "[DEBUG] **** WRITING REMAINING CHUNK\n"
print 'writeChunk', remoteFile print "[DEBUG] **** len(data): ", len(data)
d = remoteFile.writeChunk(0, 'Hello World') 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) d.addCallbacks(self.writeChunk, self.logError)
def logError(self, reason): def logError(self, reason):
print 'error', reason print 'error', reason
def finished(self, result): 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 # classes for managing the SSH protocol and connection

View file

@ -58,8 +58,7 @@ class Transporter(QueueableAgent):
config = master.config config = master.config
self.serverURL = config.transport.remote.url self.serverURL = config.transport.remote.url
self.server = rpcapi.xmlrpc.Proxy(self.serverURL) self.server = rpcapi.xmlrpc.Proxy(self.serverURL)
self.ftpServer = sftpapi.FileTransfer(self.host, self.port, self.ftpServer = sftpapi.FileTransfer(self.host, self.port, self.userName, self.password)
self.userName, self.password)
#self.method = params[method] #self.method = params[method]
#self.machineName = params[machineName] #self.machineName = params[machineName]
#self.userName = params[userName] #self.userName = params[userName]
@ -74,6 +73,7 @@ class Transporter(QueueableAgent):
""" """
#return self.server.callRemote('getMetadata', resource.metadata) #return self.server.callRemote('getMetadata', resource.metadata)
self.deferred = defer.Deferred() self.deferred = defer.Deferred()
print "**** RESOURCE.PATH: ", resource.path
remoteFile = os.path.basename(resource.path) remoteFile = os.path.basename(resource.path)
d = self.ftpServer.upload(resource.path, remoteFile) d = self.ftpServer.upload(resource.path, remoteFile)
#d = self.server.callRemote('getMetadata', resource.metadata) #d = self.server.callRemote('getMetadata', resource.metadata)