Index: /trunk/packages/invirt-web/code/controls.py
===================================================================
--- /trunk/packages/invirt-web/code/controls.py	(revision 1614)
+++ /trunk/packages/invirt-web/code/controls.py	(revision 1615)
@@ -168,4 +168,11 @@
     """Return the host a machine is running on"""
     out, err = remctl('control', machine.name, 'listhost', err=True)
+    if err:
+        return None
+    return out.strip()
+
+def vnctoken(machine):
+    """Return a time-stamped VNC token"""
+    out, err = remctl('control', machine.name, 'vnctoken')
     if err:
         return None
Index: /trunk/packages/invirt-web/code/main.py
===================================================================
--- /trunk/packages/invirt-web/code/main.py	(revision 1614)
+++ /trunk/packages/invirt-web/code/main.py	(revision 1615)
@@ -44,5 +44,4 @@
 from invirt.config import structs as config
 from invirt.common import InvalidInput, CodeError
-from invirt.remctl import remctl
 
 def pathSplit(path):
@@ -248,5 +247,5 @@
     machine = validation.Validate(username, state, machine_id=fields.getfirst('machine_id')).machine
 
-    token = controls.remctl('control', machine.name, 'vnctoken').strip()
+    token = control.vnctoken(machine)
     host = controls.listHost(machine)
     if host:
