remote transport working via test script

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2769 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-07-24 05:54:53 +00:00
parent bfd6191683
commit 64ccc2cc94
6 changed files with 32 additions and 53 deletions

View file

@ -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()

View file

@ -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()

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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')
agents.register(Transporter, Master, name='transport.remote')