[Kimchi-devel] [PATCH] Skip 'screendump' for vms no video device configured

Mark Wu wudxw at linux.vnet.ibm.com
Mon Mar 17 08:48:22 UTC 2014


It's observed that if a vm is created by external tool and doesn't
have video device, libivrt will keep reporting the following error
message:

	"internal error: unable to execute QEMU command 'screendump':
	 There is no QemuConsole I can screendump from."

This patch skips screendump for that kinds of vms to avoid the error
message and repeately sending the black images. On UI side, it changes
to display vm's icon instead of the black image if it doesn't have
video device.

Signed-off-by: Mark Wu <wudxw at linux.vnet.ibm.com>
---
 src/kimchi/model/vms.py        | 6 +++++-
 ui/js/src/kimchi.guest_main.js | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py
index 3b8a666..79b335c 100644
--- a/src/kimchi/model/vms.py
+++ b/src/kimchi/model/vms.py
@@ -275,6 +275,10 @@ class VMModel(object):
     def _live_vm_update(self, dom, params):
         pass
 
+    def _has_video(self, dom):
+        dom = ElementTree.fromstring(dom.XMLDesc(0))
+        return dom.find('devices/video') is not None
+
     def lookup(self, name):
         dom = self.get_vm(name, self.conn)
         info = dom.info()
@@ -284,7 +288,7 @@ class VMModel(object):
         graphics_type, graphics_listen, graphics_port = graphics
         graphics_port = graphics_port if state == 'running' else None
         try:
-            if state == 'running':
+            if state == 'running' and self._has_video(dom):
                 screenshot = self.vmscreenshot.lookup(name)
             elif state == 'shutoff':
                 # reset vm stats when it is powered off to avoid sending
diff --git a/ui/js/src/kimchi.guest_main.js b/ui/js/src/kimchi.guest_main.js
index bdd5a69..8a20d07 100644
--- a/ui/js/src/kimchi.guest_main.js
+++ b/ui/js/src/kimchi.guest_main.js
@@ -186,7 +186,7 @@ kimchi.createGuestLi = function(vmObject, prevScreenImage, openMenu) {
     guestTitle.html(vmObject.name);
 
     //Setup the VM console thumbnail display
-    var curImg = vmObject.state == 'running' ? vmObject.screenshot : vmObject.icon;
+    var curImg = vmObject.screenshot || vmObject.icon;
     var load_src = curImg || 'images/icon-vm.png';
     var tile_src = prevScreenImage || vmObject['load-src'];
     var liveTile=result.find('div[name=guest-tile] > .tile');
-- 
1.8.4.2




More information about the Kimchi-devel mailing list