File virtman-git-tick-obj-lists.diff of Package virt-manager
Subject: connection: Don't have tick edit object lists in place
From: Cole Robinson crobinso@redhat.com Thu Oct 13 16:59:15 2011 -0400
Date: Thu Oct 13 16:59:15 2011 -0400:
Git: 392cb8075fe5ae2f20b9fdf0d85e4510cc799cc1
Since 'tick' isn't really thread safe, and we sometimes call a manual tick
to refresh resources (say immediately after creating a guest), we
can't depend on lists staying consistent.
Index: virt-manager-0.9.0/src/virtManager/connection.py
===================================================================
--- virt-manager-0.9.0.orig/src/virtManager/connection.py
+++ virt-manager-0.9.0/src/virtManager/connection.py
@@ -1270,7 +1270,7 @@ class vmmConnection(vmmGObject):
return (stop, start, origlist, new, current)
def _update_nets(self):
- orig = self.nets
+ orig = self.nets.copy()
name = "network"
active_list = self.vmm.listNetworks
inactive_list = self.vmm.listDefinedNetworks
@@ -1283,7 +1283,7 @@ class vmmConnection(vmmGObject):
lookup_func, build_class)
def _update_pools(self):
- orig = self.pools
+ orig = self.pools.copy()
name = "pool"
active_list = self.vmm.listStoragePools
inactive_list = self.vmm.listDefinedStoragePools
@@ -1296,7 +1296,7 @@ class vmmConnection(vmmGObject):
lookup_func, build_class)
def _update_interfaces(self):
- orig = self.interfaces
+ orig = self.interfaces.copy()
name = "interface"
active_list = self.vmm.listInterfaces
inactive_list = self.vmm.listDefinedInterfaces
@@ -1310,7 +1310,7 @@ class vmmConnection(vmmGObject):
def _update_nodedevs(self):
- orig = self.nodedevs
+ orig = self.nodedevs.copy()
name = "nodedev"
active_list = lambda: self.vmm.listDevices(None, 0)
inactive_list = lambda: []
@@ -1332,7 +1332,7 @@ class vmmConnection(vmmGObject):
oldActiveIDs = {}
oldInactiveNames = {}
- origlist = self.vms
+ origlist = self.vms.copy()
current = {}
new = []