@ -2,6 +2,7 @@
from flask import Flask , request
import os
import incident
import datetime
app = Flask ( __name__ )
app . config . from_envvar ( ' FIH_SETTINGS ' )
@ -33,8 +34,8 @@ def mattermost_incident():
channel = app . mm . channels . create_channel ( options = { " team_id " : request . form [ ' team_id ' ] ,
" name " : channel_name ,
" display_name " : fi_number ,
" purpose " : " Internal discussion about incident " + fi_number ,
" header " : purpose ,
" purpose " : purpose ,
" header " : " " ,
" type " : " O " ,
} )
@ -42,11 +43,52 @@ def mattermost_incident():
app . mm . client . make_request ( ' post ' , ' /channels/ ' + channel [ ' id ' ] + ' /members ' , options = { ' user_id ' : request . form [ ' user_id ' ] ,
} )
app . mm . posts . create_post ( options = { ' channel_id ' : channel [ ' id ' ] ,
' message ' : " Incident Channel for %s created by @ %s " % ( fi_number , request . form [ ' user_name ' ] ) ,
' message ' : " Incident discussion channel for [ %s ](https://status.faelix.net/incident/ %s ) created by @ %s . " % ( fi_number , incident_number , request . form [ ' user_name ' ] ) ,
} )
now = datetime . datetime . utcnow ( ) . strftime ( " % Y- % m- %d T % H: % M: % S " )
app . mm . posts . create_post ( options = { ' channel_id ' : channel [ ' id ' ] ,
' message ' : """ \
# Incident Response Communication Procedure
The contents of this channel are strictly confidential .
## Public Announcement
1. adjust the name of the incident with * * / purpose * *
2. adjust the description of the incident with * * / header * *
3. choose a front page status ( see below )
4. publish https : / / status . faelix . net / incident / % ( incident_number ) s with * * @FIH PUBLISH * *
## Status Updates
* add an update : * * @FIH TIMELINE * * _text_
* set the incident start : * * @FIH START * * _ % ( now ) s_ ( UTC )
* set the incident ETR : * * @FIH ETR * * _ % ( now ) s_ ( UTC )
* set the incident resolved time : * * @FIH RESOLVED * * _ % ( now ) s_ ( UTC )
* set the incident finished time : * * @FIH CLOSED * * _ % ( now ) s_ ( UTC )
Again , don ' t forget to **@FIH PUBLISH** once making changes.
## Front Page Status
* * * @FIH INCIDENT * *
* * * @FIH DEGRADED * *
* * * @FIH MAINTENANCE * *
* * * @FIH NOTICE * *
* * * @FIH OK * *
Again , after setting the headline status you must : * * @FIH PUBLISH * *
## Good luck, Incident Commander @%(commander_name)s!""" % { "incident_number": incident_number,
" commander_name " : request . form [ ' user_name ' ] ,
" now " : now ,
} ,
} )
app . mm . posts . create_post ( options = { ' channel_id ' : request . form [ ' channel_id ' ] ,
' message ' : ' Starting incident %s with discussion in channel ~ %s ' % ( fi_number , channel_name , ) ,
' message ' : ' On behalf of @%s I have started incident ~ %s . ' % ( request . form [ ' user_name ' ] , channel_name , ) ,
} )
return " "