85 lines
2.6 KiB
Bash
Executable File
85 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
start() {
|
|
# Wait for redis server start before database clean
|
|
until [[ $(/usr/bin/docker exec database redis-cli ping | grep -c PONG) -gt 0 ]];
|
|
do sleep 1;
|
|
done
|
|
|
|
# Wait for configDB initialization
|
|
until [[ $(/usr/bin/docker exec database redis-cli -n 4 GET "CONFIG_DB_INITIALIZED") ]];
|
|
do sleep 1;
|
|
done
|
|
|
|
SYSTEM_WARM_START=`/usr/bin/docker exec database redis-cli -n 4 HGET "WARM_RESTART|system" enable`
|
|
SWSS_WARM_START=`/usr/bin/docker exec database redis-cli -n 4 HGET "WARM_RESTART|swss" enable`
|
|
# if warm start enabled, just do swss docker start.
|
|
# Don't flush DB or try to start other modules.
|
|
if [[ "$SYSTEM_WARM_START" == "true" ]] || [[ "$SWSS_WARM_START" == "true" ]]; then
|
|
RESTART_COUNT=`redis-cli -n 6 hget "WARM_RESTART_TABLE|orchagent" restart_count`
|
|
# We have to make sure db data has not been flushed.
|
|
if [[ -n "$RESTART_COUNT" ]]; then
|
|
/usr/bin/swss.sh start
|
|
/usr/bin/swss.sh attach
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
# Flush DB
|
|
/usr/bin/docker exec database redis-cli -n 0 FLUSHDB
|
|
/usr/bin/docker exec database redis-cli -n 1 FLUSHDB
|
|
/usr/bin/docker exec database redis-cli -n 2 FLUSHDB
|
|
/usr/bin/docker exec database redis-cli -n 5 FLUSHDB
|
|
/usr/bin/docker exec database redis-cli -n 6 FLUSHDB
|
|
|
|
# platform specific tasks
|
|
if [ x$sonic_asic_platform == x'mellanox' ]; then
|
|
FAST_BOOT=1
|
|
/usr/bin/mst start
|
|
/usr/bin/mlnx-fw-upgrade.sh
|
|
/etc/init.d/sxdkernel start
|
|
/sbin/modprobe i2c-dev
|
|
/etc/mlnx/mlnx-hw-management start
|
|
elif [ x$sonic_asic_platform == x'cavium' ]; then
|
|
/etc/init.d/xpnet.sh start
|
|
fi
|
|
|
|
# start swss and syncd docker
|
|
/usr/bin/swss.sh start
|
|
/usr/bin/syncd.sh start
|
|
/usr/bin/swss.sh attach
|
|
}
|
|
|
|
stop() {
|
|
/usr/bin/swss.sh stop
|
|
|
|
SYSTEM_WARM_START=`redis-cli -n 4 hget "WARM_RESTART|system" enable`
|
|
SWSS_WARM_START=`redis-cli -n 4 hget "WARM_RESTART|swss" enable`
|
|
# if warm start enabled, just stop swss docker, then return
|
|
if [[ "$SYSTEM_WARM_START" == "true" ]] || [[ "$SWSS_WARM_START" == "true" ]]; then
|
|
return 0
|
|
fi
|
|
|
|
/usr/bin/syncd.sh stop
|
|
|
|
# platform specific tasks
|
|
if [ x$sonic_asic_platform == x'mellanox' ]; then
|
|
/etc/mlnx/mlnx-hw-management stop
|
|
/etc/init.d/sxdkernel stop
|
|
/usr/bin/mst stop
|
|
elif [ x$sonic_asic_platform == x'cavium' ]; then
|
|
/etc/init.d/xpnet.sh stop
|
|
/etc/init.d/xpnet.sh start
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
start|stop)
|
|
$1
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop}"
|
|
exit 1
|
|
;;
|
|
esac
|