def validate(cls, data): """Validate input data matches expected failure ``dict`` format.""" try: su.schema_validate(data, cls.SCHEMA) except su.ValidationError as e: raise exc.InvalidFormat( "Failure data not of the" " expected format: %s" % (e.message), e) else: # Ensure that all 'exc_type_names' originate from one of # BASE_EXCEPTIONS, because those are the root exceptions that # python mandates/provides and anything else is invalid... causes = collections.deque([data]) while causes: cause = causes.popleft() root_exc_type = cause['exc_type_names'][-1] if root_exc_type not in cls.BASE_EXCEPTIONS: raise exc.InvalidFormat( "Failure data 'exc_type_names' must" " have an initial exception type that is one" " of %s types: '%s' is not one of those" " types" % (cls.BASE_EXCEPTIONS, root_exc_type)) sub_causes = cause.get('causes') if sub_causes: causes.extend(sub_causes)
def validate(cls, data): try: su.schema_validate(data, cls.SCHEMA) except su.ValidationError as e: raise exc.InvalidFormat( "Failure data not of the" " expected format: %s" % (e.message), e)
def validate(cls, data): try: jsonschema.validate(data, cls._SCHEMA, types=_SCHEMA_TYPES) except schema_exc.ValidationError as e: raise excp.InvalidFormat( "%s message response data not of the" " expected format: %s" % (cls.TYPE, e.message), e)
def validate(cls, data, response): if response: schema = cls._RESPONSE_SCHEMA else: schema = cls._SENDER_SCHEMA try: jsonschema.validate(data, schema, types=_SCHEMA_TYPES) except schema_exc.ValidationError as e: if response: raise excp.InvalidFormat( "%s message response data not of the" " expected format: %s" % (cls.TYPE, e.message), e) else: raise excp.InvalidFormat( "%s message sender data not of the" " expected format: %s" % (cls.TYPE, e.message), e)
def validate(cls, data, response): if response: schema = cls.RESPONSE_SCHEMA else: schema = cls.SENDER_SCHEMA try: su.schema_validate(data, schema) except su.ValidationError as e: cls_name = reflection.get_class_name(cls, fully_qualified=False) if response: raise excp.InvalidFormat("%s message response data not of the" " expected format: %s" % (cls_name, e.message), e) else: raise excp.InvalidFormat("%s message sender data not of the" " expected format: %s" % (cls_name, e.message), e)
def validate(cls, data): try: su.schema_validate(data, cls.SCHEMA) except su.ValidationError as e: cls_name = reflection.get_class_name(cls, fully_qualified=False) raise excp.InvalidFormat("%s message response data not of the" " expected format: %s" % (cls_name, e.message), e) else: state = data['state'] if state == FAILURE and 'result' in data: ft.Failure.validate(data['result'])
def validate(cls, data): try: su.schema_validate(data, cls.SCHEMA) except su.ValidationError as e: cls_name = reflection.get_class_name(cls, fully_qualified=False) raise excp.InvalidFormat("%s message response data not of the" " expected format: %s" % (cls_name, e.message), e) else: # Validate all failure dictionaries that *may* be present... failures = [] if 'failures' in data: failures.extend(six.itervalues(data['failures'])) result = data.get('result') if result is not None: result_data_type, result_data = result if result_data_type == 'failure': failures.append(result_data) for fail_data in failures: ft.Failure.validate(fail_data)