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:
parent
bfd6191683
commit
64ccc2cc94
6 changed files with 32 additions and 53 deletions
|
@ -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()
|
||||
|
|
|
@ -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()
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Add table
Reference in a new issue