Skip to content

Commit bf6ff9f

Browse files
Enable multi asic golden config YANG validation. (sonic-net#3685)
* Enable multi asic golden config YANG validation. * Fix format.
1 parent 3aec519 commit bf6ff9f

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

config/main.py

+21-20
Original file line numberDiff line numberDiff line change
@@ -1374,17 +1374,21 @@ def multiasic_write_to_db(filename, load_sysinfo):
13741374

13751375

13761376
def config_file_yang_validation(filename):
1377-
config_to_check = read_json_file(filename)
1377+
config = read_json_file(filename)
13781378
sy = sonic_yang.SonicYang(YANG_DIR)
13791379
sy.loadYangModel()
1380-
try:
1381-
sy.loadData(configdbJson=config_to_check)
1382-
sy.validate_data_tree()
1383-
except sonic_yang.SonicYangException as e:
1384-
click.secho("{} fails YANG validation! Error: {}".format(filename, str(e)),
1385-
fg='magenta')
1386-
raise click.Abort()
1387-
1380+
asic_list = [HOST_NAMESPACE]
1381+
if multi_asic.is_multi_asic():
1382+
asic_list.extend(multi_asic.get_namespace_list())
1383+
for scope in asic_list:
1384+
config_to_check = config.get(scope) if multi_asic.is_multi_asic() else config
1385+
try:
1386+
sy.loadData(configdbJson=config_to_check)
1387+
sy.validate_data_tree()
1388+
except sonic_yang.SonicYangException as e:
1389+
click.secho("{} fails YANG validation! Error: {}".format(filename, str(e)),
1390+
fg='magenta')
1391+
raise click.Abort()
13881392

13891393
# This is our main entrypoint - the main 'config' command
13901394
@click.group(cls=clicommon.AbbreviationGroup, context_settings=CONTEXT_SETTINGS)
@@ -2019,21 +2023,18 @@ def load_minigraph(db, no_service_restart, traffic_shift_away, override_config,
20192023
fg='magenta')
20202024
raise click.Abort()
20212025

2022-
config_to_check = read_json_file(golden_config_path)
2023-
if multi_asic.is_multi_asic():
2024-
# Multiasic has not 100% fully validated. Thus pass here.
2025-
pass
2026-
else:
2027-
config_file_yang_validation(golden_config_path)
2026+
config_file_yang_validation(golden_config_path)
20282027

2028+
config_to_check = read_json_file(golden_config_path)
20292029
# Dependency check golden config json
2030+
asic_list = [HOST_NAMESPACE]
20302031
if multi_asic.is_multi_asic():
2031-
host_config = config_to_check.get('localhost', {})
2032-
else:
2033-
host_config = config_to_check
2034-
table_hard_dependency_check(host_config)
2032+
asic_list.extend(multi_asic.get_namespace_list())
2033+
for scope in asic_list:
2034+
host_config = config_to_check.get(scope) if multi_asic.is_multi_asic() else config_to_check
2035+
table_hard_dependency_check(host_config)
20352036

2036-
#Stop services before config push
2037+
# Stop services before config push
20372038
if not no_service_restart:
20382039
log.log_notice("'load_minigraph' stopping services...")
20392040
_stop_services()

0 commit comments

Comments
 (0)