Replaces exception re-raising in Hyper-V

In a few cases in the Hyper-V driver classes, generic exceptions
are getting caught, logged and a domain specific exception is raised.

This creates issues in identifying the exception cause programmatically
(e.g. in unit tests).

This patch enforces the usage of excutils.save_and_reraise_exception()

Closes-Bug: #1280363

Change-Id: I27cc54941c5f592ea567ccaa8fa369362da1427f
xenapi: fix spawn servers with ephemeral disks

The new resize ephemeral disk code uses vdis["ephemerals"] to pass the
list of ephemeral vdis to the resize disk code. This is shared between
spawn and resize. As spawn wants to resize the root disk, resize=True
during the spawn operation.

The code in _attach_disks correctly deals with empty ephemeral disks,
but the code in _resize_up_vdis did not, and failed due to
ephemeral_vdis being None.

This is a quick fix for the issue. We need some refactoring in this area
so there is, ideally, only one place that generates ephemeral disks.

Change-Id: If058c5c17c2ed76569fd98d4a3d8e5274721fbd0
Closes-Bug: #1289361
Fix debug message formatting in server_external_events

Hopefully this will be the last case of invalid debug log messages to
fix before turning on debug level log messages on during unit tests, so
we can gate on issues like this.

Change-Id: I8a2b64222deaf5320bcc2e5215b6bd46565a505f
Use debug level logging during unit tests

When unit tests fail we need to debug, so we should have debug level logging on.
We use fixtures FakeLogger during testing, to  enable debug logging pass
in log level as a parameter.
http://bazaar.launchpad.net/~python-fixtures/python-fixtures/trunk/view/head:/lib/fixtures/_fixtures/logger.py#L68

Change-Id: I70790aa39c0774726de71e5fa5751c45e7e34ffd
Use instance object instead of _instance_update()

Currently, if a user takes a snapshot of a VM, stops nova-cpu
before the snapshot operation is finished, and restart nova-cpu:
nova-cpu will crash with the error:
AttributeError: 'dict' object has no attribute 'task_state'
This happens because the _instance_update() method returns a dict
and not an Instance object.

This patch fixes the issue by not using _instance_update()
in the compute manager which is returning a dict and using
the instance object instead.

Change-Id: I3af0b09aeff7790b147a684f7c90af17d8ee7ae2
Closes-Bug: #1287945
Merge "Replaces exception re-raising in Hyper-V"
Merge "Use instance object instead of _instance_update()"
Merge "Fix debug message formatting in server_external_events"
Merge "Use debug level logging during unit tests"
Merge "xenapi: fix spawn servers with ephemeral disks"