The OVF specification v1.1.0(page 15) indicates that "Each file referenced by a File element may be compressed using gzip (see RFC1952)." In this case the .gz files should be decompressed first before converting through qemu-img. Signed-off-by: Lin Ma <lma@xxxxxxxx> --- virtconv/formats.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/virtconv/formats.py b/virtconv/formats.py index a7f88cb..6fa6215 100644 --- a/virtconv/formats.py +++ b/virtconv/formats.py @@ -263,6 +263,8 @@ class VirtConverter(object): """ binnames = ["qemu-img", "kvm-img"] + decompress_cmd = None + if _is_test(): executable = "/usr/bin/qemu-img" else: @@ -275,12 +277,23 @@ class VirtConverter(object): raise RuntimeError(_("None of %s tools found.") % binnames) base = os.path.basename(absin) + ext = os.path.splitext(base)[1] + if (ext and ext[1:] == "gz"): + if not find_executable("gzip"): + raise RuntimeError("'gzip' is needed to decompress the file, " + "but not found.") + decompress_cmd = ["gzip", "-d", absin] + base = os.path.splitext(base)[0] + absin = absin[0:-3] + self.print_cb("Running %s" % " ".join(decompress_cmd)) cmd = [executable, "convert", "-O", disk_format, base, absout] self.print_cb("Running %s" % " ".join(cmd)) if dry: return cmd[4] = absin + if decompress_cmd is not None: + _run_cmd(decompress_cmd) _run_cmd(cmd) def convert_disks(self, disk_format, destdir=None, dry=False): -- 2.6.3 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list