Skip to content
Snippets Groups Projects

Resolve "Make ERS AppName more descriptive"

Merged Jonas Ladefoged Holm requested to merge 16-make-ers-appname-more-descriptive into master
All threads resolved!
Files
7
#!/bin/env python
##### Thread checking constantly the state of the partition #####
import os
import threading
import logging
from cs.Tools.utils import set_log_level,formatter,thread_id_string
from cs.Tools.utils import thread_id_string, enable_file_logging
class CheckThread(threading.Thread):
def __init__(self, conf, manager, copy, delete, event, mainERSHandler):
def __init__(self, conf, event, ERSHandler):
threading.Thread.__init__(self, name="CheckThread")
import ers
from ispy import IPCPartition #pylint: disable=no-name-in-module
self.IPCPartition = IPCPartition
self.conf = conf
self.event = event
self.manager = manager
self.copy = copy
self.delete = delete
##### Main logger #####
#TODO remove mainLogger (only root logger is needed and there is no need to store it locally)
self.mainLogger = logging.getLogger('main')
self.main_ERS_handler = mainERSHandler
self.ERSHandler = ERSHandler
##### Get configuration parameters #####
self.CheckTimeout = self.conf.CheckTimeout
self.ERSLogLevel = self.conf.ERSLogLevel
self.LogDir = self.conf.LogDir
self.ERSenabled = self.conf.ERSenabled
self.partition = self.conf.partition
self.LogLevel = self.conf.LogLevel
self.ERSTimeout = self.conf.ERSTimeout
self.CheckTimeout = conf.CheckTimeout
self.partition = conf.partition
self.ERSTimeout = conf.ERSTimeout
##### Define Thread internal variables #####
self.exitFlag = False
self.partition_connected = True
##### Set Logger for CheckThread #####
self.logFile = os.path.join(self.LogDir,'CheckLog.out')
# TODO rename all handlers (they are not loggers)
# TODO there is no need to store them in the object (double check) (make them local variables)
self.CheckLog = logging.FileHandler(self.logFile,'w')
self.CheckLog.setFormatter(formatter)
##### Set Logger Level #####
set_log_level(self.LogLevel, self.CheckLog)
self.logger = logging.getLogger('CheckThread')
self.logger.addHandler(self.CheckLog)
##### Add ERS handler #####
if self.ERSenabled:
try:
#TODO remove: we don't need another ers handler, just use the central one
self.check_ERS_handler=ers.LoggingHandler()
set_log_level(self.ERSLogLevel,self.check_ERS_handler)
self.logger.addHandler( self.check_ERS_handler )
except Exception,ex:
self.logger.error("CheckThread could not create ERS, reason is '%s'", str(ex))
self.logger = enable_file_logging("CheckThread","CheckLog.out", conf.LogDir, conf.LogLevel)
# end def __init__()
def run(self):
#TODO log thread id to local logger and not mainLogger
self.mainLogger.info(thread_id_string())
self.logger.info(thread_id_string())
while True:
@@ -83,45 +47,20 @@ class CheckThread(threading.Thread):
self.event.wait(self.ERSTimeout)
self.logger.warning('Found partition %s, adding ERS', self.partition)
self.partition_connected = True
##### Add ERS handlers to all loggers #####
self.change_state_ers(True)
##### Add ERS handler to root logger #####
logging.getLogger().addHandler(self.ERSHandler)
##### Check for the disappearance of partition #####
elif self.partition_connected and not self.IPCPartition(self.partition).isValid():
self.logger.warning('Lost connection to partition %s, removing ERS handlers', self.partition)
self.partition_connected = False
##### Remove ERS handlers from all loggers #####
self.change_state_ers(False)
##### Remove ERS handler from root logger #####
logging.getLogger().removeHandler(self.ERSHandler)
self.event.wait(self.CheckTimeout)
# end while
# end def run()
##### Call add/remove ERS functions from threads #####
def change_state_ers(self, create_ers_handler):
if create_ers_handler:
##### Add ERS handler to all loggers #####
#TODO this should be the root logger
self.mainLogger.addHandler(self.main_ERS_handler)
self.logger.addHandler(self.check_ERS_handler)
self.copy.AddRemoveERS(True)
self.manager.AddRemoveERS(True)
if self.delete:
self.delete.AddRemoveERS(True)
else:
##### Remove ERS from all loggers #####
#TODO this should be the root logger
self.mainLogger.removeHandler(self.main_ERS_handler)
self.logger.removeHandler(self.check_ERS_handler)
self.copy.AddRemoveERS(False)
self.manager.AddRemoveERS(False)
if self.delete:
self.delete.AddRemoveERS(False)
# end if,else
# end def change_state_ers()
##### Exit handler #####
def checkExit(self):
self.exitFlag = True
Loading