support specifying victorops login for each user
Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
ac262ba1b3
commit
e7d6430c83
|
@ -21,4 +21,15 @@ class Migration(migrations.Migration):
|
|||
},
|
||||
bases=('cabotapp.alertplugin',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='VictorOpsAlertPluginUserData',
|
||||
fields=[
|
||||
('alertpluginuserdata_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='cabotapp.AlertPluginUserData')),
|
||||
('victorops_login', models.CharField(max_length=30, blank=True)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('cabotapp.alertpluginuserdata',),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from requests import request
|
||||
from os import environ as env
|
||||
from cabot.cabotapp.alert import AlertPlugin
|
||||
from cabot.cabotapp.alert import AlertPlugin, AlertPluginUserData
|
||||
from django.db import models
|
||||
from django.conf import settings
|
||||
from django.template import Context, Template
|
||||
|
||||
|
@ -30,20 +31,25 @@ class VictorOpsAlertPlugin(AlertPlugin):
|
|||
}))
|
||||
for user in users:
|
||||
print('Sending Alert: {}'.format(message))
|
||||
self._send_victorops_alert(user, message, details)
|
||||
vc_login = self._get_vc_login(user)
|
||||
self._send_victorops_alert(vc_login, message, details)
|
||||
|
||||
return True
|
||||
|
||||
def _send_victorops_alert(self, user, message, details):
|
||||
self.username = env.get('VICTOROPS_USERNAME')
|
||||
if self.username is None:
|
||||
raise Exception("VICTOROPS_USERNAME env variable not found!")
|
||||
# Cabot username doesn't have to be the same as VictorOps one
|
||||
def _get_vc_login(self, user):
|
||||
results = VictorOpsAlertPluginUserData.objects.filter(user__user__exact=user)
|
||||
if results.first() is not None and results.first().victorops_login != "":
|
||||
return results.first().victorops_login
|
||||
else:
|
||||
return user.username
|
||||
|
||||
def _send_victorops_alert(self, user, message, details):
|
||||
policy = self._get_policy()
|
||||
data = {
|
||||
"summary": message,
|
||||
"details": details,
|
||||
"userName": self.username,
|
||||
"userName": user,
|
||||
"targets": [{
|
||||
"type": "EscalationPolicy",
|
||||
"slug": policy["slug"],
|
||||
|
@ -72,3 +78,12 @@ class VictorOpsAlertPlugin(AlertPlugin):
|
|||
resp = request(method, VICTOROPS_URL+'/'+path, json=data, headers=headers)
|
||||
resp.raise_for_status()
|
||||
return resp
|
||||
|
||||
class VictorOpsAlertPluginUserData(AlertPluginUserData):
|
||||
name = "VictorOps Plugin"
|
||||
victorops_login = models.CharField(max_length=30, blank=True)
|
||||
|
||||
def serialize(self):
|
||||
return {
|
||||
"victorops_login": self.victorops_login
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue