From ab93976a43e2e6b73322f9ba36c5a031e9eb5b81 Mon Sep 17 00:00:00 2001 From: Andrew Melton Date: Thu, 27 Jun 2013 12:47:44 -0400 Subject: [PATCH] Only populate from image_meta if available --- stacktach/notification.py | 10 ++++++---- tests/unit/test_notification.py | 35 +++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/stacktach/notification.py b/stacktach/notification.py index f57f84b..ae402b6 100644 --- a/stacktach/notification.py +++ b/stacktach/notification.py @@ -14,10 +14,12 @@ class Notification(object): self.image_type = image_type.get_numeric_code(self.payload) self.publisher = self.body['publisher_id'] self.event = self.body['event_type'] - self.os_architecture = self.payload['image_meta']['org.openstack__1__architecture'] - self.os_distro = self.payload['image_meta']['org.openstack__1__os_distro'] - self.os_version = self.payload['image_meta']['org.openstack__1__os_version'] - self.rax_options = self.payload['image_meta']['com.rackspace__1__options'] + image_meta = self.payload.get('image_meta', {}) + self.os_architecture = image_meta.get('org.openstack__1__architecture', + '') + self.os_distro = image_meta.get('org.openstack__1__os_distro', '') + self.os_version = image_meta.get('org.openstack__1__os_version', '') + self.rax_options = image_meta.get('com.rackspace__1__options', '') @property def when(self): diff --git a/tests/unit/test_notification.py b/tests/unit/test_notification.py index a4aacf1..feeb696 100644 --- a/tests/unit/test_notification.py +++ b/tests/unit/test_notification.py @@ -65,6 +65,41 @@ class NotificationTestCase(unittest.TestCase): self.assertEquals(kwargs['event'], 'compute.instance.create.start') self.assertEquals(kwargs['request_id'], REQUEST_ID_1) + def test_rawdata_kwargs_missing_image_meta(self): + message = { + 'event_type': 'compute.instance.create.start', + 'publisher_id': 'compute.cpu1-n01.example.com', + '_context_request_id': REQUEST_ID_1, + '_context_project_id': TENANT_ID_1, + 'timestamp': '2013-06-12 06:30:52.790476', + 'payload': { + 'instance_id': INSTANCE_ID_1, + 'state': 'active', + 'old_state': 'building', + 'old_task_state': 'build', + "new_task_state": 'rebuild_spawning', + 'image_meta': { + 'image_type': 'base', + } + } + } + kwargs = Notification(message).rawdata_kwargs('1', 'monitor.info', 'json') + + self.assertEquals(kwargs['host'], 'cpu1-n01.example.com') + self.assertEquals(kwargs['deployment'], '1') + self.assertEquals(kwargs['routing_key'], 'monitor.info') + self.assertEquals(kwargs['tenant'], TENANT_ID_1) + self.assertEquals(kwargs['json'], 'json') + self.assertEquals(kwargs['state'], 'active') + self.assertEquals(kwargs['old_state'], 'building') + self.assertEquals(kwargs['old_task'], 'build') + self.assertEquals(kwargs['task'], 'rebuild_spawning') + self.assertEquals(kwargs['image_type'], 1) + self.assertEquals(kwargs['when'], Decimal('1371018652.790476')) + self.assertEquals(kwargs['publisher'], 'compute.cpu1-n01.example.com') + self.assertEquals(kwargs['event'], 'compute.instance.create.start') + self.assertEquals(kwargs['request_id'], REQUEST_ID_1) + def test_rawdata_kwargs_for_message_with_no_host(self): message = { 'event_type': 'compute.instance.create.start',