Add external_instance_event() method to compute manager

This would allow external services to send notifications in to
the compute manager, which could have one or more threads waiting
to be unblocked. It would also provide a way for us to process
generic events like "update your instance cache for $instance".

Related to blueprint admin-event-callback-api

Change-Id: If87cc7fdb1ebcfa2a1d33f5e864c43ed0290beb6
Add os-server-external-events API

Related to blueprint admin-event-callback-api

Change-Id: Ib09d5370622809e4bf1b5825eb9c223a115f7d33
Add os-server-external-events V3 API

Related to blueprint admin-event-callback-api

Change-Id: I93957840ac251cf6a22474897daf80a164ba35c6
Make compute manager's virtapi support waiting for events

This makes compute manager's virtapi expose a context manager
that lets virt drivers do something that doesn't complete until
an external event is triggered.

Related to blueprint admin-event-callback-api

Change-Id: I00b2821200f89a04f27963153805280c0063fd57
Make compute manager prune instance events on delete and migrate

This makes compute manager ensure that any unprocessed instance events
get removed from the list when an instance is deleted or migrated.

Related to blueprint admin-event-callback-api

Change-Id: I03816632a4710ac5e9b92707783dfeef096bfc24
Remove run-time dependency on fixtures module by the nova baremetal

Tripleo still uses this baremetal driver. The dependency on the python fixtures
was introduced by https://review.openstack.org/#/c/71219/

This dependency is causing devtest to stop working.

Change-Id: Id6deccce13698b083af492635ff88533c059fd35
Fix BDM legacy usage with objects

When we're doing an upgrade against Havana, our backleveled
compute RPC version will cause us to run block_device.legacy_mapping(),
which attempts to convert a BlockDeviceMapping object into an old-
style dict. This trips over a common problem with objects where
things expecting a list or a dict decide the object is a dict and
try to iterate it as such.

This makes the small tweak necessary and adds a test that verifies
that it works.

Change-Id: I98fe496720ad1c4fce44c0c7fea8bfa1c2721812
Merge "Remove run-time dependency on fixtures module by the nova baremetal"
Merge "Add external_instance_event() method to compute manager"
Merge "Add os-server-external-events API"
Merge "Fix BDM legacy usage with objects"
Merge "Add os-server-external-events V3 API"
Merge "Make compute manager's virtapi support waiting for events"
Merge "Make compute manager prune instance events on delete and migrate"