
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>
115 lines
3.7 KiB
Python
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())
|