Skip to content

Commit 476b3a4

Browse files
[multi-asic][cli][chassis-db] Avoid connecting to chassis db for cli commands executed from linecard (#1707)
* [multi-asic][cli][chassis-db] Avoid connecting to chassis db Currently, for all the cli commands, we connect to all databases mentioned in the database_config.json. The database_config.json also includes the databases from chassis redis server from supervisor card. It is unneccessary to connect to databases from chassis redis server when cli commands are executed form linecard. But we need to allow connection to chassis databases when the cli commands are executed from supervisor card. The changes in this PR fixes this problem. The constructor of Db() class which is instantiated for every CLI command execution is changed to skip chassis databases from the list of collected databases if the card is not supervisor card. Signed-off-by: vedganes <[email protected]>
1 parent 1edf934 commit 476b3a4

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

utilities_common/db.py

+12-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from sonic_py_common import multi_asic
1+
from sonic_py_common import multi_asic, device_info
22
from swsscommon.swsscommon import ConfigDBConnector, SonicV2Connector
33
from utilities_common import constants
44
from utilities_common.multi_asic import multi_asic_ns_choices
@@ -11,7 +11,17 @@ def __init__(self):
1111
self.cfgdb = ConfigDBConnector()
1212
self.cfgdb.connect()
1313
self.db = SonicV2Connector(host="127.0.0.1")
14-
for db_id in self.db.get_db_list():
14+
15+
# Skip connecting to chassis databases in line cards
16+
db_list = list(self.db.get_db_list())
17+
if not device_info.is_supervisor():
18+
try:
19+
db_list.remove('CHASSIS_APP_DB')
20+
db_list.remove('CHASSIS_STATE_DB')
21+
except Exception:
22+
pass
23+
24+
for db_id in db_list:
1525
self.db.connect(db_id)
1626

1727
self.cfgdb_clients[constants.DEFAULT_NAMESPACE] = self.cfgdb

0 commit comments

Comments
 (0)