"""
def __init__(self, params):
""" Constructor.
- Params: dictionary with the following keys:
+ :param params: dictionary with the following keys:
of_dpid: DPID to use for this controller ?? Does a controller have a dpid?
- url: must be [http://HOST:PORT/
+ of_url: must be [http://HOST:PORT/]
of_user: user credentials, can be missing or None
of_password: password credentials
of_debug: debug level for logging. Default to ERROR
url = url + "/"
self.url = url + "onos/v1/"
- #internal variables
+ # internal variables
self.name = "onosof"
self.headers = {'content-type':'application/json','accept':'application/json',}
self.auth = self.auth.decode()
self.headers['authorization'] = 'Basic ' + self.auth
- self.logger = logging.getLogger('vim.OF.onos')
- self.logger.setLevel( getattr(logging, params.get("of_debug", "ERROR")) )
+ self.logger = logging.getLogger('openmano.sdnconn.onosof')
+ #self.logger.setLevel( getattr(logging, params.get("of_debug", "ERROR")) )
+ self.logger.debug("onosof plugin initialized")
self.ip_address = None
def get_of_switches(self):
try:
self.headers['content-type'] = 'text/plain'
of_response = requests.get(self.url + "devices/" + self.id + "/ports", headers=self.headers)
- error_text = "Openflow response %d: %s" % (of_response.status_code, of_response.text)
+ error_text = "Openflow response {}: {}".format(of_response.status_code, of_response.text)
if of_response.status_code != 200:
self.logger.warning("obtain_port_correspondence " + error_text)
raise OpenflowConnUnexpectedResponse(error_text)
(vlan, None/int): for stripping/setting a vlan tag
(out, port): send to this port
switch: DPID, all
- Raise a openflowconnUnexpectedResponse expection in case of failure
+ Raise a openflowconnUnexpectedResponse exception in case of failure
"""
try:
# The configured page does not exist if there are no rules installed. In that case we return an empty dict
if of_response.status_code == 404:
- return {}
+ return []
elif of_response.status_code != 200:
self.logger.warning("get_of_rules " + error_text)
flow_list = info.get('flows')
if flow_list is None:
- return {}
-
+ return []
if type(flow_list) is not list:
self.logger.error(
"get_of_rules. Unexpected response at 'flows', not a list: %s",
raise OpenflowConnUnexpectedResponse("Unexpected response at 'flows', not a list. "
"Wrong version?")
- rules = [] # Response list
+ rules = [] # Response list
for flow in flow_list:
if not ('id' in flow and 'selector' in flow and 'treatment' in flow and \
'instructions' in flow['treatment'] and 'criteria' in \
"""
try:
+ self.logger.debug("del_flow: delete flow name {}".format(flow_name))
self.headers['content-type'] = None
of_response = requests.delete(self.url + "flows/" + self.id + "/" + flow_name, headers=self.headers)
- error_text = "Openflow response %d: %s" % (of_response.status_code, of_response.text)
+ error_text = "Openflow response {}: {}".format(of_response.status_code, of_response.text)
if of_response.status_code != 204:
self.logger.warning("del_flow " + error_text)
raise OpenflowConnUnexpectedResponse(error_text)
- self.logger.debug("del_flow OK " + error_text)
+ self.logger.debug("del_flow: {} OK,: {} ".format(flow_name, error_text))
return None
except requests.exceptions.RequestException as e:
actions: list of actions, composed by a pair tuples with these posibilities:
('vlan', None/int): for stripping/setting a vlan tag
('out', port): send to this port
- :return: Raise a openflowconnUnexpectedResponse expection in case of failure
+ :return: Raise a openflowconnUnexpectedResponse exception in case of failure
"""
try:
+ self.logger.debug("new_flow data: {}".format(data))
if len(self.pp2ofi) == 0:
self.obtain_port_correspondence()
self.headers['content-type'] = 'application/json'
path = self.url + "flows/" + self.id
+ self.logger.debug("new_flow post: {}".format(flow))
of_response = requests.post(path, headers=self.headers, data=json.dumps(flow) )
- error_text = "Openflow response %d: %s" % (of_response.status_code, of_response.text)
+ error_text = "Openflow response {}: {}".format(of_response.status_code, of_response.text)
if of_response.status_code != 201:
self.logger.warning("new_flow " + error_text)
raise OpenflowConnUnexpectedResponse(error_text)
data['name'] = flowId
- self.logger.debug("new_flow OK " + error_text)
+ self.logger.debug("new_flow id: {},: {} ".format(flowId, error_text))
return None
except requests.exceptions.RequestException as e: