summaryrefslogtreecommitdiff
path: root/tools/net/ynl/cli.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/net/ynl/cli.py')
-rwxr-xr-xtools/net/ynl/cli.py23
1 files changed, 12 insertions, 11 deletions
diff --git a/tools/net/ynl/cli.py b/tools/net/ynl/cli.py
index 9e95016b85b3..41d9fa5c818d 100755
--- a/tools/net/ynl/cli.py
+++ b/tools/net/ynl/cli.py
@@ -3,10 +3,11 @@
import argparse
import json
+import pathlib
import pprint
-import time
-import signal
+import sys
+sys.path.append(pathlib.Path(__file__).resolve().parent.as_posix())
from lib import YnlFamily, Netlink, NlError
@@ -18,8 +19,6 @@ class YnlEncoder(json.JSONEncoder):
return list(obj)
return json.JSONEncoder.default(self, obj)
-def handle_timeout(sig, frame):
- exit(0)
def main():
description = """
@@ -46,7 +45,10 @@ def main():
group.add_argument('--list-ops', action='store_true')
group.add_argument('--list-msgs', action='store_true')
- parser.add_argument('--sleep', dest='sleep', type=int)
+ parser.add_argument('--duration', dest='duration', type=int,
+ help='when subscribed, watch for DURATION seconds')
+ parser.add_argument('--sleep', dest='duration', type=int,
+ help='alias for duration')
parser.add_argument('--subscribe', dest='ntf', type=str)
parser.add_argument('--replace', dest='flags', action='append_const',
const=Netlink.NLM_F_REPLACE)
@@ -83,10 +85,6 @@ def main():
if args.ntf:
ynl.ntf_subscribe(args.ntf)
- if args.sleep:
- signal.signal(signal.SIGALRM, handle_timeout)
- signal.alarm(args.sleep)
-
if args.list_ops:
for op_name, op in ynl.ops.items():
print(op_name, " [", ", ".join(op.modes), "]")
@@ -110,8 +108,11 @@ def main():
exit(1)
if args.ntf:
- for msg in ynl.check_ntf():
- output(msg)
+ try:
+ for msg in ynl.poll_ntf(duration=args.duration):
+ output(msg)
+ except KeyboardInterrupt:
+ pass
if __name__ == "__main__":