Skip to content

Commit 978e2fe

Browse files
committed
Adding trigger incident code sample
1 parent 25447f5 commit 978e2fe

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env python
2+
#
3+
# Copyright (c) 2016, PagerDuty, Inc. <info@pagerduty.com>
4+
# All rights reserved.
5+
#
6+
# Redistribution and use in source and binary forms, with or without
7+
# modification, are permitted provided that the following conditions are met:
8+
# * Redistributions of source code must retain the above copyright
9+
# notice, this list of conditions and the following disclaimer.
10+
# * Redistributions in binary form must reproduce the above copyright
11+
# notice, this list of conditions and the following disclaimer in the
12+
# documentation and/or other materials provided with the distribution.
13+
# * Neither the name of PagerDuty Inc nor the
14+
# names of its contributors may be used to endorse or promote products
15+
# derived from this software without specific prior written permission.
16+
#
17+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20+
# ARE DISCLAIMED. IN NO EVENT SHALL PAGERDUTY INC BE LIABLE FOR ANY
21+
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27+
28+
import requests
29+
import json
30+
31+
# Update to match your API key
32+
API_KEY = ''
33+
SERVICE_ID = ''
34+
FROM = ''
35+
36+
def trigger_incident():
37+
"""Triggers an incident using the V2 REST API."""
38+
39+
url = 'https://api.pagerduty.com/incidents'
40+
headers = {
41+
'Content-Type': 'application/json',
42+
'Accept': 'application/vnd.pagerduty+json;version=2',
43+
'Authorization': 'Token token={token}'.format(token=API_KEY),
44+
'From': FROM
45+
}
46+
47+
payload = {
48+
"incident": {
49+
"type": "incident",
50+
"title": "The server is on fire.",
51+
"service": {
52+
"id": SERVICE_ID,
53+
"type": "service_reference"
54+
},
55+
"incident_key": "baf7cf21b1da41b4b0221008339ff3571",
56+
"body": {
57+
"type": "incident_body",
58+
"details": "A disk is getting full on this machine. You should investigate what is causing the disk to fill, and ensure that there is an automated process in place for ensuring data is rotated (eg. logs should have logrotate around them). If data is expected to stay on this disk forever, you should start planning to scale up to a larger disk."
59+
}
60+
}
61+
}
62+
63+
r = requests.post(url, headers=headers, data=json.dumps(payload))
64+
65+
print 'Status Code: {code}'.format(code=r.status_code)
66+
print r.json()
67+
68+
if __name__ == '__main__':
69+
trigger_incident()

0 commit comments

Comments
 (0)