Newer
Older
import sys
import time
from subprocess import Popen, PIPE, STDOUT
from django.core.mail import send_mail
from django.conf import settings
from django.contrib.sites.models import Site
from django.core.urlresolvers import reverse, get_script_prefix
issueXMPPAlert(event, location)
issueEmailAlert(event, location)
def issueEmailAlert(event, location):
if event.group.name == 'Test':
fromaddress = settings.ALERT_TEST_EMAIL_FROM
toaddress = settings.ALERT_TEST_EMAIL_TO
else:
fromaddress = settings.ALERT_EMAIL_FROM
toaddress = settings.ALERT_EMAIL_TO
subject = "[gracedb] %s event. ID: %s" % (event.get_analysisType_display(), event.graceid())
GRACEID: %s
Info: %s
Data: %s
TWiki: %s
Submitter: %s
Original Data: %s
message %= (event.group.name,
event.get_analysisType_display(),
event.graceid(),
'https://'+Site.objects.get_current().domain+ reverse("view", args=[event.graceid()]),
event.weburl(),
event.wikiurl(),
event.submitter.name,
location)
send_mail(subject, message, fromaddress, toaddress)
def issueXMPPAlert(event, location):
# Need a good way to know which things to send out to lvalert.
# Currently, only Test/* and CBC/MBTAOnline get alerts.
if event.analysisType != 'MBTA' and event.group.name != 'Test':
nodename = "%s_%s"% (event.group.name, event.get_analysisType_display())
nodename = nodename.lower()
null = open('/dev/null','w')
p = Popen(
["lvalert_send",
"--username=gracedb",
"--password=w4k3upal1ve",
"--file=-",
],
executable="/opt/lscsoft/glue/bin/lvalert_send",
stdin=PIPE,
stdout=null,
stderr=STDOUT,
env=env)
msg = createPayload(event.graceid(), location)
p.stdin.write(msg)
p.stdin.close()
for i in range(1,10):
res = p.poll()
if res == None:
time.sleep(1)
else:
break
def createPayload (uid, filename):
template = """<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE LIGO_LW SYSTEM "http://ldas-sw.ligo.caltech.edu/doc/ligolwAPI/html/ligolw_dtd.txt">
<LIGO_LW>
<Table Name="LVAlert:table">
<Column Type="lstring" Name="LVAlert:uid"/>
<Column Type="lstring" Name="LVAlert:file"/>
<Stream Name="LVAlert:table" Type="Local" Delimiter=",">
"%(uid)s","%(filename)s"
</Stream>
</Table>
</LIGO_LW>
"""
return template % { 'uid': uid, 'filename': filename }