def cancel_request(request_id: str = None, request: Request = None) -> Request: """Mark a Request as CANCELED Args: request_id: The Request ID to cancel request: The Request to cancel Returns: The modified Request Raises: ModelValidationError: The Request is already completed """ request = request or db.query_unique( Request, raise_missing=True, id=request_id) request.status = "CANCELED" request = db.update(request) # TODO - Metrics here? return request
def complete_request( request_id: str = None, request: Request = None, status: str = None, output: str = None, error_class: str = None, ) -> Request: """Mark a Request as completed Args: request_id: The Request ID to complete request: The Request to complete status: The status to apply to the Request output: The output to apply to the Request error_class: The error class to apply to the Request Returns: The modified Request Raises: ModelValidationError: The Request is already completed """ request = request or db.query_unique( Request, raise_missing=True, id=request_id) request.status = status request.output = output request.error_class = error_class request = db.update(request) # Metrics request_completed(request) return request
def start_request(request_id: str = None, request: Request = None) -> Request: """Mark a Request as IN PROGRESS Args: request_id: The Request ID to start request: The Request to start Returns: The modified Request Raises: ModelValidationError: The Request is already completed """ request = request or db.query_unique( Request, raise_missing=True, id=request_id) request.status = "IN_PROGRESS" request = db.update(request) # Metrics request_started(request) return request
def test_invalid_status_transitions(self, start, end): request = Request(status=start) with pytest.raises(RequestStatusTransitionError): request.status = end
def test_set_valid_status(self): request = Request(status="CREATED") request.status = "RECEIVED" request.status = "IN_PROGRESS" request.status = "SUCCESS"
def invalid_request(request: Request = None): request.status = "INVALID" return request
def test_set_valid_status(self): request = Request(status='CREATED') request.status = 'RECEIVED' request.status = 'IN_PROGRESS' request.status = 'SUCCESS'