Beispiel #1
0
    def __init__(self):

        mq = Messaging()

        FanoutConsumer.__init__(self, mq.connection)
        threading.Thread.__init__(self)

        self.pd = PagerDutyClient()
Beispiel #2
0
    def __init__(self, mq):

        self.mq = mq

        self.pd = PagerDutyClient()

        MessageHandler.__init__(self)
Beispiel #3
0
    def __init__(self):

        mq = Messaging()

        FanoutConsumer.__init__(self, mq.connection)
        threading.Thread.__init__(self)

        self.pd = PagerDutyClient()
Beispiel #4
0
class PagerDutyMessage(MessageHandler):

    def __init__(self, mq):

        self.mq = mq

        self.pd = PagerDutyClient()

        MessageHandler.__init__(self)

    def on_message(self, headers, body):

        LOG.debug("Received: %s", body)
        try:
            pdAlert = Alert.parse_alert(body)
        except ValueError:
            return

        if 'pagerduty' not in pdAlert.tags:
            return

        if pdAlert.status == status_code.OPEN:
            self.pd.trigger_event(pdAlert)
        elif pdAlert.status == status_code.ACK:
            self.pd.acknowledge_event(pdAlert)
        elif pdAlert.status == status_code.CLOSED:
            self.pd.resolve_event(pdAlert)

    def on_disconnected(self):

        self.mq.reconnect()
Beispiel #5
0
class PagerDutyMessage(FanoutConsumer, threading.Thread):
    def __init__(self):

        mq = Messaging()

        FanoutConsumer.__init__(self, mq.connection)
        threading.Thread.__init__(self)

        self.pd = PagerDutyClient()

    def on_message(self, body, message):

        LOG.debug("Received: %s", body)
        try:
            pdAlert = AlertDocument.parse_alert(body)
        except ValueError:
            return

        if pdAlert:
            if not any(tag.startswith('pagerduty') for tag in pdAlert.tags):
                return

            # do not trigger new incidents from updates
            if pdAlert.origin == 'pagerduty/webhook':  # set by alerta /pagerduty API endpoint
                return

            for tag in pdAlert.tags:
                if tag.startswith('pagerduty'):
                    _, service = tag.split('=', 1)

            LOG.info('PagerDuty Incident on %s %s -> %s', service,
                     pdAlert.get_id(), pdAlert.status)

            incident_key = pdAlert.get_id()
            if pdAlert.status == status_code.OPEN:
                self.pd.trigger_event(pdAlert,
                                      service,
                                      incident_key=incident_key)
            elif pdAlert.status == status_code.ACK:
                self.pd.acknowledge_event(pdAlert,
                                          service,
                                          incident_key=incident_key)
            elif pdAlert.status == status_code.CLOSED:
                self.pd.resolve_event(pdAlert,
                                      service,
                                      incident_key=incident_key)
Beispiel #6
0
class PagerDutyMessage(FanoutConsumer, threading.Thread):

    def __init__(self):

        mq = Messaging()
        self.connection = mq.connection

        FanoutConsumer.__init__(self, self.connection)
        threading.Thread.__init__(self)

        self.pd = PagerDutyClient()

    def on_message(self, body, message):

        LOG.debug("Received: %s", body)
        try:
            pdAlert = AlertDocument.parse_alert(body)
        except ValueError:
            return

        if pdAlert:
            if not any(tag.startswith('pagerduty') for tag in pdAlert.tags):
                return

            # do not trigger new incidents from updates
            if pdAlert.origin == 'pagerduty/webhook':  # set by alerta /pagerduty API endpoint
                return

            for tag in pdAlert.tags:
                if tag.startswith('pagerduty'):
                    _, service = tag.split('=', 1)

            LOG.info('PagerDuty Incident on %s %s -> %s', service, pdAlert.get_id(), pdAlert.status)

            incident_key = pdAlert.get_id()
            if pdAlert.status == status_code.OPEN:
                self.pd.trigger_event(pdAlert, service, incident_key=incident_key)
            elif pdAlert.status == status_code.ACK:
                self.pd.acknowledge_event(pdAlert, service, incident_key=incident_key)
            elif pdAlert.status == status_code.CLOSED:
                self.pd.resolve_event(pdAlert, service, incident_key=incident_key)
Beispiel #7
0
class PagerDutyMessage(MessageHandler):

    def __init__(self, mq):

        self.mq = mq

        self.pd = PagerDutyClient()

        MessageHandler.__init__(self)

    def on_message(self, headers, body):

        LOG.debug("Received: %s", body)
        try:
            pdAlert = Alert.parse_alert(body)
        except ValueError:
            return

        # do not trigger new incidents from updates
        if pdAlert.origin == 'pagerduty/webhook':
            return

        if 'pagerduty' not in pdAlert.tags.keys():
            return

        LOG.info('PagerDuty Incident %s status %s', pdAlert.get_id(), pdAlert.status)

        incident_key = pdAlert.get_id()
        if pdAlert.status == status_code.OPEN:
            self.pd.trigger_event(pdAlert, incident_key=incident_key)
        elif pdAlert.status == status_code.ACK:
            self.pd.acknowledge_event(pdAlert, incident_key=incident_key)
        elif pdAlert.status == status_code.CLOSED:
            self.pd.resolve_event(pdAlert, incident_key=incident_key)

    def on_disconnected(self):

        self.mq.reconnect()