Exemple #1
0
 def send_trigger(self, data):
     # expected payload: https://v2.developer.pagerduty.com/docs/send-an-event-events-api-v2
     # for now, only construct the payload if data is an event
     if isinstance(data, Event):
         source = data.transaction or data.culprit or "<unknown>"
         group = data.group
         level = data.get_tag("level") or "error"
         custom_details = serialize(data, None, ExternalEventSerializer())
         summary = (data.message or data.title)[:1024]
         payload = {
             "routing_key":
             self.integration_key,
             "event_action":
             "trigger",
             "dedup_key":
             group.qualified_short_id,
             "payload": {
                 "summary": summary,
                 "severity": LEVEL_SEVERITY_MAP[level],
                 "source": source,
                 "component": group.project.slug,
                 "custom_details": custom_details,
             },
             "links": [{
                 "href":
                 group.get_absolute_url(
                     params={"referrer": "pagerduty_integration"}),
                 "text":
                 "Issue Details",
             }],
         }
     return self.post("/", data=payload)
Exemple #2
0
    def test_send_trigger(self, mock_request):
        event = self.store_event(
            data={
                "event_id": "a" * 32,
                "message": "message",
                "timestamp": self.min_ago,
                "stacktrace": copy.deepcopy(DEFAULT_EVENT_DATA["stacktrace"]),
            },
            project_id=self.project.id,
        )
        group = event.group

        integration_key = self.service.integration_key
        client = self.installation.get_client(integration_key=integration_key)
        custom_details = serialize(event, None, ExternalEventSerializer())

        client.send_trigger(event)
        data = {
            "routing_key":
            integration_key,
            "event_action":
            "trigger",
            "dedup_key":
            group.qualified_short_id,
            "payload": {
                "summary": event.message,
                "severity": "error",
                "source": event.transaction or event.culprit,
                "component": self.project.slug,
                "custom_details": custom_details,
            },
            "links": [{
                "href":
                group.get_absolute_url(
                    params={"referrer": "pagerduty_integration"}),
                "text":
                "View Sentry Issue Details",
            }],
        }
        mock_request.assert_called_once_with("POST", "/", data=data)