Beispiel #1
0
    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))
Beispiel #2
0
 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"))
Beispiel #3
0
 def test_find_one_or_none_found(self, objects_mock):
     self.assertEqual(objects_mock.get.return_value, Request.find_or_none("id"))