X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/7ab93691b4b6a45e99f78b37796413c5f24629a4..cfed63e6644aa489939f40a1ceff5b41e847aeca:/code/main.py diff --git a/code/main.py b/code/main.py index 8506ee5..cd37c0e 100755 --- a/code/main.py +++ b/code/main.py @@ -36,12 +36,13 @@ import templates from Cheetah.Template import Template import validation import cache_acls -from webcommon import InvalidInput, CodeError, State +from webcommon import State import controls from getafsgroups import getAfsGroupMembers -import sipb_xen_database as database -from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess, Type, Autoinstall +from invirt import database +from invirt.database import Machine, CDROM, session, connect, MachineAccess, Type, Autoinstall from invirt.config import structs as config +from invirt.common import InvalidInput, CodeError def pathSplit(path): if path.startswith('/'): @@ -85,6 +86,7 @@ def makeErrorPre(old, addition): return '
STDERR:
' + str(addition) + '' Template.database = database +Template.config = config Template.helppopup = staticmethod(helppopup) Template.err = None @@ -244,18 +246,7 @@ def vnc(username, state, path, fields): """ machine = validation.Validate(username, state, machine_id=fields.getfirst('machine_id')).machine - TOKEN_KEY = "0M6W0U1IXexThi5idy8mnkqPKEq1LtEnlK/pZSn0cDrN" - - data = {} - data["user"] = username - data["machine"] = machine.name - data["expires"] = time.time()+(5*60) - pickled_data = cPickle.dumps(data) - m = hmac.new(TOKEN_KEY, digestmod=sha) - m.update(pickled_data) - token = {'data': pickled_data, 'digest': m.digest()} - token = cPickle.dumps(token) - token = base64.urlsafe_b64encode(token) + token = controls.remctl('control', machine.name, 'vnctoken').strip() host = controls.listHost(machine) if host: port = 10003 + [h.hostname for h in config.hosts].index(host) @@ -360,7 +351,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) @@ -379,7 +370,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: @@ -395,13 +386,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])) @@ -468,6 +459,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).