Avoid error during snapshot of ISO booted instance

Fixes bug #1023492

If you boot an instance from an image with disk_format=iso and then
attempt to snapshot (i.e. nova image-create) you currently get a
traceback because we do:

  qemu-img convert -f qcow2 -O iso -s $snap $disk $out

and 'iso' is not a format that qemu-img knows anything about.

When booting the image, we use qemu-img to detect that the file is
a raw image so we avoid having to special case disk_format=iso
there. However, there's no way of avoiding the special casing when
extracting a snapshot.

Note 1 - it's not very clever to take a snapshot of a read-only
disk downloaded from glance and upload it back to glance again.
Adding such smarts would be a nice enhancement.

Note 2 - only the destination format is important here because
we can only be extracting from a qcow2 image since snapshots
only work where use_cow_images=True. See also #1030844.

Change-Id: I21ff6db8ebb59a83d27f224283fb76f582c38a0e
Resize.end now includes the correct instance_type

Fixes bug 1031004. Moves the notification to the destination compute node
so that the correct instance_type attributes are assigned.

Change-Id: I5886154ddd7a9768dc5d82dc4e43e9e0f681ee04
Merge "Avoid error during snapshot of ISO booted instance"
Merge "Resize.end now includes the correct instance_type"
Reverts fix lp1031004

The fix was incorrectly applied to the resize.end event. There was a
miscommunication about the resize.end versus resize.finish event

Change-Id: I301b46bbb7684d70946a426ce371eaf1198b97df
Send a full instance in rebuild_instance.

Change the rebuild_instance method of the compute
rpc API to take a full instance over rpc instead of just
the instance UUID.  This cuts down on database access needed
by nova-compute.

This patch also includes fixes for a couple of places that were getting
the instance name using the old instance.name syntax.  It must be
instance['name'].  These no-db-messaging patches are making it so more
code paths have an instance as a dict (received over rpc) instead of
the SQLAlchemy model (looked up from the db on the compute node).

Part of blueprint no-db-messaging.

Change-Id: I21647a5a5cbf71a2c498f6fee2e4adbe30b8f2ea
Send a full instance in remove_fixed_ip_from_instance.

Change the remove_fixed_ip_from_instance method of the compute
rpc API to take a full instance over rpc instead of just
the instance UUID.  This cuts down on database access needed
by nova-compute.

Part of blueprint no-db-messaging.

Change-Id: Iee0daf068be9814ef0ba06a69111a45a2e198cbb
Fix image_type=base after snapshot

When an instance is snapshotted, the resultant image should have the
image_type property set to "snapshot".  However, if the base image
already had image_type set to "base", the image_type on the snapshot
will also be set to "base".  This turns out to be because we set
image properties in two different places.  The first is when the
image record is created in glance, which occurs in
nova.compute.api:API._create_image(); this is when image_type is set
to "snapshot".  However, in nova.virt.xenapi.vm_utils:upload_image(),
all the properties from the base image are copied over, so all the
properties set by _create_image() could be overwritten.

The quick solution was to extend the non_inheritable_image_properties
configuration setting to also cover the image properties set by
_create_image().  Long-term, these two metadata-setting processes
need to be more closely unified.  (It should be noted that the
upload_image() function contains a TODO stating that the code should
move into the compute manager, so it can be shared across
hypervisors…)

Fixes bug 1031079.

Change-Id: I936bc147fb823eca67e40084cba5c3bc1a7fe73a
Merge "Send a full instance in rebuild_instance."
Merge "Send a full instance in remove_fixed_ip_from_instance."
Merge "Fix image_type=base after snapshot"
Tidy up nova.image.glance

* Add comment explaining relevance of _is_image_available
* Drop superfluous log statements
* Drop GlanceImageService.delete_all as it has never been implemented
* Drop the 'features' kwarg for GlanceImageService.update
* Code simplification

Change-Id: Ie538dd93dec729fb060bbcddfbddcba6cf303e52
update nova+python-glanceclient

Change-Id: Iff40a6a3273b0dff4c8c58f598656c033dd2a7e8
p1

Change-Id: I326e417cbec79b558c85f0602372d4c05526cec5