[Kimchi-devel] [PATCH 2/2] Revert "snapshot: Clone snapshots when cloning a VM"

Crístian Viana vianac at linux.vnet.ibm.com
Tue Nov 25 19:06:11 UTC 2014


This reverts commit c087f65f12af7394230c300ca63e3fd79fe65498.

Conflicts:
	src/kimchi/mockmodel.py
---
 src/kimchi/model/vms.py | 29 +----------------------------
 tests/test_model.py     | 11 -----------
 tests/test_rest.py      | 19 ++-----------------
 3 files changed, 3 insertions(+), 56 deletions(-)

diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py
index 4b112fe..3aa1145 100644
--- a/src/kimchi/model/vms.py
+++ b/src/kimchi/model/vms.py
@@ -374,15 +374,10 @@ class VMModel(object):
             # create new guest
             cb('defining new VM')
             try:
-                vir_new_dom = vir_conn.defineXML(xml)
+                vir_conn.defineXML(xml)
             except libvirt.libvirtError, e:
                 raise OperationFailed('KCHVM0035E', {'name': name,
                                                      'err': e.message})
-            rollback.prependDefer(vir_new_dom.undefine)
-
-            # copy snapshots
-            cb('copying VM snapshots')
-            self._clone_copy_snapshots(name, new_name)
 
             rollback.commitAll()
 
@@ -546,28 +541,6 @@ class VMModel(object):
                 # remove the new object store entry should an error occur later
                 rollback.prependDefer(_rollback_objstore)
 
-    def _clone_copy_snapshots(self, vm_name, new_vm_name):
-        dom = self.get_vm(new_vm_name, self.conn)
-        flags = libvirt.VIR_DOMAIN_XML_SECURE
-
-        # libvirt's Test driver does not support the function
-        # "virDomainListAllSnapshots", so "VMSnapshots.get_list" will raise
-        # "OperationFailed" in that case.
-        try:
-            snapshot_names = self.vmsnapshots.get_list(vm_name)
-        except OperationFailed, e:
-            kimchi_log.error('cannot list snapshots: %s; '
-                             'skipping snapshot cloning...' % e.message)
-        else:
-            for s in snapshot_names:
-                vir_snap = self.vmsnapshot.get_vmsnapshot(vm_name, s)
-                try:
-                    snap_xml = vir_snap.getXMLDesc(flags).decode('utf-8')
-                    dom.snapshotCreateXML(snap_xml)
-                except libvirt.libvirtError, e:
-                    raise OperationFailed('KCHVM0035E', {'name': vm_name,
-                                                         'err': e.message})
-
     def _build_access_elem(self, users, groups):
         auth = config.get("authentication", "method")
         auth_elem = E.auth(type=auth)
diff --git a/tests/test_model.py b/tests/test_model.py
index 1355295..319408b 100644
--- a/tests/test_model.py
+++ b/tests/test_model.py
@@ -161,17 +161,6 @@ class ModelTests(unittest.TestCase):
             self.assertEquals(sorted([params['name'], snap_name],
                               key=unicode.lower), snaps)
 
-            # Clone the VM and check whether the snapshots have been cloned
-            # as well
-            task = inst.vm_clone(u'kimchi-vm')
-            clone_name = task['target_uri'].split('/')[-1]
-            rollback.prependDefer(inst.vm_delete, clone_name)
-            inst.task_wait(task['id'])
-            task = inst.task_lookup(task['id'])
-            self.assertEquals('finished', task['status'])
-            clone_snaps = inst.vmsnapshots_get_list(clone_name)
-            self.assertEquals(snaps, clone_snaps)
-
             snap = inst.vmsnapshot_lookup(u'kimchi-vm', snap_name)
             current_snap = inst.currentvmsnapshot_lookup(u'kimchi-vm')
             self.assertEquals(snap, current_snap)
diff --git a/tests/test_rest.py b/tests/test_rest.py
index 2e5cff1..fa15ef6 100644
--- a/tests/test_rest.py
+++ b/tests/test_rest.py
@@ -428,8 +428,8 @@ class RestTests(unittest.TestCase):
 
         resp = self.request('/vms/test-vm/snapshots', '{}', 'GET')
         self.assertEquals(200, resp.status)
-        orig_snaps = json.loads(resp.read())
-        self.assertEquals(2, len(orig_snaps))
+        snaps = json.loads(resp.read())
+        self.assertEquals(2, len(snaps))
 
         # Look up current snapshot (the one created above)
         resp = self.request('/vms/test-vm/snapshots/current', '{}', 'GET')
@@ -451,21 +451,6 @@ class RestTests(unittest.TestCase):
         current_snap = json.loads(resp.read())
         self.assertEquals(snap, current_snap)
 
-        # Clone a VM with snapshot
-        resp = self.request('/vms/test-vm/clone', '{}', 'POST')
-        self.assertEquals(202, resp.status)
-        task = json.loads(resp.read())
-        wait_task(self._task_lookup, task['id'])
-        resp = self.request('/tasks/%s' % task['id'], '{}', 'GET')
-        self.assertEquals(200, resp.status)
-        task = json.loads(resp.read())
-        self.assertEquals('finished', task['status'])
-        vm_name = task['target_uri'].split('/')[-1]
-        resp = self.request('/vms/%s/snapshots' % vm_name, '{}', 'GET')
-        self.assertEquals(200, resp.status)
-        clone_snaps = json.loads(resp.read())
-        self.assertEquals(orig_snaps, clone_snaps)
-
         # Delete a snapshot
         resp = self.request('/vms/test-vm/snapshots/%s' % params['name'],
                             '{}', 'DELETE')
-- 
1.9.3




More information about the Kimchi-devel mailing list