* [spp] [PATCH 01/10] controller: move vf help msg to SppVf.help
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 02/10] controller: move server help msg to SppCtlServer yasufum.o
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
SPP CLI is implemented with python's cmd library and help message is
defined as a comment of `do_*` method. However, total number of lines
tends to be a large number if the number of command is increased.
To avoid such a situation, this update is to move comment of `do_vf`
to `SppVf.help` to reduce the number of lines.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/vf.py | 54 +++++++++++++++++++++++++++++++++++
src/controller/shell.py | 46 ++++-------------------------
2 files changed, 59 insertions(+), 41 deletions(-)
diff --git a/src/controller/commands/vf.py b/src/controller/commands/vf.py
index b673f0f..c6192e0 100644
--- a/src/controller/commands/vf.py
+++ b/src/controller/commands/vf.py
@@ -501,3 +501,57 @@ class SppVf(object):
if 'RES_UID'.startswith(sub_tokens[5]):
res.append('RES_UID')
return res
+
+ @classmethod
+ def help(cls):
+ msg = """Send a command to spp_vf.
+
+ SPP VF is a secondary process for pseudo SR-IOV features. This
+ command has four sub commands.
+ * status
+ * component
+ * port
+ * classifier_table
+
+ Each of sub commands other than 'status' takes several parameters
+ for detailed operations. Notice that 'start' for launching a worker
+ is replaced with 'stop' for terminating. 'add' is also replaced with
+ 'del' for deleting.
+
+ Examples:
+
+ # (1) show status of worker threads and resources
+ spp > vf 1; status
+
+ # (2) launch or terminate a worker thread with arbitrary name
+ # NAME: arbitrary name used as identifier
+ # CORE_ID: one of unused cores referred from status
+ # ROLE: role of workers, 'forward', 'merge' or 'classifier_mac'
+ spp > vf 1; component start NAME CORE_ID ROLE
+ spp > vf 1; component stop NAME CORE_ID ROLE
+
+ # (3) add or delete a port to worker of NAME
+ # RES_UID: resource UID such as 'ring:0' or 'vhost:1'
+ # DIR: 'rx' or 'tx'
+ spp > vf 1; port add RES_UID DIR NAME
+ spp > vf 1; port del RES_UID DIR NAME
+
+ # (4) add or delete a port with vlan ID to worker of NAME
+ # VID: vlan ID
+ # PCP: priority code point defined in IEEE 802.1p
+ spp > vf 1; port add RES_UID DIR NAME add_vlantag VID PCP
+ spp > vf 1; port del RES_UID DIR NAME add_vlantag VID PCP
+
+ # (5) add a port of deleting vlan tag
+ spp > vf 1; port add RES_UID DIR NAME del_vlantag
+
+ # (6) add or delete an entry of MAC address and resource to classify
+ spp > vf 1; classifier_table add mac MAC_ADDR RES_UID
+ spp > vf 1; classifier_table del mac MAC_ADDR RES_UID
+
+ # (7) add or delete an entry of MAC address and resource with vlan ID
+ spp > vf 1; classifier_table add vlan VID MAC_ADDR RES_UID
+ spp > vf 1; classifier_table del vlan VID MAC_ADDR RES_UID
+ """
+
+ print(msg)
diff --git a/src/controller/shell.py b/src/controller/shell.py
index 057f70a..75dabaa 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -406,52 +406,12 @@ class Shell(cmd.Cmd, object):
def do_vf(self, cmd):
"""Send a command to spp_vf.
- SPP VF is a secondary process for pseudo SR-IOV features. This
+ spp_vf is a secondary process for pseudo SR-IOV features. This
command has four sub commands.
* status
* component
* port
* classifier_table
-
- Each of sub commands other than 'status' takes several parameters
- for detailed operations. Notice that 'start' for launching a worker
- is replaced with 'stop' for terminating. 'add' is also replaced with
- 'del' for deleting.
-
- Examples:
-
- # (1) show status of worker threads and resources
- spp > vf 1; status
-
- # (2) launch or terminate a worker thread with arbitrary name
- # NAME: arbitrary name used as identifier
- # CORE_ID: one of unused cores referred from status
- # ROLE: role of workers, 'forward', 'merge' or 'classifier_mac'
- spp > vf 1; component start NAME CORE_ID ROLE
- spp > vf 1; component stop NAME CORE_ID ROLE
-
- # (3) add or delete a port to worker of NAME
- # RES_UID: resource UID such as 'ring:0' or 'vhost:1'
- # DIR: 'rx' or 'tx'
- spp > vf 1; port add RES_UID DIR NAME
- spp > vf 1; port del RES_UID DIR NAME
-
- # (4) add or delete a port with vlan ID to worker of NAME
- # VID: vlan ID
- # PCP: priority code point defined in IEEE 802.1p
- spp > vf 1; port add RES_UID DIR NAME add_vlantag VID PCP
- spp > vf 1; port del RES_UID DIR NAME add_vlantag VID PCP
-
- # (5) add a port of deleting vlan tag
- spp > vf 1; port add RES_UID DIR NAME del_vlantag
-
- # (6) add or delete an entry of MAC address and resource to classify
- spp > vf 1; classifier_table add mac MAC_ADDR RES_UID
- spp > vf 1; classifier_table del mac MAC_ADDR RES_UID
-
- # (7) add or delete an entry of MAC address and resource with vlan ID
- spp > vf 1; classifier_table add vlan VID MAC_ADDR RES_UID
- spp > vf 1; classifier_table del vlan VID MAC_ADDR RES_UID
"""
# remove unwanted spaces to avoid invalid command error
@@ -466,6 +426,10 @@ class Shell(cmd.Cmd, object):
else:
print('Invalid command: %s' % tmparg)
+ def help_vf(self):
+ """Print help message of spp_vf."""
+ vf.SppVf.help()
+
def complete_vf(self, text, line, begidx, endidx):
"""Completion for vf command."""
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [spp] [PATCH 02/10] controller: move server help msg to SppCtlServer
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 01/10] controller: move vf help msg to SppVf.help yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 03/10] controller: move pri help msg to SppPrimary yasufum.o
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
This patch is to move comment of `do_server` to `SppCtlServer.help` to
reduce the number of lines.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/server.py | 33 +++++++++++++++++++++++++++++++
src/controller/shell.py | 33 +++++--------------------------
2 files changed, 38 insertions(+), 28 deletions(-)
diff --git a/src/controller/commands/server.py b/src/controller/commands/server.py
index c2bda9d..2b5913a 100644
--- a/src/controller/commands/server.py
+++ b/src/controller/commands/server.py
@@ -258,3 +258,36 @@ class SppCtlServer(object):
removed.ip_addr, removed.port))
return True
+
+ @classmethod
+ def help(cls):
+ msg = """Switch SPP REST API server.
+
+ Show a list of servers. '*' means that it is under the control.
+
+ spp > server # or 'server list'
+ 1: 192.168.1.101:7777 *
+ 2: 192.168.1.102:7777
+
+ Switch to the second node with index or address.
+
+ spp > server 2
+ Switch spp-ctl to "2: 192.168.1.102:7777".
+
+ # It is the same
+ spp > server 192.168.1.101 # no need port if default
+ Switch spp-ctl to "1: 192.168.1.101:7777".
+
+ Register or unregister a node by using 'add' or 'del' command.
+ For unregistering, node is also specified with index.
+
+ # Register third node
+ spp > server add 192.168.122.177
+ Registered spp-ctl "192.168.122.177:7777".
+
+ # Unregister second one
+ spp > server del 2 # or 192.168.1.102
+ Unregistered spp-ctl "192.168.1.102:7777".
+ """
+
+ print(msg)
diff --git a/src/controller/shell.py b/src/controller/shell.py
index 75dabaa..b86ba5c 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -253,38 +253,15 @@ class Shell(cmd.Cmd, object):
self.recorded_file = None
def do_server(self, commands):
- """Switch SPP REST API server.
-
- Show a list of servers. '*' means that it is under the control.
-
- spp > server # or 'server list'
- 1: 192.168.1.101:7777 *
- 2: 192.168.1.102:7777
-
- Switch to the second node with index or address.
-
- spp > server 2
- Switch spp-ctl to "2: 192.168.1.102:7777".
-
- # It is the same
- spp > server 192.168.1.101 # no need port if default
- Switch spp-ctl to "1: 192.168.1.101:7777".
-
- Register or unregister a node by using 'add' or 'del' command.
- For unregistering, node is also specified with index.
-
- # Register third node
- spp > server add 192.168.122.177
- Registered spp-ctl "192.168.122.177:7777".
-
- # Unregister second one
- spp > server del 2 # or 192.168.1.102
- Unregistered spp-ctl "192.168.1.102:7777".
- """
+ """Switch SPP REST API server."""
self.spp_ctl_server.run(commands)
self.spp_ctl_cli = self.spp_ctl_server.get_current_server()
+ def help_server(self):
+ """Print help message of server command."""
+ server.SppCtlServer.help()
+
def complete_server(self, text, line, begidx, endidx):
"""Completion for server command."""
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [spp] [PATCH 03/10] controller: move pri help msg to SppPrimary
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 01/10] controller: move vf help msg to SppVf.help yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 02/10] controller: move server help msg to SppCtlServer yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 04/10] controller: move nfv help msg to SppNfv yasufum.o
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
This patch is to move comment of `do_pri` to `SppPrimary.help` to
reduce the number of lines.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/pri.py | 17 +++++++++++++++++
src/controller/shell.py | 33 +++++++--------------------------
2 files changed, 24 insertions(+), 26 deletions(-)
diff --git a/src/controller/commands/pri.py b/src/controller/commands/pri.py
index 15bdb12..b119a5c 100644
--- a/src/controller/commands/pri.py
+++ b/src/controller/commands/pri.py
@@ -436,3 +436,20 @@ class SppPrimary(object):
pass
else:
print('Error: unknown response.')
+
+ @classmethod
+ def help(cls):
+ msg = """Send a command to primary process.
+
+ Show resources and statistics, or clear it.
+ spp > pri; status # show status
+ spp > pri; clear # clear statistics
+
+ Launch secondary process..
+ # Launch nfv:1
+ spp > pri; launch nfv 1 -l 1,2 -m 512 -- -n 1 -s 192.168....
+ # Launch vf:2
+ spp > pri; launch vf 2 -l 1,4-7 -m 512 -- --client-id 2 -s ...
+ """
+
+ print(msg)
diff --git a/src/controller/shell.py b/src/controller/shell.py
index b86ba5c..bfe963b 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -278,22 +278,7 @@ class Shell(cmd.Cmd, object):
self.print_status()
def do_pri(self, command):
- """Send a command to primary process.
-
- Show resources and statistics, or clear it.
-
- spp > pri; status # show status
-
- spp > pri; clear # clear statistics
-
- Launch secondary process..
-
- # Launch nfv:1
- spp > pri; launch nfv 1 -l 1,2 -m 512 -- -n 1 -s 192.168....
-
- # Launch vf:2
- spp > pri; launch vf 2 -l 1,4-7 -m 512 -- --client-id 2 -s ...
- """
+ """Send a command to primary process."""
# Remove unwanted spaces and first char ';'
command = self.clean_cmd(command)[1:]
@@ -303,6 +288,10 @@ class Shell(cmd.Cmd, object):
self.primary.run(command, self.cli_config)
+ def help_pri(self):
+ """Print help message of pri command."""
+ pri.SppPrimary.help()
+
def complete_pri(self, text, line, begidx, endidx):
"""Completion for primary process commands."""
@@ -381,15 +370,7 @@ class Shell(cmd.Cmd, object):
return res
def do_vf(self, cmd):
- """Send a command to spp_vf.
-
- spp_vf is a secondary process for pseudo SR-IOV features. This
- command has four sub commands.
- * status
- * component
- * port
- * classifier_table
- """
+ """Send a command to spp_vf."""
# remove unwanted spaces to avoid invalid command error
tmparg = self.clean_cmd(cmd)
@@ -404,7 +385,7 @@ class Shell(cmd.Cmd, object):
print('Invalid command: %s' % tmparg)
def help_vf(self):
- """Print help message of spp_vf."""
+ """Print help message of vf command."""
vf.SppVf.help()
def complete_vf(self, text, line, begidx, endidx):
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [spp] [PATCH 04/10] controller: move nfv help msg to SppNfv
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
` (2 preceding siblings ...)
2019-06-24 7:11 ` [spp] [PATCH 03/10] controller: move pri help msg to SppPrimary yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 05/10] controller: move mirror help msg to SppMirror yasufum.o
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
This patch is to move comment of `do_nfv` to `SppNfv.help` to reduce
the number of lines.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/nfv.py | 19 +++++++++++++++++++
src/controller/shell.py | 19 +++++--------------
2 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/src/controller/commands/nfv.py b/src/controller/commands/nfv.py
index 92d2a3f..0989eba 100644
--- a/src/controller/commands/nfv.py
+++ b/src/controller/commands/nfv.py
@@ -442,3 +442,22 @@ class SppNfv(object):
pass
else:
print('Error: unknown response.')
+
+ @classmethod
+ def help(cls):
+ msg = """Send a command to spp_nfv specified with ID.
+
+ Spp_nfv is specified with secondary ID and takes sub commands.
+
+ spp > nfv 1; status
+ spp > nfv 1; add ring:0
+ spp > nfv 1; patch phy:0 ring:0
+
+ You can refer all of sub commands by pressing TAB after
+ 'nfv 1;'.
+
+ spp > nfv 1; # press TAB
+ add del exit forward patch status stop
+ """
+
+ print(msg)
diff --git a/src/controller/shell.py b/src/controller/shell.py
index bfe963b..b11dac0 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -302,20 +302,7 @@ class Shell(cmd.Cmd, object):
self.cli_config)
def do_nfv(self, cmd):
- """Send a command to spp_nfv specified with ID.
-
- Spp_nfv is specified with secondary ID and takes sub commands.
-
- spp > nfv 1; status
- spp > nfv 1; add ring:0
- spp > nfv 1; patch phy:0 ring:0
-
- You can refer all of sub commands by pressing TAB after
- 'nfv 1;'.
-
- spp > nfv 1; # press TAB
- add del exit forward patch status stop
- """
+ """Send a command to spp_nfv specified with ID."""
# remove unwanted spaces to avoid invalid command error
tmparg = self.clean_cmd(cmd)
@@ -328,6 +315,10 @@ class Shell(cmd.Cmd, object):
else:
print('Invalid command: %s' % tmparg)
+ def help_nfv(self):
+ """Print help message of nfv command."""
+ nfv.SppNfv.help()
+
def complete_nfv(self, text, line, begidx, endidx):
"""Completion for nfv command."""
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [spp] [PATCH 05/10] controller: move mirror help msg to SppMirror
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
` (3 preceding siblings ...)
2019-06-24 7:11 ` [spp] [PATCH 04/10] controller: move nfv help msg to SppNfv yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 06/10] controller: move pcap help msg to SppPcap yasufum.o
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
This patch is to move comment of `do_mirror` to `SppMirror.help` to
reduce the number of lines.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/mirror.py | 36 +++++++++++++++++++++++++++++++
src/controller/shell.py | 36 +++++--------------------------
2 files changed, 41 insertions(+), 31 deletions(-)
diff --git a/src/controller/commands/mirror.py b/src/controller/commands/mirror.py
index d38812d..d7ea4cd 100644
--- a/src/controller/commands/mirror.py
+++ b/src/controller/commands/mirror.py
@@ -356,3 +356,39 @@ class SppMirror(object):
if kw.startswith(sub_tokens[4]):
res.append(kw)
return res
+
+ @classmethod
+ def help(cls):
+ msg = """Send a command to spp_mirror.
+
+ spp_mirror is a secondary process for duplicating incoming
+ packets to be used as similar to TaaS in OpenStack. This
+ command has four sub commands.
+ * status
+ * component
+ * port
+
+ Each of sub commands other than 'status' takes several parameters
+ for detailed operations. Notice that 'start' for launching a worker
+ is replaced with 'stop' for terminating. 'add' is also replaced with
+ 'del' for deleting.
+
+ Examples:
+
+ # (1) show status of worker threads and resources
+ spp > mirror 1; status
+
+ # (2) launch or terminate a worker thread with arbitrary name
+ # NAME: arbitrary name used as identifier
+ # CORE_ID: one of unused cores referred from status
+ spp > mirror 1; component start NAME CORE_ID mirror
+ spp > mirror 1; component stop NAME CORE_ID mirror
+
+ # (3) add or delete a port to worker of NAME
+ # RES_UID: resource UID such as 'ring:0' or 'vhost:1'
+ # DIR: 'rx' or 'tx'
+ spp > mirror 1; port add RES_UID DIR NAME
+ spp > mirror 1; port del RES_UID DIR NAME
+ """
+
+ print(msg)
diff --git a/src/controller/shell.py b/src/controller/shell.py
index b11dac0..2682376 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -418,37 +418,7 @@ class Shell(cmd.Cmd, object):
self.get_sec_ids('vf'), text, line, begidx, endidx)
def do_mirror(self, cmd):
- """Send a command to spp_mirror.
-
- spp_mirror is a secondary process for duplicating incoming
- packets to be used as similar to TaaS in OpenStack. This
- command has four sub commands.
- * status
- * component
- * port
-
- Each of sub commands other than 'status' takes several parameters
- for detailed operations. Notice that 'start' for launching a worker
- is replaced with 'stop' for terminating. 'add' is also replaced with
- 'del' for deleting.
-
- Examples:
-
- # (1) show status of worker threads and resources
- spp > mirror 1; status
-
- # (2) launch or terminate a worker thread with arbitrary name
- # NAME: arbitrary name used as identifier
- # CORE_ID: one of unused cores referred from status
- spp > mirror 1; component start NAME CORE_ID mirror
- spp > mirror 1; component stop NAME CORE_ID mirror
-
- # (3) add or delete a port to worker of NAME
- # RES_UID: resource UID such as 'ring:0' or 'vhost:1'
- # DIR: 'rx' or 'tx'
- spp > mirror 1; port add RES_UID DIR NAME
- spp > mirror 1; port del RES_UID DIR NAME
- """
+ """Send a command to spp_mirror."""
# remove unwanted spaces to avoid invalid command error
tmparg = self.clean_cmd(cmd)
@@ -461,6 +431,10 @@ class Shell(cmd.Cmd, object):
else:
print('Invalid command: %s' % tmparg)
+ def help_mirror(self):
+ """Print help message of mirror command."""
+ mirror.SppMirror.help()
+
def complete_mirror(self, text, line, begidx, endidx):
"""Completion for mirror command."""
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [spp] [PATCH 06/10] controller: move pcap help msg to SppPcap
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
` (4 preceding siblings ...)
2019-06-24 7:11 ` [spp] [PATCH 05/10] controller: move mirror help msg to SppMirror yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 07/10] controller: move bye help msg to SppBye yasufum.o
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
This patch is to move comment of `do_pcap` to `SppPcap.help` to
reduce the number of lines.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/pcap.py | 24 ++++++++++++++++++++++++
src/controller/shell.py | 24 +++++-------------------
2 files changed, 29 insertions(+), 19 deletions(-)
diff --git a/src/controller/commands/pcap.py b/src/controller/commands/pcap.py
index 88dd5c8..f2e1ffa 100644
--- a/src/controller/commands/pcap.py
+++ b/src/controller/commands/pcap.py
@@ -239,3 +239,27 @@ class SppPcap(object):
status['core_ids'].append(wk['core'])
return status
+
+ @classmethod
+ def help(cls):
+ msg = """Send a command to spp_pcap.
+
+ Spp_pcap is a secondary process for capturing incoming packets.
+
+ 'start' for launching a worker is replaced with 'stop' for
+ terminating. 'exit' for spp_pcap terminating.
+
+ Examples:
+
+ # (1) show status of worker threads and resources
+ spp > pcap 1; status
+
+ # (2) launch or terminate capture thread
+ spp > pcap 1; start
+ spp > pcap 1; stop
+
+ # (3) terminate spp_pcap secondaryd
+ spp > pcap 1; exit
+ """
+
+ print(msg)
diff --git a/src/controller/shell.py b/src/controller/shell.py
index 2682376..52fe645 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -475,25 +475,7 @@ class Shell(cmd.Cmd, object):
self.get_sec_ids('mirror'), text, line, begidx, endidx)
def do_pcap(self, cmd):
- """Send a command to spp_pcap.
-
- Spp_pcap is a secondary process for capturing incoming packets.
-
- 'start' for launching a worker is replaced with 'stop' for
- terminating. 'exit' for spp_pcap terminating.
-
- Examples:
-
- # (1) show status of worker threads and resources
- spp > pcap 1; status
-
- # (2) launch or terminate capture thread
- spp > pcap 1; start
- spp > pcap 1; stop
-
- # (3) terminate spp_pcap secondaryd
- spp > pcap 1; exit
- """
+ """Send a command to spp_pcap."""
# remove unwanted spaces to avoid invalid command error
tmparg = self.clean_cmd(cmd)
@@ -506,6 +488,10 @@ class Shell(cmd.Cmd, object):
else:
print('Invalid command: {}'.format(tmparg))
+ def help_pcap(self):
+ """Print help message of pcap command."""
+ pcap.SppPcap.help()
+
def complete_pcap(self, text, line, begidx, endidx):
"""Completion for pcap command."""
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [spp] [PATCH 07/10] controller: move bye help msg to SppBye
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
` (5 preceding siblings ...)
2019-06-24 7:11 ` [spp] [PATCH 06/10] controller: move pcap help msg to SppPcap yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 08/10] controller: move topo " yasufum.o
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
This patch is to move comment of `do_bye` to `SppBye.help` to reduce
the number of lines.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/bye.py | 19 +++++++++++++++++++
src/controller/shell.py | 19 +++++--------------
2 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/src/controller/commands/bye.py b/src/controller/commands/bye.py
index cd14961..df06500 100644
--- a/src/controller/commands/bye.py
+++ b/src/controller/commands/bye.py
@@ -47,3 +47,22 @@ class SppBye(object):
for sec_type, spp_procs in spp_secondaries.items():
for sec in spp_procs.values():
sec.run('exit')
+
+ @classmethod
+ def help(cls):
+ msg = """Terminate SPP processes and controller.
+
+ There are three usages for terminating processes.
+ It terminates logging if you activated recording.
+
+ (1) Terminate secondary processes
+ spp > bye sec
+
+ (2) Terminate primary and secondary processes
+ spp > bye all
+
+ (3) Terminate SPP controller (not for primary and secondary)
+ spp > bye
+ """
+
+ print(msg)
diff --git a/src/controller/shell.py b/src/controller/shell.py
index 52fe645..8cb74a0 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -696,20 +696,7 @@ class Shell(cmd.Cmd, object):
return common.compl_common(text, line)
def do_bye(self, args):
- """Terminate SPP processes and controller.
-
- There are three usages for terminating processes.
- It terminates logging if you activated recording.
-
- (1) Terminate secondary processes
- spp > bye sec
-
- (2) Terminate primary and secondary processes
- spp > bye all
-
- (3) Terminate SPP controller (not for primary and secondary)
- spp > bye
- """
+ """Terminate SPP processes and controller."""
cmds = args.split(' ')
if cmds[0] == '': # terminate SPP CLI itself
@@ -719,6 +706,10 @@ class Shell(cmd.Cmd, object):
spp_bye = bye.SppBye()
spp_bye.run(args, self.primary, self.secondaries)
+ def help_bye(self):
+ """Print help message of bye command."""
+ bye.SppBye.help()
+
def complete_bye(self, text, line, begidx, endidx):
"""Completion for bye commands"""
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [spp] [PATCH 08/10] controller: move topo help msg to SppBye
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
` (6 preceding siblings ...)
2019-06-24 7:11 ` [spp] [PATCH 07/10] controller: move bye help msg to SppBye yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 09/10] controller: move status cmd help msg to help_msg yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 10/10] controller: move rest of " yasufum.o
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
This patch is to move comment of `do_topo`, `do_topo_subgraph` and
`do_topo_resize` to `SppTopo.help` to reduce the number of lines.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/topo.py | 52 ++++++++++++++++++++++++++++
src/controller/shell.py | 61 +++++++++------------------------
2 files changed, 68 insertions(+), 45 deletions(-)
diff --git a/src/controller/commands/topo.py b/src/controller/commands/topo.py
index 3b24c1a..21ef1ec 100644
--- a/src/controller/commands/topo.py
+++ b/src/controller/commands/topo.py
@@ -459,3 +459,55 @@ class SppTopo(object):
return True
else:
return False
+
+ @classmethod
+ def help(cls):
+ msg = """Output network topology.
+
+ Support four types of output.
+ * terminal (but very few terminals supporting to display images)
+ * browser (websocket server is required)
+ * image file (jpg, png, bmp)
+ * text (dot, js or json, yml or yaml)
+
+ spp > topo term # terminal
+ spp > topo http # browser
+ spp > topo network_conf.jpg # image
+ spp > topo network_conf.dot # text
+ spp > topo network_conf.js# text
+ """
+
+ print(msg)
+
+ @classmethod
+ def help_resize(cls):
+ msg = """Change the size of the image of topo command.
+
+ You can specify the size by percentage or ratio.
+
+ spp > topo resize 60% # percentage
+ spp > topo resize 0.6 # ratio
+ """
+
+ print(msg)
+
+ @classmethod
+ def help_subgraph(cls):
+ msg = """Edit subgarph for topo command.
+
+ Subgraph is a group of object defined in dot language. For topo
+ command, it is used for grouping resources of each of VM or
+ container to topology be more understandable.
+
+ (1) Add subgraph labeled 'vm1'.
+ spp > topo_subgraph add vm1 vhost:1;vhost:2
+
+ (2) Delete subgraph 'vm1'.
+ spp > topo_subgraph del vm1
+
+ (3) Show subgraphs by running topo_subgraph without args.
+ spp > topo_subgraph
+ label: vm1 subgraph: "vhost:1;vhost:2"
+ """
+
+ print(msg)
diff --git a/src/controller/shell.py b/src/controller/shell.py
index 8cb74a0..54376c9 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -824,11 +824,7 @@ class Shell(cmd.Cmd, object):
{'cmdqueue': [],
'completekey': 'tab',
'completion_matches': ['inspect'],
- 'lastcmd': 'inspect',
- 'old_completer': None,
- 'stdin': <open file '<stdin>', mode 'r' at 0x7fe96bddf0c0>,
- 'stdout': <open file '<stdout>', mode 'w' at 0x7fe96bddf150>}
-
+ ...
"""
from pprint import pprint
@@ -841,22 +837,7 @@ class Shell(cmd.Cmd, object):
return ['add', 'del']
def do_topo_subgraph(self, args):
- """Edit subgarph for topo command.
-
- Subgraph is a group of object defined in dot language. For topo
- command, it is used for grouping resources of each of VM or
- container to topology be more understandable.
-
- (1) Add subgraph labeled 'vm1'.
- spp > topo_subgraph add vm1 vhost:1;vhost:2
-
- (2) Delete subgraph 'vm1'.
- spp > topo_subgraph del vm1
-
- (3) Show subgraphs by running topo_subgraph without args.
- spp > topo_subgraph
- label: vm1 subgraph: "vhost:1;vhost:2"
- """
+ """Edit subgarph for topo command."""
# logger.info("Topo initialized with sec IDs %s" % sec_ids)
@@ -897,6 +878,10 @@ class Shell(cmd.Cmd, object):
else:
print("Ivalid subcommand '%s'!" % tokens[0])
+ def help_topo_subgraph(self):
+ """Print help message of topo_subgraph command."""
+ topo.SppTopo.help_subgraph()
+
def complete_topo_subgraph(self, text, line, begidx, endidx):
terms = self.terms_topo_subgraph()
@@ -921,35 +906,21 @@ class Shell(cmd.Cmd, object):
pass
def do_topo_resize(self, args):
- """Change the size of the image of topo command.
-
- You can specify the size by percentage or ratio.
-
- spp > topo resize 60% # percentage
- spp > topo resize 0.6 # ratio
-
- """
-
+ """Change the size of the image of topo_resize command."""
self.spp_topo.resize_graph(args)
- def do_topo(self, args):
- """Output network topology.
-
- Support four types of output.
- * terminal (but very few terminals supporting to display images)
- * browser (websocket server is required)
- * image file (jpg, png, bmp)
- * text (dot, js or json, yml or yaml)
-
- spp > topo term # terminal
- spp > topo http # browser
- spp > topo network_conf.jpg # image
- spp > topo network_conf.dot # text
- spp > topo network_conf.js# text
- """
+ def help_topo_resize(self):
+ """Print help message of topo command."""
+ topo.SppTopo.help_resize()
+ def do_topo(self, args):
+ """Output network topology."""
self.spp_topo.run(args, self.get_sec_ids('nfv'))
+ def help_topo(self):
+ """Print help message of topo command."""
+ topo.SppTopo.help()
+
def complete_topo(self, text, line, begidx, endidx):
return self.spp_topo.complete(text, line, begidx, endidx)
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [spp] [PATCH 09/10] controller: move status cmd help msg to help_msg
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
` (7 preceding siblings ...)
2019-06-24 7:11 ` [spp] [PATCH 08/10] controller: move topo " yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
2019-06-24 7:11 ` [spp] [PATCH 10/10] controller: move rest of " yasufum.o
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
This update is to move help message of status command to `help_msg`
module which is for defining a set of command name and message.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/help_msg.py | 10 ++++++++++
src/controller/shell.py | 15 ++++++++-------
2 files changed, 18 insertions(+), 7 deletions(-)
create mode 100644 src/controller/commands/help_msg.py
diff --git a/src/controller/commands/help_msg.py b/src/controller/commands/help_msg.py
new file mode 100644
index 0000000..9e15123
--- /dev/null
+++ b/src/controller/commands/help_msg.py
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
+
+commands = {
+ 'status':
+ """Display status info of SPP processes.
+
+ spp > status
+ """
+ }
diff --git a/src/controller/shell.py b/src/controller/shell.py
index 54376c9..065fb07 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -10,6 +10,7 @@ from .commands import topo
from .commands import vf
from .commands import mirror
from .commands import pcap
+from .commands import help_msg
import os
import re
import readline
@@ -29,7 +30,7 @@ class Shell(cmd.Cmd, object):
config_file = "{}/config/default.yml".format(
os.path.dirname(__file__))
cli_config = yaml.load(open(config_file),
- Loader=yaml.FullLoader)
+ Loader=yaml.FullLoader)
except IOError as e:
print('Error: no config file found!')
print(e)
@@ -205,7 +206,7 @@ class Shell(cmd.Cmd, object):
pt2 = id2.split(delim)[0]
if (pt1 in spp_common.PORT_TYPES) \
and (pt2 in spp_common.PORT_TYPES):
- return True
+ return True
return False
def clean_cmd(self, cmdstr):
@@ -270,13 +271,13 @@ class Shell(cmd.Cmd, object):
return res
def do_status(self, _):
- """Display status info of SPP processes
-
- spp > status
- """
-
+ """Display status info of SPP processes."""
self.print_status()
+ def help_status(self):
+ """Print help message of status command."""
+ print(help_msg.commads['status'])
+
def do_pri(self, command):
"""Send a command to primary process."""
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [spp] [PATCH 10/10] controller: move rest of help msg to help_msg
2019-06-24 7:11 [spp] [PATCH 00/10] Move help messages of CLI in shell.py yasufum.o
` (8 preceding siblings ...)
2019-06-24 7:11 ` [spp] [PATCH 09/10] controller: move status cmd help msg to help_msg yasufum.o
@ 2019-06-24 7:11 ` yasufum.o
9 siblings, 0 replies; 11+ messages in thread
From: yasufum.o @ 2019-06-24 7:11 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
From: Yasufumi Ogawa <yasufum.o@gmail.com>
This update is to move help message of rest of commands to `help_msg`.
Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
---
src/controller/commands/help_msg.py | 125 ++++++++++++++++++++-
src/controller/shell.py | 165 ++++++++++++----------------
2 files changed, 194 insertions(+), 96 deletions(-)
diff --git a/src/controller/commands/help_msg.py b/src/controller/commands/help_msg.py
index 9e15123..f303547 100644
--- a/src/controller/commands/help_msg.py
+++ b/src/controller/commands/help_msg.py
@@ -1,10 +1,131 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
-commands = {
+cmds = {
'status':
"""Display status info of SPP processes.
spp > status
- """
+ """,
+
+ 'record':
+ """Save commands as a recipe file.
+
+ Save all of commands to a specified file as a recipe. This file
+ is reloaded with 'playback' command later. You can also edit
+ the recipe by hand to customize.
+
+ spp > record path/to/recipe_file
+ """,
+
+ 'playback':
+ """Setup a network configuration from recipe file.
+
+ Recipe is a file describing a series of SPP command to setup
+ a network configuration.
+
+ spp > playback path/to/recipe_file
+ """,
+
+ 'config':
+ """Show or update config.
+
+ # show list of config
+ spp > config
+
+ # set prompt to "$ spp "
+ spp > config prompt "$ spp "
+ """,
+
+ 'pwd':
+ """Show corrent directory.
+
+ It behaves as UNIX's pwd command.
+
+ spp > pwd
+ """,
+
+ 'ls':
+ """Show a list of specified directory.
+
+ It behaves as UNIX's ls command.
+
+ spp > ls path/to/dir
+ """,
+
+ 'cd':
+ """Change current directory.
+
+ spp > cd path/to/dir
+ """,
+
+ 'mkdir':
+ """Create a new directory.
+
+ It behaves as 'mkdir -p' which means that you can create sub
+ directories at once.
+
+ spp > mkdir path/to/dir
+ """,
+
+ 'cat':
+ """View contents of a file.
+
+ spp > cat file
+ """,
+
+ 'redo':
+ """Execute command of index of history.
+
+ spp > redo 5 # exec 5th command in the history
+ """,
+
+ 'history':
+ """Show command history.
+
+ spp > history
+ 1 ls
+ 2 cat file.txt
+ ...
+
+ Command history is recorded in a file named '.spp_history'.
+ It does not add some command which are no meaning for history.
+ 'bye', 'exit', 'history', 'redo'
+ """,
+
+ 'less':
+ """View contents of a file.
+
+ spp > less file
+ """,
+
+ 'exit':
+ """Terminate SPP controller process.
+
+ It is an alias of bye command to terminate controller.
+
+ spp > exit
+ Thank you for using Soft Patch Panel
+ """,
+
+ 'inspect':
+ """Print attributes of Shell for debugging.
+
+ This command is intended to be used by developers to show the
+ inside of the object of Shell class.
+
+ spp > inspect
+ {'cmdqueue': [],
+ 'completekey': 'tab',
+ 'completion_matches': ['inspect'],
+ ...
+ """,
+
+ 'load_cmd':
+ """Load command plugin.
+
+ Path of plugin file is 'spp/src/controller/plugins'.
+
+ spp > load_cmd hello
+ """,
}
diff --git a/src/controller/shell.py b/src/controller/shell.py
index 065fb07..3f4d95b 100644
--- a/src/controller/shell.py
+++ b/src/controller/shell.py
@@ -276,7 +276,7 @@ class Shell(cmd.Cmd, object):
def help_status(self):
"""Print help message of status command."""
- print(help_msg.commads['status'])
+ print(help_msg.cmds['status'])
def do_pri(self, command):
"""Send a command to primary process."""
@@ -533,31 +533,22 @@ class Shell(cmd.Cmd, object):
self.get_sec_ids('pcap'), text, line, begidx, endidx)
def do_record(self, fname):
- """Save commands as a recipe file.
-
- Save all of commands to a specified file as a recipe. This file
- is reloaded with 'playback' command later. You can also edit
- the recipe by hand to customize.
-
- spp > record path/to/recipe_file
- """
+ """Save commands as a recipe file."""
if fname == '':
print("Record file is required!")
else:
self.recorded_file = open(fname, 'w')
+ def help_record(self):
+ """Print help message of record command."""
+ print(help_msg.cmds['record'])
+
def complete_record(self, text, line, begidx, endidx):
return common.compl_common(text, line)
def do_playback(self, fname):
- """Setup a network configuration from recipe file.
-
- Recipe is a file describing a series of SPP command to setup
- a network configuration.
-
- spp > playback path/to/recipe_file
- """
+ """Setup a network configuration from recipe file."""
if fname == '':
print("Record file is required!")
@@ -575,18 +566,15 @@ class Shell(cmd.Cmd, object):
message = "Error: File does not exist."
print(message)
+ def help_playback(self):
+ """Print help message of playback command."""
+ print(help_msg.cmds['playback'])
+
def complete_playback(self, text, line, begidx, endidx):
return common.compl_common(text, line)
def do_config(self, args):
- """Show or update config.
-
- # show list of config
- spp > config
-
- # set prompt to "$ spp "
- spp > config prompt "$ spp "
- """
+ """Show or update config."""
tokens = args.strip().split(' ')
if len(tokens) == 1:
@@ -620,6 +608,10 @@ class Shell(cmd.Cmd, object):
if key == 'prompt':
self.prompt = self.cli_config['prompt']['val']
+ def help_config(self):
+ """Print help message of config command."""
+ print(help_msg.cmds['config'])
+
def complete_config(self, text, line, begidx, endidx):
candidates = []
tokens = line.strip().split(' ')
@@ -640,22 +632,15 @@ class Shell(cmd.Cmd, object):
return completions
def do_pwd(self, args):
- """Show corrent directory.
-
- It behaves as UNIX's pwd command.
-
- spp > pwd
- """
-
+ """Show corrent directory."""
print(os.getcwd())
- def do_ls(self, args):
- """Show a list of specified directory.
+ def help_pwd(self):
+ """Print help message of pwd command."""
+ print(help_msg.cmds['pwd'])
- It behaves as UNIX's ls command.
-
- spp > ls path/to/dir
- """
+ def do_ls(self, args):
+ """Show a list of specified directory."""
if args == '' or os.path.isdir(args):
c = 'ls -F %s' % args
@@ -663,14 +648,15 @@ class Shell(cmd.Cmd, object):
else:
print("No such a directory.")
+ def help_ls(self):
+ """Print help message of ls command."""
+ print(help_msg.cmds['ls'])
+
def complete_ls(self, text, line, begidx, endidx):
return common.compl_common(text, line)
def do_cd(self, args):
- """Change current directory.
-
- spp > cd path/to/dir
- """
+ """Change current directory."""
if os.path.isdir(args):
os.chdir(args)
@@ -678,21 +664,23 @@ class Shell(cmd.Cmd, object):
else:
print("No such a directory.")
+ def help_cd(self):
+ """Print help message of cd command."""
+ print(help_msg.cmds['cd'])
+
def complete_cd(self, text, line, begidx, endidx):
return common.compl_common(text, line, 'directory')
def do_mkdir(self, args):
- """Create a new directory.
-
- It behaves as 'mkdir -p' which means that you can create sub
- directories at once.
-
- spp > mkdir path/to/dir
- """
+ """Create a new directory."""
c = 'mkdir -p %s' % args
subprocess.call(c, shell=True)
+ def help_mkdir(self):
+ """Print help message of mkdir command."""
+ print(help_msg.cmds['mkdir'])
+
def complete_mkdir(self, text, line, begidx, endidx):
return common.compl_common(text, line)
@@ -718,21 +706,19 @@ class Shell(cmd.Cmd, object):
return spp_bye.complete(text, line, begidx, endidx)
def do_cat(self, arg):
- """View contents of a file.
-
- spp > cat file
- """
+ """View contents of a file."""
if os.path.isfile(arg):
c = 'cat %s' % arg
subprocess.call(c, shell=True)
else:
print("No such a directory.")
- def do_redo(self, args):
- """Execute command of index of history.
+ def help_cat(self):
+ """Print help message of cat command."""
+ print(help_msg.cmds['cat'])
- spp > redo 5 # exec 5th command in the history
- """
+ def do_redo(self, args):
+ """Execute command of index of history."""
idx = int(args)
cmdline = None
@@ -754,18 +740,12 @@ class Shell(cmd.Cmd, object):
except IOError:
print('Error: Cannot open history file "%s"' % self.hist_file)
- def do_history(self, arg):
- """Show command history.
-
- spp > history
- 1 ls
- 2 cat file.txt
- ...
+ def help_redo(self):
+ """Print help message of redo command."""
+ print(help_msg.cmds['redo'])
- Command history is recorded in a file named '.spp_history'.
- It does not add some command which are no meaning for history.
- 'bye', 'exit', 'history', 'redo'
- """
+ def do_history(self, arg):
+ """Show command history."""
try:
f = open(self.hist_file)
@@ -785,53 +765,51 @@ class Shell(cmd.Cmd, object):
except IOError:
print('Error: Cannot open history file "%s"' % self.hist_file)
+ def help_history(self):
+ """Print help message of history command."""
+ print(help_msg.cmds['history'])
+
def complete_cat(self, text, line, begidx, endidx):
return common.compl_common(text, line)
def do_less(self, arg):
- """View contents of a file.
+ """View contents of a file."""
- spp > less file
- """
if os.path.isfile(arg):
c = 'less %s' % arg
subprocess.call(c, shell=True)
else:
print("No such a directory.")
+ def help_less(self):
+ """Print help message of less command."""
+ print(help_msg.cmds['less'])
+
def complete_less(self, text, line, begidx, endidx):
return common.compl_common(text, line)
def do_exit(self, args):
- """Terminate SPP controller process.
-
- It is an alias of bye command to terminate controller.
-
- spp > exit
- Thank you for using Soft Patch Panel
- """
+ """Terminate SPP controller process."""
self.close()
print('Thank you for using Soft Patch Panel')
return True
- def do_inspect(self, args):
- """Print attributes of Shell for debugging.
-
- This command is intended to be used by developers to show the
- inside of the object of Shell class.
+ def help_exit(self):
+ """Print help message of exit command."""
+ print(help_msg.cmds['exit'])
- spp > inspect
- {'cmdqueue': [],
- 'completekey': 'tab',
- 'completion_matches': ['inspect'],
- ...
- """
+ def do_inspect(self, args):
+ """Print attributes of Shell for debugging."""
from pprint import pprint
if args == '':
pprint(vars(self))
+ def help_inspect(self):
+ """Print help message of inspect command."""
+ print(help_msg.cmds['inspect'])
+
def terms_topo_subgraph(self):
"""Define terms of topo_subgraph command."""
@@ -927,12 +905,7 @@ class Shell(cmd.Cmd, object):
return self.spp_topo.complete(text, line, begidx, endidx)
def do_load_cmd(self, args):
- """Load command plugin.
-
- Path of plugin file is 'spp/src/controller/plugins'.
-
- spp > load_cmd hello
- """
+ """Load command plugin."""
args = re.sub(',', ' ', args)
args = re.sub(r'\s+', ' ', args)
@@ -947,6 +920,10 @@ class Shell(cmd.Cmd, object):
print("Module '%s' loaded." % mod_name)
+ def help_load_cmd(self):
+ """Print help message of load_cmd command."""
+ print(help_msg.cmds['load_cmd'])
+
def complete_load_cmd(self, text, line, begidx, endidx):
"""Complete command plugins
--
2.17.1
^ permalink raw reply [flat|nested] 11+ messages in thread