Skip to content

Commit 10af810

Browse files
authored
More prevention of fatal exception caused by VDM dictionary missing fields when a transceiver has just been pulled (sonic-net#376)
1 parent 4d270f0 commit 10af810

File tree

1 file changed

+69
-90
lines changed
  • sonic_platform_base/sonic_xcvr/api/public

1 file changed

+69
-90
lines changed

sonic_platform_base/sonic_xcvr/api/public/c_cmis.py

Lines changed: 69 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -361,21 +361,15 @@ def get_transceiver_bulk_status(self):
361361
trans_dom['bias_yp'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][0]
362362
trans_dom['cd_shortlink'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][0]
363363
trans_dom['cd_longlink'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][0]
364-
except KeyError:
365-
pass
366-
trans_dom['dgd'] = self.vdm_dict['DGD [ps]'][1][0]
367-
try:
364+
trans_dom['dgd'] = self.vdm_dict['DGD [ps]'][1][0]
368365
trans_dom['sopmd'] = self.vdm_dict['SOPMD [ps^2]'][1][0]
369-
except KeyError:
370-
pass
371-
trans_dom['soproc'] = self.vdm_dict['SOP ROC [krad/s]'][1][0]
372-
trans_dom['pdl'] = self.vdm_dict['PDL [dB]'][1][0]
373-
trans_dom['osnr'] = self.vdm_dict['OSNR [dB]'][1][0]
374-
trans_dom['esnr'] = self.vdm_dict['eSNR [dB]'][1][0]
375-
trans_dom['cfo'] = self.vdm_dict['CFO [MHz]'][1][0]
376-
trans_dom['tx_curr_power'] = self.vdm_dict['Tx Power [dBm]'][1][0]
377-
trans_dom['rx_tot_power'] = self.vdm_dict['Rx Total Power [dBm]'][1][0]
378-
try:
366+
trans_dom['soproc'] = self.vdm_dict['SOP ROC [krad/s]'][1][0]
367+
trans_dom['pdl'] = self.vdm_dict['PDL [dB]'][1][0]
368+
trans_dom['osnr'] = self.vdm_dict['OSNR [dB]'][1][0]
369+
trans_dom['esnr'] = self.vdm_dict['eSNR [dB]'][1][0]
370+
trans_dom['cfo'] = self.vdm_dict['CFO [MHz]'][1][0]
371+
trans_dom['tx_curr_power'] = self.vdm_dict['Tx Power [dBm]'][1][0]
372+
trans_dom['rx_tot_power'] = self.vdm_dict['Rx Total Power [dBm]'][1][0]
379373
trans_dom['rx_sig_power'] = self.vdm_dict['Rx Signal Power [dBm]'][1][0]
380374
except KeyError:
381375
pass
@@ -529,44 +523,38 @@ def get_transceiver_threshold_info(self):
529523
trans_dom_th['cdlonglowalarm'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][2]
530524
trans_dom_th['cdlonghighwarning'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][3]
531525
trans_dom_th['cdlonglowwarning'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][4]
532-
except KeyError:
533-
pass
534-
trans_dom_th['dgdhighalarm'] = self.vdm_dict['DGD [ps]'][1][1]
535-
trans_dom_th['dgdlowalarm'] = self.vdm_dict['DGD [ps]'][1][2]
536-
trans_dom_th['dgdhighwarning'] = self.vdm_dict['DGD [ps]'][1][3]
537-
trans_dom_th['dgdlowwarning'] = self.vdm_dict['DGD [ps]'][1][4]
538-
try:
526+
trans_dom_th['dgdhighalarm'] = self.vdm_dict['DGD [ps]'][1][1]
527+
trans_dom_th['dgdlowalarm'] = self.vdm_dict['DGD [ps]'][1][2]
528+
trans_dom_th['dgdhighwarning'] = self.vdm_dict['DGD [ps]'][1][3]
529+
trans_dom_th['dgdlowwarning'] = self.vdm_dict['DGD [ps]'][1][4]
539530
trans_dom_th['sopmdhighalarm'] = self.vdm_dict['SOPMD [ps^2]'][1][1]
540531
trans_dom_th['sopmdlowalarm'] = self.vdm_dict['SOPMD [ps^2]'][1][2]
541532
trans_dom_th['sopmdhighwarning'] = self.vdm_dict['SOPMD [ps^2]'][1][3]
542533
trans_dom_th['sopmdlowwarning'] = self.vdm_dict['SOPMD [ps^2]'][1][4]
543-
except KeyError:
544-
pass
545-
trans_dom_th['pdlhighalarm'] = self.vdm_dict['PDL [dB]'][1][1]
546-
trans_dom_th['pdllowalarm'] = self.vdm_dict['PDL [dB]'][1][2]
547-
trans_dom_th['pdlhighwarning'] = self.vdm_dict['PDL [dB]'][1][3]
548-
trans_dom_th['pdllowwarning'] = self.vdm_dict['PDL [dB]'][1][4]
549-
trans_dom_th['osnrhighalarm'] = self.vdm_dict['OSNR [dB]'][1][1]
550-
trans_dom_th['osnrlowalarm'] = self.vdm_dict['OSNR [dB]'][1][2]
551-
trans_dom_th['osnrhighwarning'] = self.vdm_dict['OSNR [dB]'][1][3]
552-
trans_dom_th['osnrlowwarning'] = self.vdm_dict['OSNR [dB]'][1][4]
553-
trans_dom_th['esnrhighalarm'] = self.vdm_dict['eSNR [dB]'][1][1]
554-
trans_dom_th['esnrlowalarm'] = self.vdm_dict['eSNR [dB]'][1][2]
555-
trans_dom_th['esnrhighwarning'] = self.vdm_dict['eSNR [dB]'][1][3]
556-
trans_dom_th['esnrlowwarning'] = self.vdm_dict['eSNR [dB]'][1][4]
557-
trans_dom_th['cfohighalarm'] = self.vdm_dict['CFO [MHz]'][1][1]
558-
trans_dom_th['cfolowalarm'] = self.vdm_dict['CFO [MHz]'][1][2]
559-
trans_dom_th['cfohighwarning'] = self.vdm_dict['CFO [MHz]'][1][3]
560-
trans_dom_th['cfolowwarning'] = self.vdm_dict['CFO [MHz]'][1][4]
561-
trans_dom_th['txcurrpowerhighalarm'] = self.vdm_dict['Tx Power [dBm]'][1][1]
562-
trans_dom_th['txcurrpowerlowalarm'] = self.vdm_dict['Tx Power [dBm]'][1][2]
563-
trans_dom_th['txcurrpowerhighwarning'] = self.vdm_dict['Tx Power [dBm]'][1][3]
564-
trans_dom_th['txcurrpowerlowwarning'] = self.vdm_dict['Tx Power [dBm]'][1][4]
565-
trans_dom_th['rxtotpowerhighalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][1]
566-
trans_dom_th['rxtotpowerlowalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][2]
567-
trans_dom_th['rxtotpowerhighwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][3]
568-
trans_dom_th['rxtotpowerlowwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][4]
569-
try:
534+
trans_dom_th['pdlhighalarm'] = self.vdm_dict['PDL [dB]'][1][1]
535+
trans_dom_th['pdllowalarm'] = self.vdm_dict['PDL [dB]'][1][2]
536+
trans_dom_th['pdlhighwarning'] = self.vdm_dict['PDL [dB]'][1][3]
537+
trans_dom_th['pdllowwarning'] = self.vdm_dict['PDL [dB]'][1][4]
538+
trans_dom_th['osnrhighalarm'] = self.vdm_dict['OSNR [dB]'][1][1]
539+
trans_dom_th['osnrlowalarm'] = self.vdm_dict['OSNR [dB]'][1][2]
540+
trans_dom_th['osnrhighwarning'] = self.vdm_dict['OSNR [dB]'][1][3]
541+
trans_dom_th['osnrlowwarning'] = self.vdm_dict['OSNR [dB]'][1][4]
542+
trans_dom_th['esnrhighalarm'] = self.vdm_dict['eSNR [dB]'][1][1]
543+
trans_dom_th['esnrlowalarm'] = self.vdm_dict['eSNR [dB]'][1][2]
544+
trans_dom_th['esnrhighwarning'] = self.vdm_dict['eSNR [dB]'][1][3]
545+
trans_dom_th['esnrlowwarning'] = self.vdm_dict['eSNR [dB]'][1][4]
546+
trans_dom_th['cfohighalarm'] = self.vdm_dict['CFO [MHz]'][1][1]
547+
trans_dom_th['cfolowalarm'] = self.vdm_dict['CFO [MHz]'][1][2]
548+
trans_dom_th['cfohighwarning'] = self.vdm_dict['CFO [MHz]'][1][3]
549+
trans_dom_th['cfolowwarning'] = self.vdm_dict['CFO [MHz]'][1][4]
550+
trans_dom_th['txcurrpowerhighalarm'] = self.vdm_dict['Tx Power [dBm]'][1][1]
551+
trans_dom_th['txcurrpowerlowalarm'] = self.vdm_dict['Tx Power [dBm]'][1][2]
552+
trans_dom_th['txcurrpowerhighwarning'] = self.vdm_dict['Tx Power [dBm]'][1][3]
553+
trans_dom_th['txcurrpowerlowwarning'] = self.vdm_dict['Tx Power [dBm]'][1][4]
554+
trans_dom_th['rxtotpowerhighalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][1]
555+
trans_dom_th['rxtotpowerlowalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][2]
556+
trans_dom_th['rxtotpowerhighwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][3]
557+
trans_dom_th['rxtotpowerlowwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][4]
570558
trans_dom_th['rxsigpowerhighalarm'] = self.vdm_dict['Rx Signal Power [dBm]'][1][1]
571559
trans_dom_th['rxsigpowerlowalarm'] = self.vdm_dict['Rx Signal Power [dBm]'][1][2]
572560
trans_dom_th['rxsigpowerhighwarning'] = self.vdm_dict['Rx Signal Power [dBm]'][1][3]
@@ -784,61 +772,52 @@ def get_transceiver_status(self):
784772
trans_status['biasyplowalarm_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][6]
785773
trans_status['biasyphighwarning_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][7]
786774
trans_status['biasyplowwarning_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][8]
787-
except KeyError:
788-
pass
789-
trans_status['cdshorthighalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][5]
790-
trans_status['cdshortlowalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][6]
791-
trans_status['cdshorthighwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][7]
792-
trans_status['cdshortlowwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][8]
793-
try:
775+
trans_status['cdshorthighalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][5]
776+
trans_status['cdshortlowalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][6]
777+
trans_status['cdshorthighwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][7]
778+
trans_status['cdshortlowwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][8]
794779
trans_status['cdlonghighalarm_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][5]
795780
trans_status['cdlonglowalarm_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][6]
796781
trans_status['cdlonghighwarning_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][7]
797782
trans_status['cdlonglowwarning_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][8]
798-
except KeyError:
799-
pass
800-
trans_status['dgdhighalarm_flag'] = self.vdm_dict['DGD [ps]'][1][5]
801-
trans_status['dgdlowalarm_flag'] = self.vdm_dict['DGD [ps]'][1][6]
802-
trans_status['dgdhighwarning_flag'] = self.vdm_dict['DGD [ps]'][1][7]
803-
trans_status['dgdlowwarning_flag'] = self.vdm_dict['DGD [ps]'][1][8]
804-
try:
783+
trans_status['dgdhighalarm_flag'] = self.vdm_dict['DGD [ps]'][1][5]
784+
trans_status['dgdlowalarm_flag'] = self.vdm_dict['DGD [ps]'][1][6]
785+
trans_status['dgdhighwarning_flag'] = self.vdm_dict['DGD [ps]'][1][7]
786+
trans_status['dgdlowwarning_flag'] = self.vdm_dict['DGD [ps]'][1][8]
805787
trans_status['sopmdhighalarm_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][5]
806788
trans_status['sopmdlowalarm_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][6]
807789
trans_status['sopmdhighwarning_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][7]
808790
trans_status['sopmdlowwarning_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][8]
809-
except KeyError:
810-
pass
811-
trans_status['pdlhighalarm_flag'] = self.vdm_dict['PDL [dB]'][1][5]
812-
trans_status['pdllowalarm_flag'] = self.vdm_dict['PDL [dB]'][1][6]
813-
trans_status['pdlhighwarning_flag'] = self.vdm_dict['PDL [dB]'][1][7]
814-
trans_status['pdllowwarning_flag'] = self.vdm_dict['PDL [dB]'][1][8]
815-
trans_status['osnrhighalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][5]
816-
trans_status['osnrlowalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][6]
817-
trans_status['osnrhighwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][7]
818-
trans_status['osnrlowwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][8]
819-
trans_status['esnrhighalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][5]
820-
trans_status['esnrlowalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][6]
821-
trans_status['esnrhighwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][7]
822-
trans_status['esnrlowwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][8]
823-
trans_status['cfohighalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][5]
824-
trans_status['cfolowalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][6]
825-
trans_status['cfohighwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][7]
826-
trans_status['cfolowwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][8]
827-
trans_status['txcurrpowerhighalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][5]
828-
trans_status['txcurrpowerlowalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][6]
829-
trans_status['txcurrpowerhighwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][7]
830-
trans_status['txcurrpowerlowwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][8]
831-
trans_status['rxtotpowerhighalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][5]
832-
trans_status['rxtotpowerlowalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][6]
833-
trans_status['rxtotpowerhighwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][7]
834-
trans_status['rxtotpowerlowwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][8]
835-
try:
791+
trans_status['pdlhighalarm_flag'] = self.vdm_dict['PDL [dB]'][1][5]
792+
trans_status['pdllowalarm_flag'] = self.vdm_dict['PDL [dB]'][1][6]
793+
trans_status['pdlhighwarning_flag'] = self.vdm_dict['PDL [dB]'][1][7]
794+
trans_status['pdllowwarning_flag'] = self.vdm_dict['PDL [dB]'][1][8]
795+
trans_status['osnrhighalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][5]
796+
trans_status['osnrlowalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][6]
797+
trans_status['osnrhighwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][7]
798+
trans_status['osnrlowwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][8]
799+
trans_status['esnrhighalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][5]
800+
trans_status['esnrlowalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][6]
801+
trans_status['esnrhighwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][7]
802+
trans_status['esnrlowwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][8]
803+
trans_status['cfohighalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][5]
804+
trans_status['cfolowalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][6]
805+
trans_status['cfohighwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][7]
806+
trans_status['cfolowwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][8]
807+
trans_status['txcurrpowerhighalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][5]
808+
trans_status['txcurrpowerlowalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][6]
809+
trans_status['txcurrpowerhighwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][7]
810+
trans_status['txcurrpowerlowwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][8]
811+
trans_status['rxtotpowerhighalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][5]
812+
trans_status['rxtotpowerlowalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][6]
813+
trans_status['rxtotpowerhighwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][7]
814+
trans_status['rxtotpowerlowwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][8]
836815
trans_status['rxsigpowerhighalarm_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][5]
837816
trans_status['rxsigpowerlowalarm_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][6]
838817
trans_status['rxsigpowerhighwarning_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][7]
839818
trans_status['rxsigpowerlowwarning_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][8]
840819
except KeyError:
841-
helper_logger.log_debug('Rx Signal Power [dBm] not present in VDM')
820+
helper_logger.log_debug('fields not present in VDM')
842821
return trans_status
843822

844823
def get_transceiver_pm(self):

0 commit comments

Comments
 (0)