From 6bc4e895b6f3fe8d9e4fed464f930ddc4dd9c48c Mon Sep 17 00:00:00 2001 From: catborise <catborise@yahoo.com> Date: Mon, 29 Apr 2019 14:09:17 +0300 Subject: [PATCH] Add qcow2/qcow extension for vol clone. Make image features additions for only qcow2 images. --- vrtManager/storage.py | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/vrtManager/storage.py b/vrtManager/storage.py index 9d6273a..b0d6b52 100644 --- a/vrtManager/storage.py +++ b/vrtManager/storage.py @@ -230,22 +230,31 @@ class wvmStorage(wvmConnect): <group>%s</group> <mode>0644</mode> <label>virt_image_t</label> - </permissions> - <compat>1.1</compat> - <features> - <lazy_refcounts/> - </features> - </target> - </volume>""" % (name, size, alloc, vol_fmt, owner['uid'], owner['guid']) + </permissions>""" % (name, size, alloc, vol_fmt, owner['uid'], owner['guid']) + if vol_fmt == 'qcow2': + xml += """ + <compat>1.1</compat> + <features> + <lazy_refcounts/> + </features>""" + xml += """ + </target> + </volume>""" self._createXML(xml, metadata) + return name def clone_volume(self, name, target_file, vol_fmt=None, metadata=False, owner=owner): - storage_type = self.get_type() - if storage_type == 'dir': - target_file += '.img' vol = self.get_volume(name) if not vol_fmt: vol_fmt = self.get_volume_type(name) + + storage_type = self.get_type() + if storage_type == 'dir': + if vol_fmt in ('qcow', 'qcow2'): + target_file += '.' + vol_fmt + else: + target_file += '.img' + xml = """ <volume> <name>%s</name> @@ -258,11 +267,14 @@ class wvmStorage(wvmConnect): <group>%s</group> <mode>0644</mode> <label>virt_image_t</label> - </permissions> + </permissions>""" % (target_file, vol_fmt, owner['uid'], owner['guid']) + if vol_fmt == 'qcow2': + xml += """ <compat>1.1</compat> <features> <lazy_refcounts/> - </features> - </target> - </volume>""" % (target_file, vol_fmt, owner['uid'],owner['guid']) + </features>""" + xml += """ </target> + </volume>""" self._createXMLFrom(xml, vol, metadata) + return target_file