Skip to content

Commit

Permalink
Finalize fast-reboot in warmboot-finalizer, update fast-reboot active…
Browse files Browse the repository at this point in the history
… checks
  • Loading branch information
arfeigin committed Jan 23, 2023
1 parent 940e2cd commit e43563b
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 20 deletions.
3 changes: 1 addition & 2 deletions files/build_templates/docker_image_ctl.j2
Original file line number Diff line number Diff line change
Expand Up @@ -244,8 +244,7 @@ function postStartAction()
fi

if [[ "$BOOT_TYPE" == "fast" ]]; then
# set the key to expire in 3 minutes
$SONIC_DB_CLI STATE_DB SET "FAST_REBOOT|system" "1" "EX" "180"
$SONIC_DB_CLI STATE_DB SET "FAST_REBOOT|system" "enable"
fi

$SONIC_DB_CLI CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1"
Expand Down
4 changes: 2 additions & 2 deletions files/image_config/ntp/ntp-config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ reboot_type='cold'
function get_database_reboot_type()
{
SYSTEM_WARM_START=`sonic-db-cli STATE_DB hget "WARM_RESTART_ENABLE_TABLE|system" enable`
SYSTEM_FAST_START=`sonic-db-cli STATE_DB get "FAST_REBOOT|system"`
SYSTEM_FAST_START=`sonic-db-cli STATE_DB GET "FAST_REBOOT|system"`

if [[ x"${SYSTEM_WARM_START}" == x"true" ]]; then
reboot_type='warm'
elif [[ x"${SYSTEM_FAST_START}" == x"1" ]]; then
elif [[ x"${SYSTEM_FAST_START}" == x"enable" ]]; then
reboot_type='fast'
fi
}
Expand Down
20 changes: 20 additions & 0 deletions files/image_config/warmboot-finalizer/finalize-warmboot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,16 @@ function check_warm_boot()
WARM_BOOT=`sonic-db-cli STATE_DB hget "WARM_RESTART_ENABLE_TABLE|system" enable`
}

function check_fast_reboot()
{
SYSTEM_FAST_REBOOT=`sonic-db-cli STATE_DB GET "FAST_REBOOT|system"`
if [[ ${SYSTEM_FAST_REBOOT} == "enable" ]]; then
FAST_REBOOT='true'
else
FAST_REBOOT='false'
fi
}


function wait_for_database_service()
{
Expand Down Expand Up @@ -97,6 +107,12 @@ function finalize_warm_boot()
sudo config warm_restart disable
}

function finalize_fast_reboot()
{
debug "Finalizing fast-reboot..."
sonic-db-cli STATE_DB SET "FAST_REBOOT|system" "disable" &>/dev/null
}

