Skip to content

Commit

Permalink
More prevention of fatal exception caused by VDM dictionary missing f…
Browse files Browse the repository at this point in the history
…ields when a transceiver has just been pulled (#376)
  • Loading branch information
snider-nokia authored and yxieca committed Jul 7, 2023
1 parent 4969f70 commit 56f227a
Showing 1 changed file with 69 additions and 90 deletions.
159 changes: 69 additions & 90 deletions sonic_platform_base/sonic_xcvr/api/public/c_cmis.py
Original file line number Diff line number Diff line change
Expand Up @@ -361,21 +361,15 @@ def get_transceiver_bulk_status(self):
trans_dom['bias_yp'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][0]
trans_dom['cd_shortlink'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][0]
trans_dom['cd_longlink'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][0]
except KeyError:
pass
trans_dom['dgd'] = self.vdm_dict['DGD [ps]'][1][0]
try:
trans_dom['dgd'] = self.vdm_dict['DGD [ps]'][1][0]
trans_dom['sopmd'] = self.vdm_dict['SOPMD [ps^2]'][1][0]
except KeyError:
pass
trans_dom['soproc'] = self.vdm_dict['SOP ROC [krad/s]'][1][0]
trans_dom['pdl'] = self.vdm_dict['PDL [dB]'][1][0]
trans_dom['osnr'] = self.vdm_dict['OSNR [dB]'][1][0]
trans_dom['esnr'] = self.vdm_dict['eSNR [dB]'][1][0]
trans_dom['cfo'] = self.vdm_dict['CFO [MHz]'][1][0]
trans_dom['tx_curr_power'] = self.vdm_dict['Tx Power [dBm]'][1][0]
trans_dom['rx_tot_power'] = self.vdm_dict['Rx Total Power [dBm]'][1][0]
try:
trans_dom['soproc'] = self.vdm_dict['SOP ROC [krad/s]'][1][0]
trans_dom['pdl'] = self.vdm_dict['PDL [dB]'][1][0]
trans_dom['osnr'] = self.vdm_dict['OSNR [dB]'][1][0]
trans_dom['esnr'] = self.vdm_dict['eSNR [dB]'][1][0]
trans_dom['cfo'] = self.vdm_dict['CFO [MHz]'][1][0]
trans_dom['tx_curr_power'] = self.vdm_dict['Tx Power [dBm]'][1][0]
trans_dom['rx_tot_power'] = self.vdm_dict['Rx Total Power [dBm]'][1][0]
trans_dom['rx_sig_power'] = self.vdm_dict['Rx Signal Power [dBm]'][1][0]
except KeyError:
pass
Expand Down Expand Up @@ -529,44 +523,38 @@ def get_transceiver_threshold_info(self):
trans_dom_th['cdlonglowalarm'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][2]
trans_dom_th['cdlonghighwarning'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][3]
trans_dom_th['cdlonglowwarning'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][4]
except KeyError:
pass
trans_dom_th['dgdhighalarm'] = self.vdm_dict['DGD [ps]'][1][1]
trans_dom_th['dgdlowalarm'] = self.vdm_dict['DGD [ps]'][1][2]
trans_dom_th['dgdhighwarning'] = self.vdm_dict['DGD [ps]'][1][3]
trans_dom_th['dgdlowwarning'] = self.vdm_dict['DGD [ps]'][1][4]
try:
trans_dom_th['dgdhighalarm'] = self.vdm_dict['DGD [ps]'][1][1]
trans_dom_th['dgdlowalarm'] = self.vdm_dict['DGD [ps]'][1][2]
trans_dom_th['dgdhighwarning'] = self.vdm_dict['DGD [ps]'][1][3]
trans_dom_th['dgdlowwarning'] = self.vdm_dict['DGD [ps]'][1][4]
trans_dom_th['sopmdhighalarm'] = self.vdm_dict['SOPMD [ps^2]'][1][1]
trans_dom_th['sopmdlowalarm'] = self.vdm_dict['SOPMD [ps^2]'][1][2]
trans_dom_th['sopmdhighwarning'] = self.vdm_dict['SOPMD [ps^2]'][1][3]
trans_dom_th['sopmdlowwarning'] = self.vdm_dict['SOPMD [ps^2]'][1][4]
except KeyError:
pass
trans_dom_th['pdlhighalarm'] = self.vdm_dict['PDL [dB]'][1][1]
trans_dom_th['pdllowalarm'] = self.vdm_dict['PDL [dB]'][1][2]
trans_dom_th['pdlhighwarning'] = self.vdm_dict['PDL [dB]'][1][3]
trans_dom_th['pdllowwarning'] = self.vdm_dict['PDL [dB]'][1][4]
trans_dom_th['osnrhighalarm'] = self.vdm_dict['OSNR [dB]'][1][1]
trans_dom_th['osnrlowalarm'] = self.vdm_dict['OSNR [dB]'][1][2]
trans_dom_th['osnrhighwarning'] = self.vdm_dict['OSNR [dB]'][1][3]
trans_dom_th['osnrlowwarning'] = self.vdm_dict['OSNR [dB]'][1][4]
trans_dom_th['esnrhighalarm'] = self.vdm_dict['eSNR [dB]'][1][1]
trans_dom_th['esnrlowalarm'] = self.vdm_dict['eSNR [dB]'][1][2]
trans_dom_th['esnrhighwarning'] = self.vdm_dict['eSNR [dB]'][1][3]
trans_dom_th['esnrlowwarning'] = self.vdm_dict['eSNR [dB]'][1][4]
trans_dom_th['cfohighalarm'] = self.vdm_dict['CFO [MHz]'][1][1]
trans_dom_th['cfolowalarm'] = self.vdm_dict['CFO [MHz]'][1][2]
trans_dom_th['cfohighwarning'] = self.vdm_dict['CFO [MHz]'][1][3]
trans_dom_th['cfolowwarning'] = self.vdm_dict['CFO [MHz]'][1][4]
trans_dom_th['txcurrpowerhighalarm'] = self.vdm_dict['Tx Power [dBm]'][1][1]
trans_dom_th['txcurrpowerlowalarm'] = self.vdm_dict['Tx Power [dBm]'][1][2]
trans_dom_th['txcurrpowerhighwarning'] = self.vdm_dict['Tx Power [dBm]'][1][3]
trans_dom_th['txcurrpowerlowwarning'] = self.vdm_dict['Tx Power [dBm]'][1][4]
trans_dom_th['rxtotpowerhighalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][1]
trans_dom_th['rxtotpowerlowalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][2]
trans_dom_th['rxtotpowerhighwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][3]
trans_dom_th['rxtotpowerlowwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][4]
try:
trans_dom_th['pdlhighalarm'] = self.vdm_dict['PDL [dB]'][1][1]
trans_dom_th['pdllowalarm'] = self.vdm_dict['PDL [dB]'][1][2]
trans_dom_th['pdlhighwarning'] = self.vdm_dict['PDL [dB]'][1][3]
trans_dom_th['pdllowwarning'] = self.vdm_dict['PDL [dB]'][1][4]
trans_dom_th['osnrhighalarm'] = self.vdm_dict['OSNR [dB]'][1][1]
trans_dom_th['osnrlowalarm'] = self.vdm_dict['OSNR [dB]'][1][2]
trans_dom_th['osnrhighwarning'] = self.vdm_dict['OSNR [dB]'][1][3]
trans_dom_th['osnrlowwarning'] = self.vdm_dict['OSNR [dB]'][1][4]
trans_dom_th['esnrhighalarm'] = self.vdm_dict['eSNR [dB]'][1][1]
trans_dom_th['esnrlowalarm'] = self.vdm_dict['eSNR [dB]'][1][2]
trans_dom_th['esnrhighwarning'] = self.vdm_dict['eSNR [dB]'][1][3]
trans_dom_th['esnrlowwarning'] = self.vdm_dict['eSNR [dB]'][1][4]
trans_dom_th['cfohighalarm'] = self.vdm_dict['CFO [MHz]'][1][1]
trans_dom_th['cfolowalarm'] = self.vdm_dict['CFO [MHz]'][1][2]
trans_dom_th['cfohighwarning'] = self.vdm_dict['CFO [MHz]'][1][3]
trans_dom_th['cfolowwarning'] = self.vdm_dict['CFO [MHz]'][1][4]
trans_dom_th['txcurrpowerhighalarm'] = self.vdm_dict['Tx Power [dBm]'][1][1]
trans_dom_th['txcurrpowerlowalarm'] = self.vdm_dict['Tx Power [dBm]'][1][2]
trans_dom_th['txcurrpowerhighwarning'] = self.vdm_dict['Tx Power [dBm]'][1][3]
trans_dom_th['txcurrpowerlowwarning'] = self.vdm_dict['Tx Power [dBm]'][1][4]
trans_dom_th['rxtotpowerhighalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][1]
trans_dom_th['rxtotpowerlowalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][2]
trans_dom_th['rxtotpowerhighwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][3]
trans_dom_th['rxtotpowerlowwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][4]
trans_dom_th['rxsigpowerhighalarm'] = self.vdm_dict['Rx Signal Power [dBm]'][1][1]
trans_dom_th['rxsigpowerlowalarm'] = self.vdm_dict['Rx Signal Power [dBm]'][1][2]
trans_dom_th['rxsigpowerhighwarning'] = self.vdm_dict['Rx Signal Power [dBm]'][1][3]
Expand Down Expand Up @@ -784,61 +772,52 @@ def get_transceiver_status(self):
trans_status['biasyplowalarm_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][6]
trans_status['biasyphighwarning_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][7]
trans_status['biasyplowwarning_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][8]
except KeyError:
pass
trans_status['cdshorthighalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][5]
trans_status['cdshortlowalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][6]
trans_status['cdshorthighwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][7]
trans_status['cdshortlowwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][8]
try:
trans_status['cdshorthighalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][5]
trans_status['cdshortlowalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][6]
trans_status['cdshorthighwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][7]
trans_status['cdshortlowwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][8]
trans_status['cdlonghighalarm_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][5]
trans_status['cdlonglowalarm_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][6]
trans_status['cdlonghighwarning_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][7]
trans_status['cdlonglowwarning_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][8]
except KeyError:
pass
trans_status['dgdhighalarm_flag'] = self.vdm_dict['DGD [ps]'][1][5]
trans_status['dgdlowalarm_flag'] = self.vdm_dict['DGD [ps]'][1][6]
trans_status['dgdhighwarning_flag'] = self.vdm_dict['DGD [ps]'][1][7]
trans_status['dgdlowwarning_flag'] = self.vdm_dict['DGD [ps]'][1][8]
try:
trans_status['dgdhighalarm_flag'] = self.vdm_dict['DGD [ps]'][1][5]
trans_status['dgdlowalarm_flag'] = self.vdm_dict['DGD [ps]'][1][6]
trans_status['dgdhighwarning_flag'] = self.vdm_dict['DGD [ps]'][1][7]
trans_status['dgdlowwarning_flag'] = self.vdm_dict['DGD [ps]'][1][8]
trans_status['sopmdhighalarm_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][5]
trans_status['sopmdlowalarm_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][6]
trans_status['sopmdhighwarning_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][7]
trans_status['sopmdlowwarning_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][8]
except KeyError:
pass
trans_status['pdlhighalarm_flag'] = self.vdm_dict['PDL [dB]'][1][5]
trans_status['pdllowalarm_flag'] = self.vdm_dict['PDL [dB]'][1][6]
trans_status['pdlhighwarning_flag'] = self.vdm_dict['PDL [dB]'][1][7]
trans_status['pdllowwarning_flag'] = self.vdm_dict['PDL [dB]'][1][8]
trans_status['osnrhighalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][5]
trans_status['osnrlowalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][6]
trans_status['osnrhighwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][7]
trans_status['osnrlowwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][8]
trans_status['esnrhighalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][5]
trans_status['esnrlowalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][6]
trans_status['esnrhighwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][7]
trans_status['esnrlowwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][8]
trans_status['cfohighalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][5]
trans_status['cfolowalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][6]
trans_status['cfohighwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][7]
trans_status['cfolowwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][8]
trans_status['txcurrpowerhighalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][5]
trans_status['txcurrpowerlowalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][6]
trans_status['txcurrpowerhighwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][7]
trans_status['txcurrpowerlowwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][8]
trans_status['rxtotpowerhighalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][5]
trans_status['rxtotpowerlowalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][6]
trans_status['rxtotpowerhighwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][7]
trans_status['rxtotpowerlowwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][8]
try:
trans_status['pdlhighalarm_flag'] = self.vdm_dict['PDL [dB]'][1][5]
trans_status['pdllowalarm_flag'] = self.vdm_dict['PDL [dB]'][1][6]
trans_status['pdlhighwarning_flag'] = self.vdm_dict['PDL [dB]'][1][7]
trans_status['pdllowwarning_flag'] = self.vdm_dict['PDL [dB]'][1][8]
trans_status['osnrhighalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][5]
trans_status['osnrlowalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][6]
trans_status['osnrhighwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][7]
trans_status['osnrlowwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][8]
trans_status['esnrhighalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][5]
trans_status['esnrlowalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][6]
trans_status['esnrhighwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][7]
trans_status['esnrlowwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][8]
trans_status['cfohighalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][5]
trans_status['cfolowalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][6]
trans_status['cfohighwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][7]
trans_status['cfolowwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][8]
trans_status['txcurrpowerhighalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][5]
trans_status['txcurrpowerlowalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][6]
trans_status['txcurrpowerhighwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][7]
trans_status['txcurrpowerlowwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][8]
trans_status['rxtotpowerhighalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][5]
trans_status['rxtotpowerlowalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][6]
trans_status['rxtotpowerhighwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][7]
trans_status['rxtotpowerlowwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][8]
trans_status['rxsigpowerhighalarm_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][5]
trans_status['rxsigpowerlowalarm_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][6]
trans_status['rxsigpowerhighwarning_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][7]
trans_status['rxsigpowerlowwarning_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][8]
except KeyError:
helper_logger.log_debug('Rx Signal Power [dBm] not present in VDM')
helper_logger.log_debug('fields not present in VDM')
return trans_status

def get_transceiver_pm(self):
Expand Down

0 comments on commit 56f227a

Please sign in to comment.