X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/e4854da750615c45d19dbffa1643dc36bfc86048..6fb85712f6bdc0c32970cd9e67fd406ece09d2d5:/code/main.py diff --git a/code/main.py b/code/main.py index 593b9f0..222520c 100755 --- a/code/main.py +++ b/code/main.py @@ -139,8 +139,7 @@ console will suffer artifacts. if not isinstance(subject, list): subject = [subject] - return dict(user=cherrypy.request.login, - simple=simple, + return dict(simple=simple, subjects=subject, mapping=help_mapping) help._cp_config['tools.require_login.on'] = False @@ -151,6 +150,31 @@ console will suffer artifacts. return {'request': cherrypy.request, 'kwargs': kwargs} helloworld._cp_config['tools.require_login.on'] = False + class MachineView(View): + # This is hairy. Fix when CherryPy 3.2 is out. (rename to + # _cp_dispatch, and parse the argument as a list instead of + # string + + def __getattr__(self, name): + try: + machine_id = int(name) + cherrypy.request.params['machine_id'] = machine_id + return self + except ValueError: + return None + + @cherrypy.expose + @cherrypy.tools.mako(filename="/info.mako") + def info(self, machine_id): + """Handler for info on a single VM.""" + machine = validation.Validate(cherrypy.request.login, cherrypy.request.state, machine_id=machine_id).machine + d = infoDict(cherrypy.request.login, cherrypy.request.state, machine) + checkpoint.checkpoint('Got infodict') + return d + index = info + + machine = MachineView() + def pathSplit(path): if path.startswith('/'): path = path[1:] @@ -291,7 +315,7 @@ def getListDict(username, state): elif m.type.hvm: has_vnc[m] = "WTF?" else: - has_vnc[m] = "ParaVM"+helppopup("ParaVM Console") + has_vnc[m] = "ParaVM" max_memory = validation.maxMemory(username, state) max_disk = validation.maxDisk(username) checkpoint.checkpoint('Got max mem/disk') @@ -548,7 +572,6 @@ def infoDict(username, state, machine): ('memory', 'RAM'), 'DISK_INFO', ('state', 'state (xen format)'), - ('cpu_weight', 'CPU weight'+helppopup('CPU Weight')), ] fields = [] machine_info = {} @@ -602,17 +625,9 @@ def infoDict(username, state, machine): ram=machine.memory, max_mem=max_mem, max_disk=max_disk, - owner_help=helppopup("Owner"), fields = fields) return d -def info(username, state, path, fields): - """Handler for info on a single VM.""" - machine = validation.Validate(username, state, machine_id=fields.getfirst('machine_id')).machine - d = infoDict(username, state, machine) - checkpoint.checkpoint('Got infodict') - return templates.info(searchList=[d]) - def unauthFront(_, _2, _3, fields): """Information for unauth'd users.""" return templates.unauth(searchList=[{'simple' : True, @@ -637,7 +652,6 @@ def throwError(_, __, ___, ____): mapping = dict(vnc=vnc, command=command, modify=modify, - info=info, create=create, unauth=unauthFront, admin=admin,