diff options
-rw-r--r-- | nova/notifications.py | 12 | ||||
-rw-r--r-- | nova/tests/test_notifications.py | 10 |
2 files changed, 17 insertions, 5 deletions
diff --git a/nova/notifications.py b/nova/notifications.py index 13e2a8fca..a90fa855e 100644 --- a/nova/notifications.py +++ b/nova/notifications.py @@ -106,8 +106,12 @@ def send_update(context, old_instance, new_instance, service=None, host=None): else: try: + old_display_name = None + if new_instance["display_name"] != old_instance["display_name"]: + old_display_name = old_instance["display_name"] _send_instance_update_notification(context, new_instance, - service=service, host=host) + service=service, host=host, + old_display_name=old_display_name) except Exception: LOG.exception(_("Failed to send state update notification"), instance=new_instance) @@ -155,7 +159,7 @@ def send_update_with_states(context, instance, old_vm_state, new_vm_state, def _send_instance_update_notification(context, instance, old_vm_state=None, old_task_state=None, new_vm_state=None, new_task_state=None, - service="compute", host=None): + service="compute", host=None, old_display_name=None): """Send 'compute.instance.update' notification to inform observers about instance state changes. """ @@ -185,6 +189,10 @@ def _send_instance_update_notification(context, instance, old_vm_state=None, bw = bandwidth_usage(instance, audit_start) payload["bandwidth"] = bw + # add old display name if it is changed + if old_display_name: + payload["old_display_name"] = old_display_name + publisher_id = notifier_api.publisher_id(service, host) notifier_api.notify(context, publisher_id, 'compute.instance.update', diff --git a/nova/tests/test_notifications.py b/nova/tests/test_notifications.py index 23fe4c82b..0d7c0e7a8 100644 --- a/nova/tests/test_notifications.py +++ b/nova/tests/test_notifications.py @@ -295,13 +295,17 @@ class NotificationsTestCase(test.TestCase): self.assertEquals(payload["access_ip_v6"], access_ip_v6) def test_send_name_update(self): - notifications.send_update(self.context, self.instance, self.instance) + param = {"display_name": "new_display_name"} + new_name_inst = self._wrapped_create(params=param) + notifications.send_update(self.context, self.instance, new_name_inst) self.assertEquals(1, len(test_notifier.NOTIFICATIONS)) notif = test_notifier.NOTIFICATIONS[0] payload = notif["payload"] - display_name = self.instance["display_name"] + old_display_name = self.instance["display_name"] + new_display_name = new_name_inst["display_name"] - self.assertEquals(payload["display_name"], display_name) + self.assertEquals(payload["old_display_name"], old_display_name) + self.assertEquals(payload["display_name"], new_display_name) def test_send_no_state_change(self): called = [False] |