From 789fbb3a519ea52c771f3877bcc5d48439f78a7c Mon Sep 17 00:00:00 2001 From: Satoshi Kobayashi Date: Wed, 2 Oct 2013 13:36:45 +0900 Subject: [PATCH] To specify a context of a controller from WSGIApplication#register() Before: wsgi.register(FooController) wsgi.registory[FooController.__name__] = controller_args After: wsgi.register(FooController, controller_args) Signed-off-by: Satoshi Kobayashi Signed-off-by: FUJITA Tomonori --- ryu/app/wsgi.py | 4 +++- ryu/tests/unit/app/test_wsgi.py | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) 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