From 2a10dfbd9c9be0eb241ed628675816ab9874d89b Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Fri, 22 Nov 2013 16:45:58 +0900 Subject: base/app_manager: introduce singleton pattern to AppManager Later VRRP service creates/deletes RyuApp dynamically as VRRP router is enabled/disabled. When creating/deleting RyuApp, unique RyuManager should be used. There needs a way to get a unique RyuApp. So introduce singleton pattern Signed-off-by: Isaku Yamahata Signed-off-by: YAMAMOTO Takashi Signed-off-by: FUJITA Tomonori --- ryu/base/app_manager.py | 9 +++++++++ ryu/cmd/manager.py | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py index 21e129b5..883ca49c 100644 --- a/ryu/base/app_manager.py +++ b/ryu/base/app_manager.py @@ -149,6 +149,15 @@ class RyuApp(object): class AppManager(object): + # singletone + _instance = None + + @staticmethod + def get_instance(): + if not AppManager._instance: + AppManager._instance = AppManager() + return AppManager._instance + def __init__(self): self.applications_cls = {} self.applications = {} diff --git a/ryu/cmd/manager.py b/ryu/cmd/manager.py index 83867054..82dc60a1 100755 --- a/ryu/cmd/manager.py +++ b/ryu/cmd/manager.py @@ -63,7 +63,7 @@ def main(): app_lists = CONF.app_lists + CONF.app - app_mgr = AppManager() + app_mgr = AppManager.get_instance() app_mgr.load_apps(app_lists) contexts = app_mgr.create_contexts() app_mgr.instantiate_apps(**contexts) -- cgit v1.2.3