Skip to content

Commit 414935b

Browse files
Add recover asic_id config if load golden config. (#3711)
* Add recover hardware config if load golden config. * fix format * Refactor with exist function. * Fix format * Remove deprecated tests * fix asicid * remove unrelated changes * Remove unrelated changes. * Recover the old implementation * Remove unused test. * Recover the old tests * Adjust comments.
1 parent 973cfdc commit 414935b

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

config/main.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -2208,12 +2208,16 @@ def generate_sysinfo(cur_config, config_input, ns=None):
22082208

22092209
mac = None
22102210
platform = None
2211+
asic_id = None
22112212
cur_device_metadata = cur_config.get('DEVICE_METADATA')
22122213

2213-
# Reuse current config's mac and platform. Generate if absent
2214+
# Reuse the existing configuration's MAC address, platform, and asic_id
2215+
# if available; generate these values only if they are missing.
22142216
if cur_device_metadata is not None:
22152217
mac = cur_device_metadata.get('localhost', {}).get('mac')
22162218
platform = cur_device_metadata.get('localhost', {}).get('platform')
2219+
if ns != DEFAULT_NAMESPACE and ns != HOST_NAMESPACE:
2220+
asic_id = cur_device_metadata.get('localhost', {}).get('asic_id')
22172221

22182222
if not mac:
22192223
if ns:
@@ -2231,8 +2235,14 @@ def generate_sysinfo(cur_config, config_input, ns=None):
22312235
if not platform:
22322236
platform = device_info.get_platform()
22332237

2238+
if not asic_id and ns != DEFAULT_NAMESPACE and ns != HOST_NAMESPACE:
2239+
asic_name = multi_asic.get_asic_id_from_name(ns)
2240+
asic_id = multi_asic.get_asic_device_id(asic_name)
2241+
22342242
device_metadata['localhost']['mac'] = mac.rstrip('\n')
22352243
device_metadata['localhost']['platform'] = platform.rstrip('\n')
2244+
if ns != DEFAULT_NAMESPACE and ns != HOST_NAMESPACE:
2245+
device_metadata['localhost']['asic_id'] = asic_id.rstrip('\n')
22362246

22372247
return
22382248

tests/config_override_test.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from click.testing import CliRunner
88
from unittest import mock
9+
from generic_config_updater.gu_common import HOST_NAMESPACE
910
from utilities_common.db import Db
1011
from utilities_common.general import load_module_from_source
1112
from minigraph import minigraph_encoder
@@ -345,6 +346,9 @@ def read_json_file_side_effect(filename):
345346
orig_sysinfo[ns] = {}
346347
orig_sysinfo[ns]['platform'] = platform
347348
orig_sysinfo[ns]['mac'] = mac
349+
if ns != config.DEFAULT_NAMESPACE and ns != HOST_NAMESPACE:
350+
asic_id = config_db.get_config()['DEVICE_METADATA']['localhost'].get('asic_id')
351+
orig_sysinfo[ns]['asic_id'] = asic_id
348352

349353
with mock.patch('config.main.read_json_file',
350354
mock.MagicMock(side_effect=read_json_file_side_effect)):
@@ -358,6 +362,9 @@ def read_json_file_side_effect(filename):
358362
mac = config_db.get_config()['DEVICE_METADATA']['localhost'].get('mac')
359363
assert platform == orig_sysinfo[ns]['platform']
360364
assert mac == orig_sysinfo[ns]['mac']
365+
if ns != config.DEFAULT_NAMESPACE and ns != HOST_NAMESPACE:
366+
asic_id = config_db.get_config()['DEVICE_METADATA']['localhost'].get('asic_id')
367+
assert asic_id == orig_sysinfo[ns]['asic_id']
361368

362369
def test_device_metadata_gen_sysinfo(self):
363370
def read_json_file_side_effect(filename):
@@ -372,14 +379,18 @@ def read_json_file_side_effect(filename):
372379
metadata = config_db.get_config()['DEVICE_METADATA']['localhost']
373380
metadata.pop('platform', None)
374381
metadata.pop('mac', None)
382+
if ns != config.DEFAULT_NAMESPACE and ns != HOST_NAMESPACE:
383+
metadata.pop('asic_id', None)
375384
config_db.set_entry('DEVICE_METADATA', 'localhost', metadata)
376385

377386
with mock.patch('config.main.read_json_file',
378387
mock.MagicMock(side_effect=read_json_file_side_effect)),\
379388
mock.patch('sonic_py_common.device_info.get_platform',
380389
return_value="multi_asic"),\
381390
mock.patch('sonic_py_common.device_info.get_system_mac',
382-
return_value="11:22:33:44:55:66\n"):
391+
return_value="11:22:33:44:55:66\n"),\
392+
mock.patch('sonic_py_common.multi_asic.get_asic_device_id',
393+
return_value="06:00:00\n"):
383394
runner = CliRunner()
384395
result = runner.invoke(config.config.commands["override-config-table"],
385396
['golden_config_db.json'], obj=db)
@@ -390,6 +401,9 @@ def read_json_file_side_effect(filename):
390401
mac = config_db.get_config()['DEVICE_METADATA']['localhost'].get('mac')
391402
assert platform == "multi_asic"
392403
assert mac == "11:22:33:44:55:66"
404+
if ns != config.DEFAULT_NAMESPACE and ns != HOST_NAMESPACE:
405+
asic_id = config_db.get_config()['DEVICE_METADATA']['localhost'].get('asic_id')
406+
assert asic_id == "06:00:00"
393407

394408
def test_masic_missig_localhost_override(self):
395409
def read_json_file_side_effect(filename):

0 commit comments

Comments
 (0)