0
0
Fork 0
mirror of https://github.com/alerta/alerta-contrib.git synced 2025-03-17 05:52:38 +00:00
alerta_alerta-contrib/webhooks/sentry/alerta_sentry.py
FloSew 77724f7013 Add Sentry version 9 webhook support (#306)
* Add support for Sentry version 9 callbacks (#281)
Add test for Sentry version 9 callback

* Rollback on some changes in the README.md file

* Add check on environment value for payload before Sentry version 9

Co-authored-by: Nick Satterly <nfsatterly@gmail.com>
2020-01-18 23:32:48 +01:00

40 lines
1.2 KiB
Python

from alerta.models.alert import Alert
from alerta.webhooks import WebhookBase
class SentryWebhook(WebhookBase):
def incoming(self, query_string, payload):
# For Sentry v9
# Defaults to value before Sentry v9
if 'request' in payload.get('event'):
key = 'request'
else:
key = 'sentry.interfaces.Http'
if payload.get('event')[key]['env']['ENV'] == 'prod':
environment = 'Production'
else:
environment = 'Development'
if payload['level'] == 'error':
severity = 'critical'
else:
severity = 'ok'
return Alert(
resource=payload['culprit'],
event=payload['event']['event_id'],
environment=environment,
severity=severity,
service=[payload['project']],
group='Application',
value=payload['level'],
text='{} {}'.format(payload['message'], payload['url']),
tags=['{}={}'.format(k, v) for k, v in payload['event']['tags']],
attributes={'modules': ['{}=={}'.format(k, v) for k, v in payload['event']['modules'].items()]},
origin='sentry.io',
raw_data=str(payload)
)