add missing objectstore entry points

the ceilometermiddleware notifications are missing entry points. this
patch adds them. it also breaks the endpoint in two: one to build
real meters and one to build the request event meter.

Change-Id: I75ba73c150c0d9fa282d0388fb7178e351511097
Closes-Bug: #1425303
This commit is contained in:
gordon chung 2015-02-24 17:55:52 -05:00
parent beed4d4569
commit 29b2709256
3 changed files with 34 additions and 13 deletions

View File

@ -46,6 +46,25 @@ class _Base(plugin_base.NotificationBase):
class SwiftWsgiMiddleware(_Base):
@property
def event_types(self):
return ['objectstore.http.request']
def process_notification(self, message):
yield sample.Sample.from_notification(
name='storage.api.request',
type=sample.TYPE_DELTA,
unit='request',
volume=1,
resource_id=message['payload']['target']['id'],
user_id=message['payload']['initiator']['id'],
project_id=message['payload']['initiator']['project_id'],
message=message)
class SwiftWsgiMiddlewareMeters(_Base):
@property
def event_types(self):
return ['objectstore.http.request']
@ -61,12 +80,3 @@ class SwiftWsgiMiddleware(_Base):
user_id=message['payload']['initiator']['id'],
project_id=message['payload']['initiator']['project_id'],
message=message)
yield sample.Sample.from_notification(
name='storage.api.request',
type=sample.TYPE_DELTA,
unit='request',
volume=1,
resource_id=message['payload']['target']['id'],
user_id=message['payload']['initiator']['id'],
project_id=message['payload']['initiator']['project_id'],
message=message)

View File

@ -92,15 +92,24 @@ class TestMiddlewareNotifications(test.BaseTestCase):
def test_middleware_event(self):
v = notifications.SwiftWsgiMiddleware(mock.Mock())
samples = list(v.process_notification(MIDDLEWARE_EVENT))
self.assertEqual(3, len(samples))
self.assertEqual(1, len(samples))
target = MIDDLEWARE_EVENT['payload']['target']
initiator = MIDDLEWARE_EVENT['payload']['initiator']
self.assertEqual(target['id'], samples[0].resource_id)
self.assertEqual(initiator['id'], samples[0].user_id)
self.assertEqual(initiator['project_id'], samples[0].project_id)
def test_middleware_event_meters(self):
v = notifications.SwiftWsgiMiddlewareMeters(mock.Mock())
samples = list(v.process_notification(MIDDLEWARE_EVENT))
self.assertEqual(2, len(samples))
target = MIDDLEWARE_EVENT['payload']['target']
initiator = MIDDLEWARE_EVENT['payload']['initiator']
for i in range(2):
measure = MIDDLEWARE_EVENT['payload']['measurements'][i]
self.assertEqual(measure['metric']['name'], samples[i].name)
self.assertEqual(measure['metric']['unit'], samples[i].unit)
self.assertEqual(measure['result'], samples[i].volume)
target = MIDDLEWARE_EVENT['payload']['target']
initiator = MIDDLEWARE_EVENT['payload']['initiator']
for i in range(3):
self.assertEqual(target['id'], samples[i].resource_id)
self.assertEqual(initiator['id'], samples[i].user_id)
self.assertEqual(initiator['project_id'], samples[i].project_id)

View File

@ -92,6 +92,8 @@ ceilometer.notification =
network.services.vpn.ipsecpolicy = ceilometer.network.notifications:IPSecPolicy
network.services.vpn.ikepolicy = ceilometer.network.notifications:IKEPolicy
network.services.vpn.connections = ceilometer.network.notifications:IPSecSiteConnection
objectstore.request = ceilometer.objectstore.notifications:SwiftWsgiMiddleware
objectstore.request.meters = ceilometer.objectstore.notifications:SwiftWsgiMiddlewareMeters
ceilometer.discover =
local_instances = ceilometer.compute.discovery:InstanceDiscovery