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.
77 lines
3.3 KiB
77 lines
3.3 KiB
# Copyright (C) 2005-2024 Splunk Inc. All Rights Reserved.
|
|
|
|
import os
|
|
from shutil import copyfile
|
|
from migration.utils import remove_file, remove_folder
|
|
from ITOA.setup_logging import getLogger
|
|
|
|
|
|
class VersionMismatchFileFixer:
|
|
'''
|
|
class that is used to remove files that do not belong to the current itsi version.
|
|
Typically used to remove old files which still remain(side effect of untar approach) after the new spl is untarred.
|
|
But this can be used for any files of your choice .
|
|
'''
|
|
backup_folder_name = '.bkup'
|
|
|
|
def __init__(self, list_of_paths, logger=None):
|
|
'''
|
|
@type list_of_paths: list
|
|
@param list_of_paths: list of paths
|
|
'''
|
|
self.list_of_paths = list_of_paths
|
|
|
|
if logger:
|
|
self.logger = logger
|
|
else:
|
|
self.logger = getLogger()
|
|
|
|
def remove_files(self):
|
|
if self.list_of_paths and isinstance(self.list_of_paths, (list, tuple)):
|
|
for path in self.list_of_paths:
|
|
if not os.path.isfile(path):
|
|
self.logger.info("{} is not a file".format(path))
|
|
continue
|
|
try:
|
|
remove_file(path, self.logger)
|
|
except OSError as os_error:
|
|
# if the file cannot be removed say due to permission issue, its appropriate to throw error and
|
|
# return false indicating that the step failed.
|
|
# but the permission denied error is rarest of rare as it is usual to expect a user who does
|
|
# app install/upgrade/migrate to have read/write access to folders inside $SPLUNK_HOME
|
|
self.logger.exception(os_error)
|
|
return False
|
|
except Exception:
|
|
self.logger.error('Failed to remove older Java archive files')
|
|
return False
|
|
|
|
try:
|
|
self.remove_backup_folder(self.list_of_paths[0])
|
|
except OSError as os_error:
|
|
# if the folder cannot be removed say due to permission issue, its appropriate to throw error and
|
|
# return false indicating that the step failed.
|
|
# but the permission denied error is rarest of rare as it is usual to expect a user who does
|
|
# app install/upgrade/migrate to have read/write access to folders inside $SPLUNK_HOME
|
|
self.logger.exception(os_error)
|
|
return False
|
|
except Exception:
|
|
self.logger.error('Failed to remove older Java archive files')
|
|
return False
|
|
else:
|
|
self.logger.info("list_of_paths to be deleted was either None or not one of (list, tuple)")
|
|
return True
|
|
|
|
def get_backup_dir_path(self, file_path):
|
|
backup_dir_path = os.path.join(os.path.dirname(file_path), VersionMismatchFileFixer.backup_folder_name)
|
|
return backup_dir_path
|
|
|
|
def remove_backup_folder(self, backup_path):
|
|
backup_dir_path = self.get_backup_dir_path(backup_path)
|
|
if os.path.exists(backup_dir_path):
|
|
remove_folder(backup_dir_path, self.logger)
|
|
|
|
def execute(self):
|
|
execution_status = self.remove_files()
|
|
# if there was any problem during start of services again, it will be raised as Exception
|
|
return execution_status
|