summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRohit Jaiswal <rohit.jaiswal@hp.com>2015-08-25 23:30:18 +0000
committerRohit Jaiswal <rohit.jaiswal@hp.com>2015-09-15 15:56:00 +0000
commit7005d98f47be809243d627cee7ca594390cddec2 (patch)
tree25d263a22b3c0ade55c0735ad832da62c4f84057
parent6a5642bbc2774a76ee61ed8874be77520e57466c (diff)
downloadceilometermiddleware-0.3.0.tar.gz
Ignore request with swift.source in env0.3.0
swift.source in env indicates request that originate in swift middleware as a side effect of another client request. These requests should not be metered, this fix adds a check for swift.source in env and avoids generating a metering event. Change-Id: I2ecbde8667cc366b192a2248abc93d0936956978 Closes-bug: 1485711
-rw-r--r--ceilometermiddleware/swift.py5
-rw-r--r--ceilometermiddleware/tests/test_swift.py13
2 files changed, 16 insertions, 2 deletions
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)