1*4e4480e8SJakub Kicinski#!/usr/bin/env python 2*4e4480e8SJakub Kicinski# SPDX-License-Identifier: BSD-3-Clause 3*4e4480e8SJakub Kicinski 4*4e4480e8SJakub Kicinskiimport argparse 5*4e4480e8SJakub Kicinskiimport json 6*4e4480e8SJakub Kicinskiimport pprint 7*4e4480e8SJakub Kicinskiimport time 8*4e4480e8SJakub Kicinski 9*4e4480e8SJakub Kicinskifrom lib import YnlFamily 10*4e4480e8SJakub Kicinski 11*4e4480e8SJakub Kicinski 12*4e4480e8SJakub Kicinskidef main(): 13*4e4480e8SJakub Kicinski parser = argparse.ArgumentParser(description='YNL CLI sample') 14*4e4480e8SJakub Kicinski parser.add_argument('--spec', dest='spec', type=str, required=True) 15*4e4480e8SJakub Kicinski parser.add_argument('--schema', dest='schema', type=str) 16*4e4480e8SJakub Kicinski parser.add_argument('--json', dest='json_text', type=str) 17*4e4480e8SJakub Kicinski parser.add_argument('--do', dest='do', type=str) 18*4e4480e8SJakub Kicinski parser.add_argument('--dump', dest='dump', type=str) 19*4e4480e8SJakub Kicinski parser.add_argument('--sleep', dest='sleep', type=int) 20*4e4480e8SJakub Kicinski parser.add_argument('--subscribe', dest='ntf', type=str) 21*4e4480e8SJakub Kicinski args = parser.parse_args() 22*4e4480e8SJakub Kicinski 23*4e4480e8SJakub Kicinski attrs = {} 24*4e4480e8SJakub Kicinski if args.json_text: 25*4e4480e8SJakub Kicinski attrs = json.loads(args.json_text) 26*4e4480e8SJakub Kicinski 27*4e4480e8SJakub Kicinski ynl = YnlFamily(args.spec, args.schema) 28*4e4480e8SJakub Kicinski 29*4e4480e8SJakub Kicinski if args.ntf: 30*4e4480e8SJakub Kicinski ynl.ntf_subscribe(args.ntf) 31*4e4480e8SJakub Kicinski 32*4e4480e8SJakub Kicinski if args.sleep: 33*4e4480e8SJakub Kicinski time.sleep(args.sleep) 34*4e4480e8SJakub Kicinski 35*4e4480e8SJakub Kicinski if args.do or args.dump: 36*4e4480e8SJakub Kicinski method = getattr(ynl, args.do if args.do else args.dump) 37*4e4480e8SJakub Kicinski 38*4e4480e8SJakub Kicinski reply = method(attrs, dump=bool(args.dump)) 39*4e4480e8SJakub Kicinski pprint.PrettyPrinter().pprint(reply) 40*4e4480e8SJakub Kicinski 41*4e4480e8SJakub Kicinski if args.ntf: 42*4e4480e8SJakub Kicinski ynl.check_ntf() 43*4e4480e8SJakub Kicinski pprint.PrettyPrinter().pprint(ynl.async_msg_queue) 44*4e4480e8SJakub Kicinski 45*4e4480e8SJakub Kicinski 46*4e4480e8SJakub Kicinskiif __name__ == "__main__": 47*4e4480e8SJakub Kicinski main() 48