X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=osm_openvim%2Fopenflow_thread.py;h=e41fb6bf71178ed8c03b13d1ebe747148d31088a;hb=refs%2Fchanges%2F10%2F6310%2F2;hp=2f39fabb68af06a3d4fbaf1966e440ce238148dd;hpb=f135eff232fe844439c3f097734693ab4320460e;p=osm%2Fopenvim.git diff --git a/osm_openvim/openflow_thread.py b/osm_openvim/openflow_thread.py index 2f39fab..e41fb6b 100644 --- a/osm_openvim/openflow_thread.py +++ b/osm_openvim/openflow_thread.py @@ -93,21 +93,31 @@ class openflow_thread(threading.Thread): """ This thread interacts with a openflow controller to create dataplane connections """ - def __init__(self, of_uuid, of_connector, db, db_lock, of_test, pmp_with_same_vlan=False, debug='ERROR'): + def __init__(self, of_uuid, of_connector, db, db_lock, of_test, pmp_with_same_vlan=False, logger_name=None, + debug=None): threading.Thread.__init__(self) self.of_uuid = of_uuid self.db = db self.pmp_with_same_vlan = pmp_with_same_vlan - self.name = "openflow" self.test = of_test self.db_lock = db_lock self.OF_connector = of_connector - self.logger = logging.getLogger('vim.OF-' + of_uuid) - self.logger.setLevel(getattr(logging, debug)) - self.logger.name = of_connector.name + " " + self.OF_connector.dpid + if logger_name: + self.logger_name = logger_name + else: + self.logger_name = "openvim.ofc." + of_uuid + self.logger = logging.getLogger(self.logger_name) + if debug: + self.logger.setLevel(getattr(logging, debug)) self.queueLock = threading.Lock() self.taskQueue = Queue.Queue(2000) - + + @staticmethod + def _format_error_msg(error_text, max_length=1024): + if error_text and len(error_text) >= max_length: + return error_text[:max_length//2-3] + " ... " + error_text[-max_length//2+3:] + return error_text + def insert_task(self, task, *aditional): try: self.queueLock.acquire() @@ -115,7 +125,7 @@ class openflow_thread(threading.Thread): self.queueLock.release() return 1, None except Queue.Full: - return -1, "timeout inserting a task over openflow thread " + self.name + return -1, "timeout inserting a task over openflow thread " + self.of_uuid def run(self): self.logger.debug("Start openflow thread") @@ -135,10 +145,10 @@ class openflow_thread(threading.Thread): continue if task[0] == 'update-net': - r,c = self.update_of_flows(task[1]) + r, c = self.update_of_flows(task[1]) # update database status if r<0: - UPDATE={'status':'ERROR', 'last_error': str(c)} + UPDATE={'status':'ERROR', 'last_error': self._format_error_msg(str(c), 255)} self.logger.error("processing task 'update-net' %s: %s", str(task[1]), c) self.set_openflow_controller_status(OFC_STATUS_ERROR, "Error updating net {}".format(task[1])) else: @@ -584,7 +594,7 @@ class openflow_thread(threading.Thread): ofc = {} ofc['status'] = status - ofc['last_error'] = error_text + ofc['last_error'] = self._format_error_msg(error_text, 255) self.db_lock.acquire() result, content = self.db.update_rows('ofcs', ofc, WHERE={'uuid': self.of_uuid}, log=False) self.db_lock.release()