Skip to content

Commit 3f17768

Browse files
author
dgsudharsan
committed
Adding minor fix
Support for multiple ranges Added logic to have default values at global level incase multiple ports have same defaults
1 parent 0c1bea5 commit 3f17768

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

sonic-xcvrd/scripts/xcvrd

+21-9
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ def get_media_settings_value(physical_port, key):
276276
range_separator = '-'
277277
comma_separator = ','
278278
media_dict = {}
279+
default_dict = {}
279280

280281
# Keys under global media settings can be a list or range or list of ranges
281282
# of physical port numbers. Below are some examples
@@ -300,31 +301,42 @@ def get_media_settings_value(physical_port, key):
300301
if check_port_in_range(keys, physical_port):
301302
media_dict = g_dict["GLOBAL_MEDIA_SETTINGS"][keys]
302303

303-
# If there is a match in the global profile for a media type,
304-
# fetch those values
305-
if key[0] in media_dict:
306-
return media_dict[key[0]]
307-
elif key[1] in media_dict:
308-
return media_dict[key[1]]
304+
# If there is a match in the global profile for a media type,
305+
# fetch those values
306+
if key[0] in media_dict:
307+
return media_dict[key[0]]
308+
elif key[1] in media_dict:
309+
return media_dict[key[1]]
310+
elif "Default" in media_dict:
311+
default_dict = media_dict['Default']
312+
313+
media_dict = {}
309314

310315
if "PORT_MEDIA_SETTINGS" in g_dict:
311316
for keys in g_dict["PORT_MEDIA_SETTINGS"]:
312317
if int(keys) == physical_port:
313318
media_dict = g_dict["PORT_MEDIA_SETTINGS"][keys]
314319
break
315320
if len(media_dict) == 0:
316-
logger.log_error("Error: No values for physica port '%d'"
317-
% physical_port)
321+
if default_dict != 0:
322+
return default_dict
323+
else:
324+
logger.log_error("Error: No values for physical port '%d'"
325+
% physical_port)
318326
return {}
319327
if key[0] in media_dict:
320328
return media_dict[key[0]]
321329
elif key[1] in media_dict:
322330
return media_dict[key[1]]
323331
elif "Default" in media_dict:
324332
return media_dict['Default']
333+
elif len(default_dict) != 0:
334+
return default_dict
325335
else:
326336
return {}
327-
337+
else:
338+
if default_dict != 0:
339+
return default_dict
328340

329341
def get_media_settings_key(physical_port, transceiver_dict):
330342
sup_compliance_str = '10/40G Ethernet Compliance Code'

0 commit comments

Comments
 (0)