diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-08-15 09:00:09 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-08-15 09:00:09 -0400 |
commit | 7890fd0aa5331541c71b893c313553765ca1628e (patch) | |
tree | 0352a5eb52dbe6213f019684487226487129c18e | |
parent | b455dafd90b9710020f798cd73d63cd049685695 (diff) | |
download | bcfg2-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.py | 5 | ||||
-rw-r--r-- | testsuite/Testlib/TestServer/TestPlugin.py | 13 |
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) |