Beispiel #1
0
    def handle(self):
        event = self.event
        alert = AlertGenerator(event)
        interface = event.get_subject()
        is_unresolved = unresolved.refers_to_unresolved_alert(event)

        if event.state == event.STATE_START:
            alert.alert_type = 'linkDegraded'
            if is_unresolved:
                return self._handle_duplicate(alert, is_unresolved)
            if not interface.is_degraded():
                return self._ignore("Got aggregateLinkState start event, but "
                                    "the interface is not currently degraded.")

        elif event.state == event.STATE_END:
            alert.alert_type = 'linkRestored'
            if not is_unresolved:
                return self._ignore("Got aggregateLinkState end event, but "
                                    "there is no currently active alert to "
                                    "resolve.")
            if interface.is_degraded():
                return self._ignore("Got aggregateLinkState end event, but the "
                                    "interface still appears to be degraded.")

        if self._box_is_on_maintenance():
            alert.post_alert_history()
        else:
            alert.post()

        event.delete()
Beispiel #2
0
 def _get_down_alert(self):
     alert = AlertGenerator(self.event)
     if self._verify_shadow():
         alert.alert_type = 'boxShadow'
         self._set_internal_state(Netbox.UP_SHADOW)
     else:
         alert.alert_type = 'boxDown'
     return alert
Beispiel #3
0
 def _get_down_alert(self):
     alert = AlertGenerator(self.event)
     if self._verify_shadow():
         alert.alert_type = 'boxShadow'
         self._set_internal_state(Netbox.UP_SHADOW)
     else:
         alert.alert_type = 'boxDown'
     return alert
Beispiel #4
0
    def _post_down_warning(self):
        """Posts the actual warning alert"""
        alert = AlertGenerator(self.event)
        alert.state = self.event.STATE_STATELESS

        shadow = self._verify_shadow()
        if shadow:
            alert.alert_type = 'boxShadowWarning'
            self._set_internal_state(Netbox.UP_SHADOW)
        else:
            alert.alert_type = 'boxDownWarning'

        self._logger.info("%s: Posting %s alert", self.event.netbox, alert.alert_type)
        alert.post()
Beispiel #5
0
    def _post_down_warning(self):
        """Posts the actual warning alert"""
        alert = AlertGenerator(self.event)
        alert.state = self.event.STATE_STATELESS

        shadow = self._verify_shadow()
        if shadow:
            alert.alert_type = 'boxShadowWarning'
            self._set_internal_state(Netbox.UP_SHADOW)
        else:
            alert.alert_type = 'boxDownWarning'

        self._logger.info("%s: Posting %s alert",
                          self.event.netbox, alert.alert_type)
        alert.post()
Beispiel #6
0
 def _get_up_alert(self):
     alert = AlertGenerator(self.event)
     alert.alert_type = "linkUp"
     self._logger.info(
         "Posting %s alert for %s", alert.alert_type, self.get_target()
     )
     return alert
Beispiel #7
0
 def _get_down_alert(self):
     if self._is_netbox_currently_up():
         alert = AlertGenerator(self.event)
         alert.alert_type = 'snmpAgentDown'
         return alert
     else:
         self._logger.info("%s has gone down in the meantime, "
                           "not posting snmpAgentDown alert",
                           self.get_target())
Beispiel #8
0
 def _post_alert(self, event):
     alert = AlertGenerator(event)
     alert.alert_type = ('onMaintenance' if event.state == event.STATE_START
                         else 'offMaintenance')
     alert.history_vars = dict(alert)
     if alert.is_event_duplicate():
         self._logger.info('Ignoring duplicate event')
     else:
         alert.post()
Beispiel #9
0
    def _post_alert(self, event):
        alert = AlertGenerator(event)
        alert.alert_type = ('exceededThreshold' if event.state
                            == event.STATE_START else 'belowThreshold')

        if alert.is_event_duplicate():
            self._logger.info('Ignoring duplicate alert')
        else:
            alert.post()
 def _post_alert(self, event):
     alert = AlertGenerator(event)
     alert.alert_type = (
         'onMaintenance' if event.state == event.STATE_START
         else 'offMaintenance')
     alert.history_vars = dict(alert)
     if alert.is_event_duplicate():
         self._logger.info('Ignoring duplicate event')
     else:
         alert.post()
Beispiel #11
0
    def _post_alert(self, event):
        alert = AlertGenerator(event)
        alert.alert_type = (
            'exceededThreshold' if event.state == event.STATE_START
            else 'belowThreshold')

        if alert.is_event_duplicate():
            self._logger.info('Ignoring duplicate alert')
        else:
            alert.post()
