def post()

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