summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2012-01-24 17:53:30 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-02-04 22:32:36 +0900
commit7ac93f4615950e43819a9de259f14e073d4a4d4d (patch)
tree1f357901bb10c5d0882e8474909e63137f756d5e
parent4cd7ca98954898e1665d324d6a720473dff851d5 (diff)
ryu/app/client: factor out rest client code
REST API will be enhanced. So factor out reset client code such that it affords extension. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/app/client.py53
1 files changed, 31 insertions, 22 deletions
diff --git a/ryu/app/client.py b/ryu/app/client.py
index c4728893..d54fe44c 100644
--- a/ryu/app/client.py
+++ b/ryu/app/client.py
@@ -1,5 +1,5 @@
# Copyright (C) 2011 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2011,2012 Isaku Yamahata <yamahata at valinux co jp>
+# Copyright (C) 2011, 2012 Isaku Yamahata <yamahata at valinux co jp>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -18,17 +18,13 @@ import httplib
import urlparse
-class OFPClientV1_0(object):
- version = 'v1.0'
-
- # /networks/{network_id}/{dpid}_{port}
- network_path = 'networks/%s'
- port_path = 'networks/%s/%s_%s'
-
- def __init__(self, address):
- r = urlparse.SplitResult('', address, '', '', '')
- self.host = r.hostname
- self.port = r.port
+class RyuClientBase(object):
+ def __init__(self, version, address):
+ super(RyuClientBase, self).__init__()
+ self.version = version
+ res = urlparse.SplitResult('', address, '', '', '')
+ self.host = res.hostname
+ self.port = res.port
self.url_prefix = '/' + self.version + '/'
def _do_request(self, method, action):
@@ -46,31 +42,44 @@ class OFPClientV1_0(object):
res, 'code %d reason %s' % (res.status, res.reason),
res.getheaders(), res.read())
- def get_networks(self):
- res = self._do_request('GET', '')
+ def _do_request_read(self, method, action):
+ res = self._do_request(method, action)
return res.read()
+
+class OFPClientV1_0(RyuClientBase):
+ version = 'v1.0'
+
+ # /networks/{network_id}/{dpid}_{port}
+ path_networks = 'networks/%s'
+ path_port = path_networks + '/%s_%s'
+
+ def __init__(self, address):
+ super(OFPClientV1_0, self).__init__(OFPClientV1_0.version, address)
+
+ def get_networks(self):
+ return self._do_request_read('GET', '')
+
def create_network(self, network_id):
- self._do_request('POST', self.network_path % network_id)
+ self._do_request('POST', self.path_networks % network_id)
def update_network(self, network_id):
- self._do_request('PUT', self.network_path % network_id)
+ self._do_request('PUT', self.path_networks % network_id)
def delete_network(self, network_id):
- self._do_request('DELETE', self.network_path % network_id)
+ self._do_request('DELETE', self.path_networks % network_id)
def get_ports(self, network_id):
- res = self._do_request('GET', self.network_path % network_id)
- return res.read()
+ return self._do_request_read('GET', self.path_networks % network_id)
def create_port(self, network_id, dpid, port):
- self._do_request('POST', self.port_path % (network_id, dpid, port))
+ self._do_request('POST', self.path_port % (network_id, dpid, port))
def update_port(self, network_id, dpid, port):
- self._do_request('PUT', self.port_path % (network_id, dpid, port))
+ self._do_request('PUT', self.path_port % (network_id, dpid, port))
def delete_port(self, network_id, dpid, port):
- self._do_request('DELETE', self.port_path % (network_id, dpid, port))
+ self._do_request('DELETE', self.path_port % (network_id, dpid, port))
OFPClient = OFPClientV1_0