51f896b33e
**- Why I did it** python2 is end of life and SONiC is going to support python3. This PR is going to support: 1. Build pmon daemons with python3 2. Install and run python3 version pmon daemons **- How I did it** 1. Change pmon daemons make files to build bothe python2 and python3 whl 2. Change docker-platform-monitor make files to install both python2 and python3 whl 3. Change pmon docker startup files to start pmon daemons according to the supported platform API version
107 lines
3.6 KiB
Bash
Executable File
107 lines
3.6 KiB
Bash
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 [ -e $SENSORS_CONF_FILE ]; then
|
|
HAVE_SENSORS_CONF=1
|
|
mkdir -p /etc/sensors.d
|
|
/bin/cp -f $SENSORS_CONF_FILE /etc/sensors.d/
|
|
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 -j $PMON_DAEMON_CONTROL_FILE -a "$confvar" -t $SUPERVISOR_CONF_TEMPLATE > $SUPERVISOR_CONF_FILE
|
|
else
|
|
sonic-cfggen -a "$confvar" -t $SUPERVISOR_CONF_TEMPLATE > $SUPERVISOR_CONF_FILE
|
|
fi
|
|
|
|
exec /usr/local/bin/supervisord
|