From 8844cfbc6e0be5892a1e955fe527e764e5c850b3 Mon Sep 17 00:00:00 2001 From: Ricky Date: Wed, 27 Dec 2017 11:45:27 +0530 Subject: [PATCH] integration: Add statuspage.io webhook integration. --- .../images/integrations/logos/statuspage.png | Bin 0 -> 3816 bytes static/images/integrations/statuspage/001.png | Bin 0 -> 35093 bytes static/images/integrations/statuspage/002.png | Bin 0 -> 53115 bytes static/images/integrations/statuspage/003.png | Bin 0 -> 16291 bytes zerver/lib/integrations.py | 1 + zerver/webhooks/statuspage/__init__.py | 0 zerver/webhooks/statuspage/doc.md | 23 +++++ .../fixtures/component_status_update.json | 32 ++++++ .../statuspage/fixtures/incident_created.json | 75 ++++++++++++++ .../statuspage/fixtures/incident_update.json | 96 ++++++++++++++++++ zerver/webhooks/statuspage/tests.py | 38 +++++++ zerver/webhooks/statuspage/view.py | 60 +++++++++++ 12 files changed, 325 insertions(+) create mode 100644 static/images/integrations/logos/statuspage.png create mode 100644 static/images/integrations/statuspage/001.png create mode 100644 static/images/integrations/statuspage/002.png create mode 100644 static/images/integrations/statuspage/003.png create mode 100644 zerver/webhooks/statuspage/__init__.py create mode 100644 zerver/webhooks/statuspage/doc.md create mode 100644 zerver/webhooks/statuspage/fixtures/component_status_update.json create mode 100644 zerver/webhooks/statuspage/fixtures/incident_created.json create mode 100644 zerver/webhooks/statuspage/fixtures/incident_update.json create mode 100644 zerver/webhooks/statuspage/tests.py create mode 100644 zerver/webhooks/statuspage/view.py diff --git a/static/images/integrations/logos/statuspage.png b/static/images/integrations/logos/statuspage.png new file mode 100644 index 0000000000000000000000000000000000000000..a8401eed09017e9b11c21333ec654da49af174ec GIT binary patch literal 3816 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 F{{xK1LuUX0 literal 0 HcmV?d00001 diff --git a/static/images/integrations/statuspage/001.png b/static/images/integrations/statuspage/001.png new file mode 100644 index 0000000000000000000000000000000000000000..18b6194af35851aa98c74b7bfe3ed7cb0a39c421 GIT binary patch literal 35093 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 v!9HFNeSZaCK33Qr|5&I0bIQ>_PacGAgdMPy(U% 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℘o(rRf!g9I8KXaT8hg{CmDS2%Y_vcJ?d`kk? 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 literal 0 HcmV?d00001 diff --git a/zerver/lib/integrations.py b/zerver/lib/integrations.py index e304eb360af95e..3707a05bf7340f 100644 --- a/zerver/lib/integrations.py +++ b/zerver/lib/integrations.py @@ -349,6 +349,7 @@ def __init__(self, name: str, *args: Any, **kwargs: Any) -> None: WebhookIntegration('slack', ['communication']), WebhookIntegration('solano', ['continuous-integration'], display_name='Solano Labs'), WebhookIntegration('splunk', ['monitoring'], display_name='Splunk'), + WebhookIntegration('statuspage', ['customer-support'], display_name='Statuspage'), WebhookIntegration('stripe', ['financial'], display_name='Stripe'), WebhookIntegration('taiga', ['project-management']), WebhookIntegration('teamcity', ['continuous-integration']), diff --git a/zerver/webhooks/statuspage/__init__.py b/zerver/webhooks/statuspage/__init__.py new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/zerver/webhooks/statuspage/doc.md b/zerver/webhooks/statuspage/doc.md new file mode 100644 index 00000000000000..e851e0e1b95fcb --- /dev/null +++ b/zerver/webhooks/statuspage/doc.md @@ -0,0 +1,23 @@ +Get Zulip notifications for your Statuspage.io subscriptions! + +{!create-stream.md!} + +{!create-bot-construct-url.md!} + +What company needs to do: +Go to the **subscribers settings** in **notifications** tab and enable notifications delivery through **WEBHOOK**. + +![](/static/images/integrations/statuspage/001.png) + +In order to subscribe to a company's Statuspage.io notifications: + +1. Go to the company's Statuspage.io site (for instance, `example.statuspage.io`). +2. Click on **SUBSCRIBE TO UPDATES** +3. Enter the webhook URL constructed above in the **Target Webhook** field. +4. Click on **SUBSCRIBE TO NOTIFICATIONS**. + +![](/static/images/integrations/statuspage/002.png) + +{!congrats.md!} + +![](/static/images/integrations/statuspage/003.png) diff --git a/zerver/webhooks/statuspage/fixtures/component_status_update.json b/zerver/webhooks/statuspage/fixtures/component_status_update.json new file mode 100644 index 00000000000000..cb0afcff1a1100 --- /dev/null +++ b/zerver/webhooks/statuspage/fixtures/component_status_update.json @@ -0,0 +1,32 @@ +{ + "meta": { + "unsubscribe": "http://mycompany24.statuspage.io/?unsubscribe=zjcdb6727vmj", + "documentation": "http://doers.statuspage.io/customer-notifications/webhooks/", + "generated_at": "2017-12-26T07:59:09.498Z" + }, + "page": { + "id": "jb7j80lkgqvb", + "status_indicator": "maintenance", + "status_description": "Service Under Maintenance" + }, + "component": { + "status": "under_maintenance", + "name": "Database component", + "created_at": "2017-12-26T07:57:28.743Z", + "updated_at": "2017-12-26T07:59:09.371Z", + "position": 3, + "description": null, + "showcase": true, + "id": "sqm6pl84wzjc", + "page_id": "jb7j80lkgqvb", + "group_id": null + }, + "component_update": { + "old_status": "operational", + "new_status": "under_maintenance", + "created_at": "2017-12-26T07:59:09.379Z", + "component_type": "Component", + "id": "nd963wv4j30b", + "component_id": "sqm6pl84wzjc" + } +} diff --git a/zerver/webhooks/statuspage/fixtures/incident_created.json b/zerver/webhooks/statuspage/fixtures/incident_created.json new file mode 100644 index 00000000000000..adbdfcb39c8175 --- /dev/null +++ b/zerver/webhooks/statuspage/fixtures/incident_created.json @@ -0,0 +1,75 @@ +{ + "meta": { + "unsubscribe": "http://mycompany24.statuspage.io/?unsubscribe=zjcdb6727vmj", + "documentation": "http://doers.statuspage.io/customer-notifications/webhooks/", + "generated_at": "2017-12-26T07:32:00.770Z" + }, + "page": { + "id": "jb7j80lkgqvb", + "status_indicator": "none", + "status_description": "All Systems Operational" + }, + "incident": { + "name": "Database query delays", + "status": "identified", + "created_at": "2017-12-26T07:32:00.507Z", + "updated_at": "2017-12-26T07:32:00.603Z", + "monitoring_at": null, + "resolved_at": null, + "impact": "none", + "shortlink": "http://stspg.io/646947c1e", + "postmortem_ignored": false, + "postmortem_body": null, + "postmortem_body_last_updated_at": null, + "postmortem_published_at": null, + "postmortem_notified_subscribers": false, + "postmortem_notified_twitter": false, + "backfilled": false, + "scheduled_for": null, + "scheduled_until": null, + "scheduled_remind_prior": false, + "scheduled_reminded_at": null, + "impact_override": null, + "scheduled_auto_in_progress": false, + "scheduled_auto_completed": false, + "id": "z3lct0r596n4", + "page_id": "jb7j80lkgqvb", + "incident_updates": [ + { + "status": "identified", + "body": "We just encountered that database queries are timing out resulting in inconvenience to our end users...we'll do quick fix latest by tommorow !!!", + "created_at": "2017-12-26T07:32:00.548Z", + "wants_twitter_update": false, + "twitter_updated_at": null, + "updated_at": "2017-12-26T07:32:00.548Z", + "display_at": "2017-12-26T07:32:00.548Z", + "affected_components": [ + { + "code": "zvdm6f7gf76j", + "name": "Management Portal (example)", + "old_status": "operational", + "new_status": "operational" + } + ], + "custom_tweet": null, + "deliver_notifications": true, + "id": "qm8bgczn0p2n", + "incident_id": "z3lct0r596n4" + } + ], + "components": [ + { + "status": "operational", + "name": "Management Portal (example)", + "created_at": "2017-12-25T18:44:27.901Z", + "updated_at": "2017-12-25T18:44:27.901Z", + "position": 2, + "description": null, + "showcase": true, + "id": "zvdm6f7gf76j", + "page_id": "jb7j80lkgqvb", + "group_id": null + } + ] + } +} diff --git a/zerver/webhooks/statuspage/fixtures/incident_update.json b/zerver/webhooks/statuspage/fixtures/incident_update.json new file mode 100644 index 00000000000000..8704a684ba4dfc --- /dev/null +++ b/zerver/webhooks/statuspage/fixtures/incident_update.json @@ -0,0 +1,96 @@ +{ + "meta": { + "unsubscribe": "http://mycompany24.statuspage.io/?unsubscribe=zjcdb6727vmj", + "documentation": "http://doers.statuspage.io/customer-notifications/webhooks/", + "generated_at": "2017-12-26T07:37:21.000Z" + }, + "page": { + "id": "jb7j80lkgqvb", + "status_indicator": "none", + "status_description": "All Systems Operational" + }, + "incident": { + "name": "Database query delays", + "status": "resolved", + "created_at": "2017-12-26T07:32:00.507Z", + "updated_at": "2017-12-26T07:37:20.837Z", + "monitoring_at": null, + "resolved_at": "2017-12-26T07:37:20.785Z", + "impact": "none", + "shortlink": "http://stspg.io/646947c1e", + "postmortem_ignored": false, + "postmortem_body": null, + "postmortem_body_last_updated_at": null, + "postmortem_published_at": null, + "postmortem_notified_subscribers": false, + "postmortem_notified_twitter": false, + "backfilled": false, + "scheduled_for": null, + "scheduled_until": null, + "scheduled_remind_prior": false, + "scheduled_reminded_at": null, + "impact_override": null, + "scheduled_auto_in_progress": false, + "scheduled_auto_completed": false, + "id": "z3lct0r596n4", + "page_id": "jb7j80lkgqvb", + "incident_updates": [ + { + "status": "resolved", + "body": "The database issue is resolved.", + "created_at": "2017-12-26T07:37:20.785Z", + "wants_twitter_update": false, + "twitter_updated_at": null, + "updated_at": "2017-12-26T07:37:20.785Z", + "display_at": "2017-12-26T07:37:20.785Z", + "affected_components": [ + { + "code": "zvdm6f7gf76j", + "name": "Management Portal (example)", + "old_status": "operational", + "new_status": "operational" + } + ], + "custom_tweet": null, + "deliver_notifications": true, + "id": "cdwfdrjlp53y", + "incident_id": "z3lct0r596n4" + }, + { + "status": "identified", + "body": "We just encountered that database queries are timing out resulting in inconvenience to our end users...we'll do quick fix latest by tommorow !!!", + "created_at": "2017-12-26T07:32:00.548Z", + "wants_twitter_update": false, + "twitter_updated_at": null, + "updated_at": "2017-12-26T07:32:00.548Z", + "display_at": "2017-12-26T07:32:00.548Z", + "affected_components": [ + { + "code": "zvdm6f7gf76j", + "name": "Management Portal (example)", + "old_status": "operational", + "new_status": "operational" + } + ], + "custom_tweet": null, + "deliver_notifications": true, + "id": "qm8bgczn0p2n", + "incident_id": "z3lct0r596n4" + } + ], + "components": [ + { + "status": "operational", + "name": "Management Portal (example)", + "created_at": "2017-12-25T18:44:27.901Z", + "updated_at": "2017-12-25T18:44:27.901Z", + "position": 2, + "description": null, + "showcase": true, + "id": "zvdm6f7gf76j", + "page_id": "jb7j80lkgqvb", + "group_id": null + } + ] + } +} diff --git a/zerver/webhooks/statuspage/tests.py b/zerver/webhooks/statuspage/tests.py new file mode 100644 index 00000000000000..1cd6c8e8d96b87 --- /dev/null +++ b/zerver/webhooks/statuspage/tests.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +from typing import Text +from zerver.lib.test_classes import WebhookTestCase + +class StatuspageHookTests(WebhookTestCase): + STREAM_NAME = 'statuspage-test' + URL_TEMPLATE = u"/api/v1/external/statuspage?api_key={api_key}" + + def test_statuspage_incident(self) -> None: + expected_subject = u"Database query delays: All Systems Operational" + expected_message = u"**Database query delays** \n * State: **identified** \n \ +* Description: We just encountered that database queries are timing out resulting in inconvenience \ +to our end users...we'll do quick fix latest by tommorow !!!" + self.send_and_test_stream_message('incident_created', + expected_subject, + expected_message, + content_type="application/x-www-form-urlencoded") + + def test_statuspage_incident_update(self) -> None: + expected_subject = u"Database query delays: All Systems Operational" + expected_message = u"**Database query delays** \n * State: **resolved** \n \ +* Description: The database issue is resolved." + self.send_and_test_stream_message('incident_update', + expected_subject, + expected_message, + content_type="application/x-www-form-urlencoded") + + def test_statuspage_component(self) -> None: + expected_subject = u"Database component: Service Under Maintenance" + expected_message = u"**Database component** has changed status \ +from **operational** to **under_maintenance**" + self.send_and_test_stream_message('component_status_update', + expected_subject, + expected_message, + content_type="application/x-www-form-urlencoded") + + def get_body(self, fixture_name: Text) -> Text: + return self.fixture_data("statuspage", fixture_name, file_type="json") diff --git a/zerver/webhooks/statuspage/view.py b/zerver/webhooks/statuspage/view.py new file mode 100644 index 00000000000000..0a87cfc7e0a986 --- /dev/null +++ b/zerver/webhooks/statuspage/view.py @@ -0,0 +1,60 @@ +# Webhooks for external integrations. +from django.utils.translation import ugettext as _ +from zerver.lib.actions import check_send_stream_message +from zerver.lib.response import json_success +from zerver.decorator import REQ, has_request_variables, api_key_only_webhook_view +from zerver.models import get_client, UserProfile +from django.http import HttpRequest, HttpResponse +from typing import Dict, Any, Text + +INCIDENT_TEMPLATE = u'**{name}** \n * State: **{state}** \n * Description: {content}' +COMPONENT_TEMPLATE = u'**{name}** has changed status from **{old_status}** to **{new_status}**' +TOPIC_TEMPLATE = u'{name}: {description}' + +def get_incident_events_body(payload: Dict[Text, Any]) -> Text: + return INCIDENT_TEMPLATE.format( + name = payload["incident"]["name"], + state = payload["incident"]["status"], + content = payload["incident"]["incident_updates"][0]["body"], + ) + +def get_components_update_body(payload: Dict[Text, Any]) -> Text: + return COMPONENT_TEMPLATE.format( + name = payload["component"]["name"], + old_status = payload["component_update"]["old_status"], + new_status = payload["component_update"]["new_status"], + ) + +def get_incident_topic(payload: Dict[Text, Any]) -> Text: + return TOPIC_TEMPLATE.format( + name = payload["incident"]["name"], + description = payload["page"]["status_description"], + ) + +def get_component_topic(payload: Dict[Text, Any]) -> Text: + return TOPIC_TEMPLATE.format( + name = payload["component"]["name"], + description = payload["page"]["status_description"], + ) + +@api_key_only_webhook_view('Statuspage') +@has_request_variables +def api_statuspage_webhook(request: HttpRequest, user_profile: UserProfile, + payload: Dict[str, Any]=REQ(argument_type='body'), + stream: str=REQ(default='statuspage-test')) -> HttpResponse: + + status = payload["page"]["status_indicator"] + + if status == "none": + topic = get_incident_topic(payload) + body = get_incident_events_body(payload) + else: + topic = get_component_topic(payload) + body = get_components_update_body(payload) + + check_send_stream_message(user_profile, + request.client, + stream, + topic, + body) + return json_success()