def processRequest(self, request_id): """Validates and publishes a Request. :param str request_id: The ID of the Request to process :raises InvalidRequest: If the Request is invalid in some way :return: None """ request_id = str(request_id) self.logger.info("Processing Request: %s", request_id) try: request = Request.find_or_none(request_id) if request is None: raise ModelValidationError( "Could not find request with ID '%s'" % request_id) # Validates the request based on what is in the database. # This includes the validation of the request parameters, # systems are there, commands are there etc. request = self.request_validator.validate_request(request) request.save() try: self.clients["pika"].publish_request( request, confirm=True, mandatory=True, delivery_mode=pika.spec.PERSISTENT_DELIVERY_MODE, ) except Exception: msg = "Error while publishing request to queue (%s[%s]-%s %s)" % ( request.system, request.system_version, request.instance_name, request.command, ) raise bg_utils.bg_thrift.PublishException(msg) except (mongoengine.ValidationError, ModelValidationError, RestError) as ex: self.logger.exception(ex) raise bg_utils.bg_thrift.InvalidRequest(request_id, str(ex))
def test_find_one_or_none_none_found(self, objects_mock): objects_mock.get = Mock(side_effect=mongoengine.DoesNotExist) self.assertIsNone(Request.find_or_none("id"))
def test_find_one_or_none_found(self, objects_mock): self.assertEqual(objects_mock.get.return_value, Request.find_or_none("id"))