diff --git a/ceilometermiddleware/swift.py b/ceilometermiddleware/swift.py index 0235628..9d09c1a 100644 --- a/ceilometermiddleware/swift.py +++ b/ceilometermiddleware/swift.py @@ -161,9 +161,10 @@ class Swift(object): @_log_and_ignore_error def emit_event(self, env, bytes_received, bytes_sent, outcome='success'): - if (env.get('HTTP_X_SERVICE_PROJECT_ID') or + if ((env.get('HTTP_X_SERVICE_PROJECT_ID') or env.get('HTTP_X_PROJECT_ID') or - env.get('HTTP_X_TENANT_ID')) in self.ignore_projects: + env.get('HTTP_X_TENANT_ID')) in self.ignore_projects or + env.get('swift.source') is not None): return path = urlparse.quote(env['PATH_INFO']) diff --git a/ceilometermiddleware/tests/test_swift.py b/ceilometermiddleware/tests/test_swift.py index 2ca0be9..4df627d 100644 --- a/ceilometermiddleware/tests/test_swift.py +++ b/ceilometermiddleware/tests/test_swift.py @@ -381,3 +381,16 @@ class TestSwift(tests_base.TestCase): self.assertIsNone(metadata['container']) self.assertIsNone(metadata['object']) self.assertEqual('head', data[2]['target']['action']) + + def test_put_with_swift_source(self): + app = swift.Swift(FakeApp(), {}) + + req = FakeRequest( + '/1.0/account/container/obj', + environ={'REQUEST_METHOD': 'PUT', + 'wsgi.input': + six.moves.cStringIO('some stuff'), + 'swift.source': 'RL'}) + with mock.patch('oslo_messaging.Notifier.info') as notify: + list(app(req.environ, self.start_response)) + self.assertEqual(False, notify.called)