summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-24 11:11:16 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-24 11:11:37 -0400
commit0e88362fb001dd2f5cffd81126e842cd77f278de (patch)
tree05d1024e46ae70760f32e55cf4197e362cf49553
parent6e462508bbe27c125b025343d1fb5c0ccf702f14 (diff)
downloadbcfg2-0e88362fb001dd2f5cffd81126e842cd77f278de.tar.gz
bcfg2-0e88362fb001dd2f5cffd81126e842cd77f278de.tar.bz2
bcfg2-0e88362fb001dd2f5cffd81126e842cd77f278de.zip
DirectoryBacked: add class attribute to ignore certain patterns
-rw-r--r--src/lib/Bcfg2/Server/Plugin.py5
-rw-r--r--testsuite/Testlib/TestServer/TestPlugin.py13
2 files changed, 18 insertions, 0 deletions
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):