Skip to content
Merged
Show file tree
Hide file tree
Changes from 50 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
1686dbe
Extend reboot script for rebooting SmartSwitch
vvolam Nov 4, 2024
23461b2
Add more coverage
vvolam Nov 4, 2024
cef5de7
Add more unittests and optimize tests file
vvolam Nov 4, 2024
d41bf43
Fix minor indentation
vvolam Nov 4, 2024
68e70ab
Move smartswitch helper functions to new reboot_smartswitch_helper.sh
vvolam Nov 6, 2024
3848b75
Fix pre-commit errors
vvolam Nov 8, 2024
84d9e50
Fix few more indentation errors
vvolam Nov 8, 2024
ba5cd5d
Merge remote-tracking branch 'origin/master' into ss-reboot
vvolam Nov 12, 2024
7f75134
Merge remote-tracking branch 'origin/master' into ss-reboot
vvolam Nov 25, 2024
a849e41
Add a new API in chassis.py
vvolam Nov 25, 2024
4975ac0
Fix issues while testing
vvolam Nov 25, 2024
bead103
Fix indentation errors
vvolam Nov 25, 2024
f88491a
Add DPU_BUS_INFO
vvolam Nov 26, 2024
b3dbc0f
Fix pre-commit errors
vvolam Nov 26, 2024
2d8b908
Add more error handling scenarios and increase more coverage
vvolam Nov 26, 2024
1a6ef04
parse_args function is not required
vvolam Nov 26, 2024
ec21d6f
Fix indentation
vvolam Nov 26, 2024
8d59222
Address review comments
vvolam Nov 27, 2024
98406c7
Increase code coverage
vvolam Nov 27, 2024
a6f771e
Update scripts/reboot_smartswitch_helper
vvolam Nov 28, 2024
a3f8af7
Update scripts/reboot_smartswitch_helper
vvolam Nov 28, 2024
36ecf1b
Rename module_base.py to module.py
vvolam Nov 28, 2024
67e7817
Committing missed files in previous commit
vvolam Nov 28, 2024
88af21d
Define a new try_get_args() which takes arguments as inputs
vvolam Nov 28, 2024
3551a5a
Merge remote-tracking branch 'origin/master' into ss-reboot
vvolam Dec 3, 2024
e4bcc95
Fix some arguments
vvolam Dec 3, 2024
edaa0de
Exit the reboot script after completing DPU reboot
vvolam Dec 3, 2024
119d83b
Fix long lines
vvolam Dec 4, 2024
03fd56f
Merge remote-tracking branch 'origin/master' into ss-reboot
vvolam Dec 6, 2024
75f4c26
Update unit tests for update function code
vvolam Dec 6, 2024
7b365fd
Merge remote-tracking branch 'public/master' into ss-reboot
vvolam Jan 3, 2025
2690348
Update scripts/reboot
vvolam Jan 7, 2025
dc504ea
Address few review comments
vvolam Jan 8, 2025
e878277
Merge remote-tracking branch 'public/master' into ss-reboot
vvolam Jan 8, 2025
d1488e8
Merge remote-tracking branch 'public/master' into ss-reboot
vvolam Jan 14, 2025
1aa56e1
Add -notls option to gnoi_client command
vvolam Jan 14, 2025
9aa2c88
Small fix to read smart_switch correctly
vvolam Jan 16, 2025
2d7d141
Merge remote-tracking branch 'origin/master' into ss-reboot
vvolam Jan 27, 2025
416fa37
Call the module in upper case
vvolam Jan 27, 2025
4f0239e
Merge remote-tracking branch 'origin/master' into ss-reboot
vvolam Jan 27, 2025
af899a3
Use the string to HALT instead of numeric
vvolam Jan 27, 2025
d8bf907
Suppress outputs
vvolam Jan 28, 2025
61dcbb3
Few enhancements to error path
vvolam Feb 4, 2025
f5c38e5
insecure communication is not required to GNMI server
vvolam Feb 5, 2025
9f1b9e1
Enhance logging for better troubleshooting
vvolam Feb 6, 2025
91e2e04
Small fix to not split the line
vvolam Feb 6, 2025
02ccc84
Default port of GNMI server is 8080, in the absence of configuration
vvolam Feb 11, 2025
635cdc4
Merge remote-tracking branch 'public/master' into ss-reboot
vvolam Feb 11, 2025
0bec6c8
Remove unneccessary checks
vvolam Feb 11, 2025
d9c6e33
Small fix to fix gnoi_client command line
vvolam Feb 11, 2025
21d84ec
Address comments
vvolam Feb 22, 2025
c7b4ab5
Merge remote-tracking branch 'public/master' into ss-reboot
vvolam Mar 3, 2025
389ae8a
Minor fixes according to latest GNOI backend changes
vvolam Mar 11, 2025
73300df
Wait for DPU reboot status only if reboot gnoi command is successful
vvolam Mar 12, 2025
2cdf0c9
Skip reboot if DPU is not operationally online
vvolam Mar 13, 2025
d22356e
Fix oper status check
vvolam Mar 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 40 additions & 2 deletions scripts/reboot
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ declare -r EXIT_ERROR=1
declare -r WATCHDOG_UTIL="/usr/local/bin/watchdogutil"
declare -r PRE_REBOOT_HOOK="pre_reboot_hook"

