update/software/service-files/software-controller-init.sh
Heitor Matsui 33cd1e0a1c Avoid duplicate gpg-verify lines in ostree config
Currently the software-controller-init.sh script may append
the config 'gpg-verify=false' to the end of the current feed
and sysroot ostree 'config' files everytime the host reboots.

This commit fix the issue by allowing the script to append the
config only if it does not exist.

Test Plan
PASS: AIO-DX - major release deployment stx8 -> stx10
PASS: verify the feed and sysroot ostree config files

Story: 2010676
Task: 51035

Change-Id: I912d5cb74090d343bb4b4bf9c08f3fec89ac3b78
Signed-off-by: Heitor Matsui <heitorvieira.matsui@windriver.com>
2024-09-17 17:58:11 -03:00

107 lines
2.8 KiB
Bash

#!/bin/bash
#
# Copyright (c) 2023 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# StarlingX Patching Controller setup
# chkconfig: 345 20 24
# description: CGCS Patching Controller init script
### BEGIN INIT INFO
# Provides: software-controller
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Short-Description: software-controller
# Description: Provides the Unified Software Management Controller Daemon
### END INIT INFO
. /usr/bin/tsconfig
NAME=$(basename $0)
REPO_ID=updates
REPO_ROOT=/var/www/pages/${REPO_ID}
REPO_DIR=${REPO_ROOT}/debian/rel-${SW_VERSION}
GROUPS_FILE=$REPO_DIR/comps.xml
PATCHING_DIR=/opt/software
RELEASE=bullseye
SYNCED_SOFTWARE_FILESYSTEM_DIR=${PATCHING_DIR}/synced
logfile=/var/log/software.log
function LOG {
logger "$NAME: $*"
echo "`date "+%FT%T.%3N"`: $NAME: $*" >> $logfile
}
function LOG_TO_FILE {
echo "`date "+%FT%T.%3N"`: $NAME: $*" >> $logfile
}
function do_setup {
# Does the repo exist?
if [ ! -d $REPO_DIR ]; then
LOG "Creating repo."
# TODO(cshort) Remove this once gpg support is added.
FEED_OSTREE_CONFIG="/var/www/pages/feed/rel-${SW_VERSION}/ostree_repo/config"
SYSROOT_OSTREE_CONFIG="/sysroot/ostree/repo/config"
grep -xq "gpg-verify=false" $FEED_OSTREE_CONFIG || sed -i '$a gpg-verify=false' $FEED_OSTREE_CONFIG
grep -xq "gpg-verify=false" $SYSROOT_OSTREE_CONFIG || sed -i '$a gpg-verify=false' $SYSROOT_OSTREE_CONFIG
apt-ostree repo init \
--feed $REPO_DIR \
--release $RELEASE \
--origin $REPO_ID
fi
if [ ! -d $PATCHING_DIR ]; then
LOG "Creating $PATCHING_DIR"
mkdir -p $PATCHING_DIR
fi
if [ ! -d $SYNCED_SOFTWARE_FILESYSTEM_DIR ]; then
LOG "Creating $SYNCED_SOFTWARE_FILESYSTEM_DIR"
mkdir -p $SYNCED_SOFTWARE_FILESYSTEM_DIR
fi
# If we can ping the active controller, sync the repos
LOG_TO_FILE "ping -c 1 -w 1 controller"
ping -c 1 -w 1 controller >> $logfile 2>&1 || ping6 -c 1 -w 1 controller >> $logfile 2>&1
if [ $? -ne 0 ]; then
LOG "Cannot ping controller. Nothing to do"
return 0
fi
# Sync the software dir
LOG_TO_FILE "rsync -acv --delete rsync://controller/software/ ${PATCHING_DIR}/"
rsync -acv --delete rsync://controller/software/ ${PATCHING_DIR}/ >> $logfile 2>&1
# Sync the repo dir
LOG_TO_FILE "rsync -acv --delete rsync://controller/repo/ ${REPO_ROOT}/"
rsync -acv --delete rsync://controller/repo/ ${REPO_ROOT}/ >> $logfile 2>&1
}
case "$1" in
start)
do_setup
;;
status)
;;
stop)
# Nothing to do here
;;
restart)
do_setup
;;
*)
echo "Usage: $0 {status|start|stop|restart}"
exit 1
esac
exit 0