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$
"""
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()

View file

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

View file

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

View file

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