If an error occured on domain information update,
Domain informations are not displayed.
This patch adds exception handlings which occured on libvirt API.
Signed-off-by: Hiroyuki Kaguchi <[EMAIL PROTECTED]>
--
Hiroyuki Kaguchi
E-mail:[EMAIL PROTECTED]
diff -r 0b213f9406fd src/virtManager/connection.py
--- a/src/virtManager/connection.py Wed Mar 05 12:55:43 2008 -0500
+++ b/src/virtManager/connection.py Thu Mar 06 00:37:29 2008 +0900
@@ -581,30 +581,37 @@ class vmmConnection(gobject.GObject):
logging.warn("Unable to list inactive networks")
for name in newActiveNetNames:
- net = self.vmm.networkLookupByName(name)
- uuid = self.uuidstr(net.UUID())
- if not oldNets.has_key(uuid):
- self.nets[uuid] = vmmNetwork(self.config, self, net, uuid,
True)
- newNets[uuid] = self.nets[uuid]
- startNets[uuid] = newNets[uuid]
- else:
- self.nets[uuid] = oldNets[uuid]
- if not self.nets[uuid].is_active():
- self.nets[uuid].set_active(True)
- startNets[uuid] = self.nets[uuid]
- del oldNets[uuid]
+ try:
+ net = self.vmm.networkLookupByName(name)
+ uuid = self.uuidstr(net.UUID())
+ if not oldNets.has_key(uuid):
+ self.nets[uuid] = vmmNetwork(self.config, self, net, uuid,
True)
+ newNets[uuid] = self.nets[uuid]
+ startNets[uuid] = newNets[uuid]
+ else:
+ self.nets[uuid] = oldNets[uuid]
+ if not self.nets[uuid].is_active():
+ self.nets[uuid].set_active(True)
+ startNets[uuid] = self.nets[uuid]
+ del oldNets[uuid]
+ except libvirt.libvirtError:
+ logging.warn("Couldn't fetch active network name '" + name +
"'")
+
for name in newInactiveNetNames:
- net = self.vmm.networkLookupByName(name)
- uuid = self.uuidstr(net.UUID())
- if not oldNets.has_key(uuid):
- self.nets[uuid] = vmmNetwork(self.config, self, net, uuid,
False)
- newNets[uuid] = self.nets[uuid]
- else:
- self.nets[uuid] = oldNets[uuid]
- if self.nets[uuid].is_active():
- self.nets[uuid].set_active(False)
- stopNets[uuid] = self.nets[uuid]
- del oldNets[uuid]
+ try:
+ net = self.vmm.networkLookupByName(name)
+ uuid = self.uuidstr(net.UUID())
+ if not oldNets.has_key(uuid):
+ self.nets[uuid] = vmmNetwork(self.config, self, net, uuid,
False)
+ newNets[uuid] = self.nets[uuid]
+ else:
+ self.nets[uuid] = oldNets[uuid]
+ if self.nets[uuid].is_active():
+ self.nets[uuid].set_active(False)
+ stopNets[uuid] = self.nets[uuid]
+ del oldNets[uuid]
+ except libvirt.libvirtError:
+ logging.warn("Couldn't fetch inactive network name '" + name +
"'")
oldActiveIDs = {}
oldInactiveNames = {}
@@ -623,7 +630,12 @@ class vmmConnection(gobject.GObject):
# Now we can clear the list of actives from the last time through
self.activeUUIDs = []
- newActiveIDs = self.vmm.listDomainsID()
+ newActiveIDs = []
+ try:
+ newActiveIDs = self.vmm.listDomainsID()
+ except:
+ logging.warn("Unable to list active domains")
+
newInactiveNames = []
try:
newInactiveNames = self.vmm.listDefinedDomains()
@@ -653,13 +665,16 @@ class vmmConnection(gobject.GObject):
# May be a new VM, we have no choice but
# to create the wrapper so we can see
# if its a previously inactive domain.
- vm = self.vmm.lookupByID(id)
- uuid = self.uuidstr(vm.UUID())
- maybeNewUUIDs[uuid] = vm
- # also add the new or newly started VM to the "started"
list
- startedUUIDs.append(uuid)
- #print "Maybe new active " +
str(maybeNewUUIDs[uuid].get_name()) + " " + uuid
- self.activeUUIDs.append(uuid)
+ try:
+ vm = self.vmm.lookupByID(id)
+ uuid = self.uuidstr(vm.UUID())
+ maybeNewUUIDs[uuid] = vm
+ # also add the new or newly started VM to the
"started" list
+ startedUUIDs.append(uuid)
+ #print "Maybe new active " +
str(maybeNewUUIDs[uuid].get_name()) + " " + uuid
+ self.activeUUIDs.append(uuid)
+ except libvirt.libvirtError:
+ logging.debug("Couldn't fetch domain id " + str(id) +
"; it probably went away")
# Filter out inactive domains which haven't changed
if newInactiveNames != None:
@@ -738,7 +753,10 @@ class vmmConnection(gobject.GObject):
# Finally, we sample each domain
now = time()
- self.hostinfo = self.vmm.getInfo()
+ try:
+ self.hostinfo = self.vmm.getInfo()
+ except:
+ logging.warn("Unable to get host information")
updateVMs = self.vms
if noStatsUpdate:
_______________________________________________
et-mgmt-tools mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/et-mgmt-tools