fix SDN: port mapping, switch_id, sdnconn logging
[osm/RO.git] / RO-SDN-onos_openflow / osm_rosdn_onosof / onos_of.py
index 060d1d3..139f7a0 100644 (file)
@@ -47,9 +47,9 @@ class OfConnOnos(OpenflowConn):
     """
     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
@@ -69,7 +69,7 @@ class OfConnOnos(OpenflowConn):
             url = url + "/"
         self.url = url + "onos/v1/"
 
-        #internal variables
+        # internal variables
         self.name = "onosof"
         self.headers = {'content-type':'application/json','accept':'application/json',}
 
@@ -87,8 +87,9 @@ class OfConnOnos(OpenflowConn):
             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):
@@ -163,7 +164,7 @@ class OfConnOnos(OpenflowConn):
         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)
@@ -219,7 +220,7 @@ class OfConnOnos(OpenflowConn):
                         (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:
@@ -234,7 +235,7 @@ class OfConnOnos(OpenflowConn):
 
             # 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)
@@ -251,8 +252,7 @@ class OfConnOnos(OpenflowConn):
             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",
@@ -260,7 +260,7 @@ class OfConnOnos(OpenflowConn):
                 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 \
@@ -332,15 +332,16 @@ class OfConnOnos(OpenflowConn):
         """
 
         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:
@@ -360,9 +361,10 @@ class OfConnOnos(OpenflowConn):
                 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()
@@ -430,9 +432,10 @@ class OfConnOnos(OpenflowConn):
 
             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)
@@ -441,7 +444,7 @@ class OfConnOnos(OpenflowConn):
 
             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: