update/software/service-files/usm-initialize-init.sh
mmachado 196534120c Remove sw-patch-agent service
sw-patch-agent service would cause unwanted
reboots and conflicts with the USM patching strategy:

sw-patch-agent can interfere with software-agent and incorrectly
flag the host as reboot-required after noticing that it's not
patch-current by sw-patch standards

Logs will typically look like this before each reboot:

sw-patch-agent[2049]: patch_agent.py(390): INFO: Active Sysroot
Commit:650ace717b24afd2e7283cc6ce8b01f13adce84db95e03685610e120424610b9
does not match active controller's Feed Repo Commit:
028e1fa688afaa27aa7a34d4b5ee9eeb8d188b691ba3e558c409bb58e0e83fe2
sw-patch: Node has been patched, with reboot-required flag set.
Rebooting

Since sw-patch-agent is no longer needed, it's to be removed.

Depends-On: https://review.opendev.org/c/starlingx/stx-puppet/+/935555

Test-Plan:
PASS: AIO-SX upgrade using sw-manager strategy
PASS: AIO-DX System Controller upgrade using strategy
PASS: subcloud upgrade using dcmanager strategy
PASS: DC patch orchestration for n-1 subclouds

Story: 2010676
Task: 51387

Change-Id: I2af7dfab9da89eeba4ffef3fa0d884ae6f2c354f
Signed-off-by: mmachado <mmachado@windriver.com>
2024-11-25 15:05:33 +00:00

217 lines
8.8 KiB
Bash
Executable File

