rename to default value.
[monitor.git] / mailer.py
index f8c27c0..da6249d 100755 (executable)
--- a/mailer.py
+++ b/mailer.py
@@ -4,15 +4,16 @@
 #
 # Faiyaz Ahmed <faiyaza@cs.princeton.edu>
 #
-# $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
+import monitorconfig
 
-config = config()
 logger = logging.getLogger("monitor")
 
 MTA="localhost"
@@ -27,13 +28,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'] + ":" + monitorconfig.RT_WEB_TOOLS_PATH
+       os.environ['RTSERVER'] = monitorconfig.RT_WEB_SERVER
+       os.environ['RTUSER']   = monitorconfig.RT_WEB_USER
+       os.environ['RTPASSWD'] = monitorconfig.RT_WEB_PASSWORD
+       os.environ['RTDEBUG'] = monitorconfig.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 +86,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 +109,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 +163,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 == "":
+               print "No TICKET"
                return emailViaRT_NoTicket(subject, text, to)
-               
+
 
        # Set ENV Variables/PATH
        _setupRTenvironment()
@@ -282,22 +318,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)