Files
update/software/upgrade-scripts/26-clean-up-deployment-data.py
Luis Eduardo Bonatti 9520ba3f8b Revert "Make configure_logging more robust."
This reverts commit fedd7d1995.

Reason for revert: Activate rollback is broken with this change. Reverting to cover the rollback scenario as well.

Change-Id: I10163cf3e2c4a532d351cb952c7dbd4484661816
Signed-off-by: Luis Eduardo Bonatti <LuizEduardo.Bonatti@windriver.com>
2025-08-20 13:38:14 +00:00

115 lines
3.7 KiB
Python

#!/usr/bin/env python
# Copyright (c) 2025 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# This script will remove the etcd folder of upgrade.
#
#
import logging
import os
import shutil
import subprocess
import sys
from software.utilities.constants import SW_VERSION
from software import constants
from software import utils
from software.utilities.utils import configure_logging
LOG = logging.getLogger('main_logger')
ETCD_DIR_NAME = 'db'
UPGRADE_FLAG_NAME = '.upgrade'
ROLLBACK_FLAG_NAME = '.rollback'
def main():
action = None
from_release = None
to_release = None
arg = 1
while arg < len(sys.argv):
if arg == 1:
from_release = sys.argv[arg]
elif arg == 2:
to_release = sys.argv[arg]
elif arg == 3:
action = sys.argv[arg]
elif arg == 4:
# postgres_port = sys.argv[arg]
pass
else:
print("Invalid option %s." % sys.argv[arg])
return 1
arg += 1
configure_logging()
LOG.info(
"%s invoked from_release = %s to_release = %s action = %s"
% (sys.argv[0], from_release, to_release, action)
)
res = 0
from_major_release = utils.get_major_release_version(from_release)
to_major_release = utils.get_major_release_version(to_release)
if SW_VERSION == from_major_release:
major_release = to_major_release
else:
major_release = from_major_release
# Check delete action, upgrade and rollback scenario.
if action == 'delete' and (to_major_release == '25.09' or (from_major_release == '25.09'
and to_major_release == '24.09')):
try:
clean_up_deployment_data(major_release)
create_etcd_flag(from_major_release)
except Exception as e:
LOG.exception("Error: {}".format(e))
res = 1
return res
def clean_up_deployment_data(major_release):
"""
Clean up all data generated during deployment.
:param major_release: Major release to be deleted.
"""
# Delete the data inside /opt/platform/<folder>/<major_release>
for folder in constants.DEPLOY_CLEANUP_FOLDERS_NAME:
path = os.path.join(constants.PLATFORM_PATH, folder, major_release, "")
shutil.rmtree(path, ignore_errors=True)
upgrade_folders = [
os.path.join(constants.POSTGRES_PATH, constants.UPGRADE),
os.path.join(constants.POSTGRES_PATH, major_release),
os.path.join(constants.RABBIT_PATH, major_release),
]
for folder in upgrade_folders:
shutil.rmtree(folder, ignore_errors=True)
LOG.info("Folder %s removed with success.", folder)
def restart_etcd_service():
try:
subprocess.run(["/usr/bin/sm-restart-safe", "service", "etcd"], check=True)
LOG.info("Restarted etcd service")
except subprocess.CalledProcessError as e:
LOG.error("Error restarting etcd: %s", str(e))
def create_etcd_flag(from_release):
"""
Creates the right flag accordingly to upgrade or rollback
"""
if utils.compare_release_version(SW_VERSION, from_release) and from_release == '24.09':
etcd_upgrade_flag_path = os.path.join(constants.ETCD_PATH, UPGRADE_FLAG_NAME)
subprocess.run(["touch", etcd_upgrade_flag_path], check=True)
LOG.info("Flag %s created.", etcd_upgrade_flag_path)
else:
etcd_rollback_flag_path = os.path.join(constants.ETCD_PATH, ROLLBACK_FLAG_NAME)
subprocess.run(["touch", etcd_rollback_flag_path], check=True)
LOG.info("Flag %s created.", etcd_rollback_flag_path)
restart_etcd_service()
if __name__ == "__main__":
sys.exit(main())