Beispiel #12
0
    def _get_down_alert(self):
        alert = AlertGenerator(self.event)
        alert.alert_type = "linkDown"

        if any((self._hold_back_alert_due_to_vlan_mismatch(),
                self._hold_back_alert_due_to_redundancy_limit())):
            self._logger.info("%s: withholding %s alert because of unmatched "
                              "criteria", self.get_target(), alert.alert_type)
            return None

        return alert
Beispiel #13
0
    def _post_generic_alert(self, event):
        alert = AlertGenerator(event)
        if 'alerttype' in event.varmap:
            alert.alert_type = event.varmap['alerttype']

        is_stateless = event.state == Event.STATE_STATELESS
        if is_stateless or not alert.is_event_duplicate():
            self._logger.debug('Posting %s event', event.event_type)
            alert.post()
        else:
            self._logger.info('Ignoring duplicate %s event' % event.event_type)
        event.delete()
Beispiel #14
0
    def _post_generic_alert(self, event):
        alert = AlertGenerator(event)
        if 'alerttype' in event.varmap:
            alert.alert_type = event.varmap['alerttype']

        is_stateless = event.state == Event.STATE_STATELESS
        if is_stateless or not alert.is_event_duplicate():
            self._logger.debug('Posting %s event', event.event_type)
            alert.post()
        else:
            self._logger.info('Ignoring duplicate %s event' % event.event_type)
        event.delete()
Beispiel #15
0
    def _get_down_alert(self):
        alert = AlertGenerator(self.event)
        alert.alert_type = "linkDown"

        if any((self._hold_back_alert_due_to_vlan_mismatch(),
                self._hold_back_alert_due_to_redundancy_limit())):
            self._logger.info(
                "%s: withholding %s alert because of unmatched "
                "criteria", self.get_target(), alert.alert_type)
            return None

        return alert
Beispiel #16
0
    def _get_down_alert(self):
        self._post_event_if_aggregate_degraded()  # always verify aggregates
        alert = AlertGenerator(self.event)
        alert.alert_type = "linkDown"

        if any(
            (
                self._hold_back_alert_due_to_vlan_mismatch(),
                self._hold_back_alert_due_to_redundancy_limit(),
            )
        ):
            self._logger.info(
                "%s: withholding %s alert because of unmatched " "criteria",
                self.get_target(),
                alert.alert_type,
            )
            return None

        return alert
Beispiel #17
0
    def _post_generic_alert(self, event):
        alert = AlertGenerator(event)
        if 'alerttype' in event.varmap:
            alert.alert_type = event.varmap['alerttype']

        is_stateless = event.state == Event.STATE_STATELESS
        if is_stateless or not alert.is_event_duplicate():
            if self._box_is_on_maintenance(event):
                self._logger.debug('%s is on maintenance, only posting to '
                                   'alert history for %s event',
                                   event.netbox, event.event_type)
                alert.post_alert_history()
            else:
                self._logger.debug('Posting %s event', event.event_type)
                alert.post()
        else:
            self._logger.info('Ignoring duplicate %s event for %s',
                              event.event_type, event.netbox)
            self._logger.debug('ignored alert details: %r', event)
        event.delete()
Beispiel #18
0
 def _get_up_alert(self):
     alert = AlertGenerator(self.event)
     alert.alert_type = "linkUp"
     self._logger.info("Posting %s alert for %s", alert.alert_type,
                       self.get_target())
     return alert
Beispiel #19
0
 def _get_down_alert(self):
     alert = AlertGenerator(self.event)
     alert.alert_type = 'snmpAgentDown'
     return alert
Beispiel #20
0
 def _get_up_alert(self):
     alert = AlertGenerator(self.event)
     alert.alert_type = 'snmpAgentUp'
     return alert
Beispiel #21
0
 def _get_up_alert(self):
     alert = AlertGenerator(self.event)
     alert.alert_type = 'bgpEstablished'
     return alert
Beispiel #22
0
 def _get_up_alert(self):
     alert = AlertGenerator(self.event)
     is_shadow = self.event.netbox.up == self.event.netbox.UP_SHADOW
     alert.alert_type = "boxSunny" if is_shadow else "boxUp"
     return alert
Beispiel #23
0
 def _get_up_alert(self):
     alert = AlertGenerator(self.event)
     is_shadow = self.event.netbox.up == self.event.netbox.UP_SHADOW
     alert.alert_type = "boxSunny" if is_shadow else "boxUp"
     return alert