Cells: Add support for compute HostAPI()

This will allow the hosts API extension to work. Calls to get service
information from the DB are proxied via cells.

When using the host extension, the 'id' and 'host' fields for
service/compute will be modified to have the cell prepended to it.  One
can do a 'show' on a 'path!to!cell@id' to see details for a particular
host in the 'path!to!cell' cell, for instance.

Implements bp/nova-compute-cells

Change-Id: I8137fa64d2578acfc3d2457c231de2b0d69b96d8
Update en_US message translations.

Fixes bug 1101587.

* nova/locale/en_US/LC_MESSAGES/nova.po: This "translation" was
woefully outdated, causing KeyError exceptions under a number of
circumstances for users of this particular locale when format
strings wound up containing incorrect substitution variables. This
change attempts to sync up the msgstr entries to match msgid given
this is the source language for the pot file. I did not see any
obvious instances where en_US should differ from C locale for these.

Change-Id: I81d1729fee17653b089f3c47db20f3fc073ab363
Add support for memory overcommit in live-migration

Override the live-migration memory check in FilterScheduler and
make it use RamFilter for checking available memory on target
host.

Resolves bug 1068258.

Change-Id: I3002b8330e595ce71e2718b2091d3b0b99747707
Remove hardcoded topic strings in network manager

Resolves bug 1107799.

Change-Id: I24e26fb53e9d4db709307280ef23241c6c4b09ae
separate libvirt injection and configdrive config variables

This is mostly a refactoring so that if config drive is required,
variable lookup only needed for the injection case, is avoided.

There is a functional change here to make 'admin_pass' consistent
with the other variables in that the libvirt_inject_password flag
now does _not_ control whether the admin password is placed
in the config drive.

Change-Id: Ib79971aa050e56e5aa72fdd69aadd7539b2bd315
Default value of monkey_patch_modules is broken

The default value of monkey_patch_modules has not kept up with
the move of notifier to openstack.common

Without this change setting 'monkey_patch=True' in nova.conf
will cause runtime errors unless the monkey_patch_modules
is also specified pointing to the correct notifier

Change-Id: Ib22faa7404b09791799338de2edfe0ddcd662d5f
Use oslo database code

Bring in the new database code from oslo.

Uses get_session() from oslo as well as changing NovaBase to derive from
a common class.

Remove test_sqlalchemy.py now that this code is test in oslo.

Implements blueprint db-common.

Change-Id: I090754981c871250dd981cbbe1a08e7181440120
lxc: Clean up namespace mounts

5f697f64e5c445ba1b62c82d9167fd6b9c7256d2 introduced a regression
when using lxc containers with qcow2 and qemu-nbd.

When removing the rootfs from the host namespace, it would
terminate the qemu-nbd process as well. This would cause
the kernel too oops under Ubuntu 13.04. Since the underlying
device thtat the libvirt_lxc process disapears.

To get around this we just clean up the host namespace if the
instance is powered-on. When the instance terminates it will
teardown the whole container.

This fixes LP: #1115786

Change-Id: I98bec2338cb455dbd277295ab36767149e05634c
Signed-off-by: Chuck Short <chuck.short@canonical.com>
Refactor code for setting up libvirt disk mappings

Currently the libvirt disk bus is fixed at the time the driver
is started. The get_guest_storage_config and _create_image
methods thus use some variables initialized in the libvirt
driver constructor to determine disk bus / dev name mappings.

It will shortly become possible to configure a different disk
bus per instance, which invalidates the current assumptions
in the code. A further complication is that the _create_image
and get_guest_storage_config methods needs to duplicate each
others logic for determining disk mapping.

To simplify the current code and make it more make flexible
introduce a new 'blockinfo.py' module in libvirt, and with
it a 'get_disk_mapping' method & associated helper APIs. This
method is responsible for examining the instance type and
block device info dicts and figuring out the complete list of
disks that will be attached to the guest & their optimal
disk bus + dev name values. This info is returned in a dict
and then passed to _create_image and get_guest_storage_config

Thus the logic for determining disk dev names is now isolated
in one single place, separate from the main driver code, so
it has no need to rely on state in the driver object.

Many, many test cases are added to try to thoroughly validate
the disk mapping code, since there are a huge set of possible
configurations the user may request, making it easy to break
the code accidentally.

Blueprint: libvirt-custom-hardware
Change-Id: I645e69fcc7088674f063f619b2acbbee94d7ba61
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Allow disk driver to be chosen per image

This allows for an image in glance to be annotated with a
property describing the required disk / cdrom bus type.

eg

  # glance image-update \
           --property disk_bus=ide \
           --property cdrom_bus=ide \
           f16-x86_64-openstack-sda

Valid bus values vary per the libvirt_type setting:

 qemu/kvm: 'virtio', 'scsi', 'ide', 'usb'
 xen: 'xen', 'ide'
 uml: 'uml'

Requesting an unsupported disk bus will cause the guest
instance to fail to launch.

DocImpact
Blueprint: libvirt-custom-hardware
Change-Id: Ibc20b843ceccf374eae246384a3f246cc1c52a28
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Adds original copyright notice to refactored files

Fixes bug: #1116586

The Hyper-V driver contributed for Folsom contains some refactored code
from the Diablo release contributed by Cloud.com.

Although the copyright notice remained in the "driver.py" file, it has
erroneously not been added to the new "vmops.py" and "vmutils.py" files
that contained some refactored code from the original contribution.

Change-Id: I71cf1df30c0b2ef5ae3df38f3c6f0311b7b4b3d9
Merge "Refactor code for setting up libvirt disk mappings"
Merge "Allow disk driver to be chosen per image"
Remove strcmp_const_time.

This function was used with deprecated auth and is no longer used
anywhere in the code, so just remove it.

Change-Id: I1e5472c312bfc49c57bf031593cf82c32bc77dfd
Sync latest install_venv_common from oslo.

This commit syncs in the latest version of install_venv_common
from oslo, which fixes the import issue that was previously
addressed by change: I8a3df02a51c2c777d8f47cb8bc72d0644ae47095
which gets reverted by this commit.

Change-Id: I910610da5a4c413711819ca39627cb9ee94814ef
Merge "Cells: Add support for compute HostAPI()"
Merge "Adds original copyright notice to refactored files"
Merge "Add support for memory overcommit in live-migration"
Imported Translations from Transifex

Change-Id: Ieacbf1fc844e8c7297658b822baa41bd78dc754d
Change forward_bridge_interface to MultiStrOpt

The config option specifically mentions it can be set multiple times
but it was accidentally set to a ListOpt instead of a MultiStrOpt.

Change-Id: Ibc4280c4bbdd10655192fb8bb5a810125555eb6d