Files
update/software/scripts/sync-controllers-feed
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

103 lines
2.7 KiB
Python

#!/usr/bin/python3
# -*- encoding: utf-8 -*-
#
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright (c) 2023-2024 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
"""
Run feed synchronization between controllers
"""
import logging
import os
import socket
import subprocess
import sys
import upgrade_utils
CONTROLLER_0_HOSTNAME = "controller-0"
CONTROLLER_1_HOSTNAME = "controller-1"
SYSTEM_MODE_SIMPLEX = "simplex"
LOG = logging.getLogger('main_logger')
def sync_controllers(feed):
controller = socket.gethostname()
controller = CONTROLLER_1_HOSTNAME if \
controller == CONTROLLER_0_HOSTNAME else CONTROLLER_0_HOSTNAME
LOG.info(f"Synchronizing feed with {controller}...")
cmd = [
"rsync",
"-ac",
"--delete",
"--exclude", "tmp",
feed,
f"rsync://{controller}/feed"
]
subprocess.run(cmd, check=True, text=True, capture_output=True)
def print_usage(sys_argv):
script_name = sys_argv[0]
print("Usage: %s --feed=<feed>" % script_name)
def get_system_mode():
system_mode=None
with open(os.devnull, "w") as fnull:
cmd = "bash -c 'grep system_mode /etc/platform/platform.conf'"
process = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True,
executable='/bin/bash')
stdout, stderr = process.communicate()
output = stdout.decode("utf-8").strip()
error_output = stderr.decode("utf-8").strip()
if process.returncode == 0:
system_mode = output.split('=')[1]
else:
LOG.error(f"Error: {error_output}")
return system_mode
def main(sys_argv):
args = upgrade_utils.parse_arguments(sys_argv)
try:
feed = args["feed"]
system_mode = get_system_mode()
if system_mode is None:
LOG.error("Unable to get the system mode.")
return 1
elif system_mode == SYSTEM_MODE_SIMPLEX:
LOG.info("System mode is simplex. Skipping sync controllers feed.")
return 0
sync_controllers(feed)
LOG.info("Feed synchronized between controllers.")
except KeyError as e:
msg = "%s is not provided" % str(e)
LOG.error(msg)
print(msg)
print_usage(sys_argv)
return 1
except subprocess.CalledProcessError as e:
LOG.exception("Feed synchronization command failed. Error: %s", e.stderr)
return 1
except Exception as e:
LOG.exception("Feed synchronization failed. Error: %s", e)
return 1
if __name__ == "__main__":
upgrade_utils.configure_logging('/var/log/software.log', log_level=logging.INFO)
sys.exit(main(sys.argv))