From af0651946010e6bcc966005aa9fc2a1f38d3748a Mon Sep 17 00:00:00 2001 From: Mark McLoughlin Date: Mon, 30 Jul 2012 13:03:39 +0100 Subject: 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 --- nova/virt/libvirt/utils.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'nova/virt') diff --git a/nova/virt/libvirt/utils.py b/nova/virt/libvirt/utils.py index b71aec5dc..55bca7996 100644 --- a/nova/virt/libvirt/utils.py +++ b/nova/virt/libvirt/utils.py @@ -322,6 +322,9 @@ def extract_snapshot(disk_path, source_fmt, snapshot_name, out_path, dest_fmt): :param snapshot_name: Name of snapshot in disk image :param out_path: Desired path of extracted snapshot """ + # NOTE(markmc): ISO is just raw to qemu-img + if dest_fmt == 'iso': + dest_fmt = 'raw' qemu_img_cmd = ('qemu-img', 'convert', '-f', -- cgit