Properly track VBD and VDI connections in xenapi fake

The fake xenapi module correctly destroys VBDs when destroying a VM
but it won't destroy VBDs when destroying a VDI. If an exception
occurs during a spawn when running test_xenapi, then another exception
can occur which obscures the original (and likely more important)
exception. This can make troubleshooting test suite failures more
difficult.

Change-Id: I19aad7f39b0707893a04784faef90815f7b0effb
Fallback to fakelibvirt in test_libvirt.py test suite

If the native 'libvirt' module is not available on the host,
currently test_libvirt.py stubs it out to ''. While this
has sort-of worked for some test cases, others have had to
be configured to skip. As the complexity of the libvirt driver
increases, ever more tests will need to be skipped.

There is, however, the fakelibvirt.py module which provides
a dummy impl of the libvirt APIs for use in test_virt_drivers.py
With a few enhancements this fake impl is good enough to use
with test_libvirt.py too.

The constructor of libvirtError is changed to accept the
'msg' as first arg to match the regular libvirt module.
A few missing constants are added. The migrateToURI
method is stubbed out

All the previously skipped tests can now be enabled as
normal.

Change-Id: I15efbef8c676cc0e263a9c9bdd7b14dfb3771105
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Set the default CPU mode to 'host-model' for Libvirt KVM/QEMU guests

Historically Nova has not set any CPU model for guests started with
the libvirt driver. This means they are all using the per-hyervisor
default settings for CPU model. With KVM/QEMU guests the model was
traditionally a very conserative choice which exposed minimal features.
This is significantly limits the performance of applications. Further
the model has changed over time, so the exact default model is
unpredictable. Switching Nova to use the host CPU model by default
should improve the out of the box performance & give a known
setup.

This does not impact migration compatibility, since the migration
code is already doing comparison checks against the source and
destination host CPU model, regardless of the actual model used
in the guest. In the future the migration code should be tweaked
so that it actually compares the current guest CPU model, against
the target host CPU model, which would potentially broaden the
migration compatibility pool.

With this patch there is a new libvirt_cpu_mode="none" which
can be used to explicitly prevent any CPU model setting in the
instance XML. The default value None, will now default to
"none" for LXC/UML/etc, and "host-model" for QEMU/KVM

Fixes: bug #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I5b96e4532b6a960e1608dd6e19ae9d194379fb6a
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Switch to common notifiers.

- Added notifier files to openstack-common.conf, merged from common.
- Import notifiers from common rather than nova.
- Removed nova-specific notifier code.
- Update some driver paths to refer to the new location within nova.

Should be a no-op, as the common notification code is freshly copied from Nova.

Change-Id: Icdf892bc3826b683fc74f22ead00939beda2859f
Update common setup code to latest.

This gets us up to date with common/setup.py and replaces custom nova
autodoc generation with the port of that code found in common.

Change-Id: I2a1c5d2c0fdcf40dbea50cc123b537adb068cdc2
Removed a bunch of cruft files.

Ohai. We dont't uses any of theses anymores. Let's just make buh-bye.

Change-Id: Ib81c92ab9196552150d81d158befb0747966965d
Fix KeyError 'key_name' when KeyPairExists raised.

Updates the Nova compute API to pass a key_name arg to the
KeyPairExists constructor. This fixes an issue where a KeyError
exception would get logged to Nova's api.log file if a KeyPairExists
exception was thrown.

Also removes the un-needed exception explanation argument from the
KeyPairExists constructor.

Fixes LP Bug #1022611

Change-Id: I83ecf3d392fef97649b298d1b732e1ff51145ae4
Boot from volume for Xen

Implements bp xenapi-boot-from-volume

Ensure boot from volume works for XenAPI (tested using XenServer).
1. Add strip_prefix to block_device to make the command mountpoint
agnostic.
2. Pass block device and delete on terminate information to driver
layer.
3. Add ability to recognize and boot from the specified nova volume.

Change-Id: If117087086eab809217d2b173f921bf9319a52c7
Fetch kernel/ramdisk images directly

Kernel and ramdisk images don't have a VDI allocated to them, so printing
the UUID in _fetch_image will show None.

[...] Fetched VDIs of type 'ramdisk' with UUID  'None' [...]

Change-Id: I1113606a97b48518e1db61f737633140b0f5eccd
Avoid lazy-loading errors on instance_type

When instances are launched with a source group, the instance_type
is not lazy_loaded in properly.

The issue is intermittent because if another query has already loaded
the instance with a joined instance_type or the instance has not
yet been expunged from the session, then the load succeeds.

Therefore this failure only appears under heavy load. Adding an
explicit joindload fixes the issue.

Change-Id: I450c598c31c416c7be341cbb8cd14e33c6bb2aec
Merge "Fetch kernel/ramdisk images directly"
Merge "Fix KeyError 'key_name' when KeyPairExists raised."
Merge "Boot from volume for Xen"
Make pep8 test work on Mac

find . -executable is not available on Mac OS X. We switch back to
the old -perm syntax to find files to test.

Change-Id: Iea58a249f282c98ae6cffbe8e6359f70f8b1d63f
Remove deprecated auth-related api extensions

* Delete the accounts and users extensions
* Delete associated tests
* Related to bp remove-deprecated-auth

Change-Id: I429551dbb39ec569c6d2c229fa0c3cafd9e56f11
Remove deprecated auth code

* Remove nova.auth.manager -- AuthManager, User, Role, Project, etc.
* Remove nova.auth.dbdriver
* Remove nova.auth.ldapdriver
* Remove nova.auth.signer
* Remove arbitrary scripts and schemas in nova/auth/
* Remove nova/auth/novarc.template
* Remove or update affected tests
* Related to bp remove-deprecated-auth

Change-Id: Ide0fefd0ddf79ae1b3bb74cb242c2893575839e7
Merge "Make pep8 test work on Mac"
Merge "Fallback to fakelibvirt in test_libvirt.py test suite"
refactor vmwareapi_conn => vmwareapi/driver

Part of bp:virt-driver-cleanup

Make the vmwareapi driver consistent in naming as a driver
instead of a connection.

Get all the vmware driver parts into the same directory

Change-Id: I7c7e7c391086cf2fc32e8cb85d557005d417042f
refactor xenapi/connection => xenapi/driver

Part of bp:virt-driver-cleanup

Make the xenapi driver consistent in naming as a driver
instead of a connection.

Change-Id: Ibb1485515ff073dd0265969fdcfbfc2665b93fb7