[spp] [PATCH v2 2/5] spp-ctl: add exit cmd support for spp_primary

ogawa.yasufumi at lab.ntt.co.jp ogawa.yasufumi at lab.ntt.co.jp
Fri Nov 9 04:21:35 CET 2018


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

Spp-ctl does not support to exit spp_primary, but it is required using
from `spp.py`. This update is to add a REST API for exiting the process.

This update is includes to change prefix of args of do_exit() in
`spp_ctl.py` from `sec_` to `proc_` because this method supports both
of primary and secondary by this change.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi at lab.ntt.co.jp>
Reviewed-by: Itsuro Oda <oda at valinux.co.jp>
---
 src/spp-ctl/spp_ctl.py    | 14 +++++++-------
 src/spp-ctl/spp_proc.py   |  4 ++++
 src/spp-ctl/spp_webapi.py |  6 ++++++
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/spp-ctl/spp_ctl.py b/src/spp-ctl/spp_ctl.py
index 81a2fe0..a22d589 100644
--- a/src/spp-ctl/spp_ctl.py
+++ b/src/spp-ctl/spp_ctl.py
@@ -141,14 +141,14 @@ class Controller(object):
             procs.append(p)
         return procs
 
-    def do_exit(self, sec_type, sec_id):
-        target_key = None
-        for k, proc in self.procs.items():
-            if proc.type == sec_type and proc.id == sec_id:
-                target_key = k
+    def do_exit(self, proc_type, proc_id):
+            removed_id = None  # remove proc info of ID from self.procs
+        for proc in self.procs.values():
+            if proc.type == proc_type and proc.id == proc_id:
+                removed_id = proc.id
                 break
-        if target_key is not None:
-            del self.procs[target_key]
+        if removed_id is not None:
+            del self.procs[removed_id]
 
 
 def main():
diff --git a/src/spp-ctl/spp_proc.py b/src/spp-ctl/spp_proc.py
index aa928f2..83c59ea 100644
--- a/src/spp-ctl/spp_proc.py
+++ b/src/spp-ctl/spp_proc.py
@@ -189,3 +189,7 @@ class PrimaryProc(SppProc):
     @exec_command
     def clear(self):
         return "clear"
+
+    @exec_command
+    def do_exit(self):
+        return "exit"
diff --git a/src/spp-ctl/spp_webapi.py b/src/spp-ctl/spp_webapi.py
index 8332cab..49ef971 100644
--- a/src/spp-ctl/spp_webapi.py
+++ b/src/spp-ctl/spp_webapi.py
@@ -395,6 +395,7 @@ class V1PrimaryHandler(BaseHandler):
     def set_route(self):
         self.route('/status', 'GET', callback=self.get_status)
         self.route('/status', 'DELETE', callback=self.clear_status)
+        self.route('/', 'DELETE', callback=self.pri_exit)
 
     def _get_proc(self):
         proc = self.ctrl.procs.get(spp_proc.ID_PRIMARY)
@@ -417,3 +418,8 @@ class V1PrimaryHandler(BaseHandler):
     def clear_status(self):
         proc = self._get_proc()
         proc.clear()
+
+    def pri_exit(self):
+        proc = self._get_proc()
+        self.ctrl.do_exit(proc.type, proc.id)
+        proc.do_exit()
-- 
2.7.4



More information about the spp mailing list