Skip to content

Commit 87a5820

Browse files
[multi-asic] Fixed 13137 ERR python3: :- initializeGlobalConfig: SonicDBConfig Global config is already initialized (sonic-net#18609)
* [portconfig]: Remove try exception during config_db initialization. (sonic-net#10960) Why I did it Provide fix for comment: https://github.com/Azure/sonic-buildimage/pull/10475/files#r847753187; Move laoding database config to application code instead of portconfig as portconfig is used as a library. How I did it Remove try exception handing from portconfig.py during config_db intialization. Move loading of database config to application that uses portconfig.py. How to verify it unit-test passes. Verified that it does not cause issue during boot up of multi-asic VS image. Verified that config_db generation was successful in multi-asic VS. * Fix code base on the review --------- Co-authored-by: SuvarnaMeenakshi <[email protected]>
1 parent bdc1675 commit 87a5820

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

src/sonic-config-engine/portconfig.py

+1-6
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,7 @@ def db_connect_configdb(namespace=None):
7272
"""
7373
Connect to configdb
7474
"""
75-
try:
76-
if namespace is not None:
77-
swsscommon.SonicDBConfig.load_sonic_global_db_config(namespace=namespace)
78-
config_db = swsscommon.ConfigDBConnector(use_unix_socket_path=True, namespace=namespace)
79-
except Exception as e:
80-
return None
75+
config_db = swsscommon.ConfigDBConnector(use_unix_socket_path=True, namespace=namespace)
8176
if config_db is None:
8277
return None
8378
try:

src/sonic-config-engine/sonic-cfggen

+13-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ from config_samples import generate_sample_config, get_available_config
3131
from functools import partial
3232
from minigraph import minigraph_encoder, parse_xml, parse_device_desc_xml, parse_asic_sub_role, parse_asic_switch_type
3333
from portconfig import get_port_config, get_breakout_mode
34-
from sonic_py_common.multi_asic import get_asic_id_from_name, get_asic_device_id
34+
from sonic_py_common.multi_asic import get_asic_id_from_name, get_asic_device_id, is_multi_asic
3535
from sonic_py_common import device_info
3636
from swsscommon.swsscommon import ConfigDBConnector, SonicDBConfig, ConfigDBPipeConnector
3737

@@ -137,6 +137,14 @@ def ip_network(value):
137137
return "Invalid ip address %s" % value
138138
return r_v.network
139139

140+
def load_namespace_config():
141+
if is_multi_asic():
142+
if not SonicDBConfig.isGlobalInit():
143+
SonicDBConfig.initializeGlobalConfig()
144+
else:
145+
if not SonicDBConfig.isInit():
146+
SonicDBConfig.initialize()
147+
140148
class FormatConverter:
141149
"""Convert config DB based schema to legacy minigraph based schema for backward capability.
142150
We will move to DB schema and remove this class when the config templates are modified.
@@ -301,6 +309,7 @@ def main():
301309
deep_update(data, hardware_data)
302310
if args.port_config is None:
303311
args.port_config = device_info.get_path_to_port_config_file(hwsku)
312+
load_namespace_config()
304313
(ports, _, _) = get_port_config(hwsku, platform, args.port_config, asic_id)
305314
if ports is None:
306315
print('Failed to get port config', file=sys.stderr)
@@ -326,6 +335,7 @@ def main():
326335

327336
if args.minigraph is not None:
328337
minigraph = args.minigraph
338+
load_namespace_config()
329339
if platform:
330340
if args.port_config is not None:
331341
deep_update(data, parse_xml(minigraph, platform, args.port_config, asic_name=asic_name, hwsku_config_file=args.hwsku_config))
@@ -353,7 +363,7 @@ def main():
353363
if args.namespace is None:
354364
configdb = ConfigDBPipeConnector(use_unix_socket_path=use_unix_sock, **db_kwargs)
355365
else:
356-
SonicDBConfig.load_sonic_global_db_config(namespace=args.namespace)
366+
load_namespace_config()
357367
configdb = ConfigDBPipeConnector(use_unix_socket_path=use_unix_sock, namespace=args.namespace, **db_kwargs)
358368

359369
configdb.connect()
@@ -425,7 +435,7 @@ def main():
425435
if args.namespace is None:
426436
configdb = ConfigDBPipeConnector(use_unix_socket_path=True, **db_kwargs)
427437
else:
428-
SonicDBConfig.load_sonic_global_db_config(namespace=args.namespace)
438+
load_namespace_config()
429439
configdb = ConfigDBPipeConnector(use_unix_socket_path=True, namespace=args.namespace, **db_kwargs)
430440

431441
configdb.connect(False)

0 commit comments

Comments
 (0)