xref: /openbmc/linux/tools/net/ynl/cli.py (revision 981cbcb0)
1*981cbcb0SJakub Kicinski#!/usr/bin/env python3
24e4480e8SJakub Kicinski# SPDX-License-Identifier: 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