Exemplo n.º 1
0
def validate_schema(obj):
    """
    Validate object against json schema

    :param obj: The object to validate.

    :raises: InvalidObject
    """
    obj = json.loads(obj)

    try:
        if obj and 'eventType' in obj:
            event_type = SCHEMAS.get(obj['eventType'].lower())
            if not event_type:
                validation_error = ValidationError(
                    message=
                    f"Trace schema for eventType {obj['eventType']} is not currently supported."
                )
                validation_error.cause = "SCHEMA_NOT_FOUND"
                raise validation_error
            validate(obj,
                     SCHEMAS.get(obj['eventType'].lower()),
                     format_checker=FORMAT_CHECKER)
    except ValidationError as error:
        if error.cause == "SCHEMA_NOT_FOUND":
            LOGGER.error(error)
        else:
            raise InvalidObject(error)
Exemplo n.º 2
0
    def build_iter(self):
        """
        Iteratively build model, yielding any problems as :class:`ValidationError` instances.

        For debugging, the unified model at :attr:`model` my contain intermediate results at any time,
        even if construction has failed.  Check the :attr:`_errored` flag if neccessary.
        """

        steps = [
            (self._prevalidate, "prevalidate"),
            (self._merge, "merge"),
            (self._validate, "validate"),
            (self._curate, "curate"),
        ]
        self._errored = False
        self.model = None

        for (i, (step, step_name)) in enumerate(steps, start=1):
            try:
                for err in step():
                    yield err
            except ValidationError as ex:
                self._errored = True
                yield ex

            except Exception as ex:
                self._errored = True

                nex = ValidationError(
                    "Model step-%i(%s) failed due to: %s" % (i, step_name, ex)
                )
                nex.cause = ex

                yield nex

            if self._errored:
                yield ValidationError(
                    "Gave-up building model after step %i.%s (out of %i)."
                    % (i, step_name, len(steps))
                )
                break
Exemplo n.º 3
0
    def build_iter(self):
        """
        Iteratively build model, yielding any problems as :class:`ValidationError` instances.

        For debugging, the unified model at :attr:`model` my contain intermediate results at any time,
        even if construction has failed.  Check the :attr:`_errored` flag if neccessary.
        """

        steps = [
            (self._prevalidate, 'prevalidate'),
            (self._merge,       'merge'),
            (self._validate,    'validate'),
            (self._curate,      'curate'),
        ]
        self._errored = False
        self.model = None

        for (i, (step, step_name)) in enumerate(steps, start=1):
            try:
                for err in step():
                    yield err
            except ValidationError as ex:
                self._errored = True
                yield ex

            except Exception as ex:
                self._errored = True

                nex = ValidationError(
                    'Model step-%i(%s) failed due to: %s' % (i, step_name, ex))
                nex.cause = ex

                yield nex

            if self._errored:
                yield ValidationError('Gave-up building model after step %i.%s (out of %i).' % (i, step_name, len(steps)))
                break