do sync before fusermount to avoid busyness

Fix bug #1013689

Change-Id: I8ae786e105c08e1b5011a1b2a1dac048a710a1cb
metadata: cleanup pubkey representation

The previous code provided a '_name' entry in a dict to represent
this, but then appended "=_name" to the key rather than populating
_name with the full value to be rendered.

This just changes the value in '_name' for public key to be
'0=keyname' rather than 'keyname'.  It makes the rendering simpler by
just using the
_name.

It also adds a test for this strange behavior of the metadata service.

Change-Id: I3ef67d85354bf7ac8abaaf900ddfdd2e945aa9af
Add full test environment.

Add a tox environment that will install all of the optional
packages and which will run with system site packages enabled
so that we pick up those tests as well. This should allow us
to run expansive tests on jenkins that aren't normally required
locally, but which are possible.

Change-Id: Iabd61874061e24950d4d2082a2fba158b4601624
Migrate existing routes from flat_interface

Right now, any routes that exist on flat_interface (other than the default
route) get lost when we set up the bridge. This patch migrates them over
to avoid losing that connectivity. It does so by using 'ip route' instead
of 'route', which is much easier to script and is consistent with other
use of iproute2 tools in linux_net.py.

Bug 962822

Change-Id: I7d9e8e05169f2f87e8481595397c02fd3a3612f4
Remove unnecessary queries for network info in notifications

bandwidth_usage() tries to query network info if "not network_info"
when looking at instance['info_cache'].  [] is a valid entry for
network_info (on build)... so don't query network when we see it.

Fixes bug 1017770

Change-Id: Ia7291dbbcc25c04eff16eb048068f879e18f53a4
Improve filter_scheduler performance

Add 'columns_to_join' keyword arg to instance_get_all() and have the
scheduler host_manager only join 'instance_type'.  It doesn't use
anything else.

Fixes bug 1017769

Change-Id: Ia2c0956d2453f00e26eb89d9496a32ba15d970aa
Fix db calls for snaphsot and volume mapping

 * Fix misuse of project_only
 * Includes failing tests
 * Adds missing call to db/api.py
 * Fixes bug 1017816

Change-Id: I993089ba031a05e7ab0ea91c279a2ac47593eda3
Avoid reset on hard reboot if not supported.

Updates the libvirt connection so that it avoids using virt_dom.reset(0)
when performing a hard reboot if it is not supported.

Libvirt reset requires at least libvirt 0.9.7.

When reset is not supported it uses the older method of recreating the
domain.

This patch also sets the libvirt min version back to 0.9.6.

Fixes LP Bug #1017593.

Change-Id: I6c46c03fad9de11ae3cc814b06dd8e13bb66de2d
Stop nova_ipam_lib from changing the timeout setting

 * Fixes incorrect logic for when timeout should be used. We
   want to timeout along with dhcp, and release immediately
   without dhcp
 * Also makes ipam_lib release fixed_ips after floating ips, as
   this is the way that the internal network managers do it.
 * Fixes bug 1014769

Change-Id: I687fac314264b8a89da128ed77c02d9b1ca140ff
Avoid casts in network manager to prevent races

 * Part of fix for bug 1017418

Change-Id: I3251f02fc5fcb8305f12b6b8a9644232b9146db2
Ignore floatingIpNotAssociated during disassociation.

This helps in corner cases where the exception prevents network deallocation.

Change-Id: I88849899c5a2ed69696b644cb5f856fca5f40da7
Adds missing 'owner' attribute to image.

Fixes bug 1018216.

Change-Id: I5540e0b8ab1df1904778e3edc250369b0930987e
Switch to using new config parsing for vm_vdi_cleaner.py

Fixes bug 1018166

Also uses CONF.verbose instead of passing verbose flag everywhere

Change-Id: Ifee832dd087cae8c36b7b7a4f08b2e22ef7f06a3
Merge "Remove unnecessary queries for network info in notifications"
Merge "Improve filter_scheduler performance"
Merge "do sync before fusermount to avoid busyness"
Merge "metadata: cleanup pubkey representation"
Merge "Adds missing 'owner' attribute to image."
Merge "Avoid reset on hard reboot if not supported."
refactor libvirt from connection -> driver

part of bp:virt-driver-cleanup

part d) of the blueprint is to get rid of the connection terminology
and use driver instead. This does this for the libvirt driver and
associated tests.

Also add LibvirtDriver import to __init__ so that
nova.virt.libvirt.LibvirtDriver can be used as the compute_driver
string

Change-Id: I13c701c390784fa1f7809705741abb46e40973be