summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ryu/app/rest_topology.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/ryu/app/rest_topology.py b/ryu/app/rest_topology.py
index 5eed243d..77cfc37e 100644
--- a/ryu/app/rest_topology.py
+++ b/ryu/app/rest_topology.py
@@ -19,7 +19,7 @@ from webob import Response
from ryu.app.wsgi import ControllerBase, WSGIApplication, route
from ryu.base import app_manager
from ryu.lib import dpid as dpid_lib
-from ryu.topology.api import get_switch, get_link
+from ryu.topology.api import get_switch, get_link, get_host
# REST API for switch configuration
#
@@ -76,6 +76,16 @@ class TopologyController(ControllerBase):
def get_links(self, req, **kwargs):
return self._links(req, **kwargs)
+ @route('topology', '/v1.0/topology/hosts',
+ methods=['GET'])
+ def list_hosts(self, req, **kwargs):
+ return self._hosts(req, **kwargs)
+
+ @route('topology', '/v1.0/topology/hosts/{dpid}',
+ methods=['GET'], requirements={'dpid': dpid_lib.DPID_PATTERN})
+ def get_hosts(self, req, **kwargs):
+ return self._hosts(req, **kwargs)
+
def _switches(self, req, **kwargs):
dpid = None
if 'dpid' in kwargs:
@@ -91,3 +101,11 @@ class TopologyController(ControllerBase):
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)
+
+ def _hosts(self, req, **kwargs):
+ dpid = None
+ if 'dpid' in kwargs:
+ dpid = dpid_lib.str_to_dpid(kwargs['dpid'])
+ hosts = get_host(self.topology_api_app, dpid)
+ body = json.dumps([host.to_dict() for host in hosts])
+ return Response(content_type='application/json', body=body)