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