client.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from __future__ import absolute_import
  2. from sentry.utils.http import absolute_uri
  3. from new_sentry_plugins.client import ApiClient
  4. # https://v2.developer.pagerduty.com/docs/events-api
  5. INTEGRATION_API_URL = "https://events.pagerduty.com/generic/2010-04-15/create_event.json"
  6. class PagerDutyClient(ApiClient):
  7. client = "sentry"
  8. plugin_name = "pagerduty"
  9. allow_redirects = False
  10. def __init__(self, service_key=None):
  11. self.service_key = service_key
  12. super(PagerDutyClient, self).__init__()
  13. def build_url(self, path):
  14. return INTEGRATION_API_URL
  15. def request(self, data):
  16. payload = {"service_key": self.service_key}
  17. payload.update(data)
  18. return self._request(path="", method="post", data=payload)
  19. def trigger_incident(
  20. self,
  21. description,
  22. event_type,
  23. details,
  24. incident_key,
  25. client=None,
  26. client_url=None,
  27. contexts=None,
  28. ):
  29. return self.request(
  30. {
  31. "event_type": event_type,
  32. "description": description,
  33. "details": details,
  34. "incident_key": incident_key,
  35. "client": client or self.client,
  36. "client_url": client_url or absolute_uri(),
  37. "contexts": contexts,
  38. }
  39. )