Refactor domain lookup code to avoid as many RPC calls as possible

This commit is contained in:
berrange@roquette.boston.redhat.com 2006-07-13 13:35:24 -04:00
parent ba98acdce1
commit 891424c321

View File

@ -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()