Ok, I've been looking at this block of code, and it's terribly confusing. The big issue is that the selection of whether or not we should send an update is mixed up with the send parts.
The solution would be a refactor of send_update to extract to the front all the change determination logic, so we have an answer of "should we send an update, and what has changed" ** Changed in: nova Status: Invalid => Confirmed -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1204169 Title: compute instance.update messages sometimes have the wrong values for instance state Status in OpenStack Compute (Nova): In Progress Bug description: Compute instance.update messages that are not triggered by a state change (e.g. setting the host in the resource tracker) have default (None) values for task_state, old_vm_state and old_ task_state. This can make the instance state sequence look wrong to anything consuming the messages (e.g stacktach) compute.instance.update None(None) -> Building(none) scheduler.run_instance.scheduled compute.instance.update building(None) -> building(scheduling) compute.instance.create.start compute.instance.update building(None) -> building(None) compute.instance.update building(None) -> building(networking) compute.instance.update building(networking) -> building(block_device_mapping) To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1204169/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp