
- This commit replaces the current backing image to a complete clone when using a template based on an existing template. Signed-off-by: Jose Ricardo Ziviani <joserz@linux.vnet.ibm.com> --- model/templates.py | 17 ++++++++++++++++- vmtemplate.py | 8 -------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/model/templates.py b/model/templates.py index a02099c..9ae7f5e 100644 --- a/model/templates.py +++ b/model/templates.py @@ -378,7 +378,22 @@ class LibvirtVMTemplate(VMTemplate): for v in vol_list: pool = self._get_storage_pool(v['pool']) # outgoing text to libvirt, encode('utf-8') - pool.createXML(v['xml'].encode('utf-8'), 0) + if 'base' in v and 'path' in v['base']: + conn = self.conn.get() + try: + volume_base = conn.storageVolLookupByPath( + v['base']['path']) + + except libvirt.libvirtError as e: + pool.createXML(v['xml'].encode('utf-8'), 0) + continue + + pool.createXMLFrom(v['xml'].encode('utf-8'), + volume_base, + 0) + else: + pool.createXML(v['xml'].encode('utf-8'), 0) + except libvirt.libvirtError as e: raise OperationFailed("KCHVMSTOR0008E", {'error': e.message}) return vol_list diff --git a/vmtemplate.py b/vmtemplate.py index a223beb..4ce5d19 100644 --- a/vmtemplate.py +++ b/vmtemplate.py @@ -264,14 +264,6 @@ class VMTemplate(object): v_tree.append(E.capacity(str(info['capacity']), unit='G')) target_fmt = info['format'] - if 'base' in d: - # target must be qcow2 in order to use a backing file - target_fmt = 'qcow2' - - v_tree.append(E.backingStore( - E.path(info['base']['path']), - E.format(type=info['base']['format']))) - target = E.target( E.format(type=target_fmt), E.path(info['path'])) v_tree.append(target) -- 1.9.1