in api-server/tesazure/provisionerapi/api.py [0:0]
def post(self):
# FIXME - remove secrets and log?
# current_app.logger.debug(f'Received batch provision JSON: {request.data}')
json_input = request.get_json()
schema = compute_backend.backend.provision_request_schema
try:
provision_request = schema.load(json_input)
if len(provision_request.errors) > 0:
raise ValidationError(provision_request.errors)
except ValidationError as err:
current_app.logger.error("Validation error while parsing provision request. " + json.dumps(err.messages))
return {'errors': err.messages}, 422
provision_request = provision_request.data
try:
compute_backend.backend.provision_check(provision_request=provision_request)
try:
req = ProvisionTracker(request_json=schema.dump(provision_request).data)
req.save()
except Exception as err:
current_app.logger.error(f'Error saving provision request to database. {err}')
return {'error': err}, 500
compute_backend.backend.provision_start(id=req.id)
return {'id': str(req.id)}, 202
except CloudError as err:
return {'error': str(err)}, 422