Update the errortest handler for cherrypy
[invirt/packages/invirt-web.git] / code / main.py
index e068e48..473647f 100755 (executable)
@@ -132,7 +132,7 @@ console will suffer artifacts.
 """,
             'Windows': """
 <strong>Windows Vista:</strong> The Vista image is licensed for all MIT students and will automatically activate off the network; see <a href="/static/msca-email.txt">the licensing confirmation e-mail</a> for details. The installer requires 512 MiB RAM and at least 7.5 GiB disk space (15 GiB or more recommended).<br>
 """,
             'Windows': """
 <strong>Windows Vista:</strong> The Vista image is licensed for all MIT students and will automatically activate off the network; see <a href="/static/msca-email.txt">the licensing confirmation e-mail</a> for details. The installer requires 512 MiB RAM and at least 7.5 GiB disk space (15 GiB or more recommended).<br>
-<strong>Windows XP:</strong> This is the volume license CD image. You will need your own volume license key to complete the install. We do not have these available for the general MIT community; ask your department if they have one.
+<strong>Windows XP:</strong> This is the volume license CD image. You will need your own volume license key to complete the install. We do not have these available for the general MIT community; ask your department if they have one, or visit <a href="http://msca.mit.edu/">http://msca.mit.edu/</a> if you are staff/faculty to request one.
 """
             }
 
 """
             }
 
@@ -147,7 +147,7 @@ console will suffer artifacts.
     help._cp_config['tools.require_login.on'] = False
 
     def parseCreate(self, fields):
     help._cp_config['tools.require_login.on'] = False
 
     def parseCreate(self, fields):
-        kws = dict([(kw, fields.get(kw)) for kw in 'name description owner memory disksize vmtype cdrom autoinstall'.split()])
+        kws = dict([(kw, fields.get(kw)) for kw in 'name description owner memory disksize vmtype cdrom autoinstall'.split() if fields.get(kw)])
         validate = validation.Validate(cherrypy.request.login, cherrypy.request.state, strict=True, **kws)
         return dict(contact=cherrypy.request.login, name=validate.name, description=validate.description, memory=validate.memory,
                     disksize=validate.disksize, owner=validate.owner, machine_type=getattr(validate, 'vmtype', Defaults.type),
         validate = validation.Validate(cherrypy.request.login, cherrypy.request.state, strict=True, **kws)
         return dict(contact=cherrypy.request.login, name=validate.name, description=validate.description, memory=validate.memory,
                     disksize=validate.disksize, owner=validate.owner, machine_type=getattr(validate, 'vmtype', Defaults.type),
@@ -182,6 +182,11 @@ console will suffer artifacts.
         return {'request': cherrypy.request, 'kwargs': kwargs}
     helloworld._cp_config['tools.require_login.on'] = False
 
         return {'request': cherrypy.request, 'kwargs': kwargs}
     helloworld._cp_config['tools.require_login.on'] = False
 
+    @cherrypy.expose
+    def errortest(self):
+        """Throw an error, to test the error-tracing mechanisms."""
+        raise RuntimeError("test of the emergency broadcast system")
+
     class MachineView(View):
         # This is hairy. Fix when CherryPy 3.2 is out. (rename to
         # _cp_dispatch, and parse the argument as a list instead of
     class MachineView(View):
         # This is hairy. Fix when CherryPy 3.2 is out. (rename to
         # _cp_dispatch, and parse the argument as a list instead of
@@ -374,9 +379,9 @@ def getListDict(username, state):
     checkpoint.checkpoint('Got my machines')
     on = {}
     has_vnc = {}
     checkpoint.checkpoint('Got my machines')
     on = {}
     has_vnc = {}
+    installing = {}
     xmlist = state.xmlist
     checkpoint.checkpoint('Got uptimes')
     xmlist = state.xmlist
     checkpoint.checkpoint('Got uptimes')
-    can_clone = 'ice3' not in state.xmlist_raw
     for m in machines:
         if m not in xmlist:
             has_vnc[m] = 'Off'
     for m in machines:
         if m not in xmlist:
             has_vnc[m] = 'Off'
@@ -389,6 +394,10 @@ def getListDict(username, state):
                 has_vnc[m] = "WTF?"
             else:
                 has_vnc[m] = "ParaVM"
                 has_vnc[m] = "WTF?"
             else:
                 has_vnc[m] = "ParaVM"
+            if xmlist[m].get('autoinstall'):
+                installing[m] = True
+            else:
+                installing[m] = False
     max_memory = validation.maxMemory(username, state)
     max_disk = validation.maxDisk(username)
     checkpoint.checkpoint('Got max mem/disk')
     max_memory = validation.maxMemory(username, state)
     max_disk = validation.maxDisk(username)
     checkpoint.checkpoint('Got max mem/disk')
@@ -406,7 +415,7 @@ def getListDict(username, state):
              defaults=defaults,
              machines=machines,
              has_vnc=has_vnc,
              defaults=defaults,
              machines=machines,
              has_vnc=has_vnc,
-             can_clone=can_clone)
+             installing=installing)
     return d
 
 def getHostname(nic):
     return d
 
 def getHostname(nic):
@@ -648,16 +657,11 @@ def admin(username, state, path, fields):
     newstate.environ = state.environ
     return handler(username, newstate, path, fields)
 
     newstate.environ = state.environ
     return handler(username, newstate, path, fields)
 
-def throwError(_, __, ___, ____):
-    """Throw an error, to test the error-tracing mechanisms."""
-    raise RuntimeError("test of the emergency broadcast system")
-
 mapping = dict(
                modify=modify,
                unauth=unauthFront,
                admin=admin,
 mapping = dict(
                modify=modify,
                unauth=unauthFront,
                admin=admin,
-               overlord=admin,
-               errortest=throwError)
+               overlord=admin)
 
 def printHeaders(headers):
     """Print a dictionary as HTTP headers."""
 
 def printHeaders(headers):
     """Print a dictionary as HTTP headers."""