blob: 38ed4950bc740b8209e6340d0ea63f82424383f0 [file] [log] [blame]
Bob King5cc01282019-12-17 18:11:57 +08001#!/usr/bin/env python
2
3import argparse
4import json
5import sys
6import jsonschema
7
8r"""
9Validates the phosphor-regulators configuration file. Checks it against a JSON
10schema as well as doing some extra checks that can't be encoded in the schema.
11"""
12
13def validate_schema(config, schema):
14 r"""
15 Validates the specified config file using the specified
16 schema file.
17
18 config: Path of the file containing the config JSON
19 schema: Path of the file containing the schema JSON
20 """
21
22 with open(config) as config_handle:
23 config_json = json.load(config_handle)
24
25 with open(schema) as schema_handle:
26 schema_json = json.load(schema_handle)
27
28 try:
29 jsonschema.validate(config_json, schema_json)
30 except jsonschema.ValidationError as e:
31 print(e)
32 sys.exit("Validation failed.")
33
34if __name__ == '__main__':
35
36 parser = argparse.ArgumentParser(
37 description='phosphor-regulators configuration file validator')
38
39 parser.add_argument('-s', '--schema-file', dest='schema_file',
40 help='The phosphor-regulators schema file')
41
42 parser.add_argument('-c', '--configuration-file', dest='configuration_file',
43 help='The phosphor-regulators configuration file')
44
45 args = parser.parse_args()
46
47 if not args.schema_file:
48 parser.print_help()
49 sys.exit("Error: Schema file is required.")
50 if not args.configuration_file:
51 parser.print_help()
52 sys.exit("Error: Configuration file is required.")
53
54 validate_schema(args.configuration_file, args.schema_file)