+ monitor.py -- modified the following three to use a record-based events,
[monitor.git] / mailer.py
index 7e2e629..cca2e10 100755 (executable)
--- a/mailer.py
+++ b/mailer.py
@@ -4,31 +4,28 @@
 #
 # Faiyaz Ahmed <faiyaza@cs.princeton.edu>
 #
-# $Id: $
+# $Id: mailer.py,v 1.7 2007/04/06 16:16:53 faiyaza Exp $
 from emailTxt import *
-import xml, xmlrpclib
 import smtplib
+from config import config
+import logging
 
-MTA="localhost"
-FROM="support@planet-lab.org"
-
-XMLRPC_SERVER = 'https://www.planet-lab.org/PLCAPI/'
+config = config()
+logger = logging.getLogger("monitor")
 
-def siteId(hostname):
-       api = xmlrpclib.Server(XMLRPC_SERVER, verbose=False)
-       anon = {'AuthMethod': "anonymous"}
-       site_id = api.AnonAdmQuerySite (anon, {"node_hostname": hostname})
-       if len(site_id) == 1:  
-               loginbase = api.AnonAdmGetSites (anon, site_id, ["login_base"])
-               return loginbase[0]['login_base']
+MTA="localhost"
+FROM="monitor@planet-lab.org"
 
-def email (subject, text, to, cc = None):
+def email(subject, text, to):
        """Create a mime-message that will render HTML in popular
        MUAs, text in better ones"""
        import MimeWriter
        import mimetools
        import cStringIO
 
+       if config.mail and config.debug:
+               to = [config.email]
+
        out = cStringIO.StringIO() # output buffer for our message 
        txtin = cStringIO.StringIO(text)
 
@@ -39,8 +36,22 @@ def email (subject, text, to, cc = None):
        # message body
        #
        writer.addheader("Subject", subject)
-       writer.addheader("To", to)
-       if cc: writer.addheader("CC", cc)
+       if to.__class__ == [].__class__ :       
+               writer.addheader("To", to[0])
+               cc = ""
+               for dest in to[1:len(to)]:
+                       cc +="%s, " % dest
+               cc = cc.rstrip(", ") 
+               writer.addheader("Cc", cc)
+       else:
+               writer.addheader("To", to)
+
+       if config.bcc:
+               print "Adding bcc"
+               writer.addheader("Bcc", config.email)
+
+       writer.addheader("Reply-To", 'monitor@planet-lab.org')
+               
        writer.addheader("MIME-Version", "1.0")
        #
        # start the multipart section of the message
@@ -64,16 +75,34 @@ def email (subject, text, to, cc = None):
        writer.lastpart()
        msg = out.getvalue()
        out.close()
-
-       #server = smtplib.SMTP(MTA)
-       #server.sendmail(FROM, (to,cc), msg)
-       #server.quit()
+       # three cases:
+       #       mail but no-debug
+       #       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)
+                       server.quit()
+               except Exception, err:
+                       print "Mailer error: %s" % err
+       else:
+               #print "Would mail %s" %to
+               logger.debug("Would send mail to %s" % to)
 
 if __name__=="__main__":
        import smtplib
        import emailTxt
-       id = siteId("alice.cs.princeeton.edu")
-       if id:
-               email('TEST', emailTxt.mailtxt.STANDARD % {'hostname': "ALICE.cs.princeton.edu"}, "tech-" + id + "@sites.planet-lab.org")
-       else:
-               print "No dice."
+       import plc 
+       email("[spam] This is a mail-test from golf.cs.princeton.edu", 
+                 "I'm concerned that emails aren't leaving golf.  Sorry for the spam", 
+                 "princetondsl@sites.planet-lab.org")
+       #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()"