Skip to content
Snippets Groups Projects
ftpFileSystemObserverAgent.py 1.31 KiB
Newer Older
#!/usr/bin/env python

from threading import Timer
from pollingFileSystemObserverAgent import PollingFileSystemObserverAgent
from dm.common.utility.ftpUtility import FtpUtility

class FtpFileSystemObserverAgent(PollingFileSystemObserverAgent):
    DEFAULT_POLLING_PERIOD_IN_SECONDS = 15

    def __init__(self, host, port, username=None, password=None, pollingPeriod=DEFAULT_POLLING_PERIOD_IN_SECONDS):
        PollingFileSystemObserverAgent.__init__(self, pollingPeriod)
        self.host = host
        self.port = port
        self.username = username
        self.password = password

    def getFiles(self, dataDirectory):
        (scheme, host, port, dirPath) = FtpUtility.parseFtpUrl(dataDirectory, defaultHost=self.host, defaultPort=self.port)
        self.logger.debug('Retrieving files from FTP host: %s, port: %s, directory path: %s' % (host, port, dirPath))
        ftpUtility = FtpUtility(host, port, self.username, self.password)
        return ftpUtility.getFiles(dirPath, {})

####################################################################
# Testing

if __name__ == '__main__':
    import time
    agent = FtpFileSystemObserverAgent('zagreb', 2811)
    print 'ORIGINAL FILES: ', agent.getFiles('/tmp/test')
    agent.startObservingPath('/tmp/test', 'e1')
    time.sleep(100)
    agent.stopObservingPath('/tmp/test', 'e1')