Add graphs of network usage by VMs.
[invirt/packages/invirt-web.git] / code / main.py
index cf0aca2..86da50e 100755 (executable)
@@ -194,9 +194,9 @@ your machine will run just fine, but the applet's display of the
 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. The installer requires 512 MiB RAM and at least 15 GiB disk space (20 GiB or more recommended).<br>
+<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
 
-        session.save_or_update(machine)
+        session.add(machine)
         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
-                session.save_or_update(disk)
+                session.add(disk)
         for diskname in olddisk:
             controls.resizeDisk(oldname, diskname, str(olddisk[diskname]))
-        session.save_or_update(machine)
+        session.add(machine)
         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)
-        session.save_or_update(machine)
+        session.add(machine)
         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."""
-    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,