f978b2bb53
#### Why I did it To fix the timezone sync issue between the containers and the host. If a certain timezone has been configured on the host (SONIC) then the expectation is to reflect the same across all the containers. This will fix [Issue:13046](https://github.com/sonic-net/sonic-buildimage/issues/13046). For instance, a PST timezone has been set on the host and if the user checks the link flap logs (inside the FRR), it shows the UTC timestamp. Ideally, it should be PST.
118 lines
3.9 KiB
Django/Jinja
Executable File
118 lines
3.9 KiB
Django/Jinja
Executable File
#!/usr/bin/env bash
|
|
|
|
# Generate supervisord config file and the start.sh scripts
|
|
mkdir -p /etc/supervisor/conf.d/
|
|
|
|
SENSORS_CONF_FILE="/usr/share/sonic/platform/sensors.conf"
|
|
FANCONTROL_CONF_FILE="/usr/share/sonic/platform/fancontrol"
|
|
|
|
SUPERVISOR_CONF_TEMPLATE="/usr/share/sonic/templates/docker-pmon.supervisord.conf.j2"
|
|
SUPERVISOR_CONF_FILE="/etc/supervisor/conf.d/supervisord.conf"
|
|
PMON_DAEMON_CONTROL_FILE="/usr/share/sonic/platform/pmon_daemon_control.json"
|
|
MODULAR_CHASSISDB_CONF_FILE="/usr/share/sonic/platform/chassisdb.conf"
|
|
|
|
HAVE_SENSORS_CONF=0
|
|
HAVE_FANCONTROL_CONF=0
|
|
IS_MODULAR_CHASSIS=0
|
|
# Default use python2 version
|
|
SONIC_PLATFORM_API_PYTHON_VERSION=2
|
|
|
|
declare -r EXIT_SUCCESS="0"
|
|
|
|
if [ "${RUNTIME_OWNER}" == "" ]; then
|
|
RUNTIME_OWNER="kube"
|
|
fi
|
|
|
|
CTR_SCRIPT="/usr/share/sonic/scripts/container_startup.py"
|
|
if test -f ${CTR_SCRIPT}
|
|
then
|
|
${CTR_SCRIPT} -f pmon -o ${RUNTIME_OWNER} -v ${IMAGE_VERSION}
|
|
fi
|
|
|
|
mkdir -p /var/sonic
|
|
echo "# Config files managed by sonic-config-engine" > /var/sonic/config_status
|
|
|
|
# If this platform has synchronization script, run it
|
|
if [ -e /usr/share/sonic/platform/platform_wait ]; then
|
|
/usr/share/sonic/platform/platform_wait
|
|
EXIT_CODE="$?"
|
|
if [ "${EXIT_CODE}" != "${EXIT_SUCCESS}" ]; then
|
|
exit "${EXIT_CODE}"
|
|
fi
|
|
fi
|
|
|
|
# If the Python 2 sonic-platform package is not installed, try to install it
|
|
python2 -c "import sonic_platform" > /dev/null 2>&1 || pip2 show sonic-platform > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
SONIC_PLATFORM_WHEEL="/usr/share/sonic/platform/sonic_platform-1.0-py2-none-any.whl"
|
|
echo "sonic-platform package not installed, attempting to install..."
|
|
if [ -e ${SONIC_PLATFORM_WHEEL} ]; then
|
|
pip2 install ${SONIC_PLATFORM_WHEEL}
|
|
if [ $? -eq 0 ]; then
|
|
echo "Successfully installed ${SONIC_PLATFORM_WHEEL}"
|
|
else
|
|
echo "Error: Failed to install ${SONIC_PLATFORM_WHEEL}"
|
|
fi
|
|
else
|
|
echo "Error: Unable to locate ${SONIC_PLATFORM_WHEEL}"
|
|
fi
|
|
fi
|
|
|
|
# If the Python 3 sonic-platform package is not installed, try to install it
|
|
python3 -c "import sonic_platform" > /dev/null 2>&1 || pip3 show sonic-platform > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
SONIC_PLATFORM_WHEEL="/usr/share/sonic/platform/sonic_platform-1.0-py3-none-any.whl"
|
|
echo "sonic-platform package not installed, attempting to install..."
|
|
if [ -e ${SONIC_PLATFORM_WHEEL} ]; then
|
|
pip3 install ${SONIC_PLATFORM_WHEEL}
|
|
if [ $? -eq 0 ]; then
|
|
echo "Successfully installed ${SONIC_PLATFORM_WHEEL}"
|
|
SONIC_PLATFORM_API_PYTHON_VERSION=3
|
|
else
|
|
echo "Error: Failed to install ${SONIC_PLATFORM_WHEEL}"
|
|
fi
|
|
else
|
|
echo "Error: Unable to locate ${SONIC_PLATFORM_WHEEL}"
|
|
fi
|
|
else
|
|
SONIC_PLATFORM_API_PYTHON_VERSION=3
|
|
fi
|
|
|
|
{% if CONFIGURED_PLATFORM == "mellanox" %}
|
|
SENSORS_CONF_PATH_GETTER="/usr/share/sonic/platform/get_sensors_conf_path"
|
|
if [ -e $SENSORS_CONF_PATH_GETTER ]; then
|
|
SENSORS_CONF_FILE=$($SENSORS_CONF_PATH_GETTER 2>&1)
|
|
fi
|
|
{% endif %}
|
|
|
|
if [ -e $SENSORS_CONF_FILE ]; then
|
|
HAVE_SENSORS_CONF=1
|
|
mkdir -p /etc/sensors.d
|
|
/bin/cp -f $SENSORS_CONF_FILE /etc/sensors.d/sensors.conf
|
|
fi
|
|
|
|
if [ -e $FANCONTROL_CONF_FILE ]; then
|
|
HAVE_FANCONTROL_CONF=1
|
|
rm -f /var/run/fancontrol.pid
|
|
/bin/cp -f $FANCONTROL_CONF_FILE /etc/
|
|
fi
|
|
|
|
if [ -e $MODULAR_CHASSISDB_CONF_FILE ]; then
|
|
IS_MODULAR_CHASSIS=1
|
|
fi
|
|
|
|
confvar="{\"HAVE_SENSORS_CONF\":$HAVE_SENSORS_CONF, \"HAVE_FANCONTROL_CONF\":$HAVE_FANCONTROL_CONF, \"API_VERSION\":$SONIC_PLATFORM_API_PYTHON_VERSION, \"IS_MODULAR_CHASSIS\":$IS_MODULAR_CHASSIS}"
|
|
|
|
if [ -e $PMON_DAEMON_CONTROL_FILE ];
|
|
then
|
|
sonic-cfggen -d -j $PMON_DAEMON_CONTROL_FILE -a "$confvar" -t $SUPERVISOR_CONF_TEMPLATE > $SUPERVISOR_CONF_FILE
|
|
else
|
|
sonic-cfggen -d -a "$confvar" -t $SUPERVISOR_CONF_TEMPLATE > $SUPERVISOR_CONF_FILE
|
|
fi
|
|
|
|
TZ=$(cat /etc/timezone)
|
|
rm -rf /etc/localtime
|
|
ln -sf /usr/share/zoneinfo/$TZ /etc/localtime
|
|
|
|
exec /usr/local/bin/supervisord
|