[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