[virt-tools-list] [PATCH] virt-convert: decompress the .gz files before converting
Cole Robinson
crobinso at redhat.com
Thu Feb 25 16:01:38 UTC 2016
On 02/23/2016 09:55 PM, Lin Ma wrote:
> 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 at suse.com>
> ---
> virtconv/formats.py | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
Thanks for the patch! Comments below
> diff --git a/virtconv/formats.py b/virtconv/formats.py
> index a7f88cb..ab37e10 100644
> --- a/virtconv/formats.py
> +++ b/virtconv/formats.py
> @@ -275,12 +275,22 @@ 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
> + _run_cmd(decompress_cmd)
> _run_cmd(cmd)
>
decompress_cmd is conditionally defined. you'll need to set decompress_cmd =
None first, and have this _run_cmd dependent on that.
Also a test case that exercises that code path would be appreciated.
Thanks,
Cole
More information about the virt-tools-list
mailing list