work in progress: resource transfer via sftp, + testing code

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2733 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-07-02 15:51:58 +00:00
parent f0373140fa
commit cea87a8225
4 changed files with 37 additions and 5 deletions

View file

@ -0,0 +1,18 @@
from twisted.internet import reactor
from cybertools.agent.transport.file.sftp import FileTransfer
def output(x):
print x
ft = FileTransfer('cy05.de', 22, 'scrat', '...')
d = ft.upload('text.txt', 'text.txt')
d.addCallback(output)
reactor.callLater(3, ft.close)
reactor.callLater(4, reactor.stop)
reactor.run()

View file

@ -10,4 +10,5 @@ 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'

View file

@ -56,6 +56,7 @@ 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):
@ -95,19 +96,28 @@ class SFTPChannel(channel.SSHChannel):
def command_upload(self):
params = self.params
remotePath = params['remotePath']
localPath = params['localPath']
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, clientFile):
print 'writeChunk', clientFile
params = self.params
d = clientFile.writeChunk(0, 'Hello World')
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')
d.addCallbacks(self.writeChunk, self.logError)
def logError(self, reason):
print 'error', reason
def finished(self, result):
self.deferred.callback('finished')
# classes for managing the SSH protocol and connection

View file

@ -28,6 +28,7 @@ from twisted.internet import defer
from zope.interface import implements
from cybertools.agent.system import rpcapi
#from cybertools.agent.system import sftpapi
from cybertools.agent.base.agent import Master
from cybertools.agent.core.agent import QueueableAgent
from cybertools.agent.interfaces import ITransporter
@ -55,6 +56,7 @@ class Transporter(QueueableAgent):
config = master.config
self.serverURL = config.transport.remote.url
self.server = rpcapi.xmlrpc.Proxy(self.serverURL)
#self.ftpServer = FileTransfer(host, port, username, password)
#self.method = params[method]
#self.machineName = params[machineName]
#self.userName = params[userName]
@ -69,6 +71,7 @@ class Transporter(QueueableAgent):
"""
#return self.server.callRemote('getMetadata', resource.metadata)
self.deferred = defer.Deferred()
# d = self.ftpServer.upload()
d = self.server.callRemote('getMetadata', resource.metadata)
d.addCallback(self.transferDone)
d.addErrback(self.errorHandler)