Skip to content

Commit cd5c058

Browse files
authored
Fix db_migrate.py show error and back trace while loading configuration on Linecard (#3257)
Fix db_migrate.py show error and back trace while loading configuration on Linecard #### Why I did it Fix [issue @](#18389) #### How I did it Revert code change by sonic-net/sonic-utilities#3100 Check DB config initialize state and ignore when initialized. #### How to verify it Pass all UT. Manually test. ##### Work item tracking - Microsoft ADO **(number only)**: 27384235 #### Which release branch to backport (provide reason below if selected) N/A #### Description for the changelog Fix db_migrate.py show error and back trace while loading configuration on Linecard #### A picture of a cute animal (not mandatory but encouraged)
1 parent d48a830 commit cd5c058

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

scripts/db_migrator.py

+9-3
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88
import re
99

1010
from sonic_py_common import device_info, logger
11-
from swsscommon.swsscommon import SonicV2Connector, ConfigDBConnector
11+
from swsscommon.swsscommon import SonicV2Connector, ConfigDBConnector, SonicDBConfig
1212
from minigraph import parse_xml
1313
from utilities_common.helper import update_config
14-
from utilities_common.general import load_db_config
1514

1615
INIT_CFG_FILE = '/etc/sonic/init_cfg.json'
1716
MINIGRAPH_FILE = '/etc/sonic/minigraph.xml'
@@ -1277,7 +1276,14 @@ def main():
12771276
socket_path = args.socket
12781277
namespace = args.namespace
12791278

1280-
load_db_config()
1279+
# Can't load global config base on the result of is_multi_asic(), because on multi-asic device, when db_migrate.py
1280+
# run on the local database, ASIC instance will have not created the /var/run/redis0/sonic-db/database-config.json
1281+
if args.namespace is not None:
1282+
if not SonicDBConfig.isGlobalInit():
1283+
SonicDBConfig.initializeGlobalConfig()
1284+
else:
1285+
if not SonicDBConfig.isInit():
1286+
SonicDBConfig.initialize()
12811287

12821288
if socket_path:
12831289
dbmgtr = DBMigrator(namespace, socket=socket_path)

tests/db_migrator_test.py

+17-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from unittest import mock
66
from deepdiff import DeepDiff
77

8-
from swsscommon.swsscommon import SonicV2Connector
8+
from swsscommon.swsscommon import SonicV2Connector, SonicDBConfig
99
from sonic_py_common import device_info
1010

1111
from .mock_tables import dbconnector
@@ -889,6 +889,22 @@ def test_init(self, mock_args):
889889
import db_migrator
890890
db_migrator.main()
891891

892+
@mock.patch('argparse.ArgumentParser.parse_args')
893+
@mock.patch('swsscommon.swsscommon.SonicDBConfig.isInit', mock.MagicMock(return_value=False))
894+
@mock.patch('swsscommon.swsscommon.SonicDBConfig.initialize', mock.MagicMock())
895+
def test_init_no_namespace(self, mock_args):
896+
mock_args.return_value=argparse.Namespace(namespace=None, operation='version_202405_01', socket=None)
897+
import db_migrator
898+
db_migrator.main()
899+
900+
@mock.patch('argparse.ArgumentParser.parse_args')
901+
@mock.patch('swsscommon.swsscommon.SonicDBConfig.isGlobalInit', mock.MagicMock(return_value=False))
902+
@mock.patch('swsscommon.swsscommon.SonicDBConfig.initializeGlobalConfig', mock.MagicMock())
903+
def test_init_namespace(self, mock_args):
904+
mock_args.return_value=argparse.Namespace(namespace="asic0", operation='version_202405_01', socket=None)
905+
import db_migrator
906+
db_migrator.main()
907+
892908

893909
class TestGNMIMigrator(object):
894910
@classmethod

0 commit comments

Comments
 (0)