Changeset 6370


Ignore:
Timestamp:
22/01/10 10:28:53 (10 years ago)
Author:
domlowe
Message:

Modified symlink checker to send emails if configured.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cows/trunk/cows/pylons/config.py

    r6360 r6370  
    77 
    88""" 
    9 Miscellaneous utility functions. 
     9Miscellaneous utility functions/classes 
     10 
     11#load csml config options 
     12#starts symlink checker 
     13#send email (used by symlink checker 
     14 
    1015 
    1116""" 
     
    1722log=logging.getLogger(__name__) 
    1823 
     24from email.MIMEMultipart import MIMEMultipart 
     25from email.MIMEText import MIMEText 
     26from email.Utils import COMMASPACE, formatdate 
     27import smtplib 
     28from cows.service.imps.csmlbackend.config import config 
     29 
     30 
    1931def configCSML(): 
    2032    """Initialise the configuration of the CSML backend from pylons.config. 
    2133 
    2234    """ 
    23     from cows.service.imps.csmlbackend.config import config 
    2435     
    2536    for k in pylons.config: 
     
    6475            for path in self.paths: 
    6576                if os.path.islink(path): 
    66                     log.info('Checking symlink %s'%path) 
    6777                    #it's a symlink, get the link path  
    6878                    symlinkpath=os.readlink(path) 
     
    7181                    #now check it's not broken. 
    7282                    if not os.path.exists(fullsymlinkpath): 
    73                         log.error('INVESTIGATE: Symlink %s is a broken symlink ' % path) 
     83                        #if broken, send notification email (if configured) and log a warning message 
     84                        if config.has_key('send_symlink_warnings_to'): 
     85                            if config.has_key('send_symlink_warnings_from'): 
     86                                if config.has_key('symlink_warnings_smtp'): 
     87                                    to=[config['send_symlink_warnings_to']] 
     88                                    fro=config['send_symlink_warnings_from'] 
     89                                    smtp=config['symlink_warnings_smtp'] 
     90                                    subject = 'Broken Symlink in visualisation software' 
     91                                    message= 'This message is from the COWS pylons application. Symlink %s is broken' % path 
     92                                    sendemail(fro, to, subject, message, smtp) 
     93                        log.warning('INVESTIGATE: Symlink %s is broken ' % path) 
    7494                    else: 
    7595                        log.info('Symlink OK: %s '%path) 
    7696            time.sleep(self.sleepminutes*60) 
    77          
     97     
     98def sendemail(fro, to, subject, message, smtp): 
     99    ''' send an email ''' 
     100    SERVER = smtp 
     101    FROM = fro 
     102    TO = to # must be a list 
     103    SUBJECT = subject 
     104    TEXT = message 
     105     
     106    #create the message 
     107    msg = MIMEMultipart() 
     108    msg['From'] = FROM 
     109    msg['To'] = COMMASPACE.join(TO) 
     110    msg['Date'] = formatdate(localtime=True) 
     111    msg['Subject'] = SUBJECT 
     112    msg.attach( MIMEText(TEXT) ) 
     113 
     114    # Send the mail 
     115    server = smtplib.SMTP(SERVER) 
     116    server.sendmail(FROM, TO, msg.as_string()) 
     117    server.quit() 
    78118         
    79119         
Note: See TracChangeset for help on using the changeset viewer.