summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/FileMonitor/Pseudo.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-05-18 10:53:35 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-05-18 16:07:56 -0400
commitbc52f6ac0c56c9551b58fb5110259d87b3a97056 (patch)
treeb0dbe1fa57c47b7cda6d05dfff64b92a6d49973f /src/lib/Bcfg2/Server/FileMonitor/Pseudo.py
parentdbd958c387af890da5e7b455fb409f8e567dce15 (diff)
downloadbcfg2-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.py30
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