Files
update/software/service-files/usm-initialize-init.sh
junfeng-li 1514bbea60 Add nodetype check for service preset
This commit is to add the nodetype check during USM initialize
service to ensure the controller preset only exists in AIO controller.

This commit is to fix the issue where in AIO + Worker system, the
controller preset is incorrectly existing in worker node.

Test Plan:

PASS: build and deploy iso
PASS: ensure the controller preset not present in worker node
          in AIO+Worker system

Task: 51528
Story: 2010676

Change-Id: I827fa091ccf10f8e8d1c43f1122cd08ab1b40e78
Signed-off-by: junfeng-li <junfeng.li@windriver.com>
2025-01-09 21:13:33 +00:00

217 lines
8.9 KiB
Bash
Executable File

#! /bin/sh
#
# Copyright (c) 2025 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" -a "${nodetype}" == "controller"] ; 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 or AIO-Worker 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