Add graphs of network usage by VMs.
[invirt/packages/invirt-web.git] / code / main.py
index 57cfbe2..86da50e 100755 (executable)
@@ -196,7 +196,7 @@ console will suffer artifacts.
             'Windows': """
 <strong>Windows 7:</strong> The Windows 7 image is licensed for all MIT students and will automatically activate off the network; see <a href="/static/msca-7.txt">the licensing agreement</a> for details. The installer requires 512 MiB RAM and at least 15 GiB disk space (20 GiB or more recommended).<br>
 <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 7:</strong> The Windows 7 image is licensed for all MIT students and will automatically activate off the network; see <a href="/static/msca-7.txt">the licensing agreement</a> for details. The installer requires 512 MiB RAM and at least 15 GiB disk space (20 GiB or more recommended).<br>
 <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, or visit <a href="http://msca.mit.edu/">http://msca.mit.edu/</a> if you are staff/faculty to request 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.
 """
             }
 
 """
             }
 
@@ -549,7 +549,7 @@ def modifyDict(username, state, machine_id, fields):
         if hasattr(validate, 'contact'):
             machine.contact = validate.contact
 
         if hasattr(validate, 'contact'):
             machine.contact = validate.contact
 
-        session.save_or_update(machine)
+        session.add(machine)
         session.commit()
     except:
         session.rollback()
         session.commit()
     except:
         session.rollback()
@@ -563,10 +563,10 @@ def modifyDict(username, state, machine_id, fields):
             if disk.size != disksize:
                 olddisk[disk.guest_device_name] = disksize
                 disk.size = disksize
             if disk.size != disksize:
                 olddisk[disk.guest_device_name] = disksize
                 disk.size = disksize
-                session.save_or_update(disk)
+                session.add(disk)
         for diskname in olddisk:
             controls.resizeDisk(oldname, diskname, str(olddisk[diskname]))
         for diskname in olddisk:
             controls.resizeDisk(oldname, diskname, str(olddisk[diskname]))
-        session.save_or_update(machine)
+        session.add(machine)
         session.commit()
     except:
         session.rollback()
         session.commit()
     except:
         session.rollback()
@@ -581,7 +581,7 @@ def modifyDict(username, state, machine_id, fields):
                     n.hostname = validate.name
         if hasattr(validate, 'name'):
             controls.renameMachine(machine, oldname, validate.name)
                     n.hostname = validate.name
         if hasattr(validate, 'name'):
             controls.renameMachine(machine, oldname, validate.name)
-        session.save_or_update(machine)
+        session.add(machine)
         session.commit()
     except:
         session.rollback()
         session.commit()
     except:
         session.rollback()
@@ -594,7 +594,11 @@ def modifyDict(username, state, machine_id, fields):
 
 def infoDict(username, state, machine):
     """Get the variables used by info.tmpl."""
 
 def infoDict(username, state, machine):
     """Get the variables used by info.tmpl."""
-    status = controls.statusInfo(machine)
+    try:
+        status = controls.statusInfo(machine)
+    except CodeError, e:
+        # machine was shut down in between the call to listInfoDict and this
+        status = None
     has_vnc = hasVnc(status)
     if status is None:
         main_status = dict(name=machine.name,
     has_vnc = hasVnc(status)
     if status is None:
         main_status = dict(name=machine.name,