X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/7b924b8f4ec3c62b70a012f7d417beb230db8965..9d93e8953885dee5fdd5cc11249bbf0faf5e65cc:/code/main.py diff --git a/code/main.py b/code/main.py index 3b43859..e5fdfa9 100755 --- a/code/main.py +++ b/code/main.py @@ -105,8 +105,9 @@ class Defaults: cdrom = '' autoinstall = '' name = '' + type = 'linux-hvm' + def __init__(self, max_memory=None, max_disk=None, **kws): - self.type = Type.get('linux-hvm') if max_memory is not None: self.memory = min(self.memory, max_memory) if max_disk is not None: @@ -291,7 +292,7 @@ def getHostname(nic): if nic.hostname and '.' in nic.hostname: return nic.hostname elif nic.machine: - return nic.machine.name + '.servers.csail.mit.edu' + return nic.machine.name + '.xvm.mit.edu' else: return None @@ -576,8 +577,9 @@ def infoDict(user, machine): checkpoint.checkpoint('Got mem') max_disk = validation.maxDisk(user, machine) defaults = Defaults() - for name in 'machine_id name administrator owner memory contact type'.split(): + for name in 'machine_id name administrator owner memory contact'.split(): setattr(defaults, name, getattr(machine, name)) + defaults.type = machine.type.type_id defaults.disk = "%0.2f" % (machine.disks[0].size/1024.) checkpoint.checkpoint('Got defaults') d = dict(user=user, @@ -600,13 +602,18 @@ def info(user, fields): checkpoint.checkpoint('Got infodict') return templates.info(searchList=[d]) +def unauthFront(_, fields): + """Information for unauth'd users.""" + return templates.unauth(searchList=[{'simple' : True}]) + mapping = dict(list=listVms, vnc=vnc, command=command, modify=modify, info=info, create=create, - help=helpHandler) + help=helpHandler, + unauth=unauthFront) def printHeaders(headers): """Print a dictionary as HTTP headers.""" @@ -617,8 +624,10 @@ def printHeaders(headers): def getUser(): """Return the current user based on the SSL environment variables""" - username = os.environ['SSL_CLIENT_S_DN_Email'].split("@")[0] - return username + email = os.environ.get('SSL_CLIENT_S_DN_Email', None) + if email is None: + return None + return email.split("@")[0] def main(operation, user, fields): start_time = time.time() @@ -674,6 +683,9 @@ if __name__ == '__main__': print 'Location: ' + os.environ['SCRIPT_NAME']+'/\n' sys.exit(0) + if u is None: + operation = 'unauth' + if operation.startswith('/'): operation = operation[1:] if not operation: