libvirt: convert cpu features attribute from list to a set

Currently, the cpu features list which is being sent to libvirt,
when creating a domain or calling compareCPU, must contain only
unique entries. Multiple issues arise when we are updating the
features attribute in LibvirtConfigCPU class (for example during
migration).

This change will change the features attribute from being a list
to a set. This make the LibvirtConfigCPU class keep only unique
features.
Adjusting the LibvirtConfigCPUFeature class to support set
operations by overriding the __eq__, __ne__ and __hash__
methods.

Closes-Bug: #1303536
Change-Id: I6350fe0e827c860aea77cc4fe56f18f5c1483580
Cherry-pick-x: 60c899b9da8d64b4a5979b69c43c77ed9d5bf248
replace NovaException with VirtualInterfaceCreate when neutron fails

Currently NovaException is being raised by the _neutron_failed_callback()
and being treated in a try..except block that wraps the _crate_domain method.
The exception is too generic and will catch any exceptions, which are
subclasses of NovaException (for example: ObjectActionError),
making the domain variable not be defined and will mask the original exception.

Suggesting to raise and catch the VirtualInterfaceCreateException and
treat the domain destroy and cleanup with save_and_reraise_exception
in the except block.

Conflicts:
        nova/virt/libvirt/driver.py

Related-Bug: #1337860

Change-Id: Ic972e286ded4e8b9d79ce1b0aa514bb4623d5f0b
(cherry picked from commit f0388d6fec0c4830c730af1adb3d02027eb2cd1d)
Fixes Hyper-V SCSI slot selection

Currently, when attaching volumes, the Hyper-V driver selects the
slot on the SCSI controller by using the number of drives
attached to that controller.

This leads to exceptions when detaching volumes having lower
numbered slots and then attaching a new volume, as Hyper-V will
then try to use an occupied slot.

This patch fixes the issue by simply getting a list of used slots
and getting a slot that it's not among those. It also checks
for the slot number to be smaller than the maximum number of slots
per SCSI controller.

Fixes bug: #1329764

(cherry-picked from commit a73e31022c9fef532cc2d66462d13f4ab2358565)

Change-Id: Id0c09c4debc848004a78971670cc3caef2f77ce3
Bump stable/icehouse next version to 2014.1.3

Bump stable/icehouse next version to 2014.1.3

Change-Id: If0b0267b047e9a9e1e67c49f62f2e11e9a9b18ea
Signed-off-by: Chuck Short <chuck.short@canonical.com>
Merge "Fixes Hyper-V SCSI slot selection" into stable/icehouse
Merge "libvirt: convert cpu features attribute from list to a set" into stable/icehouse
Fix expected error details from jsonschema

The jsonschema 2.4.0 release slightly changed some of the error messages
that are provided when validation fails. This updates the unit tests to
expect the proper string and avoid failing as a result.

Change-Id: Ic8e32140e49e394659e7ebbecb28afb704b23b7c
Closes-bug: #1358881
Merge "replace NovaException with VirtualInterfaceCreate when neutron fails" into stable/icehouse
Merge "Bump stable/icehouse next version to 2014.1.3" into stable/icehouse
libvirt: add support for memory backing parameters

Add a libvirt config class for dealing with the XML elements
under the <memoryBacking> section of the guest schema.

Blueprint: virt-driver-large-pages
Change-Id: Icd89508671a8951bed480b901b2d12d44ebb7cab
Define constants for the VIF model types

Define constants for the common VIF model types. This will
ensure that all of the drivers will make use of the same values.

Change-Id: I2099bbe92906ac0b1b54f1819113b33565e78980
Add VIF_VHOSTUSER

This is based on a new QEMU feature called vhost-user for connecting
to a user-space vswitch via a unix socket.

Change-Id: I0a11e89d3a0bbdfccac569c09009e576ea2e1173
Signed-off-by: Michele Paolino <m.paolino@virtualopensystems.com>