This patch enables 'ryu rpc-cli' command to execute a single command
not interactively.

e.g.)
$ ryu rpc-cli --peers=bgp=localhost:50002 \
  --command='request bgp operator.show [{"params": ["rib", "ipv4"]}]'

This feature is convenient to controle BGPSpeaker states via shell
commands, for example.

Signed-off-by: IWASE Yusuke <iwase.yusu...@gmail.com>
---
 ryu/cmd/rpc_cli.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/ryu/cmd/rpc_cli.py b/ryu/cmd/rpc_cli.py
index ac54214..2519c8b 100755
--- a/ryu/cmd/rpc_cli.py
+++ b/ryu/cmd/rpc_cli.py
@@ -43,8 +43,12 @@ from ryu.lib import rpc
 
 CONF = cfg.CONF
 CONF.register_cli_opts([
-    # eg. rpc-cli --peers=hoge=localhost:9998,fuga=localhost:9999
-    cfg.ListOpt('peers', default=[], help='list of peers')
+    cfg.ListOpt('peers', default=[],
+                help='List of peers, separated by commas. '
+                     '(e.g., "hoge=localhost:9998,fuga=localhost:9999")'),
+    cfg.StrOpt('command', short='c', default=None,
+               help='Command to be executed as single command. '
+                    'The default is None and opens interactive console.'),
 ])
 
 
@@ -229,6 +233,11 @@ def main(args=None, prog=None):
         host, port = addr.rsplit(':', 1)
         add_peer(name, host, port)
 
+    if CONF.command:
+        command = Cmd()
+        command.onecmd(CONF.command)
+        command.do_EOF()
+
     Cmd().cmdloop()
 
 
-- 
2.7.4


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to