Do not replace the aggregate metadata when updating az

When the aggregate availability zone is updated, the
existing metadata should not be replaced

Change-Id: Ife856af9e7dca836ebe8a1ec050effaad421e17d
Closes-Bug: #1274924
Fix InstanceActionEvent traceback parameter not serializable

The change to use InstanceActionEvent in compute.utils.EventReporter
changed the order of how things are done. Before, traceback info were
converted to a string before being sent to the conductor. Now, since
the object method being used remotes itself, the order becomes the
opposite and any captured tracebacks are sent as is, resulting in
errors during messaging.

This adds a serialize_args decorator for this case, which handles
this specific case for the event_finish_with_failure() classmethod.
A more generic approach is needed, and that will be applied to the
also-affected but currently-unused finish_with_failure() instance
method.

Change-Id: Ibedddd606b9d25ffbbb2b1b5358cf0aa4741083f
Co-Authored-By: Dan Smith <dms@danplanet.com>
Closes-Bug: #1317804
xenapi: add tests for find_bad_volumes

Added some unit tests of the exiting method that appeared to have no
unit test coverage.

Change-Id: I3e2a22c76eb08048032b28a1053f02d93107614c
Merge "Fix InstanceActionEvent traceback parameter not serializable"
Merge "xenapi: add tests for find_bad_volumes"
Merge "Do not replace the aggregate metadata when updating az"