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)
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
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