def _process_los_alarms(self, ont_los): """ Walk current LOS and set/clear LOS as appropriate :param ont_los: (frozenset) ONU IDs of ONUs in LOS alarm state """ cleared_alarms = self._active_los_alarms - ont_los new_alarms = ont_los - self._active_los_alarms if len(cleared_alarms) > 0 or len(new_alarms) > 0: self.log.info('onu-los', cleared=cleared_alarms, new=new_alarms) for onu_id in cleared_alarms: self._active_los_alarms.remove(onu_id) OnuLosAlarm(self.olt.alarms, onu_id).clear_alarm() for onu_id in new_alarms: self._active_los_alarms.add(onu_id) OnuLosAlarm(self.olt.alarms, onu_id).raise_alarm() self.delete_onu(onu_id)
def onu_alarm_indication(self, onu_alarm_ind): """ LOB = Los of burst LOPC = Loss of PLOAM miss channel :param onu_alarm_ind: Alarm indication which currently contains onu_id: los_status: lob_status: lopc_miss_status: lopc_mic_error_status: :return: """ self.log.info('onu-alarm-indication') try: self.log.debug( 'onu alarm indication received', los_status=onu_alarm_ind.los_status, onu_intf_id=onu_alarm_ind.onu_id, lob_status=onu_alarm_ind.lob_status, lopc_miss_status=onu_alarm_ind.lopc_miss_status, lopc_mic_error_status=onu_alarm_ind.lopc_mic_error_status, intf_id=onu_alarm_ind.intf_id) try: """ Get the specific onu device information for the onu generating the alarm. Extract the id. In the future extract the serial number as well """ onu_device_id = "unresolved" serial_number = "unresolved" onu_device = self.resolve_onu_id( onu_alarm_ind.onu_id, port_intf_id=onu_alarm_ind.intf_id) if onu_device != None: onu_device_id = onu_device.id serial_number = onu_device.serial_number if onu_alarm_ind.los_status == 1 or onu_alarm_ind.los_status == "on": OnuLosAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).raise_alarm() elif onu_alarm_ind.los_status == 0 or onu_alarm_ind.los_status == "off": OnuLosAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).clear_alarm() else: # No Change pass if onu_alarm_ind.lopc_miss_status == 1 or onu_alarm_ind.lopc_miss_status == "on": OnuLopcMissAlarm( self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).raise_alarm() elif (onu_alarm_ind.lopc_miss_status == 0 or onu_alarm_ind.lopc_miss_status == "off"): OnuLopcMissAlarm( self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).clear_alarm() else: # No Change pass if onu_alarm_ind.lopc_mic_error_status == 1 or onu_alarm_ind.lopc_mic_error_status == "on": OnuLopcMicErrorAlarm( self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).raise_alarm() elif onu_alarm_ind.lopc_mic_error_status == 0 or onu_alarm_ind.lopc_mic_error_status == "off": OnuLopcMicErrorAlarm( self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).clear_alarm() else: # No Change pass if onu_alarm_ind.lob_status == 1 or onu_alarm_ind.lob_status == "on": OnuLobAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).raise_alarm() elif onu_alarm_ind.lob_status == 0 or onu_alarm_ind.lob_status == "off": OnuLobAlarm(self.alarms, onu_id=onu_device_id, intf_id=onu_alarm_ind.intf_id).clear_alarm() else: # No Change pass except Exception as alarm_err: self.log.exception('onu-alarm-indication', errmsg=alarm_err.message) except Exception as e: self.log.exception('onu-alarm-indication', errmsg=e.message)
def simulate_alarm(self, alarm): if alarm.indicator == "los": alarm_obj = OltLosAlarm(self.adapter_alarms, intf_id=alarm.intf_id, port_type_name=alarm.port_type_name) elif alarm.indicator == "dying_gasp": alarm_obj = OnuDyingGaspAlarm(self.adapter_alarms, onu_id=alarm.onu_device_id, intf_id=alarm.intf_id) elif alarm.indicator == "onu_los": alarm_obj = OnuLosAlarm(self.adapter_alarms, onu_id=alarm.onu_device_id, intf_id=alarm.intf_id) elif alarm.indicator == "onu_lopc_miss": alarm_obj = OnuLopcMissAlarm(self.adapter_alarms, onu_id=alarm.onu_device_id, intf_id=alarm.intf_id) elif alarm.indicator == "onu_lopc_mic": alarm_obj = OnuLopcMicErrorAlarm(self.adapter_alarms, onu_id=alarm.onu_device_id, intf_id=alarm.intf_id) elif alarm.indicator == "onu_lob": alarm_obj = OnuLobAlarm(self.adapter_alarms, onu_id=alarm.onu_device_id, intf_id=alarm.intf_id) elif alarm.indicator == "onu_startup": alarm_obj = OnuStartupAlarm(self.adapter_alarms, intf_id=alarm.intf_id, onu_id=alarm.onu_device_id) elif alarm.indicator == "onu_signal_degrade": alarm_obj = OnuSignalDegradeAlarm( self.adapter_alarms, intf_id=alarm.intf_id, onu_id=alarm.onu_device_id, inverse_bit_error_rate=alarm.inverse_bit_error_rate) elif alarm.indicator == "onu_drift_of_window": alarm_obj = OnuWindowDriftAlarm(self.adapter_alarms, intf_id=alarm.intf_id, onu_id=alarm.onu_device_id, drift=alarm.drift, new_eqd=alarm.new_eqd) elif alarm.indicator == "onu_signal_fail": alarm_obj = OnuSignalFailAlarm( self.adapter_alarms, intf_id=alarm.intf_id, onu_id=alarm.onu_device_id, inverse_bit_error_rate=alarm.inverse_bit_error_rate) elif alarm.indicator == "onu_activation": alarm_obj = OnuActivationFailAlarm(self.adapter_alarms, intf_id=alarm.intf_id, onu_id=alarm.onu_device_id) elif alarm.indicator == "onu_discovery": alarm_obj = OnuDiscoveryAlarm( self.adapter_alarms, pon_id=alarm.intf_id, serial_number=alarm.onu_serial_number) else: raise Exception("Unknown alarm indicator %s" % alarm.indicator) if alarm.operation == alarm.RAISE: alarm_obj.raise_alarm() elif alarm.operation == alarm.CLEAR: alarm_obj.clear_alarm() else: # This shouldn't happen raise Exception("Unknown alarm operation")