[llvm-commits] [zorg] r106168 - in /zorg/trunk/lnt/lnt: util/ImportData.py viewer/Config.py

Daniel Dunbar daniel at zuster.org
Wed Jun 16 16:06:17 PDT 2010


Author: ddunbar
Date: Wed Jun 16 18:06:16 2010
New Revision: 106168

URL: http://llvm.org/viewvc/llvm-project?rev=106168&view=rev
Log:
LNT: Factor out an EmailConfig object.

Modified:
    zorg/trunk/lnt/lnt/util/ImportData.py
    zorg/trunk/lnt/lnt/viewer/Config.py

Modified: zorg/trunk/lnt/lnt/util/ImportData.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/util/ImportData.py?rev=106168&r1=106167&r2=106168&view=diff
==============================================================================
--- zorg/trunk/lnt/lnt/util/ImportData.py (original)
+++ zorg/trunk/lnt/lnt/util/ImportData.py Wed Jun 16 18:06:16 2010
@@ -37,26 +37,17 @@
         return (False, None)
     print >>log, '  LOAD TIME: %.2fs' % (time.time() - startTime,)
 
-    # Check if this is a nightlytest run.
-    tag = data.get('Run',{}).get('Info',{}).get('tag',None)
-    is_nt = tag is None or tag == 'nightlytest'
-
     # Find the email address for this machine's results.
     toAddress = None
-    if is_nt and config.ntEmailEnabled:
-        if isinstance(config.ntEmailTo, str):
-            toAddress = config.ntEmailTo
-        else:
-            # Find the machine name.
-            machineName = str(data.get('Machine',{}).get('Name'))
-            for pattern,addr in config.ntEmailTo:
-                if re.match(pattern, machineName):
-                    toAddress = addr
-                    break
-            else:
-                print >>log,("ERROR: unable to match machine name "
-                             "for test results email address!")
-                return (False, None)
+    email_config = config.databases[db_name].email_config
+    if email_config.enabled:
+        # Find the machine name.
+        machineName = str(data.get('Machine',{}).get('Name'))
+        toAddress = email_config.get_to_address(machineName)
+        if toAddress is None:
+            print >>log,("ERROR: unable to match machine name "
+                         "for test results email address!")
+            return (False, None)
 
     importStartTime = time.time()
     try:
@@ -83,7 +74,7 @@
         NTEmailReport.emailReport(db, run,
                                   "%s/db_%s/nightlytest/" % (config.zorgURL,
                                                              db_name),
-                                  config.ntEmailHost, config.ntEmailFrom,
+                                  email_config.host, email_config.from_address,
                                   toAddress, success, commit)
 
     print >>log, "ADDED: %d machines" % (db.getNumMachines() - numMachines,)

Modified: zorg/trunk/lnt/lnt/viewer/Config.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/Config.py?rev=106168&r1=106167&r2=106168&view=diff
==============================================================================
--- zorg/trunk/lnt/lnt/viewer/Config.py (original)
+++ zorg/trunk/lnt/lnt/viewer/Config.py Wed Jun 16 18:06:16 2010
@@ -3,23 +3,44 @@
 """
 
 import os
+import re
+
+class EmailConfig:
+    def __init__(self, enabled, host, from_address, to_address):
+        self.enabled = enabled
+        self.host = host
+        self.from_address = from_address
+        self.to_address = to_address
+
+    def get_to_address(self, machine_name):
+        # The email to_address field can either be a string, or a list of tuples
+        # of the form [(accept-regexp-pattern, to-address)].
+        if isinstance(self.to_address, str):
+            return self.to_address
+
+        for pattern,addr in self.to_address:
+            if re.match(pattern, machine_name):
+                return addr
 
 class DBInfo:
     @staticmethod
-    def fromData(baseDir, dict):
+    def fromData(baseDir, dict, default_email_config):
         dbPath = dict.get('path')
         if '://' not in dbPath:
             dbPath = os.path.join(baseDir, dbPath)
         return DBInfo(dbPath,
                       bool(dict.get('showNightlytest')),
                       bool(dict.get('showGeneral')),
-                      bool(dict.get('showSimple')))
+                      bool(dict.get('showSimple')),
+                      default_email_config)
 
-    def __init__(self, path, showNightlytest, showGeneral, showSimple):
+    def __init__(self, path, showNightlytest, showGeneral, showSimple,
+                 email_config):
         self.path = path
         self.showGeneral = showGeneral
         self.showNightlytest = showNightlytest
         self.showSimple = showSimple
+        self.email_config = email_config
 
 class Config:
     @staticmethod
@@ -28,23 +49,20 @@
         # config file.
         baseDir = os.path.dirname(os.path.abspath(path))
 
-        ntEmailer = data.get('nt_emailer')
-        if ntEmailer:
-            ntEmailEnabled = bool(ntEmailer.get('enabled'))
-            ntEmailHost = str(ntEmailer.get('host'))
-            ntEmailFrom = str(ntEmailer.get('from'))
-
+        # Get the default email config.
+        emailer = data.get('nt_emailer')
+        if emailer:
             # The email to field can either be a string, or a list of tuples of
             # the form [(accept-regexp-pattern, to-address)].
-            item = ntEmailer.get('to')
-            if isinstance(item, str):
-                ntEmailTo = item
-            else:
-                ntEmailTo = [(str(a),str(b))
-                             for a,b in item]
+            to_address = emailer.get('to')
+            if not isinstance(to_address, str):
+                to_address = [(str(a),str(b)) for a,b in to_address]
+            default_email_config = EmailConfig(bool(emailer.get('enabled')),
+                                               str(emailer.get('host')),
+                                               str(emailer.get('from')),
+                                               to_address)
         else:
-            ntEmailEnabled = False
-            ntEmailHost = ntEmailFrom = ntEmailTo = ""
+            default_email_config = EmailConfig(False, '', '', [])
 
         dbDir = data.get('db_dir', '.')
         dbDirPath = os.path.join(baseDir, dbDir)
@@ -54,12 +72,11 @@
 
         return Config(data.get('name', 'LNT'), data['zorgURL'],
                       dbDir, os.path.join(baseDir, tempDir),
-                      dict([(k,DBInfo.fromData(dbDirPath, v))
-                                     for k,v in data['databases'].items()]),
-                      ntEmailEnabled, ntEmailHost, ntEmailFrom, ntEmailTo)
+                      dict([(k,DBInfo.fromData(dbDirPath, v,
+                                               default_email_config))
+                                     for k,v in data['databases'].items()]))
 
-    def __init__(self, name, zorgURL, dbDir, tempDir, databases,
-                 ntEmailEnabled, ntEmailHost, ntEmailFrom, ntEmailTo):
+    def __init__(self, name, zorgURL, dbDir, tempDir, databases):
         self.name = name
         self.zorgURL = zorgURL
         self.dbDir = dbDir
@@ -67,7 +84,3 @@
         while self.zorgURL.endswith('/'):
             self.zorgURL = zorgURL[:-1]
         self.databases = databases
-        self.ntEmailEnabled = ntEmailEnabled
-        self.ntEmailHost = ntEmailHost
-        self.ntEmailFrom = ntEmailFrom
-        self.ntEmailTo = ntEmailTo





More information about the llvm-commits mailing list