summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorRichard Ipsum <richard.ipsum@codethink.co.uk>2015-11-23 11:07:02 +0000
committerRichard Ipsum <richard.ipsum@codethink.co.uk>2015-11-23 11:07:02 +0000
commit2b6a1715866f26ea2b1174f92222d893b60996dd (patch)
tree94126dd94b73c57d403bc07506572d9e08b53431 /scripts
parente210c2b5a0371b7e01df0c026fb0e323116a20ed (diff)
parentb77cc29d842be36cc87770a14db1e3133cb9afc6 (diff)
downloadinfrastructure-2b6a1715866f26ea2b1174f92222d893b60996dd.tar.gz
Merge tag 'baserock-15.47'
Baserock release 15.47
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/yaml-jsonschema50
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/yaml-jsonschema b/scripts/yaml-jsonschema
new file mode 100755
index 00000000..64f52a79
--- /dev/null
+++ b/scripts/yaml-jsonschema
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# Copyright (C) 2015 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+'''A tool to validate YAML files against the JSON-Schema schemas.
+
+This wraps Python `jsonschema` module so that YAML schemas can be understood
+and YAML data can be validated.
+
+Usage: yaml-jsonschema SCHEMA INPUT1 [INPUT2, ...]
+
+'''
+
+
+import jsonschema
+import yaml
+
+import sys
+
+
+schema_file = sys.argv[1]
+input_files = sys.argv[2:]
+
+
+with open(schema_file) as f:
+ schema = yaml.load(f)
+
+
+for input_file in input_files:
+ with open(input_file) as f:
+ data = yaml.load(f)
+
+ try:
+ jsonschema.validate(data, schema)
+ print("%s: valid" % input_file)
+ except jsonschema.ValidationError as e:
+ # Print 'e' instead of 'e.message' for more information!
+ print("%s: %s" % (input_file, e.message))