commit a3bcab188ca70a2f249a5f3f83941c5b3018aafe
Author: Radek Pazdera <rpazdera(a)redhat.com>
Date: Thu Apr 18 19:51:48 2013 +0200
lnst-ctl: Refactoring logging initialisation
This commit contain some cosmetic changes in the interface between the
LoggingCtl class and the NetTestController.
Signed-off-by: Radek Pazdera <rpazdera(a)redhat.com>
lnst/Common/Logs.py | 23 +++++++++++++++--------
lnst/Controller/NetTestController.py | 24 ++++++------------------
2 files changed, 21 insertions(+), 26 deletions(-)
---
diff --git a/lnst/Common/Logs.py b/lnst/Common/Logs.py
index 032a4af..1f08265 100644
--- a/lnst/Common/Logs.py
+++ b/lnst/Common/Logs.py
@@ -141,7 +141,7 @@ class LoggingCtl:
logger.removeHandler(self.recipe_handlers[1])
self.recipe_handlers = (None, None)
- def add_slave(self, name):
+ def add_slave(self, slave_id, name):
slave_log_path = os.path.join(self.recipe_log_path, name)
self._clean_folder(slave_log_path)
@@ -153,17 +153,24 @@ class LoggingCtl:
logger.addHandler(slave_info)
logger.addHandler(slave_debug)
- self.slaves[name] = (slave_info, slave_debug)
- return logger
+ self.slaves[slave_id] = (name, slave_info, slave_debug)
- def remove_slave(self, name):
- logger = logging.getLogger(name)
+ def remove_slave(self, slave_id):
+ logger = logging.getLogger(self.slaves[slave_id][0])
logger.propagate = False
- logger.removeHandler(self.slaves[name][0])
- logger.removeHandler(self.slaves[name][1])
+ logger.removeHandler(self.slaves[slave_id][1])
+ logger.removeHandler(self.slaves[slave_id][2])
+
+ del slaves[slave_id]
+
+ def add_client_log(self, slave_id, log_record):
+ name = self.slaves[slave_id][0]
+ logger = logging.getLogger(name)
- del self.slaves[name]
+ log_record['address'] = '(' + name + ')'
+ record = logging.makeLogRecord(log_record)
+ logger.handle(record)
def set_connection(self, target):
if self.transmit_handler != None:
diff --git a/lnst/Controller/NetTestController.py b/lnst/Controller/NetTestController.py
index 55055a7..d51e66f 100644
--- a/lnst/Controller/NetTestController.py
+++ b/lnst/Controller/NetTestController.py
@@ -48,7 +48,7 @@ class NetTestController:
self._config = config
self._log_ctl = log_ctl
self._recipe_path = recipe_path
- self._msg_dispatcher = MessageDispatcher()
+ self._msg_dispatcher = MessageDispatcher(log_ctl)
sp = SlavePool(config.get_option('environment', 'pool_dirs'),
check_process_running("libvirtd"), config)
@@ -345,8 +345,7 @@ class NetTestController:
domain_ctl.detach_interface(dev["hwaddr"])
#clean-up slave logger
- address = socket.gethostbyname(info["hostname"])
- self._log_ctl.remove_slave(address)
+ self._log_ctl.remove_slave(machine_id)
# remove dynamically created bridges
networks = self._recipe["networks"]
@@ -650,12 +649,11 @@ class NetTestController:
return packages
class MessageDispatcher(ConnectionHandler):
- def __init__(self):
+ def __init__(self, log_ctl):
super(MessageDispatcher, self).__init__()
- self._slaves = {}
+ self._log_ctl = log_ctl
- def add_slave(self, machine_id, connection, machine_info):
- self._slaves[machine_id] = machine_info
+ def add_slave(self, machine_id, connection):
self.add_connection(machine_id, connection)
def send_message(self, machine_id, data):
@@ -681,7 +679,7 @@ class MessageDispatcher(ConnectionHandler):
def _process_message(self, message):
if message[1]["type"] == "log":
record = message[1]["record"]
- self._add_client_log(message[0], record)
+ self._log_ctl.add_client_log(message[0], record)
elif message[1]["type"] == "result":
msg = "Recieved result message from different slave %s" %
message[0]
logging.debug(msg)
@@ -692,16 +690,6 @@ class MessageDispatcher(ConnectionHandler):
msg = "Unknown message type: %s" % message[1]["type"]
raise NetTestError(msg)
- def _add_client_log(self, machine_id, log_record):
- info = self._slaves[machine_id]
- address = socket.gethostbyname(info['hostname'])
- logger = info['logger']
-
- log_record['address'] = '(' + address + ')'
- record = logging.makeLogRecord(log_record)
- logger.handle(record)
-
def disconnect_slave(self, machine_id):
- del self._slaves[machine_id]
soc = self.get_connection(machine_id)
self.remove_connection(soc)