summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-11-05 14:44:13 +0000
committerGerrit Code Review <review@openstack.org>2014-11-05 14:44:13 +0000
commit6b6f2600bf29debd314c21f7b48af887f6c08c96 (patch)
tree918370a3f3f7904ac26465490556d9bffd794231
parent2a546acf22bc99c61277c370baa8a773baf3f68d (diff)
parent28f502751fe1f2ca9646f26f7a10a718ecf4ee2b (diff)
downloadceilometer-6b6f2600bf29debd314c21f7b48af887f6c08c96.tar.gz
Merge "Fix listener for update.start notifications" into stable/icehouse
-rw-r--r--ceilometer/network/notifications.py37
-rw-r--r--ceilometer/tests/network/test_notifications.py53
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()