summaryrefslogtreecommitdiff
path: root/tools/net/ynl/lib/nlspec.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/net/ynl/lib/nlspec.py')
-rw-r--r--tools/net/ynl/lib/nlspec.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/net/ynl/lib/nlspec.py b/tools/net/ynl/lib/nlspec.py
index 4aa3b1ad97f0..e204679ad8b7 100644
--- a/tools/net/ynl/lib/nlspec.py
+++ b/tools/net/ynl/lib/nlspec.py
@@ -1,12 +1,16 @@
# SPDX-License-Identifier: BSD-3-Clause
import collections
-import jsonschema
+import importlib
import os
import traceback
import yaml
+# To be loaded dynamically as needed
+jsonschema = None
+
+
class SpecElement:
"""Netlink spec element.
@@ -197,9 +201,14 @@ class SpecFamily(SpecElement):
if schema_path is None:
schema_path = os.path.dirname(os.path.dirname(spec_path)) + f'/{self.proto}.yaml'
if schema_path:
+ global jsonschema
+
with open(schema_path, "r") as stream:
schema = yaml.safe_load(stream)
+ if jsonschema is None:
+ jsonschema = importlib.import_module("jsonschema")
+
jsonschema.validate(self.yaml, schema)
self.attr_sets = collections.OrderedDict()