def POST(self, device_name): args, body = templeton.handlers.get_request_parms() try: assignee = body['assignee'] duration = int(body['duration']) image_name = body['image'] environment = body.get('environment', 'any') except (KeyError, ValueError): raise web.badrequest() images = data.dump_images(image_name) if not images: raise web.badrequest() boot_config = {} for k in images[0]['boot_config_keys']: try: boot_config[k] = body[k] except KeyError: raise web.badrequest() request_id = data.create_request(device_name, environment, assignee, duration, images[0]['id'], boot_config) mozpool.mozpool.driver.handle_event(request_id, 'find_device', None) response_data = {'request': data.request_config(request_id)} if data.request_status(request_id)['state'] == 'closed': raise ConflictJSON(response_data) return response_data
def POST(self, device_name): args, body = templeton.handlers.get_request_parms() boot_config = body.get('boot_config', {}) try: assignee = body['assignee'] duration = int(body['duration']) except (KeyError, ValueError): raise web.badrequest() request_id = data.create_request(device_name, assignee, duration, boot_config) mozpool.mozpool.driver.handle_event(request_id, 'find_device', None) response_data = {'request': data.request_config(request_id)} if data.request_status(request_id)['state'] == 'closed': raise ConflictJSON(response_data) return response_data
def GET(self, request_id): try: return data.request_status(request_id) except IndexError: raise web.notfound()