diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-05-18 10:53:35 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-05-18 16:07:56 -0400 |
commit | bc52f6ac0c56c9551b58fb5110259d87b3a97056 (patch) | |
tree | b0dbe1fa57c47b7cda6d05dfff64b92a6d49973f /src/lib/Bcfg2/Server/FileMonitor/Pseudo.py | |
parent | dbd958c387af890da5e7b455fb409f8e567dce15 (diff) | |
download | bcfg2-bc52f6ac0c56c9551b58fb5110259d87b3a97056.tar.gz bcfg2-bc52f6ac0c56c9551b58fb5110259d87b3a97056.tar.bz2 bcfg2-bc52f6ac0c56c9551b58fb5110259d87b3a97056.zip |
Added inotify filemonitor driver
Moved list of files to ignore into config
Diffstat (limited to 'src/lib/Bcfg2/Server/FileMonitor/Pseudo.py')
-rw-r--r-- | src/lib/Bcfg2/Server/FileMonitor/Pseudo.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Server/FileMonitor/Pseudo.py b/src/lib/Bcfg2/Server/FileMonitor/Pseudo.py new file mode 100644 index 000000000..4c2d90250 --- /dev/null +++ b/src/lib/Bcfg2/Server/FileMonitor/Pseudo.py @@ -0,0 +1,30 @@ +""" Pseudo provides static monitor support for file alteration events """ + +import os +import stat +import logging +from Bcfg2.Server.FileMonitor import FileMonitor, Event + +logger = logging.getLogger(__name__) + +class Pseudo(FileMonitor): + __priority__ = 99 + + def AddMonitor(self, path, obj): + """add a monitor to path, installing a callback to obj.HandleEvent""" + handleID = len(list(self.handles.keys())) + mode = os.stat(path)[stat.ST_MODE] + handle = Event(handleID, path, 'exists') + if stat.S_ISDIR(mode): + dirList = os.listdir(path) + self.pending_events.append(handle) + for includedFile in dirList: + self.pending_events.append(Event(handleID, + includedFile, + 'exists')) + self.pending_events.append(Event(handleID, path, 'endExist')) + else: + self.pending_events.append(Event(handleID, path, 'exists')) + if obj != None: + self.handles[handleID] = obj + return handleID |