parser = argparse.ArgumentParser(description='YNL CLI sample')
parser.add_argument('--spec', dest='spec', type=str, required=True)
parser.add_argument('--schema', dest='schema', type=str)
+ parser.add_argument('--no-schema', action='store_true')
parser.add_argument('--json', dest='json_text', type=str)
parser.add_argument('--do', dest='do', type=str)
parser.add_argument('--dump', dest='dump', type=str)
parser.add_argument('--subscribe', dest='ntf', type=str)
args = parser.parse_args()
+ if args.no_schema:
+ args.schema = ''
+
attrs = {}
if args.json_text:
attrs = json.loads(args.json_text)
# 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.
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()