Soft Patch Panel
 help / color / mirror / Atom feed
* [spp] [PATCH 1/2] spp: update to improve usability
@ 2018-02-08 15:18 ogawa.yasufumi
  2018-02-08 15:18 ` [spp] [PATCH 2/2] spp_vf: " ogawa.yasufumi
  2018-02-22 11:35 ` [spp] [PATCH 1/2] spp: " Ferruh Yigit
  0 siblings, 2 replies; 5+ messages in thread
From: ogawa.yasufumi @ 2018-02-08 15:18 UTC (permalink / raw)
  To: ferruh.yigit, spp; +Cc: Yasufumi Ogawa

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

SPP controller executes previous command if user just types enter in
command line. It decreases usability and might cause a wrong operation.
In addition, users cannot use empty lines in config files loaded from
`playback` command. It also decreases maintainability.

For maintainability, it is another problem for SPP controller does not
accept comment line from CLI (only able to use only in config file).
User cannot record comment in 'record' command for the reason.

This patch includes following updates.

* Override emptyline() of Shell class to not repeat previous command.

* Override default() to accept comment line. To find the comment, add
  is_comment_line() which support python and C style comment.

* Remove lower() for user's input to avoid unexpected behaviour.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 src/spp.py | 37 +++++++++++++++++++++++++++++++++----
 1 file changed, 33 insertions(+), 4 deletions(-)

diff --git a/src/spp.py b/src/spp.py
index 3796670..84f1fa7 100755
--- a/src/spp.py
+++ b/src/spp.py
@@ -346,7 +346,7 @@ def clean_sec_cmd(cmdstr):
     return res
 
 
-class Shell(cmd.Cmd):
+class Shell(cmd.Cmd, object):
     """SPP command prompt"""
 
     intro = 'Welcome to the spp.   Type help or ? to list commands.\n'
@@ -365,6 +365,36 @@ class Shell(cmd.Cmd):
     SEC_SUBCMDS = ['vhost', 'ring', 'pcap', 'nullpmd']
     BYE_CMDS = ['sec', 'all']
 
+    def is_comment_line(self, line):
+        input_line = line.strip()
+        if len(input_line) > 0:
+            if (input_line[0] == '#') or (input_line[0:2] == '//'):
+                return True
+            else:
+                return False
+
+    def default(self, line):
+        """Define defualt behaviour
+
+        If user input is commend styled, controller simply echo as a comment.
+        Supported styles are
+          - python ('#')
+          - C ('//')
+        """
+
+        if self.is_comment_line(line):
+            print("%s" % line.strip())
+        else:
+            super(Shell, self).default(line)
+
+    def emptyline(self):
+        """Do nothin for empty input
+
+        It override Cmd.emptyline() which runs previous input as default
+        to do nothing.
+        """
+        pass
+
     def close_all_secondary(self):
         """Exit all secondary processes"""
 
@@ -626,8 +656,8 @@ class Shell(cmd.Cmd):
                 with open(fname) as recorded_file:
                     lines = []
                     for line in recorded_file:
-                        if line.strip().startswith("#"):
-                            continue
+                        if not self.is_comment_line(line):
+                            lines.append("# %s" % line)
                         lines.append(line)
                     self.cmdqueue.extend(lines)
                     self.response(self.CMD_OK, "playback")
@@ -637,7 +667,6 @@ class Shell(cmd.Cmd):
                 self.response(self.CMD_NG, message)
 
     def precmd(self, line):
-        line = line.lower()
         if self.recorded_file:
             if not (('playback' in line) or ('bye' in line)):
                 print(line, file=self.recorded_file)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-02-28 10:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-08 15:18 [spp] [PATCH 1/2] spp: update to improve usability ogawa.yasufumi
2018-02-08 15:18 ` [spp] [PATCH 2/2] spp_vf: " ogawa.yasufumi
2018-02-22 11:50   ` Ferruh Yigit
2018-02-28 10:27     ` Yasufumi Ogawa
2018-02-22 11:35 ` [spp] [PATCH 1/2] spp: " Ferruh Yigit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).