diff --git a/ceilometer/objectstore/swift_middleware.py b/ceilometer/objectstore/swift_middleware.py index 35ae13146..1f3891e06 100644 --- a/ceilometer/objectstore/swift_middleware.py +++ b/ceilometer/objectstore/swift_middleware.py @@ -114,7 +114,10 @@ class CeilometerMiddleware(object): def publish_sample(self, env, bytes_received, bytes_sent): req = REQUEST.Request(env) - version, account, container, obj = split_path(req.path, 1, 4, True) + try: + version, account, container, obj = split_path(req.path, 1, 4, True) + except ValueError: + return now = timeutils.utcnow().isoformat() resource_metadata = { diff --git a/tests/objectstore/test_swift_middleware.py b/tests/objectstore/test_swift_middleware.py index f47e3bd1c..6717900b6 100644 --- a/tests/objectstore/test_swift_middleware.py +++ b/tests/objectstore/test_swift_middleware.py @@ -240,3 +240,11 @@ class TestSwiftMiddleware(base.TestCase): self.assertEqual(data.resource_metadata['version'], '1.0') self.assertEqual(data.resource_metadata['container'], 'container') self.assertEqual(data.resource_metadata['object'], None) + + def test_bogus_path(self): + app = swift_middleware.CeilometerMiddleware(FakeApp(), {}) + req = Request.blank('//v1/account/container', + environ={'REQUEST_METHOD': 'GET'}) + list(app(req.environ, self.start_response)) + samples = self.pipeline_manager.pipelines[0].samples + self.assertEqual(len(samples), 0)