fileconveyor
fileconveyor copied to clipboard
The transporter module 'sftp' could not be found. Tried (sftp, transporters.transporter_sftp)
<servers>
<server name="sftp push frontend" transporter="sftp" maxConnections="5">
<host>xxx.xxx.xxx.xxx</host>
<username>root</username>
<url>http://xxx.xxx.xxx.xxx/</url>
</server>
</servers>
# python /root/fileconveyor/fileconveyor/arbitrator.py
/root/fileconveyor/fileconveyor/filter.py:10: DeprecationWarning: the sets module is deprecated
from sets import Set, ImmutableSet
2014-01-23 00:07:46,331 - Arbitrator - WARNING - File Conveyor is initializing.
2014-01-23 00:07:46,337 - Arbitrator - WARNING - Loaded config file.
2014-01-23 00:07:46,340 - Arbitrator - ERROR - The transporter module 'sftp' could not be found. Tried (sftp, transporters.transporter_sftp)
TransporterAvailabilityTestError Consult the log file for details
The files in the fileconveyor directories are all owned and grouped by root (and I am logged in as root), they are 644 (although I also tried 755 just in case there was an executable issue with the subdirectories).
I don't understand why it isn't finding the transporter_sftp.py module. I've looked through other issues with this same error, but none of their fixes work for me.
I installed using:
pip install -e git+https://github.com/wimleers/fileconveyor@master#egg=fileconveyor
I was able to use the symlink_or_copy transporter, but still not able to use the sftp transporter.
I'm an experienced dev, but I know nothing about python, django, etc. However, it looks to me like the transporter_sftp simply doesn't work at all with the current version of SFTPStorage.
I was able to get the sftp transporter recognized after I yum installed python-paramiko, and then the next error message I received was that the SFTPStorage init method expects only 1 param, but 4 were given. I dug into the SFTPStorage code and it looks like it grabs all of its configuration variables from a class called django.conf.settings, but that's not at all how the sftp transporter expects to be sending those variables.
Traceback (most recent call last):
File "/root/src/fileconveyor/fileconveyor/arbitrator.py", line 1185, in <module>
run_file_conveyor()
File "/root/src/fileconveyor/fileconveyor/arbitrator.py", line 1168, in run_file_conveyor
arbitrator = Arbitrator(os.path.join(FILE_CONVEYOR_PATH, "config.xml"), restart)
File "/root/src/fileconveyor/fileconveyor/arbitrator.py", line 151, in __init__
transporter = self.__create_transporter(server)
File "/root/src/fileconveyor/fileconveyor/arbitrator.py", line 928, in __create_transporter
transporter = transporter_class(settings, self.transporter_callback, self.transporter_error_callback, "Arbitrator")
File "/root/src/fileconveyor/fileconveyor/transporters/transporter_sftp.py", line 35, in __init__
self.storage = SFTPStorage(location, self.settings["url"], key)
TypeError: __init__() takes exactly 1 argument (4 given)