@@ -1372,6 +1372,19 @@ def multiasic_write_to_db(filename, load_sysinfo):
13721372 migrate_db_to_lastest (ns )
13731373
13741374
1375+ def config_file_yang_validation (filename ):
1376+ config_to_check = read_json_file (filename )
1377+ sy = sonic_yang .SonicYang (YANG_DIR )
1378+ sy .loadYangModel ()
1379+ try :
1380+ sy .loadData (configdbJson = config_to_check )
1381+ sy .validate_data_tree ()
1382+ except sonic_yang .SonicYangException as e :
1383+ click .secho ("{} fails YANG validation! Error: {}" .format (filename , str (e )),
1384+ fg = 'magenta' )
1385+ raise click .Abort ()
1386+
1387+
13751388# This is our main entrypoint - the main 'config' command
13761389@click .group (cls = clicommon .AbbreviationGroup , context_settings = CONTEXT_SETTINGS )
13771390@click .pass_context
@@ -1810,6 +1823,13 @@ def reload(db, filename, yes, load_sysinfo, no_service_restart, force, file_form
18101823 click .echo ("Input {} config file(s) separated by comma for multiple files " .format (num_cfg_file ))
18111824 return
18121825
1826+ if filename is not None :
1827+ if multi_asic .is_multi_asic ():
1828+ # Multiasic has not 100% fully validated. Thus pass here.
1829+ pass
1830+ else :
1831+ config_file_yang_validation (filename )
1832+
18131833 #Stop services before config push
18141834 if not no_service_restart :
18151835 log .log_notice ("'reload' stopping services..." )
@@ -2000,15 +2020,7 @@ def load_minigraph(db, no_service_restart, traffic_shift_away, override_config,
20002020 # Multiasic has not 100% fully validated. Thus pass here.
20012021 pass
20022022 else :
2003- sy = sonic_yang .SonicYang (YANG_DIR )
2004- sy .loadYangModel ()
2005- try :
2006- sy .loadData (configdbJson = config_to_check )
2007- sy .validate_data_tree ()
2008- except sonic_yang .SonicYangException as e :
2009- click .secho ("{} fails YANG validation! Error: {}" .format (golden_config_path , str (e )),
2010- fg = 'magenta' )
2011- raise click .Abort ()
2023+ config_file_yang_validation (golden_config_path )
20122024
20132025 # Dependency check golden config json
20142026 if multi_asic .is_multi_asic ():
0 commit comments