Files
update/software/upgrade-scripts/26-clean-up-deployment-data.py
T
Luiz Eduardo Bonatti 8277ce1e10 Remove upgrade scripts
With the release of stx11 some scripts were deprecated and will
not be needed on future upgrades, for example, those who were
needed only from stx10 to stx11 upgrade.

PASS: Full major release deployment stx11 to stx12 in DX
PASS: Check upgrade time didn't increased.

Story: 2011357
Task: 53040

Change-Id: Ib33598355a1e98399786553b10b1da334aa56524
Signed-off-by: Luiz Eduardo Bonatti <LuizEduardo.Bonatti@windriver.com>
2025-11-06 16:18:25 +00:00

96 lines
2.8 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'
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':
try:
clean_up_deployment_data(major_release)
restart_etcd_service()
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))
if __name__ == "__main__":
sys.exit(main())