X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=monitor%2Fwrapper%2Fmailer.py;h=1b45f0e8d9e76b5f9916fb4a6264f6e04929566c;hb=4cb4cb9e9231a1a0b6d837098f83086d6aabf547;hp=ace997133effa27c1fafe2fdc8bfe16a964fe759;hpb=0fabfc8dbe8f1f2c0d12397e1bc8c6ed686fb5ed;p=monitor.git diff --git a/monitor/wrapper/mailer.py b/monitor/wrapper/mailer.py index ace9971..1b45f0e 100755 --- a/monitor/wrapper/mailer.py +++ b/monitor/wrapper/mailer.py @@ -3,6 +3,7 @@ # Copyright (c) 2004 The Trustees of Princeton University (Trustees). # # Faiyaz Ahmed +# Stephen Soltesz # # $Id: mailer.py,v 1.10 2007/08/08 13:28:06 soltesz Exp $ from emailTxt import * @@ -27,7 +28,7 @@ def reformat_for_rt(text): def _setupRTenvironment(): - os.environ['PATH'] = os.environ['PATH'] + ":" + config.RT_WEB_TOOLS_PATH + os.environ['PATH'] = config.RT_WEB_TOOLS_PATH + ":" + os.environ['PATH'] os.environ['RTSERVER'] = config.RT_WEB_SERVER os.environ['RTUSER'] = config.RT_WEB_USER os.environ['RTPASSWD'] = config.RT_WEB_PASSWORD @@ -40,6 +41,7 @@ def setTicketStatus(ticket_id, status): return {} cmd = "rt edit ticket/%s set status=%s" % (ticket_id, status) + print cmd (f_in, f_out, f_err) = os.popen3(cmd) value = f_out.read() l_values = value.split('\n') @@ -50,7 +52,8 @@ def getTicketStatus(ticket_id): if ticket_id == None or ticket_id == "": return {} - cmd = "rt show -t ticket -f id,subject,status,queue,created %s" % (ticket_id) + cmd = "rt show -t ticket -f id,subject,status,queue,created,told %s" % (ticket_id) + print cmd (f_in, f_out, f_err) = os.popen3(cmd) value = f_out.read() l_values = value.split('\n') @@ -63,6 +66,7 @@ def getTicketStatus(ticket_id): r_values[key] = r_values[key].strip() r_values['Created'] = calendar.timegm(time.strptime(r_values['Created'])) + #r_values['Told'] = calendar.timegm(time.strptime(r_values['Told'])) return r_values def setAdminCCViaRT(ticket_id, to): @@ -77,6 +81,7 @@ def setAdminCCViaRT(ticket_id, to): # create a comma-separated list s_to = ",".join(to) cmd = "rt edit ticket/%s set admincc='%s'" % (ticket_id, s_to) + print cmd (f_in, f_out, f_err) = os.popen3(cmd) value = f_out.read() l_values = value.split() @@ -100,6 +105,7 @@ def setSubjectViaRT(ticket_id, subject): i_ticket_id = int(ticket_id) cmd = "rt edit ticket/%s set subject='%s'" % (ticket_id, subject) + print cmd (f_in, f_out, f_err) = os.popen3(cmd) value = f_out.read() l_values = value.split() @@ -124,9 +130,11 @@ def addCommentViaRT(ticket_id, comment): i_ticket_id = int(ticket_id) cmd = "rt comment -m '%s' ticket/%s" % (comment, i_ticket_id) + print cmd (f_in, f_out, f_err) = os.popen3(cmd) value = f_out.read() l_values = value.split() + l_err = f_err.read() f_in.close() ; f_out.close() ; f_err.close() if len(l_values) > 1 and "recorded" in l_values[1]: # Success @@ -135,6 +143,7 @@ def addCommentViaRT(ticket_id, comment): # Error f_in.close() ; f_out.close() ; f_err.close() print "ERROR: RT failed to add comment to id %s" % ticket_id + print "ERROR: %s" % l_err return @@ -152,6 +161,7 @@ def closeTicketViaRT(ticket_id, comment): if not config.debug: cmd = "rt edit ticket/%s set status=resolved" % i_ticket_id + print cmd (f_in, f_out, f_err) = os.popen3(cmd) f_in.close() value = f_out.read() @@ -183,8 +193,10 @@ def emailViaRT(subject, text, to, ticket_id=None): setAdminCCViaRT(ticket_id, to) cmd = "rt correspond -m - %s" % ticket_id + print cmd (f_in, f_out, f_err) = os.popen3(cmd) - f_in.write(text) + #f_in.write(input[:32000]) + f_in.write(text[:32000]) f_in.flush() f_in.close() value = f_out.read() @@ -221,6 +233,7 @@ def emailViaRT_NoTicket(subject, text, to): input_text += "Queue: %s\n" % config.RT_QUEUE for recipient in to: input_text += "AdminCc: %s\n" % recipient + #input_text += "AdminCc: %s\n" % config.cc_email input_text += "Text: %s" # Add a space for each new line to get RT to accept the file. @@ -228,8 +241,14 @@ def emailViaRT_NoTicket(subject, text, to): if config.mail and not config.debug: cmd = "rt create -i -t ticket" + print cmd (f_in, f_out, f_err) = os.popen3(cmd) - f_in.write(input_text % (subject, spaced_text)) + input = input_text % (subject, spaced_text) + print "length: %s" % len(input) + # NOTE: RT hangs with larger input, probably due to some internal + # buffering. So, chop off messages at 32000 + #f_in.write(input[:32000]) + f_in.write(input[:32000]) f_in.flush() f_in.close() value = f_out.read() @@ -352,18 +371,7 @@ if __name__=="__main__": #email("[spam] bcc test from golf.cs.princeton.edu", # "It gets to both recipients", # "soltesz@cs.utk.edu") - #emailViaRT("rt via golf", - # "It gets to both recipients", - # "soltesz@cs.utk.edu") - email("Re: [PL #21323] TEST 7", - mailtxt.newbootcd_one[1] % {'hostname_list':"hostname list..."}, - [FROM]) - #print "ticketid: %d" % id - #id = plc.siteId(["alice.cs.princeton.edu"]) - #print id - #if id: - #email('TEST', emailTxt.mailtxt.ssh % {'hostname': "ALICE.cs.princeton.edu"}, "tech-" + id + "@sites.planet-lab.org") - #else: - # print "No dice." - #email("TEST111", "I'd like to see if this works anywhere", ["soltesz@cs.princeton.edu", "soltesz@cs.utk.edu"]) - #print "mailer does nothing in main()" + emailViaRT("mail via RT", "Let's see if this succeeds...", [FROM]) + #email("Re: [PL #21323] TEST 7", + # mailtxt.newbootcd_one[1] % {'hostname_list':"hostname list..."}, + # [FROM])