mirror of
https://github.com/virt-manager/virt-manager.git
synced 2024-10-28 19:55:29 +03:00
Refactor domain lookup code to avoid as many RPC calls as possible
This commit is contained in:
parent
ba98acdce1
commit
891424c321
@ -90,22 +90,35 @@ class vmmConnection(gobject.GObject):
|
|||||||
if self.vmm == None:
|
if self.vmm == None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
ids = {}
|
||||||
|
for uuid in self.vms.keys():
|
||||||
|
vm = self.vms[uuid]
|
||||||
|
ids[vm.get_id()] = vm
|
||||||
|
|
||||||
doms = self.vmm.listDomainsID()
|
doms = self.vmm.listDomainsID()
|
||||||
newVms = {}
|
newVms = {}
|
||||||
if doms != None:
|
if doms != None:
|
||||||
for id in doms:
|
for id in doms:
|
||||||
|
if ids.has_key(id):
|
||||||
|
# Existing VM, so just keep handle
|
||||||
|
vm = ids[id]
|
||||||
|
del ids[id]
|
||||||
|
else:
|
||||||
|
# New VM so create wrapper object
|
||||||
vm = self.vmm.lookupByID(id)
|
vm = self.vmm.lookupByID(id)
|
||||||
uuid = self.uuidstr(vm.UUID())
|
uuid = self.uuidstr(vm.UUID())
|
||||||
newVms[uuid] = vmmDomain(self.config, self, vm, uuid)
|
newVms[uuid] = vm
|
||||||
|
|
||||||
for uuid in self.vms.keys():
|
# Any left in ids hash are old removed VMs
|
||||||
if not(newVms.has_key(uuid)):
|
for id in ids:
|
||||||
del self.vms[uuid]
|
vm = ids[id]
|
||||||
self.emit("vm-removed", self.uri, uuid)
|
del self.vms[vm.get_uuid()]
|
||||||
|
self.emit("vm-removed", self.uri, vm.get_uuid())
|
||||||
|
|
||||||
|
# Any in newVms hash are added
|
||||||
for uuid in newVms.keys():
|
for uuid in newVms.keys():
|
||||||
if not(self.vms.has_key(uuid)):
|
vm = newVms[uuid]
|
||||||
self.vms[uuid] = newVms[uuid]
|
self.vms[uuid] = vmmDomain(self.config, self, vm, uuid)
|
||||||
self.emit("vm-added", self.uri, uuid)
|
self.emit("vm-added", self.uri, uuid)
|
||||||
|
|
||||||
now = time()
|
now = time()
|
||||||
|
Loading…
Reference in New Issue
Block a user