You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.6 KiB

# Copyright (C) 2005-2024 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')