diff --git a/ryu/app/wsgi.py b/ryu/app/wsgi.py index c9a9f96b..ff3ef6ac 100644 --- a/ryu/app/wsgi.py +++ b/ryu/app/wsgi.py @@ -93,7 +93,7 @@ class WSGIApplication(object): controller = match['controller'](req, link, data, **self.config) return controller(req) - def register(self, controller): + def register(self, controller, data=None): methods = inspect.getmembers(controller, lambda v: inspect.ismethod(v) and hasattr(v, 'routing_info')) @@ -111,6 +111,8 @@ class WSGIApplication(object): requirements=requirements, action=method_name, conditions=conditions) + if data: + self.registory[controller.__name__] = data class WSGIServer(hub.WSGIServer): diff --git a/ryu/tests/unit/app/test_wsgi.py b/ryu/tests/unit/app/test_wsgi.py index 0e5b2192..a1da1221 100644 --- a/ryu/tests/unit/app/test_wsgi.py +++ b/ryu/tests/unit/app/test_wsgi.py @@ -28,6 +28,10 @@ LOG = logging.getLogger('test_wsgi') class _TestController(ControllerBase): + def __init__(self, req, link, data, **config): + super(_TestController, self).__init__(req, link, data, **config) + eq_(data['test_param'], 'foo') + @route('test', '/test/{dpid}', methods=['GET'], requirements={'dpid': dpidlib.DPID_PATTERN}) def test_get_dpid(self, req, dpid, **_kwargs): @@ -44,8 +48,11 @@ class Test_wsgi(unittest.TestCase): """ def setUp(self): + controller_data = { + 'test_param': 'foo' + } self.wsgi_app = WSGIApplication() - self.wsgi_app.register(_TestController) + self.wsgi_app.register(_TestController, controller_data) def tearDown(self): pass