X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/dbd56d540e7ec9cbb22025f37c0a69278674d3bb..02f7620ec6f9bc23661a0cb7cd4ffa0030f2feea:/code/main.py diff --git a/code/main.py b/code/main.py index 42a456e..bf25c26 100755 --- a/code/main.py +++ b/code/main.py @@ -40,7 +40,7 @@ from webcommon import InvalidInput, CodeError, State import controls from getafsgroups import getAfsGroupMembers from invirt import database -from invirt.database import Machine, CDROM, ctx, connect, MachineAccess, Type, Autoinstall +from invirt.database import Machine, CDROM, session, connect, MachineAccess, Type, Autoinstall from invirt.config import structs as config def pathSplit(path): @@ -361,7 +361,7 @@ def modifyDict(username, state, fields): Return a list of local variables for modify.tmpl. """ olddisk = {} - transaction = ctx.current.create_transaction() + session.begin() try: kws = dict([(kw, fields.getfirst(kw)) for kw in 'machine_id owner admin contact name description memory vmtype disksize'.split()]) validate = validation.Validate(username, state, **kws) @@ -380,7 +380,7 @@ def modifyDict(username, state, fields): if disk.size != disksize: olddisk[disk.guest_device_name] = disksize disk.size = disksize - ctx.current.save(disk) + session.save_or_update(disk) update_acl = False if hasattr(validate, 'owner') and validate.owner != machine.owner: @@ -396,13 +396,13 @@ def modifyDict(username, state, fields): if hasattr(validate, 'contact'): machine.contact = validate.contact - ctx.current.save(machine) + session.save_or_update(machine) if update_acl: print >> sys.stderr, machine, machine.administrator cache_acls.refreshMachine(machine) - transaction.commit() + session.commit() except: - transaction.rollback() + session.rollback() raise for diskname in olddisk: controls.resizeDisk(oldname, diskname, str(olddisk[diskname])) @@ -469,6 +469,10 @@ active machines.""", setting fb=false to disable the framebuffer. If you don't, your machine will run just fine, but the applet's display of the console will suffer artifacts. +""", + 'Windows': """ +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 req uires 512 MB RAM and at least 7.5 GB disk space (15 GB 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. """ } @@ -600,9 +604,9 @@ def admin(username, state, path, fields): return ({'Status': '303 See Other', 'Location': 'admin/'}, "You shouldn't see this message.") - if not username in getAfsGroupMembers('system:xvm', 'athena.mit.edu'): + if not username in getAfsGroupMembers(config.web.adminacl, 'athena.mit.edu'): raise InvalidInput('username', username, - 'Not in admin group %s.' % 'system:xvm') + 'Not in admin group %s.' % config.web.adminacl) newstate = State(username, isadmin=True) newstate.environ = state.environ return handler(username, newstate, path, fields) @@ -620,6 +624,7 @@ mapping = dict(list=listVms, help=helpHandler, unauth=unauthFront, admin=admin, + overlord=admin, errortest=throwError) def printHeaders(headers): @@ -648,7 +653,7 @@ def show_error(op, username, fields, err, emsg, traceback): d = dict(op=op, user=username, fields=fields, errorMessage=str(err), stderr=emsg, traceback=traceback) details = templates.error_raw(searchList=[d]) - if username not in ('price', 'ecprice', 'andersk'): #add yourself at will + if False: #username not in config.web.errormail_exclude: send_error_mail('xvm error on %s for %s: %s' % (op, username, err), details) d['details'] = details