From 7ac93f4615950e43819a9de259f14e073d4a4d4d Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Tue, 24 Jan 2012 17:53:30 +0900 Subject: 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 Signed-off-by: FUJITA Tomonori --- ryu/app/client.py | 53 +++++++++++++++++++++++++++++++---------------------- 1 file 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 +# Copyright (C) 2011, 2012 Isaku Yamahata # # 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 -- cgit v1.2.3