Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp>
---
 ryu/app/client.py |   44 ++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 42 insertions(+), 2 deletions(-)

diff --git a/ryu/app/client.py b/ryu/app/client.py
index 01a482c..14888d4 100644
--- a/ryu/app/client.py
+++ b/ryu/app/client.py
@@ -15,6 +15,7 @@
 # limitations under the License.
 
 import httplib
+import json
 import urlparse
 
 
@@ -40,10 +41,14 @@ class RyuClientBase(object):
         self.port = res.port
         self.url_prefix = '/' + self.version + '/'
 
-    def _do_request(self, method, action):
+    def _do_request(self, method, action, body=None):
         conn = httplib.HTTPConnection(self.host, self.port)
         url = self.url_prefix + action
-        conn.request(method, url)
+        headers = {}
+        if body is not None:
+            body = json.dumps(body)
+            headers['Content-Type'] = 'application/json'
+        conn.request(method, url, body, headers)
         res = conn.getresponse()
         if res.status in (httplib.OK,
                           httplib.CREATED,
@@ -142,3 +147,38 @@ class TunnelClientV1_0(RyuClientBase):
 
 
 TunnelClient = TunnelClientV1_0
+
+
+class SwitchConfClientV1_0(RyuClientBase):
+    version = 'v1.0'
+
+    # /conf/switches
+    # /conf/switches/<dpid>
+    # /conf/switches/<dpid>/<key>
+    path_conf_switches = 'conf/switches'
+    path_switch = path_conf_switches + '/%(dpid)s'
+    path_key = path_switch + '/%(key)s'
+
+    def __init__(self, address):
+        super(SwitchConfClientV1_0, self).__init__(self.version, address)
+
+    def list_switches(self):
+        return self._do_request_read('GET', self.path_conf_switches)
+
+    def delete_switch(self, dpid):
+        self._do_request('DELETE', self.path_switch % locals())
+
+    def list_keys(self, dpid):
+        return self._do_request_read('GET', self.path_switch % locals())
+
+    def set_key(self, dpid, key, value):
+        self._do_request('PUT', self.path_key % locals(), value)
+
+    def get_key(self, dpid, key):
+        return self._do_request_read('GET', self.path_key % locals())
+
+    def delete_key(self, dpid, key):
+        self._do_request('DELETE', self.path_key % locals())
+
+
+SwitchConfClient = SwitchConfClientV1_0
-- 
1.7.10.4


------------------------------------------------------------------------------
Keep yourself connected to Go Parallel: 
TUNE You got it built. Now make it sing. Tune shows you how.
http://goparallel.sourceforge.net
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to