Adds user_data extension to nova.api.v3.extensions

Although the user_data extension does not create a resource
or controller extension and only implements server.create and
server.create.deserialize entry points it does need to be listed as
a nova.api.v3.extension entry point as the whitelist check
operates on that entry point.

This does not add any runtime overhead and allows user_data to be
specified in the whitelist.

Also adds missing discoverable policy for the user data extension

Partially implements blueprint nova-v3-api

Change-Id: Ia8ac2fa150ab2fe9c1848c5a7ddc416952adf0e4
baremetal: stop deployment if block devices are not available

In this case deploy-helper should abort immediately and make sure
that the instance's status set to ERROR.

Closes-Bug: 1251525
Change-Id: Ic09f171edb0fe3a449c7adfe622ab48709c73252
Use the mangle checksum fill rule regardless to the multi_host

The checksum-fill is required even when you are running devstack,
in a nested kvm guest.
Always using the checksum-fill on all dhcp responses is safe, and does
not have significant impact.

The situation is similar when the checksum-fill first introduced to
nova.

See Also:
https://bugzilla.redhat.com/show_bug.cgi?id=910619#c6

Change-Id: I8a34d5f815f6bfef6d683965ed51a77e82af8834
Using staticmethod to mock LibvirtDriver._supports_direct_io

The actual test is wrong, but does not failed because the signature
of the fake method "connection_supports_direct_io_stub" accepts an
ulimited number of args.

Change-Id: Ide3e093911723f787d9e84797be86fb7d0cd00c7
Optimize libvirt live migration workflow at source

During live migration, after instance migrated to destination, we
call Hypervisor destroy to clean the instance, this can be omitted
because it doesn't exist in source server already. This patch changes
cleanup to a public method to driver, split instance destroy to two
step:

1. destroy instance in the Hypervisor
2. cleanup instance resources(block device, network)

Change-Id: I65e711c03fee7342b1e2bc4f9459baae7729f911
Closes-bug: 1240820
Make nova-network use Service object

There is a very small usage of service data in nova-network, which
can be converted to use the object method. Since it results in
the same database call as before, the tests need no change.

Related to blueprint nova-network-objects

Change-Id: Ie6ef37a3508c0ef3481d0217d3d085b855cfdc70
Make nova-network use Instance objects

This converts existing direct-to-database instance queries
use objects.

Related to blueprint nova-network-objects

Change-Id: Ia035fc9e48843b8aa8ac2d12dbb7bfcc7d6b59ae
Fix updating device names when defaulting

If the virt driver does not support defaulting device names, the default
behaviour of defaulting them in the manager was calling the conductor
block_device_mapping_update method with the wrong arguments, which
caused a TypeError and ultimately a failure to boot the instance.

This patch fixed the signature and adds a test that exercises it so
that it does not regress.

Closes-bug: #1260806
Change-Id: I6116540c9aca4847afacf80b3d1e0c027c364159
Merge "Make nova-network use Service object"
Merge "Make nova-network use Instance objects"
Merge "Optimize libvirt live migration workflow at source"
Merge "baremetal: stop deployment if block devices are not available"
Merge "Using staticmethod to mock LibvirtDriver._supports_direct_io"
Merge "Adds user_data extension to nova.api.v3.extensions"
Merge "Use the mangle checksum fill rule regardless to the multi_host"
Merge "Fix updating device names when defaulting"