Skip to content

Commit

Permalink
fix for non-coherent cmis modules (#2163)
Browse files Browse the repository at this point in the history
* fix for non-coherent cmis modules

* addressing comments

* add back application_advertisement

* fixing test failure

Co-authored-by: Chuan Qin (QINCHUAN) <[email protected]>
  • Loading branch information
2 people authored and yxieca committed Jul 28, 2022
1 parent 79b4439 commit d7fbdd6
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 33 deletions.
47 changes: 14 additions & 33 deletions sfputil/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -354,27 +354,13 @@ def convert_sfp_info_to_output_string(sfp_info_dict):
elif key == 'cable_length':
pass
elif key == 'specification_compliance':
if sfp_info_dict['type'] == "QSFP-DD Double Density 8X Pluggable Transceiver" or \
sfp_info_dict['type'] == "OSFP 8X Pluggable Transceiver" or \
sfp_info_dict['type'] == "QSFP+ or later with CMIS":
output += '{}{}: {}\n'.format(indent, QSFP_DD_DATA_MAP[key], sfp_info_dict[key])
else:
output += '{}{}:\n'.format(indent, QSFP_DD_DATA_MAP['specification_compliance'])

spec_compliance_dict = {}
try:
spec_compliance_dict = ast.literal_eval(sfp_info_dict['specification_compliance'])
sorted_compliance_key_table = natsorted(spec_compliance_dict)
for compliance_key in sorted_compliance_key_table:
output += '{}{}: {}\n'.format((indent * 2), compliance_key, spec_compliance_dict[compliance_key])
except ValueError as e:
output += '{}N/A\n'.format((indent * 2))
elif key == 'application_advertisement':
pass
output += '{}{}: {}\n'.format(indent, QSFP_DD_DATA_MAP[key], sfp_info_dict[key])
elif key == 'supported_max_tx_power' or key == 'supported_min_tx_power':
output += '{}{}: {}dBm\n'.format(indent, QSFP_DD_DATA_MAP[key], sfp_info_dict[key])
if key in sfp_info_dict: # C-CMIS compliant / coherent modules
output += '{}{}: {}dBm\n'.format(indent, QSFP_DD_DATA_MAP[key], sfp_info_dict[key])
elif key == 'supported_max_laser_freq' or key == 'supported_min_laser_freq':
output += '{}{}: {}GHz\n'.format(indent, QSFP_DD_DATA_MAP[key], sfp_info_dict[key])
if key in sfp_info_dict: # C-CMIS compliant / coherent modules
output += '{}{}: {}GHz\n'.format(indent, QSFP_DD_DATA_MAP[key], sfp_info_dict[key])
else:
try:
output += '{}{}: {}\n'.format(indent, QSFP_DD_DATA_MAP[key], sfp_info_dict[key])
Expand All @@ -389,21 +375,16 @@ def convert_sfp_info_to_output_string(sfp_info_dict):
elif key == 'cable_length':
pass
elif key == 'specification_compliance':
if sfp_info_dict['type'] == "QSFP-DD Double Density 8X Pluggable Transceiver" or \
sfp_info_dict['type'] == "OSFP 8X Pluggable Transceiver" or \
sfp_info_dict['type'] == "QSFP+ or later with CMIS":
output += '{}{}: {}\n'.format(indent, QSFP_DATA_MAP[key], sfp_info_dict[key])
else:
output += '{}{}:\n'.format(indent, QSFP_DATA_MAP['specification_compliance'])
output += '{}{}:\n'.format(indent, QSFP_DATA_MAP['specification_compliance'])

spec_compliance_dict = {}
try:
spec_compliance_dict = ast.literal_eval(sfp_info_dict['specification_compliance'])
sorted_compliance_key_table = natsorted(spec_compliance_dict)
for compliance_key in sorted_compliance_key_table:
output += '{}{}: {}\n'.format((indent * 2), compliance_key, spec_compliance_dict[compliance_key])
except ValueError as e:
output += '{}N/A\n'.format((indent * 2))
spec_compliance_dict = {}
try:
spec_compliance_dict = ast.literal_eval(sfp_info_dict['specification_compliance'])
sorted_compliance_key_table = natsorted(spec_compliance_dict)
for compliance_key in sorted_compliance_key_table:
output += '{}{}: {}\n'.format((indent * 2), compliance_key, spec_compliance_dict[compliance_key])
except ValueError as e:
output += '{}N/A\n'.format((indent * 2))
else:
output += '{}{}: {}\n'.format(indent, QSFP_DATA_MAP[key], sfp_info_dict[key])

Expand Down
1 change: 1 addition & 0 deletions tests/sfputil_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ def test_format_dict_value_to_string(self):
" Active App Selection Host Lane 7: 1\n"
" Active App Selection Host Lane 8: 1\n"
" Active Firmware Version: 0.1\n"
" Application Advertisement: N/A\n"
" CMIS Revision: 5.0\n"
" Connector: LC\n"
" Encoding: N/A\n"
Expand Down

0 comments on commit d7fbdd6

Please sign in to comment.