diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-11-05 14:44:13 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-11-05 14:44:13 +0000 |
commit | 6b6f2600bf29debd314c21f7b48af887f6c08c96 (patch) | |
tree | 918370a3f3f7904ac26465490556d9bffd794231 | |
parent | 2a546acf22bc99c61277c370baa8a773baf3f68d (diff) | |
parent | 28f502751fe1f2ca9646f26f7a10a718ecf4ee2b (diff) | |
download | ceilometer-6b6f2600bf29debd314c21f7b48af887f6c08c96.tar.gz |
Merge "Fix listener for update.start notifications" into stable/icehouse
-rw-r--r-- | ceilometer/network/notifications.py | 37 | ||||
-rw-r--r-- | ceilometer/tests/network/test_notifications.py | 53 |
2 files changed, 54 insertions, 36 deletions
diff --git a/ceilometer/network/notifications.py b/ceilometer/network/notifications.py index bd8dc5b7..f5f8fc62 100644 --- a/ceilometer/network/notifications.py +++ b/ceilometer/network/notifications.py @@ -19,7 +19,6 @@ events. """ -import copy from oslo.config import cfg @@ -81,21 +80,29 @@ class NetworkNotificationBase(plugin.NotificationBase): counter_name = getattr(self, 'counter_name', self.resource_name) unit_value = getattr(self, 'unit', self.resource_name) - payload = message['payload'].get(self.resource_name) - payloads = message['payload'].get(self.resource_name + 's') - payload_list = copy.copy([payload] if payload else payloads) - for p in payload_list: - message['payload'] = p + resource = message['payload'].get(self.resource_name) + if resource: + # NOTE(liusheng): In %s.update.start notifications, the id is in + # message['payload'] instead of resource itself. + if message['event_type'].endswith('update.start'): + resource['id'] = message['payload']['id'] + resources = [resource] + else: + resources = message['payload'].get(self.resource_name + 's') + + resource_message = message.copy() + for resource in resources: + resource_message['payload'] = resource yield sample.Sample.from_notification( name=counter_name, type=sample.TYPE_GAUGE, unit=unit_value, volume=1, - user_id=message['_context_user_id'], - project_id=message['_context_tenant_id'], - resource_id=message['payload']['id'], - message=message) - event_type_split = message['event_type'].split('.') + user_id=resource_message['_context_user_id'], + project_id=resource_message['_context_tenant_id'], + resource_id=resource['id'], + message=resource_message) + event_type_split = resource_message['event_type'].split('.') if len(event_type_split) > 2: yield sample.Sample.from_notification( name=counter_name @@ -103,10 +110,10 @@ class NetworkNotificationBase(plugin.NotificationBase): type=sample.TYPE_DELTA, unit=unit_value, volume=1, - user_id=message['_context_user_id'], - project_id=message['_context_tenant_id'], - resource_id=message['payload']['id'], - message=message) + user_id=resource_message['_context_user_id'], + project_id=resource_message['_context_tenant_id'], + resource_id=resource['id'], + message=resource_message) class Network(NetworkNotificationBase): diff --git a/ceilometer/tests/network/test_notifications.py b/ceilometer/tests/network/test_notifications.py index 49cfaa72..7aca4aa4 100644 --- a/ceilometer/tests/network/test_notifications.py +++ b/ceilometer/tests/network/test_notifications.py @@ -351,25 +351,35 @@ NOTIFICATION_FLOATINGIP_EXISTS = { u'message_id': u'9e839576-cc47-4c60-a7d8-5743681213b1'} -NOTIFICATION_FLOATINGIP_UPDATE = { - u'_context_roles': [u'anotherrole', - u'Member'], - u'_context_read_deleted': u'no', - u'event_type': u'floatingip.update.start', - u'timestamp': u'2012-09-27 14:11:27.086575', - u'_context_tenant_id': u'82ed0c40ebe64d0bb3310027039c8ed2', - u'payload': {u'floatingip': - {u'fixed_ip_address': u'172.24.4.227', - u'id': u'a68c9390-829e-4732-bad4-e0a978498cc5', - u'port_id': u'e12150f2-885b-45bc-a248-af1c23787d55'}}, - u'priority': u'INFO', - u'_unique_id': u'e483db017b2341fd9ec314dcda88d3e9', - u'_context_is_admin': False, - u'_context_project_id': u'82ed0c40ebe64d0bb3310027039c8ed2', - u'_context_timestamp': u'2012-09-27 14:11:26.924779', - u'_context_user_id': u'b44b7ce67fc84414a5c1660a92a1b862', - u'publisher_id': u'network.ubuntu-VirtualBox', - u'message_id': u'9e839576-cc47-4c60-a7d8-5743681213b1'} +NOTIFICATION_FLOATINGIP_UPDATE_START = { + '_context_roles': [u'_member_', + u'admin', + u'heat_stack_owner'], + '_context_request_id': u'req-bd5ed336-242f-4705-836e-8e8f3d0d1ced', + '_context_read_deleted': u'no', + 'event_type': u'floatingip.update.start', + '_context_user_name': u'admin', + '_context_project_name': u'admin', + 'timestamp': u'2014-05-3107: 19: 43.463101', + '_context_tenant_id': u'9fc714821a3747c8bc4e3a9bfbe82732', + '_context_tenant_name': u'admin', + '_context_tenant': u'9fc714821a3747c8bc4e3a9bfbe82732', + 'message_id': u'0ab6d71f-ba0a-4501-86fe-6cc20521ef5a', + 'priority': 'info', + '_context_is_admin': True, + '_context_project_id': u'9fc714821a3747c8bc4e3a9bfbe82732', + '_context_timestamp': u'2014-05-3107: 19: 43.460767', + '_context_user': u'6ca7b13b33e4425cae0b85e2cf93d9a1', + '_context_user_id': u'6ca7b13b33e4425cae0b85e2cf93d9a1', + 'publisher_id': u'network.devstack', + 'payload': { + u'id': u'64262b2a-8f5d-4ade-9405-0cbdd03c1555', + u'floatingip': { + u'fixed_ip_address': u'172.24.4.227', + u'port_id': u'8ab815c8-03cc-4b45-a673-79bdd0c258f2' + } + } +} NOTIFICATION_L3_METER = { @@ -467,9 +477,10 @@ class TestNotifications(test.BaseTestCase): def test_floatingip_update(self): v = notifications.FloatingIP() - samples = list(v.process_notification(NOTIFICATION_FLOATINGIP_UPDATE)) + samples = list(v.process_notification( + NOTIFICATION_FLOATINGIP_UPDATE_START)) self.assertEqual(len(samples), 2) - self.assertEqual(samples[0].name, "ip.floating") + self.assertEqual("ip.floating", samples[0].name) def test_metering_report(self): v = notifications.Bandwidth() |