[et-mgmt-tools] [PATCH] waiting VNC port number take2

Saori Fukuta fukuta.saori at jp.fujitsu.com
Thu Mar 1 06:46:34 UTC 2007


Hi,

On Fri, 23 Feb 2007 12:00:05 +0000 "Daniel P. Berrange" wrote:

> > >  - Once the above fix in libvirt is done, we can make virt-install do
> > >    a loop like the one you have below, but instead of looking in xenstore
> > >    it will look at the port in the XML - waiting for it to change from '-1'
> > >    to an actual port number
> > 
> > You are right, I will consider again as you pointed out.
> 
> Excellant.

I made a patch for current libvirt(revision 1.420) that fixed following:
    revision 1.417
    date: 2007/02/27 15:22:13;  author: berrange;  state: Exp;  lines:+7 -0
    Don't hardcode port=5900+domid for new xend

Signed-off-by: Saori Fukuta <fukuta.saori at jp.fujitsu.com>

Thanks,
Saori Fukuta.

Index: virt-install
===================================================================
diff -r 1776ef836bf6 virt-install
--- a/virt-install      Wed Feb 28 07:47:31 2007 -0500
+++ b/virt-install      Thu Mar 01 23:26:17 2007 +0900
@@ -313,11 +313,19 @@ def get_xml_string(dom, path):
         return None

 def vnc_console(dom):
-    import time; time.sleep(2) # FIXME: ugh.
-    vncport = get_xml_string(dom,
-                             "/domain/devices/graphics[@type='vnc']/@port")
-    if vncport == None:
-        vncport = 5900 + dom.ID()
+    import time;
+    num = 0
+    while num < ( 40 / 0.25 ): # 40 seconds, .25 second sleeps
+        vncport = get_xml_string(dom,
+                                 "/domain/devices/graphics[@type='vnc']/@port")
+        if vncport == '-1':
+            num += 1
+            time.sleep(0.25)
+        else:
+            break
+    if vncport == '-1' or vncport is None:
+        print >> sys.stderr, "Unable to connect to graphical console; vncport number is not found."
+        return None
     vncport = int(vncport)
     vnchost = "localhost"
     if not os.path.exists("/usr/bin/vncviewer"):




More information about the et-mgmt-tools mailing list