source reboot_smartswitch_helper

DEVPATH="/usr/share/sonic/device"
PLAT_REBOOT="platform_reboot"
PLATFORM_UPDATE_REBOOT_CAUSE="platform_update_reboot_cause"
Expand Down Expand Up @@ -37,10 +39,17 @@ EXIT_NEXT_IMAGE_NOT_EXISTS=4
EXIT_SONIC_INSTALLER_VERIFY_REBOOT=21
EXIT_PLATFORM_FW_AU_FAILURE=22
PLATFORM_FWUTIL_AU_REBOOT_HANDLE="platform_fw_au_reboot_handle"
PLATFORM_JSON_FILE="platform.json"
PLATFORM_JSON_PATH="${DEVPATH}/${PLATFORM}/${PLATFORM_JSON_FILE}"
REBOOT_SCRIPT_NAME=$(basename $0)
REBOOT_TYPE="${REBOOT_SCRIPT_NAME}"
TAG_LATEST=no
REBOOT_FLAGS=""
FORCE_REBOOT="no"
SMART_SWITCH="no"
DPU_MODULE_NAME=""
REBOOT_DPU="no"
PRE_SHUTDOWN="no"

function debug()
{
Expand All @@ -64,6 +73,9 @@ function stop_pmon_service()
{
CONTAINER_STOP_RC=0
debug "Stopping pmon docker"
if [[ "${PRE_SHUTDOWN}" == "yes" ]]; then
systemctl disable pmon
fi
systemctl stop pmon || debug "Ignore stopping pmon error $?"
docker kill pmon &> /dev/null || CONTAINER_STOP_RC=$?
if [[ CONTAINER_STOP_RC -ne 0 ]]; then
Expand Down Expand Up @@ -128,6 +140,8 @@ function show_help_and_exit()
echo " "
echo " Available options:"
echo " -h, -? : getting this help"
echo " -d : DPU module name on a smart switch, option is invalid when on DPU"
echo " -p : Pre-shutdown steps on DPU, invalid on NPU"

exit ${EXIT_SUCCESS}
}
Expand All @@ -154,7 +168,7 @@ function reboot_pre_check()
${DEVPATH}/${PLATFORM}/${PLATFORM_REBOOT_PRE_CHECK}
[[ $? -ne 0 ]] && exit $?
fi

# Verify the next image by sonic-installer
local message=$(sonic-installer verify-next-image 2>&1)
if [ $? -ne 0 ]; then
Expand All @@ -178,7 +192,7 @@ function check_conflict_boot_in_fw_update()

function parse_options()
{
while getopts "h?vf" opt; do
while getopts "h?vfpd:" opt; do
case ${opt} in
h|\? )
show_help_and_exit
Expand All @@ -192,6 +206,13 @@ function parse_options()
f )
REBOOT_FLAGS+=" -f"
;;
d )
REBOOT_DPU="yes"
DPU_MODULE_NAME="$OPTARG"
;;
p )
PRE_SHUTDOWN="yes"
;;
esac
done
}
Expand Down Expand Up @@ -225,6 +246,18 @@ fi

debug "User requested rebooting device ..."

handle_smart_switch "$REBOOT_DPU" "$PRE_SHUTDOWN" "$DPU_MODULE_NAME"
smart_switch_result=$?
if [[ $smart_switch_result -ne 0 ]]; then
exit $smart_switch_result
fi

# On a smartswitch, complete the DPU reboot and exit
is_smartswitch=$(python3 -c 'from utilities_common.chassis import is_smartswitch; print(is_smartswitch())')
if [ "$is_smartswitch" == "True" ] && [ "$REBOOT_DPU" == "yes" ]; then
exit $smart_switch_result
fi

check_conflict_boot_in_fw_update

setup_reboot_variables
Expand Down Expand Up @@ -287,6 +320,11 @@ if [ -x ${WATCHDOG_UTIL} ]; then
${WATCHDOG_UTIL} arm
fi

if [[ "${PRE_SHUTDOWN}" == "yes" ]]; then
echo "${DPU_MODULE_NAME} pre-shutdown steps are completed"
exit ${EXIT_SUCCESS}
fi

if [ -x ${DEVPATH}/${PLATFORM}/${PLAT_REBOOT} ]; then
VERBOSE=yes debug "Rebooting with platform ${PLATFORM} specific tool ..."
${DEVPATH}/${PLATFORM}/${PLAT_REBOOT} $@
Expand Down
Loading
Loading