summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-15 09:00:09 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-15 09:00:09 -0400
commit7890fd0aa5331541c71b893c313553765ca1628e (patch)
tree0352a5eb52dbe6213f019684487226487129c18e
parentb455dafd90b9710020f798cd73d63cd049685695 (diff)
downloadbcfg2-7890fd0aa5331541c71b893c313553765ca1628e.tar.gz
bcfg2-7890fd0aa5331541c71b893c313553765ca1628e.tar.bz2
bcfg2-7890fd0aa5331541c71b893c313553765ca1628e.zip
fixed event on data directory itself to DirectoryBacked plugins
-rw-r--r--src/lib/Bcfg2/Server/Plugin.py5
-rw-r--r--testsuite/Testlib/TestServer/TestPlugin.py13
2 files changed, 15 insertions, 3 deletions
diff --git a/src/lib/Bcfg2/Server/Plugin.py b/src/lib/Bcfg2/Server/Plugin.py
index 7e7f7db18..58e5dafeb 100644
--- a/src/lib/Bcfg2/Server/Plugin.py
+++ b/src/lib/Bcfg2/Server/Plugin.py
@@ -547,7 +547,10 @@ class DirectoryBacked(object):
return
# Clean up path names
- event.filename = os.path.normpath(event.filename.lstrip('/'))
+ event.filename = os.path.normpath(event.filename)
+ if event.filename.startswith(self.data):
+ # the first event we get is on the data directory itself
+ event.filename = event.filename[len(self.data) + 1:]
# Calculate the absolute and relative paths this event refers to
abspath = os.path.join(self.data, self.handles[event.requestID],
diff --git a/testsuite/Testlib/TestServer/TestPlugin.py b/testsuite/Testlib/TestServer/TestPlugin.py
index 3cfe0ca42..ab9754e00 100644
--- a/testsuite/Testlib/TestServer/TestPlugin.py
+++ b/testsuite/Testlib/TestServer/TestPlugin.py
@@ -489,7 +489,8 @@ class TestDirectoryBacked(Bcfg2TestCase):
def get_obj(self, fam=None):
if fam is None:
fam = Mock()
- return self.test_obj(datastore, fam)
+ return self.test_obj(os.path.join(datastore, self.test_obj.__name__),
+ fam)
@patch("Bcfg2.Server.Plugin.%s.add_directory_monitor" % test_obj.__name__)
def test__init(self, mock_add_monitor):
@@ -587,8 +588,16 @@ class TestDirectoryBacked(Bcfg2TestCase):
event.requestID = requestID
return event
- # test that events on paths that aren't handled fail properly
+ # test events on the data directory itself
reset()
+ mock_isdir.return_value = True
+ event = get_event(db.data, "exists", 1)
+ db.HandleEvent(event)
+ mock_add_monitor.assert_called_with("")
+
+ # test events on paths that aren't handled
+ reset()
+ mock_isdir.return_value = False
event = get_event('/foo', 'created', max(self.testpaths.keys()) + 1)
db.HandleEvent(event)
self.assertFalse(mock_add_monitor.called)