1981cbcb0SJakub Kicinski#!/usr/bin/env python3 2*37d9df22SJakub Kicinski# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 34e4480e8SJakub Kicinski 44e4480e8SJakub Kicinskiimport argparse 54e4480e8SJakub Kicinskiimport json 64e4480e8SJakub Kicinskiimport pprint 74e4480e8SJakub Kicinskiimport time 84e4480e8SJakub Kicinski 94e4480e8SJakub Kicinskifrom lib import YnlFamily 104e4480e8SJakub Kicinski 114e4480e8SJakub Kicinski 124e4480e8SJakub Kicinskidef main(): 134e4480e8SJakub Kicinski parser = argparse.ArgumentParser(description='YNL CLI sample') 144e4480e8SJakub Kicinski parser.add_argument('--spec', dest='spec', type=str, required=True) 154e4480e8SJakub Kicinski parser.add_argument('--schema', dest='schema', type=str) 165c6674f6SJakub Kicinski parser.add_argument('--no-schema', action='store_true') 174e4480e8SJakub Kicinski parser.add_argument('--json', dest='json_text', type=str) 184e4480e8SJakub Kicinski parser.add_argument('--do', dest='do', type=str) 194e4480e8SJakub Kicinski parser.add_argument('--dump', dest='dump', type=str) 204e4480e8SJakub Kicinski parser.add_argument('--sleep', dest='sleep', type=int) 214e4480e8SJakub Kicinski parser.add_argument('--subscribe', dest='ntf', type=str) 224e4480e8SJakub Kicinski args = parser.parse_args() 234e4480e8SJakub Kicinski 245c6674f6SJakub Kicinski if args.no_schema: 255c6674f6SJakub Kicinski args.schema = '' 265c6674f6SJakub Kicinski 274e4480e8SJakub Kicinski attrs = {} 284e4480e8SJakub Kicinski if args.json_text: 294e4480e8SJakub Kicinski attrs = json.loads(args.json_text) 304e4480e8SJakub Kicinski 314e4480e8SJakub Kicinski ynl = YnlFamily(args.spec, args.schema) 324e4480e8SJakub Kicinski 334e4480e8SJakub Kicinski if args.ntf: 344e4480e8SJakub Kicinski ynl.ntf_subscribe(args.ntf) 354e4480e8SJakub Kicinski 364e4480e8SJakub Kicinski if args.sleep: 374e4480e8SJakub Kicinski time.sleep(args.sleep) 384e4480e8SJakub Kicinski 398dfec0a8SJakub Kicinski if args.do: 408dfec0a8SJakub Kicinski reply = ynl.do(args.do, attrs) 418dfec0a8SJakub Kicinski pprint.PrettyPrinter().pprint(reply) 428dfec0a8SJakub Kicinski if args.dump: 438dfec0a8SJakub Kicinski reply = ynl.dump(args.dump, attrs) 444e4480e8SJakub Kicinski pprint.PrettyPrinter().pprint(reply) 454e4480e8SJakub Kicinski 464e4480e8SJakub Kicinski if args.ntf: 474e4480e8SJakub Kicinski ynl.check_ntf() 484e4480e8SJakub Kicinski pprint.PrettyPrinter().pprint(ynl.async_msg_queue) 494e4480e8SJakub Kicinski 504e4480e8SJakub Kicinski 514e4480e8SJakub Kicinskiif __name__ == "__main__": 524e4480e8SJakub Kicinski main() 53