Skip to content

Commit 025d778

Browse files
committed
Fix CLI handlings/ergonomics
1 parent be3e58f commit 025d778

File tree

2 files changed

+21
-30
lines changed

2 files changed

+21
-30
lines changed

src/cisco_gnmi/cli.py

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,17 @@ def main():
5050
parser = argparse.ArgumentParser(
5151
description="gNMI CLI demonstrating library usage.",
5252
usage="""
53-
gnmcli <rpc> [<args>]
53+
gnmcli <rpc> [<args>]
5454
55-
Supported RPCs:
56-
%s
55+
Supported RPCs:
56+
{supported_rpcs}
5757
58-
See --help for RPC options.
58+
See <rpc> --help for RPC options.
5959
""".format(
60-
"\n".join(rpc_map.keys())
60+
supported_rpcs="\n".join(list(rpc_map.keys()))
6161
),
6262
)
6363
parser.add_argument("rpc", help="gNMI RPC to perform against network element.")
64-
if len(sys.argv) < 2:
65-
logging.error("Must at minimum provide RPC and required arguments!")
66-
parser.print_help()
67-
exit(1)
6864
args = parser.parse_args(sys.argv[1:2])
6965
if args.rpc not in rpc_map.keys():
7066
logging.error(
@@ -74,7 +70,7 @@ def main():
7470
exit(1)
7571
try:
7672
rpc_map[args.rpc]()
77-
except:
73+
except Exception:
7874
logging.exception("Error during usage!")
7975
exit(1)
8076

@@ -103,7 +99,7 @@ def gnmi_subscribe():
10399
"-interval",
104100
help="Sample interval in seconds for Subscription.",
105101
type=int,
106-
default=10 * int(1e9),
102+
default=10,
107103
)
108104
parser.add_argument(
109105
"-dump_file",
@@ -124,7 +120,7 @@ def gnmi_subscribe():
124120
help="gNMI subscription encoding.",
125121
type=str,
126122
nargs="?",
127-
choices=list(proto.gnmi_pb2.Encoding.keys()),
123+
choices=proto.gnmi_pb2.Encoding.keys(),
128124
)
129125
args = __common_args_handler(parser)
130126
# Set default XPath outside of argparse due to default being persistent in argparse.
@@ -135,8 +131,8 @@ def gnmi_subscribe():
135131
kwargs = {}
136132
if args.encoding:
137133
kwargs["encoding"] = args.encoding
138-
if args.sample_interval:
139-
kwargs["sample_interval"] = args.sample_interval
134+
if args.interval:
135+
kwargs["sample_interval"] = args.interval * int(1e9)
140136
try:
141137
logging.info(
142138
"Dumping responses to %s as %s ...",
@@ -145,6 +141,7 @@ def gnmi_subscribe():
145141
)
146142
logging.info("Subscribing to:\n%s", "\n".join(args.xpath))
147143
for subscribe_response in client.subscribe_xpaths(args.xpath, **kwargs):
144+
logging.debug("SubscribeResponse received.")
148145
if subscribe_response.sync_response:
149146
logging.debug("sync_response received.")
150147
if args.sync_stop:
@@ -175,18 +172,16 @@ def gnmi_get():
175172
help="gNMI subscription encoding.",
176173
type=str,
177174
nargs="?",
178-
choices=list(proto.gnmi_pb2.Encoding.keys()),
175+
choices=proto.gnmi_pb2.Encoding.keys(),
179176
)
180177
parser.add_argument(
181178
"-data_type",
182179
help="gNMI GetRequest DataType",
183180
type=str,
184181
nargs="?",
185-
choices=list(
186-
enum_type_wrapper.EnumTypeWrapper(
187-
proto.gnmi_pb2._GETREQUEST_DATATYPE
188-
).keys()
189-
),
182+
choices=enum_type_wrapper.EnumTypeWrapper(
183+
proto.gnmi_pb2._GETREQUEST_DATATYPE
184+
).keys(),
190185
)
191186
parser.add_argument(
192187
"-dump_json",
@@ -299,20 +294,16 @@ def __common_args_handler(parser):
299294
choices=list(ClientBuilder.os_class_map.keys()),
300295
)
301296
parser.add_argument(
302-
"-root_certificates", description="Root certificates for secure connection."
303-
)
304-
parser.add_argument(
305-
"-private_key", description="Private key for secure connection."
306-
)
307-
parser.add_argument(
308-
"-certificate_chain", description="Certificate chain for secure connection."
297+
"-root_certificates", help="Root certificates for secure connection."
309298
)
299+
parser.add_argument("-private_key", help="Private key for secure connection.")
310300
parser.add_argument(
311-
"-ssl_target_override", description="gRPC SSL target override option."
301+
"-certificate_chain", help="Certificate chain for secure connection."
312302
)
303+
parser.add_argument("-ssl_target_override", help="gRPC SSL target override option.")
313304
parser.add_argument(
314305
"-auto_ssl_target_override",
315-
description="Root certificates for secure connection.",
306+
help="Root certificates for secure connection.",
316307
action="store_true",
317308
)
318309
parser.add_argument("-debug", help="Print debug messages", action="store_true")

src/cisco_gnmi/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ def get(
152152
"encoding", encoding, "Encoding", proto.gnmi_pb2.Encoding
153153
)
154154
request = proto.gnmi_pb2.GetRequest()
155-
if not isinstance(paths, (list, set)):
155+
if not isinstance(paths, (list, set, map)):
156156
raise Exception("paths must be an iterable containing Path(s)!")
157157
request.path.extend(paths)
158158
request.type = data_type

0 commit comments

Comments
 (0)