virt-convert: decompress the .gz files before converting
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@suse.com>
This commit is contained in:
parent
83bd112d06
commit
f11eb00b9a
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue