Fix notification logic
Notifications were always treated as if they're about state changes due to a typo. Additionally exception handler did not work correctly. Regression tests included. Change-Id: I0b92a1baa17768d9cf4e709b3331480548dd041e
This commit is contained in:
@@ -63,7 +63,7 @@ def send_update(context, old_instance, new_instance, service=None, host=None):
|
||||
|
||||
old_vm_state = old_instance["vm_state"]
|
||||
new_vm_state = new_instance["vm_state"]
|
||||
old_task_state = old_instance["task_state"],
|
||||
old_task_state = old_instance["task_state"]
|
||||
new_task_state = new_instance["task_state"]
|
||||
|
||||
# we should check if we need to send a state change or a regular
|
||||
@@ -90,7 +90,7 @@ def send_update(context, old_instance, new_instance, service=None, host=None):
|
||||
service=service, host=host)
|
||||
except Exception:
|
||||
LOG.exception(_("Failed to send state update notification"),
|
||||
instance=instance)
|
||||
instance=new_instance)
|
||||
|
||||
|
||||
def send_update_with_states(context, instance, old_vm_state, new_vm_state,
|
||||
|
||||
@@ -268,3 +268,22 @@ class NotificationsTestCase(test.TestCase):
|
||||
display_name = self.instance["display_name"]
|
||||
|
||||
self.assertEquals(payload["display_name"], display_name)
|
||||
|
||||
def test_send_no_state_change(self):
|
||||
called = [False]
|
||||
|
||||
def sending_no_state_change(context, instance, **kwargs):
|
||||
called[0] = True
|
||||
self.stubs.Set(notifications, '_send_instance_update_notification',
|
||||
sending_no_state_change)
|
||||
notifications.send_update(self.context, self.instance, self.instance)
|
||||
self.assertTrue(called[0])
|
||||
|
||||
def test_fail_sending_update(self):
|
||||
def fail_sending(context, instance, **kwargs):
|
||||
raise Exception('failed to notify')
|
||||
self.stubs.Set(notifications, '_send_instance_update_notification',
|
||||
fail_sending)
|
||||
|
||||
notifications.send_update(self.context, self.instance, self.instance)
|
||||
self.assertEquals(0, len(test_notifier.NOTIFICATIONS))
|
||||
|
||||
Reference in New Issue
Block a user