AppManager: Add a convenient method to run apps
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
771fb79501
commit
ecbb8640f5
@ -31,6 +31,7 @@ import os
|
||||
|
||||
from ryu import cfg
|
||||
from ryu import utils
|
||||
from ryu.app import wsgi
|
||||
from ryu.controller.handler import register_instance, get_dependent_services
|
||||
from ryu.controller.controller import Datapath
|
||||
from ryu.controller import event
|
||||
@ -325,6 +326,25 @@ class AppManager(object):
|
||||
# singletone
|
||||
_instance = None
|
||||
|
||||
@staticmethod
|
||||
def run_apps(app_lists):
|
||||
"""Run a set of Ryu applications
|
||||
|
||||
A convenient method to load and instantiate apps.
|
||||
This blocks until all relevant apps stop.
|
||||
"""
|
||||
app_mgr = AppManager.get_instance()
|
||||
app_mgr.load_apps(app_lists)
|
||||
contexts = app_mgr.create_contexts()
|
||||
services = app_mgr.instantiate_apps(**contexts)
|
||||
webapp = wsgi.start_service(app_mgr)
|
||||
if webapp:
|
||||
services.append(hub.spawn(webapp))
|
||||
try:
|
||||
hub.joinall(services)
|
||||
finally:
|
||||
app_mgr.close()
|
||||
|
||||
@staticmethod
|
||||
def get_instance():
|
||||
if not AppManager._instance:
|
||||
|
Loading…
Reference in New Issue
Block a user