示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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")