"""
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()
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")
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:
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()