Changeset 2413


Ignore:
Timestamp:
Aug 9, 2009, 6:45:36 PM (15 years ago)
Author:
quentin
Message:

Move machine-related pages into a REST-style URL.

Location:
package_branches/invirt-web/cherrypy/code
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • package_branches/invirt-web/cherrypy/code/main.py

    r2412 r2413  
    6666        return d
    6767    index=list
    68 
    69     @cherrypy.expose
    70     @cherrypy.tools.mako(filename="/info.mako")
    71     def info(self, machine_id):
    72         """Handler for info on a single VM."""
    73         machine = validation.Validate(cherrypy.request.login, cherrypy.request.state, machine_id=machine_id).machine
    74         d = infoDict(cherrypy.request.login, cherrypy.request.state, machine)
    75         checkpoint.checkpoint('Got infodict')
    76         return d
    7768
    7869    @cherrypy.expose
     
    159150        return {'request': cherrypy.request, 'kwargs': kwargs}
    160151    helloworld._cp_config['tools.require_login.on'] = False
     152
     153    class MachineView(View):
     154        # This is hairy. Fix when CherryPy 3.2 is out. (rename to
     155        # _cp_dispatch, and parse the argument as a list instead of
     156        # string
     157
     158        def __getattr__(self, name):
     159            try:
     160                machine_id = int(name)
     161                cherrypy.request.params['machine_id'] = machine_id
     162                return self
     163            except ValueError:
     164                return None
     165
     166        @cherrypy.expose
     167        @cherrypy.tools.mako(filename="/info.mako")
     168        def info(self, machine_id):
     169            """Handler for info on a single VM."""
     170            machine = validation.Validate(cherrypy.request.login, cherrypy.request.state, machine_id=machine_id).machine
     171            d = infoDict(cherrypy.request.login, cherrypy.request.state, machine)
     172            checkpoint.checkpoint('Got infodict')
     173            return d
     174        index = info
     175
     176    machine = MachineView()
    161177
    162178def pathSplit(path):
  • package_branches/invirt-web/cherrypy/code/templates/info.mako

    r2411 r2413  
    2222  on Athena. <a href="https://xvm.scripts.mit.edu/wiki/SerialConsole">(more info)</a>
    2323 % elif has_vnc:
    24   <strong><a href="vnc?machine_id=${machine.machine_id}">Get Console</a></strong>
     24  <strong><a href="machine/${machine.machine_id}/vnc">Get Console</a></strong>
    2525 % else:
    2626  VNC console not enabled; still booting?
  • package_branches/invirt-web/cherrypy/code/templates/list.mako

    r2412 r2413  
    9696          </form>
    9797        </td>
    98         <td><a href="info?machine_id=${machine.machine_id}">${machine.name}</a></td>
     98        <td><a href="machine/${machine.machine_id}">${machine.name}</a></td>
    9999        <td>${machine.memory}M</td>
    100100        <td>${machine.owner}</td>
     
    112112        <td>\
    113113% if has_vnc[machine] == True:
    114 <a href="vnc?machine_id=${machine.machine_id}">Console</a>\
     114<a href="machine/${machine.machine_id}/vnc">Console</a>\
    115115% elif has_vnc[machine] == 'ParaVM':
    116116ParaVM${self.fn.helppopup("ParaVM Console")}
  • package_branches/invirt-web/cherrypy/code/templates/skeleton.mako

    r2410 r2413  
    66<html>
    77<head><title>${self.title()} &mdash; XVM</title>
     8  <base href="${cherrypy.request.base}" />
    89  <link href="static/favicon.ico" type="image/x-icon" rel="shortcut icon">
    910  <link rel="stylesheet" href="static/style.css" type="text/css" />
     
    5455<li><a href="list">List</a></li>
    5556% if machine:
    56 <li><a href="info?machine_id=${machine.machine_id}">Info</a></li>
    57 <li><a href="vnc?machine_id=${machine.machine_id}">Console</a></li>
     57<li><a href="machine/${machine.machine_id}">Info</a></li>
     58<li><a href="machine/${machine.machine_id}/vnc">Console</a></li>
    5859% endif
    5960<li><a href="help">Help</a></li>
Note: See TracChangeset for help on using the changeset viewer.