Cells rebuild regression fix

The introduction of 'preserve_ephemeral' in rebuilds created a
regression issue with cells.

Closes-Bug: 1281858

Change-Id: Ic8446e8611a41691d12c5dd0c4e1285a586248da
Calculate default security group into quota usage

Create the related quota usage when creating the default
security group for user.

Change-Id: Ide1de160814a5937f71e07f3ab10ce2bba8886f1
Closes-bug: 1271381
Ensure that exception raised in neutron are handled correctly

We are now logging exceptions so we need to use save_and_reraise.

The patch set has also added log messages for exceptions that were
raised. This will be very helpful for debugging and troubleshooting.
This is done in the following cases:
 - unable to access a port when validating networks
 - unable to find a requested floating ip

Change-Id: I946126c2fb5aa229f917f8cb36ecb23aab528e14
VMware: fix exception when using multiple compute nodes

When there is more than one compute node running and one of the
nodes restarts it terminates on an exception that the resource is
not found.

The cause of the issue is that a vif plug was being attempted for
a resource that did not exist. The vif plug should have raised an
"NotImplemented" exception.

Change-Id: I5a3f1cc73a981173b6c2fa493de3aad10a7e97fd
Closes-bug: #1272286
libvirt: making set_host_enabled to be a private methods

Currently _set_host_enabled() is being used only for internal libvirt
driver purposes, which doesn't correlate to set_host_enabled in the
compute API.

_set_host_enabled in the driver is disabling and re-enabling
the compute service automatically and shouldn't be exposed to the users.

Also, adding disable_reason as an optional variable and enabled variable
to be boolean only.

Change-Id: I5fd13ef352fcbb4a1c96764a9e473cdaf7b128da
Closes-Bug: #1251803
Make libvirt use Flavor object instead of using VirtAPI

This makes the libvirt driver use the Flavor object instead of
getting that information through the VirtAPI/conductor call.

Related to blueprint compute-manager-objects

Change-Id: I484c98068a46c9780d82c886779eb58e783f9b6f
Removes os-instance-usage-audit-log from the V3 API

The extension pre-dates ceilometer and equivalent
functionality is now much better managed using
ceilometer. So we're removing this before the V3 API
is officially released.

Partially implements blueprint v3-api-remove-extensions

Change-Id: I9b7892346a4ad7c54a903cfcbcb97156dfc8c734
libvirt: configuration element for a random number generator device

This configuration exposes a paravirtual random number generator device,
with a default backend set to a hosts /dev/random

An optional rate element can be provided in order to limit the consumption
of host's entropy by the guest.

Partially implements blueprint libvirt-rng-device
Change-Id: Id1be32a307473aec2ff0b54b43b2ca3547d74b84
Group kvm image_meta tests for get_disk_bus

Refactoring test_get_disk_bus to eliminate duplicate code by
adding a loop to the image_meta tests.

Change-Id: Id8f342a0739db01635c2ca925788d7a258f8a478
Use six.moves.urllib.parse instead of urlparse

To keep Python 3.x compatibility, use six.moves.urllib.parse
to replace urlparse.

Change-Id: I23df3455d6293711572a48165964644cb18d175b
Support setting a machine type to enable ARMv7/AArch64 guests to boot

By default the libvirt driver does not specify a machine type. On ARM systems
that results in a default type which will fail. This change provides two ways
to have Nova specify a machine type in the libvirt configuration:

1) The image can be tagged with the property "hw_machine_type=<type>"
2) If Nova detects an armv7 or aarch64 processor it will use vexpress-a15 or
   virt machine types respectively (this can be overridden with an image
   property)

Change-Id: I8aadfcf50e35a1370783ea795f80b29c1a71abff
Closes-Bug: #1261978
DocImpact
libvirt: Uses available method get_host_state

An available method should be used to get the host_state.

Change-Id: I24004c0ed4c167d8f54a60a440ee250bb3236c1b
Fix break in vm_vdi_cleaner after oslo changes.

Added missing imports along with adding a call to config.parser_args as needed
to allow vm_vdi_cleaner to work against current master.

Corrected spelling error in comment.

Change-Id: I4d30d0f7f9718cb29fb8c4c18e9e6fa23f3496ef
Closes-Bug: #1279942
Make floating_ips module use FloatingIP for all get queries

This makes the network.floating_ips module use the FloatingIP
object for all get_* queries instead of direct database access.

Related to blueprint nova-network-objects

Change-Id: I862f2f3abc078b477bea6bf86d0d622c4e78881f
Make floating_ips module use FloatingIP for (de-)allocations

This makes the network.floating_ips module use the FloatingIP
object for allocation and deallocation.

Related to blueprint nova-network-objects

Change-Id: I10d334d13b77be4bc8d491644fad6394798cd76b
Make floating_ips module use FloatingIP for updates

This makes the network.floating_ips module use the FloatingIP
object for saving updates instead of direct database calls.

Related to blueprint nova-network-objects

Change-Id: Ib34f4d5f24bcbd7aacd2fda3d793555fcc047dbc
Update the mailmap

Change-Id: Ifa5c765cabf38173d4a7442bdeac79dd15dbb79d
Make is_neutron() thread-safe

The utils method is_neutron() was not thread safe and could have returned the
wrong value if two greenthreads called it at the same time.  Specifically, a
greenthread switch could occur when the import is being done.  At that point, it
looks like the check has already been completed, but the result has not yet been
recorded.

Closes-bug: #1274992
Change-Id: I5a6eedaeb4c0deee4b31509946ae5daedf98389d
libvirt: improve unit test time

A number of tests would invoke code that would sleep. This
patch adds a mocked function for the sleep.

Change-Id: Iecdc8488393cb118aa77bc5c33bcfde33ceb4733
Closes-bug: #1279820
Replace assertEqual(None, *) with assertIsNone in tests

Replace assertEqual(None, *) with assertIsNone in tests to have
more clear messages in case of failure.

Change-Id: I0d38a82e78fbe94657ab9a71c08422007843d179