X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=mailer.py;h=7c9ff1165201d3b9de36a33e820d364f6bbd2b71;hb=3dd036900afd568f223d652045bb63f0f793f950;hp=f8c27c07d2e3b35b3021e5eccb5fce27ecabc08b;hpb=2b4a306befb89555f65054e1b4dc8c87404c7194;p=monitor.git diff --git a/mailer.py b/mailer.py index f8c27c0..7c9ff11 100755 --- a/mailer.py +++ b/mailer.py @@ -4,19 +4,19 @@ # # Faiyaz Ahmed # -# $Id: mailer.py,v 1.9 2007/07/03 19:57:16 soltesz Exp $ +# $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") @@ -27,13 +27,44 @@ def reformat_for_rt(text): def _setupRTenvironment(): - os.environ['PATH'] = os.environ['PATH'] + ":/home/soltesz/rpm/opt/rt3/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): + _setupRTenvironment() + if ticket_id == None or ticket_id == "": + return {} + + cmd = "rt edit ticket/%s set status=%s" % (ticket_id, status) + (f_in, f_out, f_err) = os.popen3(cmd) + value = f_out.read() + l_values = value.split('\n') + return "".join(l_values).strip() + +def getTicketStatus(ticket_id): + _setupRTenvironment() + if ticket_id == None or ticket_id == "": + return {} + + 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') + r_values = {} + for line in l_values: + if len(line) == 0: continue + vals = line.split(':') + key = vals[0] + 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): # Set ENV Variables/PATH _setupRTenvironment() @@ -54,6 +85,7 @@ def setAdminCCViaRT(ticket_id, to): # Success pass else: + print "VALUE:", value print "ERROR: RT failed to update AdminCC for ticket %s" % ticket_id return @@ -76,6 +108,7 @@ def setSubjectViaRT(ticket_id, subject): # Success pass else: + print "VALUE:", value print "ERROR: RT failed to update subject for ticket %s" % ticket_id return @@ -129,16 +162,18 @@ def closeTicketViaRT(ticket_id, comment): # Success!! pass else: + print "VALUE: ", value # Failed!! - print "FAILED to resolve Ticket %d" % ticket_id - print "FAILED to resolve Ticket %d" % i_ticket_id + print "FAILED to resolve Ticket %s" % ticket_id + print "FAILED to resolve Ticket %s" % i_ticket_id 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() @@ -181,9 +216,9 @@ def emailViaRT_NoTicket(subject, text, to): # 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" @@ -251,7 +286,7 @@ def email(subject, text, to): 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") # @@ -282,22 +317,30 @@ def email(subject, text, to): # 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) @@ -314,7 +357,7 @@ if __name__=="__main__": # "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