2023-01-30 18:33:54 -08:00
#!/usr/bin/env python3
2023-03-06 12:04:57 -08:00
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2023-01-20 09:50:41 -08:00
import argparse
import json
import pprint
import time
2023-08-25 13:27:52 +01:00
from lib import YnlFamily , Netlink
2023-01-20 09:50:41 -08:00
def main ( ) :
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 )
2023-01-30 18:33:50 -08:00
parser . add_argument ( ' --no-schema ' , action = ' store_true ' )
2023-01-20 09:50:41 -08:00
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 ( ' --sleep ' , dest = ' sleep ' , type = int )
parser . add_argument ( ' --subscribe ' , dest = ' ntf ' , type = str )
2023-08-25 13:27:52 +01:00
parser . add_argument ( ' --replace ' , dest = ' flags ' , action = ' append_const ' ,
const = Netlink . NLM_F_REPLACE )
parser . add_argument ( ' --excl ' , dest = ' flags ' , action = ' append_const ' ,
const = Netlink . NLM_F_EXCL )
parser . add_argument ( ' --create ' , dest = ' flags ' , action = ' append_const ' ,
const = Netlink . NLM_F_CREATE )
parser . add_argument ( ' --append ' , dest = ' flags ' , action = ' append_const ' ,
const = Netlink . NLM_F_APPEND )
2023-01-20 09:50:41 -08:00
args = parser . parse_args ( )
2023-01-30 18:33:50 -08:00
if args . no_schema :
args . schema = ' '
2023-01-20 09:50:41 -08:00
attrs = { }
if args . json_text :
attrs = json . loads ( args . json_text )
ynl = YnlFamily ( args . spec , args . schema )
if args . ntf :
ynl . ntf_subscribe ( args . ntf )
if args . sleep :
time . sleep ( args . sleep )
2023-01-30 18:33:49 -08:00
if args . do :
2023-08-25 13:27:52 +01:00
reply = ynl . do ( args . do , attrs , args . flags )
2023-01-30 18:33:49 -08:00
pprint . PrettyPrinter ( ) . pprint ( reply )
if args . dump :
reply = ynl . dump ( args . dump , attrs )
2023-01-20 09:50:41 -08:00
pprint . PrettyPrinter ( ) . pprint ( reply )
if args . ntf :
ynl . check_ntf ( )
pprint . PrettyPrinter ( ) . pprint ( ynl . async_msg_queue )
if __name__ == " __main__ " :
main ( )