xref: /openbmc/linux/tools/net/ynl/cli.py (revision 4e4480e8)
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