You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Splunk_Deploiement/apps/Splunk_ML_Toolkit/bin/util/validation_util.py

37 lines
1.1 KiB

import json
import os
from urllib.request import pathname2url
from vendor.jsonschema import Draft4Validator, RefResolver, SchemaError, ValidationError
from vendor.jsonschema import validate
def schema_file_to_dict(schema_file):
with open(schema_file) as f:
return json.load(f)
def validate_json(json_data, schema_file):
schema = schema_file_to_dict(schema_file)
schema_dir = os.path.dirname(schema_file)
schema_path = 'file://{0}/'.format(pathname2url(schema_dir))
resolver = RefResolver(schema_path, schema)
try:
Draft4Validator.check_schema(schema)
validate(json_data, schema, resolver=resolver)
except SchemaError as e:
raise RuntimeError("Failed to check JSON schema in {}: {}".format(schema_file, str(e)))
except ValidationError as e:
raise RuntimeError(
"Unable to validate data against json schema in {}: {}, {}, {}, {}, {}".format(
schema_file, str(e), e.context, list(e.path), list(e.schema_path), e.cause
)
)
def valid_keys(schema_file):
schema = schema_file_to_dict(schema_file)
return list(schema['properties'].keys())