Changes to support config-setup service for multi-npu (#4609)
* Changes to support config-setup service for multi-npu platforms. For Multi-npu we are not supporting as of now config initializtion and ZTP. It will support creating config db from minigraph or using config db from previous file system Signed-off-by: Abhishek Dosi <abdosi@microsoft.com> * Address Review Comments. * Address Review comments * Address Review Comments of using pyhton based config load_minigraph/ config save/config reload from shell scripts so that we don't duplicate code. Also while running from shell we will skip stop/start services done by those commands. * Updated to use python command so no code duplication.
This commit is contained in:
parent
6d1545dc79
commit
a44fc07e78
@ -26,7 +26,11 @@
|
|||||||
|
|
||||||
# Initialize constants
|
# Initialize constants
|
||||||
UPDATEGRAPH_CONF=/etc/sonic/updategraph.conf
|
UPDATEGRAPH_CONF=/etc/sonic/updategraph.conf
|
||||||
|
INIT_CFG_JSON=/etc/sonic/init_cfg.json
|
||||||
CONFIG_DB_JSON=/etc/sonic/config_db.json
|
CONFIG_DB_JSON=/etc/sonic/config_db.json
|
||||||
|
CONFIG_DB_PATH=/etc/sonic/
|
||||||
|
CONFIG_DB_PREFIX=config_db
|
||||||
|
CONFIG_DB_SUFFIX=.json
|
||||||
MINGRAPH_FILE=/etc/sonic/minigraph.xml
|
MINGRAPH_FILE=/etc/sonic/minigraph.xml
|
||||||
TMP_ZTP_CONFIG_DB_JSON=/tmp/ztp_config_db.json
|
TMP_ZTP_CONFIG_DB_JSON=/tmp/ztp_config_db.json
|
||||||
FACTORY_DEFAULT_HOOKS=/etc/config-setup/factory-default-hooks.d
|
FACTORY_DEFAULT_HOOKS=/etc/config-setup/factory-default-hooks.d
|
||||||
@ -103,24 +107,16 @@ run_hookdir() {
|
|||||||
reload_minigraph()
|
reload_minigraph()
|
||||||
{
|
{
|
||||||
echo "Reloading minigraph..."
|
echo "Reloading minigraph..."
|
||||||
if [ ! -f /etc/sonic/init_cfg.json ]; then
|
config load_minigraph -y -n
|
||||||
echo "{}" > /etc/sonic/init_cfg.json
|
config save -y
|
||||||
fi
|
|
||||||
sonic-db-cli CONFIG_DB FLUSHDB
|
|
||||||
sonic-cfggen -H -m -j /etc/sonic/init_cfg.json --write-to-db
|
|
||||||
sonic-db-cli CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1"
|
|
||||||
if [ -f /etc/sonic/acl.json ]; then
|
|
||||||
acl-loader update full /etc/sonic/acl.json
|
|
||||||
fi
|
|
||||||
config qos reload
|
|
||||||
pfcwd start_default
|
|
||||||
|
|
||||||
if [[ -x /usr/bin/db_migrator.py ]]; then
|
|
||||||
# Set latest version number
|
|
||||||
/usr/bin/db_migrator.py -o set_version
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Reload exisitng config db file on disk
|
||||||
|
reload_configdb()
|
||||||
|
{
|
||||||
|
echo "Reloading existing config db..."
|
||||||
|
config reload -y -n
|
||||||
|
}
|
||||||
# Restore SONiC configuration from a backup copy
|
# Restore SONiC configuration from a backup copy
|
||||||
function copy_config_files_and_directories()
|
function copy_config_files_and_directories()
|
||||||
{
|
{
|
||||||
@ -281,15 +277,49 @@ copy_post_migration_hooks()
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Get the list of config db for both
|
||||||
|
# single and multi-npu platforms
|
||||||
|
get_config_db_file_list()
|
||||||
|
{
|
||||||
|
config_db_file_list=${CONFIG_DB_PREFIX}${CONFIG_DB_SUFFIX}
|
||||||
|
asic_num=0
|
||||||
|
while [[ ($asic_num -lt $NUM_ASIC) && ($NUM_ASIC -gt 1) ]]; do
|
||||||
|
config_db_file_list+=' '${CONFIG_DB_PREFIX}$asic_num${CONFIG_DB_SUFFIX}
|
||||||
|
((asic_num = asic_num + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo $config_db_file_list
|
||||||
|
}
|
||||||
|
# Check if all needed config db are prsesnt for both
|
||||||
|
# single and multi-npu platforms
|
||||||
|
check_all_config_db_present()
|
||||||
|
{
|
||||||
|
if [[ ! -r ${CONFIG_DB_JSON} ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
asic_num=0
|
||||||
|
while [[ ($asic_num -lt $NUM_ASIC) && ($NUM_ASIC -gt 1) ]]; do
|
||||||
|
if [[ ! -r ${CONFIG_DB_PATH}${CONFIG_DB_PREFIX}$asic_num${CONFIG_DB_SUFFIX} ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
((asic_num = asic_num + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# Perform configuration migration from backup copy.
|
# Perform configuration migration from backup copy.
|
||||||
# - This step is performed when a new image is installed and SONiC switch boots into it
|
# - This step is performed when a new image is installed and SONiC switch boots into it
|
||||||
do_config_migration()
|
do_config_migration()
|
||||||
{
|
{
|
||||||
# Identify list of files to migrate
|
# Identify list of files to migrate
|
||||||
copy_list="minigraph.xml snmp.yml acl.json config_db.json frr"
|
copy_list="minigraph.xml snmp.yml acl.json frr"
|
||||||
|
|
||||||
# Migrate all configuration files from old to new
|
# Migrate all configuration files from old to new
|
||||||
copy_config_files_and_directories $copy_list
|
copy_config_files_and_directories $copy_list
|
||||||
|
|
||||||
|
# Migrate all config_db from old to new
|
||||||
|
copy_config_files_and_directories $(get_config_db_file_list)
|
||||||
|
|
||||||
# Migrate post-migration hooks
|
# Migrate post-migration hooks
|
||||||
copy_post_migration_hooks
|
copy_post_migration_hooks
|
||||||
@ -302,21 +332,14 @@ do_config_migration()
|
|||||||
disable_updategraph
|
disable_updategraph
|
||||||
rm -f /tmp/pending_config_migration
|
rm -f /tmp/pending_config_migration
|
||||||
exit 0
|
exit 0
|
||||||
elif [ -r ${CONFIG_DB_JSON} ]; then
|
elif check_all_config_db_present; then
|
||||||
echo "Use config_db.json from old system..."
|
echo "Use config_db.json from old system..."
|
||||||
sonic-cfggen -j ${CONFIG_DB_JSON} --write-to-db
|
reload_configdb
|
||||||
|
|
||||||
if [[ -x /usr/bin/db_migrator.py ]]; then
|
|
||||||
# Migrate the DB to the latest schema version if needed
|
|
||||||
/usr/bin/db_migrator.py -o migrate
|
|
||||||
fi
|
|
||||||
# Disable updategraph
|
# Disable updategraph
|
||||||
disable_updategraph
|
disable_updategraph
|
||||||
elif [ -r ${MINGRAPH_FILE} ]; then
|
elif [ -r ${MINGRAPH_FILE} ]; then
|
||||||
echo "Use minigraph.xml from old system..."
|
echo "Use minigraph.xml from old system..."
|
||||||
reload_minigraph
|
reload_minigraph
|
||||||
sonic-cfggen -d --print-data > ${CONFIG_DB_JSON}
|
|
||||||
|
|
||||||
# Disable updategraph
|
# Disable updategraph
|
||||||
disable_updategraph
|
disable_updategraph
|
||||||
else
|
else
|
||||||
@ -351,6 +374,14 @@ boot_config()
|
|||||||
do_config_migration
|
do_config_migration
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# For multi-npu platfrom we don't support config initlaiztion. Assumption
|
||||||
|
# is there should be existing minigraph or config_db from previous image
|
||||||
|
# file system to trigger. pending_config_initialization will remain set
|
||||||
|
# for multi-npu platforms if we reach this case.
|
||||||
|
if [[ ($NUM_ASIC -gt 1) ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -e /tmp/pending_config_initialization ] || [ -e ${CONFIG_SETUP_INITIALIZATION_FLAG} ]; then
|
if [ -e /tmp/pending_config_initialization ] || [ -e ${CONFIG_SETUP_INITIALIZATION_FLAG} ]; then
|
||||||
do_config_initialization
|
do_config_initialization
|
||||||
fi
|
fi
|
||||||
@ -373,6 +404,13 @@ boot_config()
|
|||||||
}
|
}
|
||||||
|
|
||||||
### Execution starts here ###
|
### Execution starts here ###
|
||||||
|
PLATFORM=`sonic-cfggen -H -v DEVICE_METADATA.localhost.platform`
|
||||||
|
# Parse the device specific asic conf file, if it exists
|
||||||
|
ASIC_CONF=/usr/share/sonic/device/$PLATFORM/asic.conf
|
||||||
|
if [[ -f "$ASIC_CONF" ]]; then
|
||||||
|
source $ASIC_CONF
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
CMD=$1
|
CMD=$1
|
||||||
# Default command is boot
|
# Default command is boot
|
||||||
|
@ -3,25 +3,8 @@
|
|||||||
reload_minigraph()
|
reload_minigraph()
|
||||||
{
|
{
|
||||||
echo "Reloading minigraph..."
|
echo "Reloading minigraph..."
|
||||||
if [ ! -f /etc/sonic/init_cfg.json ]; then
|
config load_minigraph -y -n
|
||||||
echo "{}" > /etc/sonic/init_cfg.json
|
config save -y
|
||||||
fi
|
|
||||||
sonic-db-cli CONFIG_DB FLUSHDB
|
|
||||||
sonic-cfggen -H -m -j /etc/sonic/init_cfg.json --write-to-db
|
|
||||||
sonic-db-cli CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1"
|
|
||||||
if [ -f /etc/sonic/acl.json ]; then
|
|
||||||
acl-loader update full /etc/sonic/acl.json
|
|
||||||
fi
|
|
||||||
config qos reload
|
|
||||||
DEVICE_TYPE=`sonic-cfggen -m -v DEVICE_METADATA.localhost.type`
|
|
||||||
if [ "${DEVICE_TYPE}" != "MgmtToRRouter" ]; then
|
|
||||||
pfcwd start_default
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -x /usr/bin/db_migrator.py ]]; then
|
|
||||||
# Set latest version number
|
|
||||||
/usr/bin/db_migrator.py -o set_version
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ ! -f /etc/sonic/updategraph.conf ]; then
|
if [ ! -f /etc/sonic/updategraph.conf ]; then
|
||||||
@ -141,7 +124,6 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
reload_minigraph
|
reload_minigraph
|
||||||
sonic-cfggen -d --print-data > /etc/sonic/config_db.json
|
|
||||||
|
|
||||||
# Mark as disabled after graph is successfully downloaded
|
# Mark as disabled after graph is successfully downloaded
|
||||||
sed -i "/enabled=/d" /etc/sonic/updategraph.conf
|
sed -i "/enabled=/d" /etc/sonic/updategraph.conf
|
||||||
|
Loading…
Reference in New Issue
Block a user