function stop_control_plane_assistant()
{
if [[ -x ${ASSISTANT_SCRIPT} ]]; then
Expand All @@ -118,6 +134,7 @@ function restore_counters_folder()

wait_for_database_service

check_fast_reboot
check_warm_boot

if [[ x"${WARM_BOOT}" != x"true" ]]; then
Expand Down Expand Up @@ -152,4 +169,7 @@ if [[ -n "${list}" ]]; then
debug "Some components didn't finish reconcile: ${list} ..."
fi

if [ ${FAST_REBOOT} == "true" ]; then
finalize_fast_reboot
fi
finalize_warm_boot
3 changes: 2 additions & 1 deletion files/scripts/bgp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ function validate_restore_count()

function check_fast_boot ()
{
if [[ $($SONIC_DB_CLI STATE_DB GET "FAST_REBOOT|system") == "1" ]]; then
SYSTEM_FAST_REBOOT=`sonic-db-cli STATE_DB GET "FAST_REBOOT|system"`
if [[ ${SYSTEM_FAST_REBOOT} == "enable" ]]; then
FAST_BOOT="true"
else
FAST_BOOT="false"
Expand Down
3 changes: 2 additions & 1 deletion files/scripts/service_mgmt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ function check_warm_boot()

function check_fast_boot ()
{
if [[ $($SONIC_DB_CLI STATE_DB GET "FAST_REBOOT|system") == "1" ]]; then
SYSTEM_FAST_REBOOT=`sonic-db-cli STATE_DB GET "FAST_REBOOT|system"`
if [[ ${SYSTEM_FAST_REBOOT} == "enable" ]]; then
FAST_BOOT="true"
else
FAST_BOOT="false"
Expand Down
5 changes: 3 additions & 2 deletions files/scripts/swss.sh
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ function check_warm_boot()

function check_fast_boot()
{
if [[ $($SONIC_DB_CLI STATE_DB GET "FAST_REBOOT|system") == "1" ]]; then
SYSTEM_FAST_REBOOT=`sonic-db-cli STATE_DB GET "FAST_REBOOT|system"`
if [[ ${SYSTEM_FAST_REBOOT} == "enable" ]]; then
FAST_BOOT="true"
else
FAST_BOOT="false"
Expand Down Expand Up @@ -285,7 +286,7 @@ stop() {
# be restarted.
if [[ x"$FAST_BOOT" != x"true" ]]; then
debug "Clearing FAST_REBOOT flag..."
clean_up_tables STATE_DB "'FAST_REBOOT*'"
sonic-db-cli STATE_DB SET "FAST_REBOOT|system" "disable"
fi
# Unlock has to happen before reaching out to peer service
unlock_service_state_change
Expand Down
6 changes: 4 additions & 2 deletions files/scripts/syncd_common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ function check_warm_boot()

function check_fast_boot()
{
if [[ $($SONIC_DB_CLI STATE_DB GET "FAST_REBOOT|system") == "1" ]]; then
SYSTEM_FAST_REBOOT=`sonic-db-cli STATE_DB GET "FAST_REBOOT|system"`
if [[ ${SYSTEM_FAST_REBOOT} == "enable" ]]; then
FAST_BOOT="true"
else
FAST_BOOT="false"
Expand Down Expand Up @@ -82,7 +83,8 @@ function getBootType()
;;
*SONIC_BOOT_TYPE=fast*|*fast-reboot*)
# check that the key exists
if [[ $($SONIC_DB_CLI STATE_DB GET "FAST_REBOOT|system") == "1" ]]; then
SYSTEM_FAST_REBOOT=`sonic-db-cli STATE_DB GET "FAST_REBOOT|system"`
if [[ ${SYSTEM_FAST_REBOOT} == "enable" ]]; then
TYPE='fast'
else
TYPE='cold'
Expand Down
3 changes: 2 additions & 1 deletion files/scripts/teamd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ function validate_restore_count()

function check_fast_boot ()
{
if [[ $($SONIC_DB_CLI STATE_DB GET "FAST_REBOOT|system") == "1" ]]; then
SYSTEM_FAST_REBOOT=`sonic-db-cli STATE_DB GET "FAST_REBOOT|system"`
if [[ ${SYSTEM_FAST_REBOOT} == "enable" ]]; then
FAST_BOOT="true"
else
FAST_BOOT="false"
Expand Down
19 changes: 10 additions & 9 deletions src/sonic-py-common/sonic_py_common/device_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -699,14 +699,15 @@ def is_warm_restart_enabled(container_name):

# Check if System fast reboot is enabled.
def is_fast_reboot_enabled():
fb_system_state = 0
cmd = ['sonic-db-cli', 'STATE_DB', 'get', "FAST_REBOOT|system"]
proc = subprocess.Popen(cmd, universal_newlines=True, stdout=subprocess.PIPE)
(stdout, stderr) = proc.communicate()
state_db = SonicV2Connector(host='127.0.0.1')
state_db.connect(state_db.STATE_DB, False)

if proc.returncode != 0:
log.log_error("Error running command '{}'".format(cmd))
elif stdout:
fb_system_state = stdout.rstrip('\n')
TABLE_NAME_SEPARATOR = '|'
prefix = 'FAST_REBOOT' + TABLE_NAME_SEPARATOR

return fb_system_state
_hash = '{}{}'.format(prefix, 'system')
fb_system_state = state_db.get(state_db.STATE_DB, _hash, "enable")
fb_enable_state = True if fb_system_state == "true" else False

state_db.close(state_db.STATE_DB)
return fb_enable_state

0 comments on commit e43563b

Please sign in to comment.