mirror of
https://github.com/Telecominfraproject/ols-nos.git
synced 2025-12-15 20:37:13 +00:00
Add pmon daemons python3 build support (#6176)
**- 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
This commit is contained in:
@@ -5,45 +5,102 @@ 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, \"IS_MODULAR_CHASSIS\":$IS_MODULAR_CHASSIS}"
|
||||
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 /usr/share/sonic/platform/pmon_daemon_control.json ];
|
||||
if [ -e $PMON_DAEMON_CONTROL_FILE ];
|
||||
then
|
||||
sonic-cfggen -j /usr/share/sonic/platform/pmon_daemon_control.json -a "$confvar" -t /usr/share/sonic/templates/docker-pmon.supervisord.conf.j2 > /etc/supervisor/conf.d/supervisord.conf
|
||||
sonic-cfggen -j $PMON_DAEMON_CONTROL_FILE -a "$confvar" -t $SUPERVISOR_CONF_TEMPLATE > $SUPERVISOR_CONF_FILE
|
||||
else
|
||||
sonic-cfggen -a "$confvar" -t /usr/share/sonic/templates/docker-pmon.supervisord.conf.j2 > /etc/supervisor/conf.d/supervisord.conf
|
||||
fi
|
||||
|
||||
# If this platform has an lm-sensors config file, copy it to its proper place
|
||||
if [ $HAVE_SENSORS_CONF -eq 1 ]; then
|
||||
mkdir -p /etc/sensors.d
|
||||
/bin/cp -f $SENSORS_CONF_FILE /etc/sensors.d/
|
||||
fi
|
||||
|
||||
# If this platform has a fancontrol config file, copy it to its proper place
|
||||
if [ $HAVE_FANCONTROL_CONF -eq 1 ]; then
|
||||
# Remove stale pid file if it exists
|
||||
rm -f /var/run/fancontrol.pid
|
||||
|
||||
/bin/cp -f $FANCONTROL_CONF_FILE /etc/
|
||||
sonic-cfggen -a "$confvar" -t $SUPERVISOR_CONF_TEMPLATE > $SUPERVISOR_CONF_FILE
|
||||
fi
|
||||
|
||||
exec /usr/local/bin/supervisord
|
||||
|
||||
Reference in New Issue
Block a user