[virt-tools-list] [PATCH virt-manager 1/2] inspection: report guest inspection errors
Giuseppe Scrivano
gscrivan at redhat.com
Wed Nov 27 11:13:38 UTC 2013
Add an `error' flag to the inspection data for a guest and set it when
the inspection failed.
Signed-off-by: Giuseppe Scrivano <gscrivan at redhat.com>
---
virtManager/domain.py | 1 +
virtManager/inspection.py | 26 ++++++++++++++++++++------
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/virtManager/domain.py b/virtManager/domain.py
index b8324d5..2fc869a 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -142,6 +142,7 @@ class vmmInspectionData(object):
self.product_variant = None
self.icon = None
self.applications = None
+ self.error = False
class vmmDomainSnapshot(vmmLibvirtObject):
diff --git a/virtManager/inspection.py b/virtManager/inspection.py
index 8b49bbe..3fefe6b 100644
--- a/virtManager/inspection.py
+++ b/virtManager/inspection.py
@@ -122,6 +122,11 @@ class vmmInspection(vmmGObject):
if not conn.is_active():
break
+ def set_inspection_error(vm):
+ data = vmmInspectionData()
+ data.error = True
+ self._set_vm_inspection_data(vm, data)
+
prettyvm = vmuuid
try:
vm = conn.get_vm(vmuuid)
@@ -139,7 +144,15 @@ class vmmInspection(vmmGObject):
# Whether success or failure, we've "seen" this VM now.
self._vmseen[vmuuid] = True
- self._process(conn, vm, vmuuid)
+ try:
+ data = self._process(conn, vm, vmuuid)
+ if data:
+ self._set_vm_inspection_data(vm, data)
+ else:
+ set_inspection_error(vm)
+ except:
+ set_inspection_error(vm)
+ raise
except:
logging.exception("%s: exception while processing",
prettyvm)
@@ -148,7 +161,7 @@ class vmmInspection(vmmGObject):
if re.search(r"^guestfs-", vm.get_name()):
logging.debug("ignore libvirt/guestfs temporary VM %s",
vm.get_name())
- return
+ return None
g = GuestFS()
prettyvm = conn.get_uri() + ":" + vm.get_name()
@@ -163,7 +176,7 @@ class vmmInspection(vmmGObject):
if not disks:
logging.debug("%s: nothing to inspect", prettyvm)
- return
+ return None
# Add the disks. Note they *must* be added with readonly flag set.
for disk in disks:
@@ -173,7 +186,7 @@ class vmmInspection(vmmGObject):
if not (os.path.exists(path) and os.access(path, os.R_OK)):
logging.debug("%s: cannot access '%s', skipping inspection",
prettyvm, path)
- return
+ return None
g.add_drive_opts(path, readonly=1, format=driver_type)
@@ -183,7 +196,7 @@ class vmmInspection(vmmGObject):
roots = g.inspect_os()
if len(roots) == 0:
logging.debug("%s: no operating systems found", prettyvm)
- return
+ return None
# Arbitrarily pick the first root device.
root = roots[0]
@@ -264,8 +277,9 @@ class vmmInspection(vmmGObject):
data.product_variant = str(product_variant)
data.icon = icon
data.applications = list(apps)
+ data.error = False
- self._set_vm_inspection_data(vm, data)
+ return data
def _set_vm_inspection_data(self, vm, data):
vm.inspection = data
--
1.8.3.1
More information about the virt-tools-list
mailing list