# $Id: mailer.py,v 1.10 2007/08/08 13:28:06 soltesz Exp $
from emailTxt import *
import smtplib
-from config import config
+import config
+import calendar
import logging
import os
import time
-config = config()
logger = logging.getLogger("monitor")
MTA="localhost"
-FROM="monitor@planet-lab.org"
+FROM=config.email
def reformat_for_rt(text):
lines = text.split("\n")
def _setupRTenvironment():
- os.environ['PATH'] = os.environ['PATH'] + ":/home/soltesz/local/bin/"
- os.environ['RTSERVER'] = "https://rt.planet-lab.org/"
- os.environ['RTUSER'] = "monitor"
- os.environ['RTPASSWD'] = "ssorcmor"
- os.environ['RTDEBUG'] = "0"
+ os.environ['PATH'] = os.environ['PATH'] + ":" + config.RT_WEB_TOOLS_PATH
+ os.environ['RTSERVER'] = config.RT_WEB_SERVER
+ os.environ['RTUSER'] = config.RT_WEB_USER
+ os.environ['RTPASSWD'] = config.RT_WEB_PASSWORD
+ os.environ['RTDEBUG'] = config.RT_WEB_DEBUG
return
def setTicketStatus(ticket_id, status):
if ticket_id == None or ticket_id == "":
return {}
- cmd = "rt show -t ticket -f id,subject,status,queue %s" % (ticket_id)
+ cmd = "rt show -t ticket -f id,subject,status,queue,created %s" % (ticket_id)
(f_in, f_out, f_err) = os.popen3(cmd)
value = f_out.read()
l_values = value.split('\n')
if len(line) == 0: continue
vals = line.split(':')
key = vals[0]
- r_values[key] = "".join(vals[1:])
+ r_values[key] = ":".join(vals[1:])
r_values[key] = r_values[key].strip()
+
+ r_values['Created'] = calendar.timegm(time.strptime(r_values['Created']))
return r_values
def setAdminCCViaRT(ticket_id, to):
return
def emailViaRT(subject, text, to, ticket_id=None):
- if ticket_id == None or ticket_id == "":
+ if ticket_id == None or ticket_id == "" or ticket_id == 0:
+ print "No TICKET"
return emailViaRT_NoTicket(subject, text, to)
-
+
# Set ENV Variables/PATH
_setupRTenvironment()
# NOTE: AdminCc: (in PLC's RT configuration) gets an email sent.
# This is not the case (surprisingly) for Cc:
input_text = "Subject: %s\n"
- input_text += "Requestor: monitor@planet-lab.org\n"
+ input_text += "Requestor: %s\n"% FROM
input_text += "id: ticket/new\n"
- input_text += "Queue: Monitor\n"
+ input_text += "Queue: %s\n" % config.RT_QUEUE
for recipient in to:
input_text += "AdminCc: %s\n" % recipient
input_text += "Text: %s"
if config.bcc and not config.debug:
writer.addheader("Bcc", config.email)
- writer.addheader("Reply-To", 'monitor@planet-lab.org')
+ writer.addheader("Reply-To", FROM)
writer.addheader("MIME-Version", "1.0")
#
# mail and debug, 'to' changed at the beginning'
# nomail, but report who I'd send to.
if config.mail:
- try:
- # This is normal operation
- server = smtplib.SMTP(MTA)
- server.sendmail(FROM, to, msg)
- if config.bcc and not config.debug:
- server.sendmail(FROM, config.email, msg)
- server.quit()
- except Exception, err:
- print "Mailer error: %s" % err
+ for mta in [MTA, 'golf.cs.princeton.edu']:
+ try:
+ # This is normal operation
+ #print MTA
+ #print FROM
+ #print to
+ #print msg
+ server = smtplib.SMTP(mta)
+ #server = smtplib.SMTP('golf.cs.princeton.edu')
+ server.sendmail(FROM, to, msg)
+ if config.bcc and not config.debug:
+ server.sendmail(FROM, config.email, msg)
+ server.quit()
+ except Exception, err:
+ print "Mailer error1: failed using MTA(%s) with: %s" % (mta, err)
+
elif not config.debug and not config.mail and config.bcc:
- try:
- server = smtplib.SMTP(MTA)
- server.sendmail(FROM, to, msg)
- server.quit()
- except Exception, err:
- print "Mailer error: %s" % err
+ for mta in [MTA, 'golf.cs.princeton.edu']:
+ try:
+ server = smtplib.SMTP(mta)
+ server.sendmail(FROM, to, msg)
+ server.quit()
+ except Exception, err:
+ print "Mailer error2: failed using MTA(%s) with: %s" % (mta, err)
else:
#print "Would mail %s" %to
logger.debug("Would send mail to %s" % to)
# "soltesz@cs.utk.edu")
email("Re: [PL #21323] TEST 7",
mailtxt.newbootcd_one[1] % {'hostname_list':"hostname list..."},
- ['monitor@planet-lab.org'])
+ [FROM])
#print "ticketid: %d" % id
#id = plc.siteId(["alice.cs.princeton.edu"])
#print id