Implement methods to modify volume metadata.

There are four methods in nova/volume/cinder.py which are
NotImplemented. They are as follows:
  1. get_volume_metadata
  2. delete_volume_metadata
  3. update_volume_metadata
  4. get_volume_metadata_value
These methods are required in cases where nova needs to modify
a cinder volume's metadata, e.g. attach and detach time. It also
completes the cinder.API class.

Change-Id: I360076ae28db43e661466f556425947813c9040e
Closes-Bug: #1296164
Keep Migration status in automatic confirm-resize

function in compute/manager.py _poll_unconfirmed_resizes
will translate the migrate status from finished to error
whenever finds a problem ,Consider the following case

1) _poll_unconfirmed_resizes runs and founds several migrations to be confirmed
2) user deletes the instance, so its task state will be changed to DELETING
3) _poll_unconfirmed_resizes will find the task state is not None,
it will make the migration error status
4) following code in _delete
if instance.vm_state == vm_states.RESIZED:
self._confirm_resize_on_deleting(context, instance)
will fail because migration status already updated

User is able to do the migration operations when they found error
so we don't need to handle this kind of error for them

Change-Id: Ia79dd56c9c1fa8add7dc138d838cbfbac4523ac3
Closes-Bug: #1301696
Add graphviz to list of distro packages to install

Commit a507d42cf5d9912c2b3622e84afb8b7d3278595b makes the
doc builds fail on warnings, so people are probably going
to be running 'tox -e docs' more often. To run that you
need the graphviz package from the distro, so add it to
the list of packages needed when setting up a development
environment.

Change-Id: I47ffe63fddfbbd73c3fc698490ad07235caaf459
Closes-Bug: #1356983
VMware: Create VMwareImage object for image metadata

This change pulls the nested function _get_image_properties() out of
spawn() and makes it a factory method for the new VMwareImage object.

Linked clone logic is moved from a separate function in vmops.py to
the new get_image_properties() function.

vmware_images.get_vmdk_size_and_properties() is no longer used, and is
removed.

Tests have been updated and/or moved as appropriate. No tests have
been removed.

This change has been split out of
https://review.openstack.org/#/c/87002/, which was written by Shawn
Hartsock.

partial blueprint vmware-spawn-refactor

Co-authored-by: Shawn Hartsock <hartsocks@vmware.com>
Change-Id: I580f173da798318d2675c7c70bbdd19b266259f4
VMware: remove Host class

The class was only used by the ESX driver which was remove in the
commit 1deb31f85a8f5d1e261b2cf1eddc537a5da7f60b.

Change-Id: I026e4c0f463e78e33592c6408d2e688c74a0714b
VMware: remove specific VC support from class VMwareVolumeOps

This support is no longer needed as we only support the VC driver
since commit 1deb31f85a8f5d1e261b2cf1eddc537a5da7f60b.

Change-Id: Iad71fceb580620b1843ce3cf5d926343d8113945
Use rfc3986 library to validate URL paths and URIs

More work needs to be done in rfc3986 to give the user more control over what
they consider to be a valid URI in the context of RFC 3986. For example, a
previous incarnation of these tests checked that "1" and "abc" were invalid
when according to the RFC they are.

Update the API samples and tests to use valid URIs

DocImpact

Change-Id: I288fbaead64990db1053b7a11e82904611b8498f
Add missing flags to fakelibvirt for migration

Commit 26504d71ceaecf22f135d8321769db801290c405 added
VIR_MIGRATE_UNDEFINE_SOURCE and VIR_MIGRATE_PEER2PEER
to the live and block migration default flags but did
not add those flags to the fakelibvirt module for
testing.

This change adds the missing flags and also adds
VIR_MIGRATE_NON_SHARED_INC for block migration which
was also missing.

Change-Id: I5f3af95a56b95ec20f93b12360bf8b3d40b5f45f
Closes-Bug: #1359475
Merge "Add missing flags to fakelibvirt for migration"
Merge "Add graphviz to list of distro packages to install"
Merge "Keep Migration status in automatic confirm-resize"
Merge "Implement methods to modify volume metadata."
Merge "Use rfc3986 library to validate URL paths and URIs"
Merge "VMware: Create VMwareImage object for image metadata"
Merge "VMware: remove Host class"
Merge "VMware: remove specific VC support from class VMwareVolumeOps"