Exemplo n.º 1
0
    def checkForPages(self):        
        if self.args.verbose:
            print "Connecting to PagerDuty..."

        pager = PagerDuty(self.config.get("settings","pagerdutyHost"),self.config.get("settings","pagerdutyApiKey"))

        currentTime = datetime.utcnow()
        cronInterval = self.config.getint("settings","cronInterval")
        pastTime = currentTime - timedelta(minutes=cronInterval)

        currentTimeStr = currentTime.strftime('%Y-%m-%dT%X')
        pastTimeStr= pastTime.strftime('%Y-%m-%dT%X')

        argList = {}
        argList['since'] = pastTimeStr
        argList['until'] = currentTimeStr
        argList['fields'] = "incident_number,status,trigger_summary_data,last_status_change_by,service"
        if self.config.getboolean("settings","triggeredOnly"):
            argList['status'] = 'triggered'

        if self.args.verbose:
            print "Fetching incidents..."
            print argList
        incidents = pager.incidents.list(**argList)

        if self.args.verbose:
            print "Looping incidents..."
        for incident in incidents:
            if self.args.verbose:
                print incident
            incident_json = incident.trigger_summary_data.to_json()
            subject = incident.service.name
            message = " - ".join(item[1] for item in incident_json.items())

            if incident.status != 'triggered':
                if incident.last_status_change_by is not None:
                    message = incident.last_status_change_by.name + " " + incident.status + " " + message
                else:
                    message = "API " + incident.status + " " + message

            if self.args.verbose:
                print "Sending incident popup (%s - %s)" % (subject,message)
            self.sendIncident(subject,message)
            time.sleep(self.config.getfloat("settings","notificationDelay"))