summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2013-11-22 16:45:58 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-11-22 14:50:19 -0800
commit2a10dfbd9c9be0eb241ed628675816ab9874d89b (patch)
tree53619450c237e3bd69f256e5bd67f889e9a1e400
parent5dd45aea0c9c2967d465f53fe707ed536c32ce5b (diff)
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 <yamahata@valinux.co.jp> Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/base/app_manager.py9
-rwxr-xr-xryu/cmd/manager.py2
2 files changed, 10 insertions, 1 deletions
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)