diff --git a/sfputil/main.py b/sfputil/main.py index 099ac977f5..d567f39a0d 100644 --- a/sfputil/main.py +++ b/sfputil/main.py @@ -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]) @@ -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]) diff --git a/tests/sfputil_test.py b/tests/sfputil_test.py index 59ba358578..a4d568d20e 100644 --- a/tests/sfputil_test.py +++ b/tests/sfputil_test.py @@ -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"