From 476b3a489f2a96dc58c390c5ed07059cffbd6d09 Mon Sep 17 00:00:00 2001 From: vganesan-nokia <67648637+vganesan-nokia@users.noreply.github.com> Date: Tue, 12 Oct 2021 01:25:29 -0400 Subject: [PATCH] [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 --- utilities_common/db.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/utilities_common/db.py b/utilities_common/db.py index 7842b4dcdd..d736aa1be7 100644 --- a/utilities_common/db.py +++ b/utilities_common/db.py @@ -1,4 +1,4 @@ -from sonic_py_common import multi_asic +from sonic_py_common import multi_asic, device_info from swsscommon.swsscommon import ConfigDBConnector, SonicV2Connector from utilities_common import constants from utilities_common.multi_asic import multi_asic_ns_choices @@ -11,7 +11,17 @@ def __init__(self): self.cfgdb = ConfigDBConnector() self.cfgdb.connect() self.db = SonicV2Connector(host="127.0.0.1") - for db_id in self.db.get_db_list(): + + # Skip connecting to chassis databases in line cards + db_list = list(self.db.get_db_list()) + if not device_info.is_supervisor(): + try: + db_list.remove('CHASSIS_APP_DB') + db_list.remove('CHASSIS_STATE_DB') + except Exception: + pass + + for db_id in db_list: self.db.connect(db_id) self.cfgdb_clients[constants.DEFAULT_NAMESPACE] = self.cfgdb