# Copyright (C) 2005-2025 Splunk Inc. All Rights Reserved. import os import glob from ITOA.setup_logging import getLogger from itsi.itsi_utils import ITOAInterfaceUtils from ITOA.version_check import VersionCheck from splunk.clilib.bundle_paths import make_splunkhome_path class RenameRELogFiles: """ Class for renaming rules engine old log files to new file name format i.e. itsi_rules_engine-X.log to itsi_rules_engine.log.X itsi_correlation_engine-X.log to itsi_correlation_engine.log.X """ def __init__(self, session_key, logger=None): self.session_key = session_key self.itsi_re_log_files_location = make_splunkhome_path(['var', 'log', 'splunk', 'itsi_*_engine-*.log']) self.old_version = None self.key = None if logger: self.logger = logger else: self.logger = getLogger() def run(self): """ Rename rule engine log files to new log file format i.e. itsi_rules_engine-X.log to itsi_rules_engine.log.X itsi_correlation_engine-X.log to itsi_correlation_engine.log.X """ try: self.old_version, self.key = ITOAInterfaceUtils.get_version_from_kv(self.session_key) # Make sure old version is valid if self.old_version: VersionCheck.validate_version(self.old_version) except Exception: self.logger.exception('Failed to retrieve Splunk version') return # only run if the old_version is less than 4.4 if self.old_version and VersionCheck.compare(self.old_version, '4.4') < 0: try: for filename in glob.glob(self.itsi_re_log_files_location): if not os.path.isfile(filename): continue # get file name and extension. Here file name would be 'itsi_rules_engine-X' and extension '.log' base_file, ext = os.path.splitext(filename) # split file name by '-' data = base_file.split("-") # create new file name in the format - 'itsi_rules_engine.log.X' dst = data[0] + ext + "." + data[1] self.logger.info("Renaming rules engine log file - " + filename + " to - " + dst) # rename() function will rename the file os.rename(filename, dst) except Exception: self.logger.exception('Failed to rename rule engine log file name(s)') else: self.logger.info('No renaming of rules engine log file(s) required')