summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-11-25 09:37:24 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-11-25 17:49:27 +0900
commit8ace63f0c974186225b3ef2e87a2a5f37b609da1 (patch)
treecfdb028123257fa43bdb3961b28779a6a88a0a90
parente39fec0238c89407528cc7eba54d62edf97e22c8 (diff)
allow RyuApp start() method returns Greenlet thread
This enables an application to continue. Without this, ryu-manager finishes right after running applications. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/base/app_manager.py6
-rwxr-xr-xryu/cmd/manager.py3
-rw-r--r--ryu/services/protocols/vrrp/manager.py3
3 files changed, 8 insertions, 4 deletions
diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py
index 99dde027..ebf2196e 100644
--- a/ryu/base/app_manager.py
+++ b/ryu/base/app_manager.py
@@ -303,8 +303,12 @@ class AppManager(object):
self._update_bricks()
self.report_bricks()
+ threads = []
for app in self.applications.values():
- app.start()
+ t = app.start()
+ if t is not None:
+ threads.append(t)
+ return threads
@staticmethod
def _close(app):
diff --git a/ryu/cmd/manager.py b/ryu/cmd/manager.py
index a2912e5d..474dcec3 100755
--- a/ryu/cmd/manager.py
+++ b/ryu/cmd/manager.py
@@ -69,9 +69,8 @@ def main():
app_mgr = AppManager.get_instance()
app_mgr.load_apps(app_lists)
contexts = app_mgr.create_contexts()
- app_mgr.instantiate_apps(**contexts)
-
services = []
+ services.extend(app_mgr.instantiate_apps(**contexts))
# TODO: do the following in app_manager's instantiate_apps()
ofpapp = controller.start_service(app_mgr)
diff --git a/ryu/services/protocols/vrrp/manager.py b/ryu/services/protocols/vrrp/manager.py
index 2a25ebc9..489b9ce8 100644
--- a/ryu/services/protocols/vrrp/manager.py
+++ b/ryu/services/protocols/vrrp/manager.py
@@ -61,8 +61,9 @@ class VRRPManager(app_manager.RyuApp):
self.shutdown = hub.Queue()
def start(self):
- self.threads.append(hub.spawn(self._shutdown_loop))
+ t = hub.spawn(self._shutdown_loop)
super(VRRPManager, self).start()
+ return t
@handler.set_ev_cls(vrrp_event.EventVRRPConfigRequest)
def config_request_handler(self, ev):