(2014/05/21 18:12), Satoshi Kobayashi wrote:
> 
> Signed-off-by: Satoshi Kobayashi <[email protected]>
> ---
>   ryu/app/rest_topology.py |   74 
> +++++++++++++++++++++-------------------------
>   1 files changed, 34 insertions(+), 40 deletions(-)
> 
> diff --git a/ryu/app/rest_topology.py b/ryu/app/rest_topology.py
> index 82a1755..5eed243 100644
> --- a/ryu/app/rest_topology.py
> +++ b/ryu/app/rest_topology.py
> @@ -16,10 +16,9 @@
>   import json
>   from webob import Response
>   
> -from ryu.app.wsgi import ControllerBase, WSGIApplication
> +from ryu.app.wsgi import ControllerBase, WSGIApplication, route
>   from ryu.base import app_manager
>   from ryu.lib import dpid as dpid_lib
> -from ryu.lib import port_no as port_no_lib
>   from ryu.topology.api import get_switch, get_link
>   
>   # REST API for switch configuration
> @@ -40,12 +39,44 @@ from ryu.topology.api import get_switch, get_link
>   # <dpid>: datapath id in 16 hex
>   
>   
> +class TopologyAPI(app_manager.RyuApp):
> +    _CONTEXTS = {
> +        'wsgi': WSGIApplication
> +    }
> +
> +    def __init__(self, *args, **kwargs):
> +        super(TopologyAPI, self).__init__(*args, **kwargs)
> +
> +        wsgi = kwargs['wsgi']
> +        wsgi.register(TopologyController, {'topology_api_app': self})
> +
> +
>   class TopologyController(ControllerBase):
>       def __init__(self, req, link, data, **config):
>           super(TopologyController, self).__init__(req, link, data, **config)
>           self.topology_api_app = data['topology_api_app']
>   
> +    @route('topology', '/v1.0/topology/switches',
> +           methods=['GET'])
>       def list_switches(self, req, **kwargs):
> +        return self._switches(req, **kwargs)
> +
> +    @route('topology', '/v1.0/topology/switches/{dpid}',
> +           methods=['GET'], requirements={'dpid': dpid_lib.DPID_PATTERN})
> +    def get_switch(self, req, **kwargs):
> +        return self._switches(req, **kwargs)
> +
> +    @route('topology', '/v1.0/topology/links',
> +           methods=['GET'])
> +    def list_links(self, req, **kwargs):
> +        return self._links(req, **kwargs)
> +
> +    @route('topology', '/v1.0/topology/links/{dpid}',
> +           methods=['GET'], requirements={'dpid': dpid_lib.DPID_PATTERN})
> +    def get_links(self, req, **kwargs):
> +        return self._links(req, **kwargs)
> +
> +    def _switches(self, req, **kwargs):
>           dpid = None
>           if 'dpid' in kwargs:
>               dpid = dpid_lib.str_to_dpid(kwargs['dpid'])
> @@ -53,47 +84,10 @@ class TopologyController(ControllerBase):
>           body = json.dumps([switch.to_dict() for switch in switches])
>           return Response(content_type='application/json', body=body)
>   
> -    def list_links(self, req, **kwargs):
> +    def _links(self, req, **kwargs):
>           dpid = None
>           if 'dpid' in kwargs:
>               dpid = dpid_lib.str_to_dpid(kwargs['dpid'])
>           links = get_link(self.topology_api_app, dpid)
>           body = json.dumps([link.to_dict() for link in links])
>           return Response(content_type='application/json', body=body)
> -
> -
> -class TopologyAPI(app_manager.RyuApp):
> -    _CONTEXTS = {
> -        'wsgi': WSGIApplication
> -    }
> -
> -    def __init__(self, *args, **kwargs):
> -        super(TopologyAPI, self).__init__(*args, **kwargs)
> -        wsgi = kwargs['wsgi']
> -        mapper = wsgi.mapper
> -
> -        controller = TopologyController
> -        wsgi.registory[controller.__name__] = {'topology_api_app': self}
> -        route_name = 'topology'
> -
> -        uri = '/v1.0/topology/switches'
> -        mapper.connect(route_name, uri, controller=controller,
> -                       action='list_switches',
> -                       conditions=dict(method=['GET']))
> -
> -        uri = '/v1.0/topology/switches/{dpid}'
> -        requirements = {'dpid': dpid_lib.DPID_PATTERN}
> -        s = mapper.submapper(controller=controller, 
> requirements=requirements)
> -        s.connect(route_name, uri, action='list_switches',
> -                  conditions=dict(method=['GET']))
> -
> -        uri = '/v1.0/topology/links'
> -        mapper.connect(route_name, uri, controller=controller,
> -                       action='list_links',
> -                       conditions=dict(method=['GET']))
> -
> -        uri = '/v1.0/topology/links/{dpid}'
> -        requirements = {'dpid': dpid_lib.DPID_PATTERN}
> -        s = mapper.submapper(controller=controller, 
> requirements=requirements)
> -        s.connect(route_name, uri, action='list_links',
> -                  conditions=dict(method=['GET']))
> 

Looks good to me.


------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to