X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/e37dd15bbf8683bab8454ea0eec8e9968ce982b2..7056b4a677d783f326b2b9209a550d899f274644:/code/main.py diff --git a/code/main.py b/code/main.py index a3c84ee..98fe1a8 100755 --- a/code/main.py +++ b/code/main.py @@ -136,7 +136,7 @@ def hasVnc(status): def parseCreate(user, fields): name = fields.getfirst('name') if not validation.validMachineName(name): - raise InvalidInput('name', name, 'You must provide a machine name.') + raise InvalidInput('name', name, 'You must provide a machine name. Max 22 chars, alnum plus \'-\' and \'_\'.') name = name.lower() if Machine.get_by(name=name): @@ -159,8 +159,13 @@ def parseCreate(user, fields): cdrom = fields.getfirst('cdrom') if cdrom is not None and not CDROM.get(cdrom): raise CodeError("Invalid cdrom type '%s'" % cdrom) + + clone_from = fields.getfirst('clone_from') + if clone_from and clone_from != 'ice3': + raise CodeError("Invalid clone image '%s'" % clone_from) + return dict(contact=user, name=name, memory=memory, disk_size=disk_size, - owner=owner, is_hvm=is_hvm, cdrom=cdrom) + owner=owner, is_hvm=is_hvm, cdrom=cdrom, clone_from=clone_from) def create(user, fields): """Handler for create requests.""" @@ -205,6 +210,9 @@ def getListDict(user): owner=user, cdrom='gutsy-i386') checkpoint.checkpoint('Got defaults') + def sortkey(machine): + return (machine.owner != user, machine.owner, machine.name) + machines = sorted(machines, key=sortkey) d = dict(user=user, cant_add_vm=validation.cantAddVm(user), max_memory=max_memory, @@ -339,9 +347,9 @@ def command(user, fields): return templates.list(searchList=[d]) elif back == 'info': machine = validation.testMachineId(user, fields.getfirst('machine_id')) - d = infoDict(user, machine) - d['result'] = result - return templates.info(searchList=[d]) + return ({'Status': '302', + 'Location': '/info?machine_id=%d' % machine.machine_id}, + "You shouldn't see this message.") else: raise InvalidInput('back', back, 'Not a known back page.') @@ -443,9 +451,15 @@ The administrator field determines who can access the console and power on and off the machine. This can be either a user or a moira group.""", quotas=""" -Quotas are determined on a per-locker basis. Each quota may have a +Quotas are determined on a per-locker basis. Each locker may have a maximum of 512 megabytes of active ram, 50 gigabytes of disk, and 4 -active machines.""" +active machines.""", + console=""" +Framebuffer: At a Linux boot prompt in your VM, try +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. +""" ) if not subjects: @@ -602,7 +616,7 @@ def main(operation, user, fields): output_string = str(output) checkpoint.checkpoint('output as a string') print output_string - print '
%s
' % checkpoint + print '' % checkpoint except Exception, err: if not fields.has_key('js'): if isinstance(err, CodeError):