[PATCH 1/2 V2] virt-convert: decompress the .gz files before converting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux