X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/754c1c8b18cf49c42cb4eb704642466d2d1f4279..2be0969e153ace507ec07b27d156b50e54e00f94:/code/main.py diff --git a/code/main.py b/code/main.py index f754ca0..86da50e 100755 --- a/code/main.py +++ b/code/main.py @@ -171,8 +171,6 @@ wiki, including steps to prepare an HVM guest to boot as a ParaVM

We recommend using a ParaVM when possible and an HVM when necessary. """, - 'CPU Weight': """ -Don't ask us! We're as mystified as you are.""", 'Owner': """ The owner field is used to determine quotas. It must be the name of a @@ -196,6 +194,7 @@ your machine will run just fine, but the applet's display of the console will suffer artifacts. """, 'Windows': """ +Windows 7: The Windows 7 image is licensed for all MIT students and will automatically activate off the network; see the licensing agreement for details. The installer requires 512 MiB RAM and at least 15 GiB disk space (20 GiB or more recommended).
Windows Vista: The Vista image is licensed for all MIT students and will automatically activate off the network; see the licensing confirmation e-mail for details. The installer requires 512 MiB RAM and at least 7.5 GiB disk space (15 GiB or more recommended).
Windows XP: 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 http://msca.mit.edu/ if you are staff/faculty to request one. """ @@ -460,7 +459,7 @@ def getListDict(username, state): machines=machines, has_vnc=has_vnc, installing=installing, - disable_creation=True) + disable_creation=False) return d def getHostname(nic): @@ -550,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() @@ -564,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() @@ -582,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() @@ -595,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, @@ -605,8 +608,12 @@ def infoDict(username, state, machine): else: main_status = dict(status[1:]) main_status['host'] = controls.listHost(machine) - start_time = float(main_status.get('start_time', 0)) - uptime = datetime.timedelta(seconds=int(time.time()-start_time)) + start_time = main_status.get('start_time') + if start_time is None: + uptime = "Still booting?" + else: + start_time = float(start_time) + uptime = datetime.timedelta(seconds=int(time.time()-start_time)) cpu_time_float = float(main_status.get('cpu_time', 0)) cputime = datetime.timedelta(seconds=int(cpu_time_float)) display_fields = [('name', 'Name'),