class TestFormatter(logging.Formatter):
- def __init__(self, start_time=None, name=None):
+ def __init__(self, start_time=None, name=None, longest_machine_name=10):
super().__init__(fmt="[%(asctime)s] %(message)s")
logger.debug("Initiating TestFormatter for")
if start_time == None:
else:
self.name = name
+ self.longest_machine_name = longest_machine_name
+
def converter(self, recordtime):
# This returns a timestamp relatively to the time when we started
return time.gmtime(recordtime)
def format(self, record):
- return "[{}][{}] {}".format(self.formatTime(record), self.name, record.getMessage())
+ return "[{}][{:^{align}}] {}".format(self.formatTime(record),
+ self.name,
+ record.getMessage(),
+ align=self.longest_machine_name)
def formatTime(self, record, datefmt=None):
ct = self.converter(record.created)
#serial_con.close()
- def login(self, log_file, log_start_time=None):
+ def login(self, log_file, log_start_time=None, longest_machine_name=10):
try:
self.serial_con = serial_connection(self.get_serial_device(),
username=self.username,
log_file=log_file,
log_start_time=log_start_time,
- name=self.name)
+ name=self.name,
+ longest_machine_name=longest_machine_name)
self.serial_con.login(self.password)
except BaseException as e:
self.log.error("Could not connect to the domain via serial console")
logger = logging.getLogger("nitsi.serial")
class serial_connection():
- def __init__(self, device, username=None, log_file=None, name=None, log_start_time=None):
+ def __init__(self, device, username=None, log_file=None, name=None, log_start_time=None, longest_machine_name=10):
self.buffer = b""
self.back_at_prompt_pattern = None
self.username = username
log_file_handler = logging.FileHandler(self.log_file)
log_file_handler.setLevel(logging.INFO)
log_file_handler.terminator = ""
- formatter = TestFormatter(name=self.name, start_time=log_start_time)
+ formatter = TestFormatter(name=self.name,
+ start_time=log_start_time,
+ longest_machine_name=longest_machine_name)
log_file_handler.setFormatter(formatter)
self.log_output.addHandler(log_file_handler)
# Time to which all serial output log entries are relativ
log_start_time = time.time()
+ # Number of chars of the longest machine name
+ longest_machine_name = self.virtual_environ.longest_machine_name
+
self.log.debug("Try to login on all machines")
for name in self.virtual_environ.machine_names:
self.log.debug("Try to login on {}".format(name))
- self.virtual_machines[name].login("{}/test.log".format(self.log_path), log_start_time)
+ self.virtual_machines[name].login("{}/test.log".format(self.log_path),
+ log_start_time=log_start_time,
+ longest_machine_name=longest_machine_name)
def load_recipe(self):
self.log.info("Going to load the recipe")
self.log.debug(self.machines)
self.log.debug(self.networks)
+ # Number of characters of the longest machine name
+ self._longest_machine_name = 0
+
self.uri = self.config["DEFAULT"]["uri"]
try:
@property
def network_names(self):
- return self.networks
\ No newline at end of file
+ return self.networks
+
+ @property
+ def longest_machine_name(self):
+ if self._longest_machine_name:
+ return self._longest_machine_name
+ else:
+ for _machine in self.machines:
+ if len(_machine) > self._longest_machine_name:
+ self._longest_machine_name = len(_machine)
+
+ return self._longest_machine_name
\ No newline at end of file