#!/bin/bash . /usr/local/bin/syncd_common.sh function startplatform() { declare -A DbCliArray=([0]=$SONIC_GLOBAL_DB_CLI [1]=$SONIC_DB_CLI) for DB_CLI in "${DbCliArray[@]}"; do # Add gbsyncd to FEATURE table, if not in. It did have same config as syncd. if [ -z $($DB_CLI CONFIG_DB HGET 'FEATURE|gbsyncd' state) ]; then local CMD="local r=redis.call('DUMP', KEYS[1]); redis.call('RESTORE', KEYS[2], 0, r)" $DB_CLI CONFIG_DB EVAL "$CMD" 2 'FEATURE|syncd' 'FEATURE|gbsyncd' $DB_CLI CONFIG_DB EVAL "$CMD" 2 'SYSLOG_CONFIG_FEATURE|syncd' 'SYSLOG_CONFIG_FEATURE|gbsyncd' fi done } function waitplatform() { : } function stopplatform1() { if ! docker top gbsyncd$DEV | grep -q /usr/bin/syncd; then debug "syncd process in container gbsyncd$DEV is not running" return fi # Invoke platform specific pre shutdown routine. PLATFORM=`$SONIC_DB_CLI CONFIG_DB hget 'DEVICE_METADATA|localhost' platform` PLATFORM_PRE_SHUTDOWN="/usr/share/sonic/device/$PLATFORM/plugins/gbsyncd_request_pre_shutdown" [ -f $PLATFORM_PRE_SHUTDOWN ] && \ /usr/bin/docker exec -i gbsyncd$DEV /usr/share/sonic/platform/plugins/gbsyncd_request_pre_shutdown --${TYPE} debug "${TYPE} shutdown syncd process in container gbsyncd$DEV ..." /usr/bin/docker exec -i gbsyncd$DEV /usr/bin/syncd_request_shutdown -g 1 -x /usr/share/sonic/hwsku/context_config.json --${TYPE} # wait until syncd quits gracefully or force syncd to exit after # waiting for 20 seconds start_in_secs=${SECONDS} end_in_secs=${SECONDS} timer_threshold=20 while docker top gbsyncd$DEV | grep -q /usr/bin/syncd \ && [[ $((end_in_secs - start_in_secs)) -le $timer_threshold ]]; do sleep 0.1 end_in_secs=${SECONDS} done if [[ $((end_in_secs - start_in_secs)) -gt $timer_threshold ]]; then debug "syncd process in container gbsyncd$DEV did not exit gracefully" fi /usr/bin/docker exec -i gbsyncd$DEV /bin/sync debug "Finished ${TYPE} shutdown syncd process in container gbsyncd$DEV ..." } function stopplatform2() { : } OP=$1 DEV=$2 SERVICE="$gbsyncd_platform" PEER="swss" DEBUGLOG="/tmp/swss-$SERVICE-debug$DEV.log" LOCKFILE="/tmp/swss-$SERVICE-lock$DEV" NAMESPACE_PREFIX="asic" SONIC_GLOBAL_DB_CLI="sonic-db-cli" SONIC_DB_CLI="sonic-db-cli" if [ "$DEV" ]; then NET_NS="$NAMESPACE_PREFIX$DEV" #name of the network namespace SONIC_DB_CLI="sonic-db-cli -n $NET_NS" fi case "$1" in start|wait|stop) $1 ;; *) echo "Usage: $0 {start|wait|stop}" exit 1 ;; esac