Bugfixes.
authorEric Price <ecprice@mit.edu>
Tue, 9 Oct 2007 21:30:50 +0000 (17:30 -0400)
committerEric Price <ecprice@mit.edu>
Tue, 9 Oct 2007 21:30:50 +0000 (17:30 -0400)
svn path=/trunk/web/; revision=157

templates/main.py

index 09cc0ac..f798cbf 100755 (executable)
@@ -47,7 +47,7 @@ class Global(object):
 
     def __get_uptimes(self):
         if not hasattr(self, '_uptimes'):
 
     def __get_uptimes(self):
         if not hasattr(self, '_uptimes'):
-            self._uptimes = getUptimes(self.machines)
+            self._uptimes = getUptimes(Machine.select())
         return self._uptimes
     uptimes = property(__get_uptimes)
 
         return self._uptimes
     uptimes = property(__get_uptimes)
 
@@ -231,7 +231,7 @@ def parseStatus(s):
             stack[-1].extend(v.split())
     return stack[-1]
 
             stack[-1].extend(v.split())
     return stack[-1]
 
-def getUptimes(machines):
+def getUptimes(machines=None):
     """Return a dictionary mapping machine names to uptime strings"""
     value_string = remctl('web', 'listvms')
     lines = value_string.splitlines()
     """Return a dictionary mapping machine names to uptime strings"""
     value_string = remctl('web', 'listvms')
     lines = value_string.splitlines()
@@ -406,7 +406,7 @@ def listVms(user, fields):
              default_disk=min(4.0, max_disk),
              machines=machines,
              has_vnc=has_vnc,
              default_disk=min(4.0, max_disk),
              machines=machines,
              has_vnc=has_vnc,
-             uptimes=uptimes,
+             uptimes=g.uptimes,
              cdroms=CDROM.select())
     return Template(file='list.tmpl', searchList=[d, global_dict])
 
              cdroms=CDROM.select())
     return Template(file='list.tmpl', searchList=[d, global_dict])
 
@@ -530,11 +530,11 @@ def deleteVM(machine):
 
 def command(user, fields):
     """Handler for running commands like boot and delete on a VM."""
 
 def command(user, fields):
     """Handler for running commands like boot and delete on a VM."""
-    print time.time()-start_time
+    print >> sys.stderr, time.time()-start_time
     machine = testMachineId(user, fields.getfirst('machine_id'))
     action = fields.getfirst('action')
     cdrom = fields.getfirst('cdrom')
     machine = testMachineId(user, fields.getfirst('machine_id'))
     action = fields.getfirst('action')
     cdrom = fields.getfirst('cdrom')
-    print time.time()-start_time
+    print >> sys.stderr, time.time()-start_time
     if cdrom is not None and not CDROM.get(cdrom):
         raise CodeError("Invalid cdrom type '%s'" % cdrom)    
     if action not in ('Reboot', 'Power on', 'Power off', 'Shutdown', 'Delete VM'):
     if cdrom is not None and not CDROM.get(cdrom):
         raise CodeError("Invalid cdrom type '%s'" % cdrom)    
     if action not in ('Reboot', 'Power on', 'Power off', 'Shutdown', 'Delete VM'):
@@ -555,7 +555,7 @@ def command(user, fields):
         remctl('shutdown', machine.name)
     elif action == 'Delete VM':
         deleteVM(machine)
         remctl('shutdown', machine.name)
     elif action == 'Delete VM':
         deleteVM(machine)
-    print time.time()-start_time
+    print >> sys.stderr, time.time()-start_time
 
     d = dict(user=user,
              command=action,
 
     d = dict(user=user,
              command=action,
@@ -722,8 +722,8 @@ if __name__ == '__main__':
         u.email = 'nobody'
     connect('postgres://sipb-xen@sipb-xen-dev/sipb_xen')
     operation = os.environ.get('PATH_INFO', '')
         u.email = 'nobody'
     connect('postgres://sipb-xen@sipb-xen-dev/sipb_xen')
     operation = os.environ.get('PATH_INFO', '')
-    #print 'Content-Type: text/plain\n'
-    #print operation
+#    print 'Content-Type: text/plain\n'
+#    print operation
     if not operation:
         print "Status: 301 Moved Permanently"
         print 'Location: ' + os.environ['SCRIPT_NAME']+'/\n'
     if not operation:
         print "Status: 301 Moved Permanently"
         print 'Location: ' + os.environ['SCRIPT_NAME']+'/\n'
@@ -733,7 +733,7 @@ if __name__ == '__main__':
         operation = operation[1:]
     if not operation:
         operation = 'list'
         operation = operation[1:]
     if not operation:
         operation = 'list'
-    
+
     def badOperation(u, e):
         raise CodeError("Unknown operation")
 
     def badOperation(u, e):
         raise CodeError("Unknown operation")
 
@@ -746,17 +746,20 @@ if __name__ == '__main__':
         sys.stderr.seek(0)
         e = sys.stderr.read()
         if e:
         sys.stderr.seek(0)
         e = sys.stderr.read()
         if e:
-            output = output.replace('<body>', '<body><pre>'+e+'</pre>')
+            output = str(output)
+            output = output.replace('<body>', '<body><p>STDERR:</p><pre>'+e+'</pre>')
         print output
     except CodeError, err:
         print 'Content-Type: text/html\n'
         sys.stderr.seek(0)
         e = sys.stderr.read()
         print output
     except CodeError, err:
         print 'Content-Type: text/html\n'
         sys.stderr.seek(0)
         e = sys.stderr.read()
+        sys.stderr=sys.stdout
         print error(operation, u, fields, err, e)
     except InvalidInput, err:
         print 'Content-Type: text/html\n'
         sys.stderr.seek(0)
         e = sys.stderr.read()
         print error(operation, u, fields, err, e)
     except InvalidInput, err:
         print 'Content-Type: text/html\n'
         sys.stderr.seek(0)
         e = sys.stderr.read()
+        sys.stderr=sys.stdout
         print invalidInput(operation, u, fields, err, e)
     except:
         print 'Content-Type: text/plain\n'
         print invalidInput(operation, u, fields, err, e)
     except:
         print 'Content-Type: text/plain\n'
@@ -764,4 +767,5 @@ if __name__ == '__main__':
         e = sys.stderr.read()
         print e
         print '----'
         e = sys.stderr.read()
         print e
         print '----'
+        sys.stderr = sys.stdout
         raise
         raise