diff --git a/nova/notifications.py b/nova/notifications.py index 4e3d1362d..6b4e1ab8b 100644 --- a/nova/notifications.py +++ b/nova/notifications.py @@ -43,18 +43,18 @@ FLAGS = flags.FLAGS FLAGS.register_opt(notify_state_opt) -def send_update(context, old_instance, new_instance, host=None): +def send_update(context, old_instance, new_instance, service=None, host=None): """Send compute.instance.update notification to report changes in vm state and (optionally) task state """ send_update_with_states(context, new_instance, old_instance["vm_state"], new_instance["vm_state"], old_instance["task_state"], - new_instance["task_state"], host) + new_instance["task_state"], service, host) def send_update_with_states(context, instance, old_vm_state, new_vm_state, - old_task_state, new_task_state, host=None): + old_task_state, new_task_state, service=None, host=None): """Send compute.instance.update notification to report changes in vm state and (optionally) task state """ @@ -76,14 +76,15 @@ def send_update_with_states(context, instance, old_vm_state, new_vm_state, if fire_update: try: _send_instance_update_notification(context, instance, old_vm_state, - old_task_state, new_vm_state, new_task_state, host) + old_task_state, new_vm_state, new_task_state, service, + host) except Exception: LOG.exception(_("Failed to send state update notification"), instance=instance) def _send_instance_update_notification(context, instance, old_vm_state, - old_task_state, new_vm_state, new_task_state, host=None): + old_task_state, new_vm_state, new_task_state, service=None, host=None): """Send 'compute.instance.exists' notification to inform observers about instance state changes""" @@ -117,10 +118,14 @@ def _send_instance_update_notification(context, instance, old_vm_state, image_meta_props = image_meta(system_metadata) payload["image_meta"] = image_meta_props - if not host: - host = FLAGS.host + # if the service name (e.g. api/scheduler/compute) is not provided, default + # to "compute" + if not service: + service = "compute" - notifier_api.notify(context, host, 'compute.instance.update', + publisher_id = notifier_api.publisher_id(service, host) + + notifier_api.notify(context, publisher_id, 'compute.instance.update', notifier_api.INFO, payload) diff --git a/nova/scheduler/driver.py b/nova/scheduler/driver.py index 8e49e5aa4..175d1c717 100644 --- a/nova/scheduler/driver.py +++ b/nova/scheduler/driver.py @@ -231,7 +231,8 @@ class Scheduler(object): # update instance state and notify (old_ref, new_instance_ref) = db.instance_update_and_get_original( context, instance_id, values) - notifications.send_update(context, old_ref, new_instance_ref) + notifications.send_update(context, old_ref, new_instance_ref, + service="scheduler") src = instance_ref['host'] cast_to_compute_host(context, src, 'live_migration', diff --git a/nova/scheduler/manager.py b/nova/scheduler/manager.py index 470368b03..e24705a02 100644 --- a/nova/scheduler/manager.py +++ b/nova/scheduler/manager.py @@ -178,7 +178,8 @@ class SchedulerManager(manager.Manager): # update instance state and notify on the transition (old_ref, new_ref) = db.instance_update_and_get_original(context, instance_uuid, updates) - notifications.send_update(context, old_ref, new_ref) + notifications.send_update(context, old_ref, new_ref, + service="scheduler") payload = dict(request_spec=request_spec, instance_properties=properties,