diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-11-25 09:37:24 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-11-25 17:49:27 +0900 |
commit | 8ace63f0c974186225b3ef2e87a2a5f37b609da1 (patch) | |
tree | cfdb028123257fa43bdb3961b28779a6a88a0a90 | |
parent | e39fec0238c89407528cc7eba54d62edf97e22c8 (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.py | 6 | ||||
-rwxr-xr-x | ryu/cmd/manager.py | 3 | ||||
-rw-r--r-- | ryu/services/protocols/vrrp/manager.py | 3 |
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): |