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):