Show installer status on the front page, and unbreak the autoinstall fields in valida...
authorQuentin Smith <quentin@mit.edu>
Mon, 10 Aug 2009 04:41:46 +0000 (00:41 -0400)
committerQuentin Smith <quentin@mit.edu>
Mon, 10 Aug 2009 04:41:46 +0000 (00:41 -0400)
svn path=/package_branches/invirt-web/cherrypy-rebased/; revision=2687

code/main.py
code/templates/list.mako

index 7ab52b5..00a79ae 100755 (executable)
@@ -147,7 +147,7 @@ console will suffer artifacts.
     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),
@@ -374,9 +374,9 @@ def getListDict(username, state):
     checkpoint.checkpoint('Got my machines')
     on = {}
     has_vnc = {}
+    installing = {}
     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'
@@ -389,6 +389,10 @@ def getListDict(username, state):
                 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')
@@ -406,7 +410,7 @@ def getListDict(username, state):
              defaults=defaults,
              machines=machines,
              has_vnc=has_vnc,
-             can_clone=can_clone)
+             installing=installing)
     return d
 
 def getHostname(nic):
index 176fe14..7b1fd92 100644 (file)
@@ -84,6 +84,9 @@ ${self.fn.cdromList(defaults.cdrom, "$('cd_or_auto_cd').checked = true;$('autoin
 <%def name="machineRow(machine)">
       <tr> 
        <td rowspan="2">
+       % if machine.uptime and installing[machine]:
+       <img src="static/power_installing.png" alt="Installing..." />
+       % else:
          <form action="machine/${machine.machine_id}/command/${'shutdown' if machine.uptime else 'create'}" method="post">
            <input type="hidden" name="back" value="list"/>
            <input type="hidden" name="machine_id"
@@ -94,6 +97,7 @@ ${self.fn.cdromList(defaults.cdrom, "$('cd_or_auto_cd').checked = true;$('autoin
 % endif
 />
          </form>
+         % endif
        </td>
        <td><a href="machine/${machine.machine_id}">${machine.name}</a></td>
        <td>${machine.memory}M</td>