ryu-client: support Topology REST API

Signed-off-by: YAMADA Hideki <yamada.hideki@po.ntts.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
YAMADA Hideki 2013-03-28 18:50:28 +09:00 committed by FUJITA Tomonori
parent fd7a4e6119
commit 51baabb9ee
2 changed files with 39 additions and 0 deletions

View File

@ -23,6 +23,7 @@ from ryu.app.client import OFPClient
from ryu.app.client import QuantumIfaceClient from ryu.app.client import QuantumIfaceClient
from ryu.app.client import SwitchConfClient from ryu.app.client import SwitchConfClient
from ryu.app.client import TunnelClient from ryu.app.client import TunnelClient
from ryu.app.client import TopologyClient
def client_test(): def client_test():
@ -41,6 +42,7 @@ def client_test():
tun_client = TunnelClient(address) tun_client = TunnelClient(address)
sc_client = SwitchConfClient(address) sc_client = SwitchConfClient(address)
qi_client = QuantumIfaceClient(address) qi_client = QuantumIfaceClient(address)
topo_client = TopologyClient(address)
commands = { commands = {
'list_nets': lambda a: sys.stdout.write(ofp_client.get_networks()), 'list_nets': lambda a: sys.stdout.write(ofp_client.get_networks()),
@ -87,6 +89,9 @@ def client_test():
qi_client.get_network_id(a[1])), qi_client.get_network_id(a[1])),
'qi_create_net_id': lambda a: qi_client.create_network_id(a[1], a[2]), 'qi_create_net_id': lambda a: qi_client.create_network_id(a[1], a[2]),
'qi_update_net_id': lambda a: qi_client.update_network_id(a[1], a[2]), 'qi_update_net_id': lambda a: qi_client.update_network_id(a[1], a[2]),
'topo_list_switches': lambda a: topo_client.list_switches(),
'topo_list_links': lambda a: topo_client.list_links(),
} }
# allow '-', instead of '_' # allow '-', instead of '_'

View File

@ -245,3 +245,37 @@ class QuantumIfaceClientV1_0(RyuClientBase):
QuantumIfaceClient = QuantumIfaceClientV1_0 QuantumIfaceClient = QuantumIfaceClientV1_0
class TopologyClientV1_0(RyuClientBase):
version = 'v1.0'
# /topology/switches
# /topology/switches/{dpid}
# /topology/links
# /topology/links/{dpid}
_path_switches = 'topology/switches'
_path_links = 'topology/links'
def __init__(self, address):
super(TopologyClientV1_0, self).__init__(self.version, address)
# dpid: string representation (see ryu.lib.dpid)
# if None, get all
def list_switches(self, dpid=None):
uri = self._path_switches
if dpid:
uri += '/%s' % (dpid)
return self._do_request('GET', uri)
# dpid: string representation (see ryu.lib.dpid)
# if None, get all
def list_links(self, dpid=None):
uri = self._path_links
if dpid:
uri += '/%s' % (dpid)
return self._do_request('GET', uri)
TopologyClient = TopologyClientV1_0