Record instance actions and events

Record when an action is initiated on an instance, and the underlying
events related to completing that action.

Actions will typically occur at the API level and should match what a
user intended to do with an instance.  Events will typically track what
happens behind the scenes and may include things that would be unclear
for a user if exposed, but should be beneficial to an admin/deployer.

Adds a new wrapper to the compute manager.  The wrapper will record when
an event begins and finishes from the point of view of the compute
manager.  It will also record errors if they occur.

Blueprint instance-actions

Change-Id: I801f3e796d091e146413f84c2ccfab95ad2e1af4
Adds evacuate method to compute.api

Added decorator to check whether the vm is suitable to be evacuated.
The decorator validates that vm host is down.
The new evacuate method calls rebuild with the recreate flag and
specified target host.

This implements blueprint rebuild-for-ha

DocImpact

Change-Id: I877b29928c922fa366fb85deb85ddfc72d97daf8
Co-authored-by: Oshrit Feder <oshritf@il.ibm.com>
VMware VC Compute Driver

blueprint vmware-compute-driver

Add VMwareVCDriver for VMware vCenter Server and Cluster support
DocImpact

Nova conf:
compute_driver=vmwareapi.VMwareVCDriver
vmwareapi_cluster_name=VMware cluster name

Change-Id: Ia8bd40a912971ceb20b0f8015a5fcc42e525828d
Fix incorrect device name being raised.

`device` was being used as an index variable in a for-loop, overwriting
the value that was passed in, causing the in-use exception to point to
the wrong device.

The solution is to use a different variable name, in this case
`device_path` as the index variable.

Other cleanups include:

* Update to test to ensure exception message points to correct device

* Simplify for-loop by using set to collect letters, instead of a list
  which is later turned into a set

* Added blank lines to improve readability in particularly dense
  sections

* Made `req_letters` and `_get_unused_letters` singular because they, in
  fact, are.

Change-Id: Iad33f7ff0c109c6cea5df84d54c11cee750bf19d
Merge "Adds evacuate method to compute.api"
Merge "Record instance actions and events"
Merge "VMware VC Compute Driver"
Merge "Fix incorrect device name being raised."
Merge remote-tracking branch 'citrix/master' into build-temp