From d763da58bc6afaddcade0883b3b25244c1e55f62 Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Thu, 4 Apr 2013 13:36:27 +0900 Subject: [PATCH] base/app_manager.py: sort out registering bricks When registering RyuApps to observers with _EVENTS, it should applied to @set_ev_cls methods, and dispatchers should be honored. Signed-off-by: Isaku Yamahata Signed-off-by: FUJITA Tomonori --- ryu/base/app_manager.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py index f285322e..ab6175ac 100644 --- a/ryu/base/app_manager.py +++ b/ryu/base/app_manager.py @@ -200,19 +200,20 @@ class AppManager(object): for i in SERVICE_BRICKS.values(): for _k, m in inspect.getmembers(i, inspect.ismethod): - if hasattr(m, 'observer'): - # name is module name of ev_cls - name = m.observer.split('.')[-1] - if name in SERVICE_BRICKS: - brick = SERVICE_BRICKS[name] - brick.register_observer(m.ev_cls, i.name, - m.dispatchers) + if not hasattr(m, 'observer'): + continue + + # name is module name of ev_cls + name = m.observer.split('.')[-1] + if name in SERVICE_BRICKS: + brick = SERVICE_BRICKS[name] + brick.register_observer(m.ev_cls, i.name, m.dispatchers) # allow RyuApp and Event class are in different module - if hasattr(m, 'ev_cls'): - for brick in SERVICE_BRICKS.itervalues(): - if m.ev_cls in brick._EVENTS: - brick.register_observer(m.ev_cls, i.name) + for brick in SERVICE_BRICKS.itervalues(): + if m.ev_cls in brick._EVENTS: + brick.register_observer(m.ev_cls, i.name, + m.dispatchers) for brick, i in SERVICE_BRICKS.items(): LOG.debug("BRICK %s" % brick)