From ff2689b9495ee6bbf7dcde921dd981b6bebf1ba7 Mon Sep 17 00:00:00 2001 From: Plamen Dimitrov Date: Fri, 17 Nov 2023 14:09:31 +0200 Subject: [PATCH] Drop usage of placeholder session log file attribute Since we are handling the complete log file setup and cleanup on the Avocado VT side we can use the more powerful close hook approach to provide the log file path via currying and a function wrapper. Signed-off-by: Plamen Dimitrov --- virttest/libvirt_vm.py | 3 +-- virttest/qemu_vm.py | 3 +-- virttest/remote.py | 3 +-- virttest/utils_logfile.py | 10 +++++++--- virttest/utils_misc.py | 2 +- virttest/virt_vm.py | 6 +++--- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/virttest/libvirt_vm.py b/virttest/libvirt_vm.py index 9284654ab90..a62e83958f4 100644 --- a/virttest/libvirt_vm.py +++ b/virttest/libvirt_vm.py @@ -1472,8 +1472,7 @@ def _create_serial_console(self): self.serial_console_log = os.path.join(utils_logfile.get_log_file_dir(), output_filename) # Cause serial_console.close() to close open log file - self.serial_console.set_log_file(self.serial_console_log) - self.serial_console.close_hooks += [utils_logfile.close_own_log_file] + self.serial_console.close_hooks += [utils_logfile.close_own_log_file(self.serial_console_log)] def set_root_serial_console(self, device, remove=False): """ diff --git a/virttest/qemu_vm.py b/virttest/qemu_vm.py index 2ef256721ba..a354e3df87e 100644 --- a/virttest/qemu_vm.py +++ b/virttest/qemu_vm.py @@ -3534,8 +3534,7 @@ def create(self, name=None, params=None, root_dir=None, auto_close=False, output_func=utils_logfile.log_line, output_params=(outfile,)) - self.logsessions[key].set_log_file(outfile) - self.logsessions[key].close_hooks += [utils_logfile.close_own_log_file] + self.logsessions[key].close_hooks += [utils_logfile.close_own_log_file(outfile)] # Wait for IO channels setting up completely, # such as serial console. diff --git a/virttest/remote.py b/virttest/remote.py index 9e4eabfbf66..b442e463f55 100644 --- a/virttest/remote.py +++ b/virttest/remote.py @@ -86,8 +86,7 @@ def remote_commander(client, host, port, username, password, prompt, log_file = utils_logfile.get_log_filename(log_filename) session.set_output_func(utils_logfile.log_line) session.set_output_params((log_file,)) - session.set_log_file(log_file) - session.close_hooks += [utils_logfile.close_own_log_file] + session.close_hooks += [utils_logfile.close_own_log_file(log_file)] session.send_ctrl("raw") # Wrap io interfaces. diff --git a/virttest/utils_logfile.py b/virttest/utils_logfile.py index ecdb3dfd539..e5c08d8311d 100644 --- a/virttest/utils_logfile.py +++ b/virttest/utils_logfile.py @@ -167,6 +167,10 @@ def close_log_file(filename): _log_lock.release() -def close_own_log_file(self): - """Closing hook for sessions whose log_file attribute should be passed along.""" - close_log_file(self.log_file) +def close_own_log_file(log_file): + """Closing hook for sessions with log_file managed locally.""" + + def hook(self): + close_log_file(log_file) + + return hook diff --git a/virttest/utils_misc.py b/virttest/utils_misc.py index c71fad80736..eff7bcc910c 100644 --- a/virttest/utils_misc.py +++ b/virttest/utils_misc.py @@ -439,7 +439,7 @@ def get_log_filename(filename): def close_log_file(filename): logging.warning("Calling log functions from `utils_misc` is deprecated, " "please use `utils_logfile` for the purpose") - return utils_logfile.close_log_file() + return utils_logfile.close_log_file(filename) # The following are miscellaneous utility functions. diff --git a/virttest/virt_vm.py b/virttest/virt_vm.py index 4d0de7a2d89..f8934480b7c 100644 --- a/virttest/virt_vm.py +++ b/virttest/virt_vm.py @@ -1113,9 +1113,9 @@ def login(self, nic_index=0, timeout=LOGIN_TIMEOUT, log_function = utils_logfile.log_line session = remote.remote_login(client, address, port, username, password, prompt, linesep, - log_filename, log_function, - timeout, interface=neigh_attach_if) - session.close_hooks += [utils_logfile.close_own_log_file] + log_function=log_function, + timeout=timeout, interface=neigh_attach_if) + session.close_hooks += [utils_logfile.close_own_log_file(log_filename)] session.set_status_test_command(self.params.get("status_test_command", "")) self.remote_sessions.append(session)