currentTime=time.time
__CHEETAH_version__ = '2.0rc8'
__CHEETAH_versionTuple__ = (2, 0, 0, 'candidate', 8)
-__CHEETAH_genTime__ = 1192883107.2568331
-__CHEETAH_genTimestamp__ = 'Sat Oct 20 08:25:07 2007'
+__CHEETAH_genTime__ = 1192889324.134064
+__CHEETAH_genTimestamp__ = 'Sat Oct 20 10:08:44 2007'
__CHEETAH_src__ = 'functions.tmpl'
__CHEETAH_srcLastModified__ = 'Sat Oct 20 07:34:59 2007'
__CHEETAH_docstring__ = 'Autogenerated by CHEETAH: The Python-Powered Template Engine'
#end def
#def commands()
-<script>
-function commandButton(elt, action){
- form = elt.up('', 4);
- cdrom = Form.serialize(form, true).cdrom;
- new Ajax.Request('command', {method: 'post',
- parameters: 'machine_id=$machine.machine_id&js=info&cdrom='+cdrom+'&action='+action,
- onSuccess: replaceFunc
- });
- return false;
-}
-</script>
<form action="command" action="POST">
+ <input type="hidden" name="back" value="info"/>
<input type="hidden" name="machine_id" value="$machine.machine_id"/>
<table>
</td></tr>
<tr>
#if $on
- <td><input type="submit" class="button" name="action" value="Power off" onclick="return commandButton(this, 'Power off');"/></td>
- <td><input type="submit" class="button" name="action" value="Shutdown" onclick="return commandButton(this, 'Shutdown');"/></td>
- <td><input type="submit" class="button" name="action" value="Reboot" onclick="return commandButton(this, 'Reboot');"/></td>
+ <td><input type="submit" class="button" name="action" value="Power off"/></td>
+ <td><input type="submit" class="button" name="action" value="Shutdown"/></td>
+ <td><input type="submit" class="button" name="action" value="Reboot"/></td>
#else
- <td><input type="submit" class="button" name="action" value="Power on" onclick="return commandButton(this, 'Power on');"/></td>
+ <td><input type="submit" class="button" name="action" value="Power on"/></td>
#end if
<td>Boot CD:</td>
<td>$cdromList($cdroms)</td>
(To edit ram, disk size, or machine name, turn off the machine first.)
#end if
</p>
-<form action="modify" method="POST" onsubmit="return jsFormSubmit('modify', this);">
+<form action="modify" method="POST">
<input type="hidden" name="machine_id" value="$defaults.machine_id"/>
<table>
<tr><td>Owner${helppopup("owner")}:</td><td><input type="text" name="owner", value="$defaults.owner"/></td></tr>
#else if $varExists('new_machine')
<p>Congratulations! You successfully created a new VM called $new_machine.</p>
#end if
- <form action="create" method="POST" onsubmit="return jsFormSubmit('create', this);">
+ <form action="create" method="POST">
+ <input type="hidden" name="back" value="list"/>
<table>
$errorRow('create', $err)
<tr>
#end if
</td>
<td>
- <form action="command" method="post" onsubmit="return rowFormSubmit(this, 'list');">
+ <form action="command" method="post">
+ <input type="hidden" name="back" value="list"/>
<input type="hidden" name="machine_id"
value="$machine.machine_id"/>
<input type="submit" class="button" name="action" value="#slurp
#else
<p>You have the following VMs:</p>
#end if
- <p><a href="list" onclick="new Ajax.Updater('machinelist', 'list?js=machinelist', {method: 'get' });return false">refresh</a></p>
+ <p><a href="list">refresh</a></p>
<div id="machinelist">
$machineList($machines)
</div>
def create(user, fields):
"""Handler for create requests."""
- js = fields.getfirst('js')
try:
parsed_fields = parseCreate(user, fields)
machine = createVm(**parsed_fields)
except InvalidInput, err:
- if not js:
- raise
+ pass
else:
err = None
- if not js:
- d = dict(user=user,
- machine=machine)
- return Template(file='create.tmpl', searchList=[d])
g.clear() #Changed global state
d = getListDict(user)
d['err'] = err
setattr(d['defaults'], field, fields.getfirst(field))
else:
d['new_machine'] = parsed_fields['name']
- t = Template(file='list.tmpl', searchList=[d])
- return JsonDict(createtable=t.createTable(),
- machinelist=t.machineList(d['machines']))
+ return Template(file='list.tmpl', searchList=[d])
def getListDict(user):
def listVms(user, fields):
"""Handler for list requests."""
d = getListDict(user)
- t = Template(file='list.tmpl', searchList=[d])
- js = fields.getfirst('js')
- if not js:
- return t
- if js == 'machinelist':
- return t.machineList(d['machines'])
- elif js.startswith('machinerow-'):
- request_machine_id = int(js.split('-')[1])
- m = [x for x in d['machines'] if x.id == request_machine_id]
- return t.machineRow(m)
- elif js == 'createtable':
- return t.createTable()
+ return Template(file='list.tmpl', searchList=[d])
def testMachineId(user, machineId, exists=True):
"""Parse, validate and check authorization for a given machineId.
def command(user, fields):
"""Handler for running commands like boot and delete on a VM."""
- js = fields.getfirst('js')
+ back = fields.getfirst('back')
try:
d = commandResult(user, fields)
+ if d['command'] == 'Delete VM':
+ back = 'list'
except InvalidInput, err:
- if not js:
+ if not back:
raise
+ print >> sys.stderr, err
result = None
else:
- err = None
result = 'Success!'
- if not js:
+ if not back:
return Template(file='command.tmpl', searchList=[d])
- if js == 'list':
+ if back == 'list':
g.clear() #Changed global state
d = getListDict(user)
- t = Template(file='list.tmpl', searchList=[d])
- return JsonDict(createtable=t.createTable(),
- machinelist=t.machineList(d['machines']),
- result=result,
- err=err)
- elif js == 'info':
+ d['result'] = result
+ return Template(file='list.tmpl', searchList=[d])
+ elif back == 'info':
machine = testMachineId(user, fields.getfirst('machine_id'))
d = infoDict(user, machine)
- t = Template(file='info.tmpl', searchList=[d])
- return JsonDict(info=t.infoTable(),
- commands=t.commands(),
- modify=t.modifyForm(),
- result=result,
- err=err)
+ d['result'] = result
+ return Template(file='info.tmpl', searchList=[d])
else:
- raise InvalidInput('js', js, 'Not a known js type.')
+ raise InvalidInput('back', back, 'Not a known back page.')
def testAdmin(user, admin, machine):
if admin in (None, machine.administrator):
if getafsgroups.checkAfsGroup(user.username, 'system:'+admin,
'athena.mit.edu'):
return 'system:'+admin
- raise InvalidInput('administrator', admin,
- 'You must control the group you move it to.')
+ return admin
+ #raise InvalidInput('administrator', admin,
+ # 'You must control the group you move it to.')
def testOwner(user, owner, machine):
if owner in (None, machine.owner):
def modify(user, fields):
"""Handler for modifying attributes of a machine."""
- js = fields.getfirst('js')
try:
modify_dict = modifyDict(user, fields)
except InvalidInput, err:
- if not js:
- raise
- result = ''
+ result = None
machine = testMachineId(user, fields.getfirst('machine_id'))
else:
machine = modify_dict['machine']
result='Success!'
err = None
- if not js:
- return Template(file='command.tmpl', searchList=[modify_dict])
info_dict = infoDict(user, machine)
info_dict['err'] = err
if err:
for field in fields.keys():
setattr(info_dict['defaults'], field, fields.getfirst(field))
- t = Template(file='info.tmpl', searchList=[info_dict])
- return JsonDict(info=t.infoTable(),
- commands=t.commands(),
- modify=t.modifyForm(),
- result=result,
- err=err)
+ info_dict['result'] = result
+ return Template(file='info.tmpl', searchList=[info_dict])
def helpHandler(user, fields):
VFSL=valueFromSearchList
VFN=valueForName
currentTime=time.time
-__CHEETAH_version__ = '2.0rc7'
-__CHEETAH_versionTuple__ = (2, 0, 0, 'candidate', 7)
-__CHEETAH_genTime__ = 1192883610.434917
-__CHEETAH_genTimestamp__ = 'Sat Oct 20 08:33:30 2007'
+__CHEETAH_version__ = '2.0rc8'
+__CHEETAH_versionTuple__ = (2, 0, 0, 'candidate', 8)
+__CHEETAH_genTime__ = 1192889324.1837969
+__CHEETAH_genTimestamp__ = 'Sat Oct 20 10:08:44 2007'
__CHEETAH_src__ = 'skeleton.tmpl'
-__CHEETAH_srcLastModified__ = 'Sat Oct 20 08:33:05 2007'
+__CHEETAH_srcLastModified__ = 'Sat Oct 20 10:08:36 2007'
__CHEETAH_docstring__ = 'Autogenerated by CHEETAH: The Python-Powered Template Engine'
if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
<script type="text/javascript">
var helpWin = null;
function closeWin(){
- if (helpWin != null){
- if(!helpWin.closed)
- helpWin.close();
- }
+\tif (helpWin != null){
+\t\tif(!helpWin.closed)
+\t\t\thelpWin.close();
+\t}
}
function helppopup(name){
if (window.focus){helpWin.focus();}
return false;
}
-
-Ajax.Responders.register({
- onCreate: function(){
- if (Ajax.activeRequestCount > 0) {
- document.getElementById("loadingnotice").style.display = 'block';
- }
- },
- onComplete: function(){
- if (Ajax.activeRequestCount == 0) {
- document.getElementById("loadingnotice").style.display = 'none';
- }
- }
-});
-function replaceFunc(transport) {
- try {
- d = transport.responseText.evalJSON();
- } catch (e) {
- $('body').innerHTML = '<pre>'+transport.responseText+'</pre>'
- return;
- }
- for(key in d) {
- $(key).innerHTML = d[key];
- }
-}
-
-function jsFormSubmit(location, elt){
- new Ajax.Request(location, {method: 'post',
- parameters: Form.serialize(elt)+'&js=true',
- onSuccess: replaceFunc,
- onComplete: function() {Form.enable(elt);}
- });
- Form.disable(elt);
- return false;
-}
-
-function rowFormSubmit(elt, retpage){
- new Ajax.Request('command', {method: 'post',
- parameters: Form.serialize(elt)+'&js='+retpage,
- onSuccess: replaceFunc
- });
- return false;
-}
-
-window.onload = function (){
- //Fix bug with disabled elements
- $$('form').each(Form.enable);
-}
-
</script>
</head>
<body id="body">
<div id="err">
''')
- if VFFSL(SL,"varExists",False)('error_text'): # generated from line 83, col 1
- write('<p>STDERR:</p><pre>')
- _v = VFFSL(SL,"error_text",True) # '$error_text' on line 84, col 20
- if _v is not None: write(_filter(_v, rawExpr='$error_text')) # from line 84, col 20.
- write('</pre>\n')
- write('</div>\n\n')
- if not VFFSL(SL,"varExists",False)('simple') or not VFFSL(SL,"simple",True): # generated from line 88, col 1
- write('<p>[You are logged in as ')
- _v = VFFSL(SL,"user.username",True) # '$user.username' on line 89, col 26
- if _v is not None: write(_filter(_v, rawExpr='$user.username')) # from line 89, col 26.
+ if VFFSL(SL,"varExists",False)('error_text'): # generated from line 35, col 1
+ write('''<p>STDERR:</p><pre>''')
+ _v = VFFSL(SL,"error_text",True) # '$error_text' on line 36, col 20
+ if _v is not None: write(_filter(_v, rawExpr='$error_text')) # from line 36, col 20.
+ write('''</pre>
+''')
+ write('''</div>
+
+''')
+ if not VFFSL(SL,"varExists",False)('simple') or not VFFSL(SL,"simple",True): # generated from line 40, col 1
+ write('''<p>[You are logged in as ''')
+ _v = VFFSL(SL,"user.username",True) # '$user.username' on line 41, col 26
+ if _v is not None: write(_filter(_v, rawExpr='$user.username')) # from line 41, col 26.
write('''.]</p>
<div class="navigation">
<p><a href="list">List</a>
''')
- if VFFSL(SL,"varExists",False)('machine'): # generated from line 93, col 1
- write('<a href="info?machine_id=')
- _v = VFFSL(SL,"machine.machine_id",True) # '$machine.machine_id' on line 94, col 26
- if _v is not None: write(_filter(_v, rawExpr='$machine.machine_id')) # from line 94, col 26.
- write('">Info</a>\n<a href="vnc?machine_id=')
- _v = VFFSL(SL,"machine.machine_id",True) # '$machine.machine_id' on line 95, col 25
- if _v is not None: write(_filter(_v, rawExpr='$machine.machine_id')) # from line 95, col 25.
- write('">Console</a>\n')
- write('<a href="help">Help</a></p>\n')
+ if VFFSL(SL,"varExists",False)('machine'): # generated from line 45, col 1
+ write('''<a href="info?machine_id=''')
+ _v = VFFSL(SL,"machine.machine_id",True) # '$machine.machine_id' on line 46, col 26
+ if _v is not None: write(_filter(_v, rawExpr='$machine.machine_id')) # from line 46, col 26.
+ write('''">Info</a>
+<a href="vnc?machine_id=''')
+ _v = VFFSL(SL,"machine.machine_id",True) # '$machine.machine_id' on line 47, col 25
+ if _v is not None: write(_filter(_v, rawExpr='$machine.machine_id')) # from line 47, col 25.
+ write('''">Console</a>
+''')
+ write('''<a href="help">Help</a></p>
+''')
write('''</div>
<div id="loadingnotice" class="loadingnotice">LOADING</div>
-<div id="result" class="result"></div>
+<div id="result" class="result">
+''')
+ if VFFSL(SL,"varExists",False)('result'): # generated from line 55, col 1
+ _v = VFFSL(SL,"result",True) # '$result' on line 56, col 1
+ if _v is not None: write(_filter(_v, rawExpr='$result')) # from line 56, col 1.
+ write('''
+''')
+ write('''</div>
''')
- _v = VFFSL(SL,"body",True) # '$body' on line 104, col 1
- if _v is not None: write(_filter(_v, rawExpr='$body')) # from line 104, col 1.
- write('\n')
- if not VFFSL(SL,"varExists",False)('simple') or not VFFSL(SL,"simple",True): # generated from line 105, col 1
- write('<hr />\nQuestions? Contact <a href="mailto:sipb-xen-dev@mit.edu">sipb-xen-dev@mit.edu</a>.\n')
- write('</body>\n</html>\n')
+ _v = VFFSL(SL,"body",True) # '$body' on line 60, col 1
+ if _v is not None: write(_filter(_v, rawExpr='$body')) # from line 60, col 1.
+ write('''
+''')
+ if not VFFSL(SL,"varExists",False)('simple') or not VFFSL(SL,"simple",True): # generated from line 61, col 1
+ write('''<hr />
+Questions? Contact <a href="mailto:sipb-xen-dev@mit.edu">sipb-xen-dev@mit.edu</a>.
+''')
+ write('''</body>
+</html>
+''')
########################################
## END - generated method body
########################################
## START - generated method body
- write('\n')
+ write('''
+''')
########################################
## END - generated method body
if (window.focus){helpWin.focus();}
return false;
}
-
-Ajax.Responders.register({
- onCreate: function(){
- if (Ajax.activeRequestCount > 0) {
- document.getElementById("loadingnotice").style.display = 'block';
- }
- },
- onComplete: function(){
- if (Ajax.activeRequestCount == 0) {
- document.getElementById("loadingnotice").style.display = 'none';
- }
- }
-});
-function replaceFunc(transport) {
- try {
- d = transport.responseText.evalJSON();
- } catch (e) {
- \$('body').innerHTML = '<pre>'+transport.responseText+'</pre>'
- return;
- }
- for(key in d) {
- \$(key).innerHTML = d[key];
- }
-}
-
-function jsFormSubmit(location, elt){
- new Ajax.Request(location, {method: 'post',
- parameters: Form.serialize(elt)+'&js=true',
- onSuccess: replaceFunc,
- onComplete: function() {Form.enable(elt);}
- });
- Form.disable(elt);
- return false;
-}
-
-function rowFormSubmit(elt, retpage){
- new Ajax.Request('command', {method: 'post',
- parameters: Form.serialize(elt)+'&js='+retpage,
- onSuccess: replaceFunc
- });
- return false;
-}
-
-window.onload = function (){
- //Fix bug with disabled elements
- \$\$('form').each(Form.enable);
-}
-
</script>
</head>
<body id="body">
</div>
<div id="loadingnotice" class="loadingnotice">LOADING</div>
-<div id="result" class="result"></div>
+<div id="result" class="result">
+#if $varExists('result')
+$result
+#end if
+</div>
$body
#if not $varExists('simple') or not $simple