From 0e88362fb001dd2f5cffd81126e842cd77f278de Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Fri, 24 Aug 2012 11:11:16 -0400 Subject: DirectoryBacked: add class attribute to ignore certain patterns --- src/lib/Bcfg2/Server/Plugin.py | 5 +++++ testsuite/Testlib/TestServer/TestPlugin.py | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/lib/Bcfg2/Server/Plugin.py b/src/lib/Bcfg2/Server/Plugin.py index e34fcd099..910bc0108 100644 --- a/src/lib/Bcfg2/Server/Plugin.py +++ b/src/lib/Bcfg2/Server/Plugin.py @@ -456,6 +456,7 @@ class DirectoryBacked(object): """This object is a coherent cache for a filesystem hierarchy of files.""" __child__ = FileBacked patterns = re.compile('.*') + ignore = None def __init__(self, data, fam): """Initialize the DirectoryBacked object. @@ -550,6 +551,10 @@ class DirectoryBacked(object): # the first event we get is on the data directory itself event.filename = event.filename[len(self.data) + 1:] + if self.ignore and self.ignore.search(event.filename): + logger.debug("Ignoring event %s" % event.filename) + return + # Calculate the absolute and relative paths this event refers to abspath = os.path.join(self.data, self.handles[event.requestID], event.filename) diff --git a/testsuite/Testlib/TestServer/TestPlugin.py b/testsuite/Testlib/TestServer/TestPlugin.py index 95720a53f..f62d6f0f0 100644 --- a/testsuite/Testlib/TestServer/TestPlugin.py +++ b/testsuite/Testlib/TestServer/TestPlugin.py @@ -505,6 +505,7 @@ class TestDirectoryBacked(Bcfg2TestCase): 6: 'xyzzy/', 7: 'xyzzy/plugh/'} testfiles = ['foo', 'bar/baz.txt', 'plugh.py'] + ignore = [] # ignore no events badevents = [] # DirectoryBacked handles all files, so there's no # such thing as a bad event @@ -716,6 +717,18 @@ class TestDirectoryBacked(Bcfg2TestCase): db.HandleEvent(event) self.assertFalse(mock_add_entry.called) self.assertFalse(mock_add_monitor.called) + + # test ignored events + for fname in self.ignore: + reset() + event = get_event(fname, "created", 1) + db.HandleEvent(event) + self.assertFalse(mock_isdir.called, + msg="Failed to ignore %s" % fname) + self.assertFalse(mock_add_entry.called, + msg="Failed to ignore %s" % fname) + self.assertFalse(mock_add_monitor.called, + msg="Failed to ignore %s" % fname) class TestXMLFileBacked(TestFileBacked): -- cgit v1.2.3-1-g7c22