From 5f65a780df7c7db5ac6dd1d03776c2e6c8abb3bf Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Tue, 6 Jun 2023 15:50:01 +0200 Subject: [PATCH] create create_log_file_names function --- mpsd-software-environment.py | 63 ++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 33663aa..65e13e2 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -12,6 +12,7 @@ import time from pathlib import Path from typing import List, Tuple, Union import re +from string import Template # If 'rich' is available ("pip install rich" or "apt-get install python3-rich"), # then use coloured output, otherwise proceed as before @@ -36,15 +37,73 @@ config_vars = { # kept inside the mpsd_release folder "cmd_log_file": "install.log", # Placeholder installer log file name, placed at mpsd_microarch/logs - "installer_log_file": f"mpsdrelease_microarch_{call_date_iso}_cmd.log", + "installer_log_template": Template( + "${mpsd_release}_${mpsd_microarch}_${date}_{action}.log" + ), # Placeholder build log file name, placed at mpsd_microarch/logs - "build_log_file": f"mpsdrelease_microarch_{call_date_iso}_specifictoolchain_install.log", + "build_log_template": Template( + "${mpsd_release}_${mpsd_microarch}_${date}_${toolchain}_{action}.log" + ), "metadata_tag_open": "!<meta>", "metadata_tag_close": "</meta>!", "spack_environments_repo": "https://gitlab.gwdg.de/mpsd-cs/spack-environments.git", } +def create_log_file_names( + mpsd_release: str, + mpsd_microarch: str, + action: str, + date: str = call_date_iso, + toolchain: str = None, +) -> Tuple[str, str]: + """Create log file names. + + This function creates the log file names for the installer and + the build log files. + The installer log file is created + from the output of this script except + the toolchain build log that is handled by the spack_setup.sh script. + The build log `tee`'s the output of the spack_setup.sh script to the log file. + The log file names are created using the + template strings defined in config_vars. + + Parameters + ---------- + mpsd_release : str + MPSD software stack version + mpsd_microarch : str + system architecture + date : str + date of the call ins iso format + action : str + action performed (install,remove,reinstall,prepare,status) + only install and remove are valid for build log file. + toolchain : str + toolchain name (only for build log file) + returns : tuple + tuple containing the strings of installer and build log file names + """ + installer_log_file = config_vars["installer_log_template"].substitute( + mpsd_release=mpsd_release, + mpsd_microarch=mpsd_microarch, + date=date, + action=action, + ) + if toolchain and action in ["install", "remove"]: + build_log_file = config_vars["build_log_template"].substitute( + mpsd_release=mpsd_release, + mpsd_microarch=mpsd_microarch, + date=date, + action=action, + toolchain=toolchain, + ) + else: + build_log_file = None + logging.warning("Incorrect action or toolchain name.") + return installer_log_file, build_log_file + + def log_metadata(key: str, value: str) -> None: """Log metadata to the log file. -- GitLab