mirror of https://github.com/zulip/zulip.git
statuspage: Properly detect the update is for component or incident.
The value of "status_indicator" can be "none" for both the component and incident updates[1]. Also, it is not at all necessary that the value of "status_indicator" is always "none" for incident updates[2][3]. So our previous logic of using the value of "status_indicator" to determine whether the update is that of a component or incident was incorrect. Instead, we should use "incident" or "component" keys to determine the type of update. This commit fixes issues [1] and [2] in sentry. 1. https://sentry.io/organizations/zulip/issues/2303217561 2. https://sentry.io/organizations/zulip/issues/2303197407 3. https://support.atlassian.com/statuspage/docs/enable-webhook-notifications/
This commit is contained in:
parent
353e1a2016
commit
92316ef4d1
|
@ -6,7 +6,7 @@
|
|||
},
|
||||
"page": {
|
||||
"id": "jb7j80lkgqvb",
|
||||
"status_indicator": "none",
|
||||
"status_indicator": "critical",
|
||||
"status_description": "All Systems Operational"
|
||||
},
|
||||
"incident": {
|
||||
|
|
|
@ -4,6 +4,7 @@ from typing import Any, Dict
|
|||
from django.http import HttpRequest, HttpResponse
|
||||
|
||||
from zerver.decorator import REQ, has_request_variables, webhook_view
|
||||
from zerver.lib.exceptions import UnsupportedWebhookEventType
|
||||
from zerver.lib.response import json_success
|
||||
from zerver.lib.webhooks.common import check_send_webhook_message
|
||||
from zerver.models import UserProfile
|
||||
|
@ -57,14 +58,14 @@ def api_statuspage_webhook(
|
|||
payload: Dict[str, Any] = REQ(argument_type="body"),
|
||||
) -> HttpResponse:
|
||||
|
||||
status = payload["page"]["status_indicator"]
|
||||
|
||||
if status == "none":
|
||||
if "incident" in payload:
|
||||
topic = get_incident_topic(payload)
|
||||
body = get_incident_events_body(payload)
|
||||
else:
|
||||
elif "component" in payload:
|
||||
topic = get_component_topic(payload)
|
||||
body = get_components_update_body(payload)
|
||||
else:
|
||||
raise UnsupportedWebhookEventType("unknown-event")
|
||||
|
||||
check_send_webhook_message(request, user_profile, topic, body)
|
||||
return json_success()
|
||||
|
|
Loading…
Reference in New Issue