#! /bin/sh
#
# Copyright (c) 2024 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
### BEGIN INIT INFO
# Description: usm-initialize
#
# Short-Description: USM initialize service.
# Provides: usm-initialize
# Required-Start:
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 3 5
### END INIT INFO
logfile="/var/log/software.log"
INITIAL_CONFIG_COMPLETE="/etc/platform/.initial_config_complete"
SERVICE_NAME="usm-initialize.service"
PXELINUX_SYMLINK="/var/pxeboot/pxelinux.cfg"
. /etc/platform/platform.conf
export controller=false
export worker=false
export storage=false
if [ "${nodetype}" == "controller" ]; then
controller=true
if [ "${subfunction}" == "controller,worker" ]; then
worker=true
fi
fi
if [ "${nodetype}" == "worker" ]; then
worker=true
fi
if [ "${nodetype}" == "storage" ]; then
storage=true
fi
log() {
echo "`date "+%FT%T.%3N"`: $0: $*" >> $logfile
}
set_presets() {
log "apply preset"
if [ "${system_type}" == "All-in-one" ] ; then
log "AIO System"
if [[ "${subfunction}" =~ "lowlatency" ]] ; then
log "System is lowlatency"
ln -sf /usr/share/systemd-presets/lowlatency.preset /etc/systemd/system-preset/10-aio.preset
else
ln -sf /usr/share/systemd-presets/aio.preset /etc/systemd/system-preset/10-aio.preset
fi
else
log "Standard System"
log "Setting ${nodetype} preset"
if [[ "${nodetype}" == "worker" ]] ; then
if [[ "${subfunction}" =~ "lowlatency" ]] ; then
log "System is lowlatency"
ln -sf /usr/share/systemd-presets/worker-lowlatency.preset /etc/systemd/system-preset/10-worker.preset
else
ln -sf /usr/share/systemd-presets/worker.preset /etc/systemd/system-preset/10-worker.preset
fi
elif [ "${nodetype}" == "storage" ] ; then
ln -sf /usr/share/systemd-presets/storage.preset /etc/systemd/system-preset/10-storage.preset
else
ln -sf /usr/share/systemd-presets/controller.preset /etc/systemd/system-preset/10-controller.preset
fi
fi
systemctl daemon-reload
systemctl preset-all --preset-mode=full
}
refresh_init_links() {
log "setup goenable and host config"
# below should be identical to kickstart.cfg operations, as if setting up from a fresh install
if [ ! "${controller}" = true -a "${worker}" = true ] ; then
ln -s /etc/goenabled.d/config_goenabled_check.sh.worker /etc/goenabled.d/config_goenabled_check.sh
ln -s /dev/null /etc/systemd/system/controllerconfig.service
ln -s /dev/null /etc/systemd/system/storageconfig.service
elif [ "${storage}" = true ] ; then
ln -s /etc/goenabled.d/config_goenabled_check.sh.storage /etc/goenabled.d/config_goenabled_check.sh
ln -s /dev/null /etc/systemd/system/controllerconfig.service
ln -s /dev/null /etc/systemd/system/workerconfig.service
elif [ "${controller}" = true ] ; then
ln -s /etc/goenabled.d/config_goenabled_check.sh.controller /etc/goenabled.d/config_goenabled_check.sh
ln -s /dev/null /etc/systemd/system/workerconfig.service
ln -s /dev/null /etc/systemd/system/storageconfig.service
fi
chmod 700 /etc/goenabled.d/config_goenabled_check.sh
log "Refresh /etc/pmon.d"
rm -rf /etc/pmon.d
mkdir /etc/pmon.d -p
# below create pmon link for new pmon monitored daemons
if [ "${controller}" = true ] ; then
ln -s /usr/share/starlingx/pmon.d/acpid.conf /etc/pmon.d/acpid.conf
ln -s /usr/share/starlingx/pmon.d/containerd.conf /etc/pmon.d/containerd.conf
ln -s /usr/share/starlingx/pmon.d/docker.conf /etc/pmon.d/docker.conf
ln -s /usr/share/starlingx/pmon.d/fm-api.conf /etc/pmon.d/fm-api.conf
ln -s /usr/share/starlingx/pmon.d/fsmon.conf /etc/pmon.d/fsmon.conf
ln -s /usr/share/starlingx/pmon.d/hbsAgent.conf /etc/pmon.d/hbsAgent.conf
ln -s /usr/share/starlingx/pmon.d/hbsClient.conf /etc/pmon.d/hbsClient.conf
ln -s /usr/share/starlingx/pmon.d/lmon.conf /etc/pmon.d/lmon.conf
ln -s /usr/share/starlingx/pmon.d/logmgmt /etc/pmon.d/logmgmt
ln -s /usr/share/starlingx/pmon.d/mtcClient.conf /etc/pmon.d/mtcClient.conf
ln -s /usr/share/starlingx/pmon.d/mtcalarm.conf /etc/pmon.d/mtcalarm.conf
ln -s /usr/share/starlingx/pmon.d/mtclogd.conf /etc/pmon.d/mtclogd.conf
ln -s /usr/share/starlingx/pmon.d/sm-api.conf /etc/pmon.d/sm-api.conf
ln -s /usr/share/starlingx/pmon.d/sm-eru.conf /etc/pmon.d/sm-eru.conf
ln -s /usr/share/starlingx/pmon.d/sm.conf /etc/pmon.d/sm.conf
ln -s /usr/share/starlingx/pmon.d/sshd.conf /etc/pmon.d/sshd.conf
ln -s /usr/share/starlingx/pmon.d/sssd.conf /etc/pmon.d/sssd.conf
ln -s /usr/share/starlingx/pmon.d/sw-patch-controller-daemon.conf /etc/pmon.d/sw-patch-controller-daemon.conf
ln -s /usr/share/starlingx/pmon.d/sysinv-agent.conf /etc/pmon.d/sysinv-agent.conf
ln -s /usr/share/starlingx/pmon.d/syslog-ng.conf /etc/pmon.d/syslog-ng.conf
ln -s /usr/share/starlingx/pmon.d/luks.conf /etc/pmon.d/luks.conf
ln -s /usr/share/starlingx/pmon.d/ipsec-server.conf /etc/pmon.d/ipsec-server.conf
ln -s /usr/share/starlingx/pmon.d/software-controller-daemon.conf /etc/pmon.d/software-controller-daemon.conf
ln -s /usr/share/starlingx/pmon.d/software-agent.conf /etc/pmon.d/software-agent.conf
fi
if [ "${worker}" = true ] ; then
ln -s /usr/share/starlingx/pmon.d/acpid.conf /etc/pmon.d/acpid.conf
ln -s /usr/share/starlingx/pmon.d/containerd.conf /etc/pmon.d/containerd.conf
ln -s /usr/share/starlingx/pmon.d/docker.conf /etc/pmon.d/docker.conf
ln -s /usr/share/starlingx/pmon.d/fsmon.conf /etc/pmon.d/fsmon.conf
ln -s /usr/share/starlingx/pmon.d/hbsClient.conf /etc/pmon.d/hbsClient.conf
ln -s /usr/share/starlingx/pmon.d/isolcpu_plugin.conf /etc/pmon.d/isolcpu_plugin.conf
ln -s /usr/share/starlingx/pmon.d/lmon.conf /etc/pmon.d/lmon.conf
ln -s /usr/share/starlingx/pmon.d/logmgmt /etc/pmon.d/logmgmt
ln -s /usr/share/starlingx/pmon.d/mtcClient.conf /etc/pmon.d/mtcClient.conf
ln -s /usr/share/starlingx/pmon.d/mtcalarm.conf /etc/pmon.d/mtcalarm.conf
ln -s /usr/share/starlingx/pmon.d/mtclogd.conf /etc/pmon.d/mtclogd.conf
ln -s /usr/share/starlingx/pmon.d/sm-eru.conf /etc/pmon.d/sm-eru.conf
ln -s /usr/share/starlingx/pmon.d/sshd.conf /etc/pmon.d/sshd.conf
ln -s /usr/share/starlingx/pmon.d/sssd.conf /etc/pmon.d/sssd.conf
ln -s /usr/share/starlingx/pmon.d/sysinv-agent.conf /etc/pmon.d/sysinv-agent.conf
ln -s /usr/share/starlingx/pmon.d/syslog-ng.conf /etc/pmon.d/syslog-ng.conf
fi
if [ "${storage}" = true ] ; then
ln -s /usr/share/starlingx/pmon.d/acpid.conf /etc/pmon.d/acpid.conf
ln -s /usr/share/starlingx/pmon.d/containerd.conf /etc/pmon.d/containerd.conf
ln -s /usr/share/starlingx/pmon.d/docker.conf /etc/pmon.d/docker.conf
ln -s /usr/share/starlingx/pmon.d/fsmon.conf /etc/pmon.d/fsmon.conf
ln -s /usr/share/starlingx/pmon.d/hbsClient.conf /etc/pmon.d/hbsClient.conf
ln -s /usr/share/starlingx/pmon.d/lmon.conf /etc/pmon.d/lmon.conf
ln -s /usr/share/starlingx/pmon.d/logmgmt /etc/pmon.d/logmgmt
ln -s /usr/share/starlingx/pmon.d/mtcClient.conf /etc/pmon.d/mtcClient.conf
ln -s /usr/share/starlingx/pmon.d/mtcalarm.conf /etc/pmon.d/mtcalarm.conf
ln -s /usr/share/starlingx/pmon.d/mtclogd.conf /etc/pmon.d/mtclogd.conf
ln -s /usr/share/starlingx/pmon.d/sm-eru.conf /etc/pmon.d/sm-eru.conf
ln -s /usr/share/starlingx/pmon.d/sshd.conf /etc/pmon.d/sshd.conf
ln -s /usr/share/starlingx/pmon.d/sssd.conf /etc/pmon.d/sssd.conf
ln -s /usr/share/starlingx/pmon.d/sysinv-agent.conf /etc/pmon.d/sysinv-agent.conf
ln -s /usr/share/starlingx/pmon.d/syslog-ng.conf /etc/pmon.d/syslog-ng.conf
fi
}
reset_initial_config_complete() {
if [[ -f ${INITIAL_CONFIG_COMPLETE} ]]; then
log "Removing ${INITIAL_CONFIG_COMPLETE}"
rm ${INITIAL_CONFIG_COMPLETE} || log "Failed to remove ${INITIAL_CONFIG_COMPLETE}"
fi
}
disable_service() {
systemctl disable $SERVICE_NAME
rc=$?
if [ $rc -ne 0 ]; then
log "Failed to disable $SERVICE_NAME"
else
log "Disabled $SERVICE_NAME"
fi
}
remove_pxelinux_symlink() {
if [[ -h $PXELINUX_SYMLINK ]]; then
unlink $PXELINUX_SYMLINK
log "Removed ${PXELINUX_SYMLINK} symlink"
fi
}
start() {
set_presets
refresh_init_links
reset_initial_config_complete
disable_service
remove_pxelinux_symlink
}
case "$1" in
start)
start
exit 0
;;
stop)
;;
status)
;;
restart)
;;
reload)
;;
force-reload)
;;
*)
esac
exit 0