diff options
Diffstat (limited to 'src/lib/Bcfg2/Server/FileMonitor/Pseudo.py')
-rw-r--r-- | src/lib/Bcfg2/Server/FileMonitor/Pseudo.py | 25 |
1 files changed, 25 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..089d4cf0f --- /dev/null +++ b/src/lib/Bcfg2/Server/FileMonitor/Pseudo.py @@ -0,0 +1,25 @@ +""" Pseudo provides static monitor support for file alteration events """ + +import os +import logging +from Bcfg2.Server.FileMonitor import FileMonitor, Event + +logger = logging.getLogger(__name__) + +class Pseudo(FileMonitor): + __priority__ = 99 + + def AddMonitor(self, path, obj, handleID=None): + """add a monitor to path, installing a callback to obj.HandleEvent""" + if handleID is None: + handleID = len(list(self.handles.keys())) + self.events.append(Event(handleID, path, 'exists')) + if os.path.isdir(path): + dirList = os.listdir(path) + for includedFile in dirList: + self.events.append(Event(handleID, includedFile, 'exists')) + self.events.append(Event(handleID, path, 'endExist')) + + if obj != None: + self.handles[handleID] = obj + return handleID |