Implements master ignore list
[releng-anteater.git] / anteater / src / get_lists.py
index 17de7cb..ff63442 100644 (file)
@@ -27,9 +27,13 @@ config = six.moves.configparser.RawConfigParser()
 config.read('anteater.conf')
 logger = logging.getLogger(__name__)
 master_list = config.get('config', 'master_list')
+ignore_list = config.get('config', 'ignore_list')
 
 with open(master_list, 'r') as f:
-    yl = yaml.safe_load(f)
+    ml = yaml.safe_load(f)
+
+with open(ignore_list, 'r') as f:
+    il = yaml.safe_load(f)
 
 
 def _remove_nullvalue(contents):
@@ -65,14 +69,14 @@ class GetLists(object):
             with open(exception_file, 'r') as f:
                 ex = yaml.safe_load(f)
             for key in ex:
-                if key in yl:
-                    yl[key][project] = _merge(yl[key][project], ex.get(key, None)) \
-                            if project in yl[key] else ex.get(key, None)
+                if key in ml:
+                    ml[key][project] = _merge(ml[key][project], ex.get(key, None)) \
+                            if project in ml[key] else ex.get(key, None)
             self.loaded = True
 
     def binary_list(self, project):
         try:
-            default_list = (yl['binaries']['binary_ignore'])
+            default_list = (ml['binaries']['binary_ignore'])
         except KeyError:
             logger.error('Key Error processing binary list values')
 
@@ -81,10 +85,10 @@ class GetLists(object):
         return binary_re
 
     def binary_hash(self, project, patch_file):
-        self.load_project_exception_file(yl.get('project_exceptions'), project)
+        self.load_project_exception_file(ml.get('project_exceptions'), project)
         file_name = os.path.basename(patch_file)
         try:
-            binary_hash = (yl['binaries'][project][file_name])
+            binary_hash = (ml['binaries'][project][file_name])
             return binary_hash
         except KeyError:
             binary_hash = 'null'
@@ -93,13 +97,13 @@ class GetLists(object):
 
     def file_audit_list(self, project):
         project_list = False
-        self.load_project_exception_file(yl.get('project_exceptions'), project)
+        self.load_project_exception_file(ml.get('project_exceptions'), project)
         try:
-            default_list = set((yl['file_audits']['file_names']))
+            default_list = set((ml['file_audits']['file_names']))
         except KeyError:
             logger.error('Key Error processing file_names list values')
         try:
-            project_list = set((yl['file_audits'][project]['file_names']))
+            project_list = set((ml['file_audits'][project]['file_names']))
             logger.info('file_names waivers found for %s', project)
         except KeyError:
             logger.info('No file_names waivers found for %s', project)
@@ -117,39 +121,48 @@ class GetLists(object):
 
     def file_content_list(self,  project):
         project_list = False
-        self.load_project_exception_file(yl.get('project_exceptions'), project)
+        self.load_project_exception_file(ml.get('project_exceptions'), project)
         try:
-            master_list = (yl['file_audits']['file_contents'])
+            master_list = (ml['file_audits']['file_contents'])
 
         except KeyError:
             logger.error('Key Error processing file_contents list values')
 
         try:
-            project_list = set((yl['file_audits'][project]['file_contents']))
-            project_list_re = re.compile("|".join(project_list),
-                                               flags=re.IGNORECASE)
+            ignore_list = il['file_audits']['file_contents']
+
+        except KeyError:
+            logger.error('Key Error processing file_contents list values')
+
+        try:
+            project_list = ml['file_audits'][project]['file_contents']
+
         except KeyError:
             logger.info('No file_contents waivers found  for %s', project)
 
-        return master_list, project_list_re
+        ignore_list_merge = project_list + ignore_list
+
+        ignore_list_re = re.compile("|".join(ignore_list_merge), flags=re.IGNORECASE)
+
+        return master_list, ignore_list_re
 
     def file_ignore(self):
         try:
-            file_ignore = (yl['file_ignore'])
+            file_ignore = (ml['file_ignore'])
         except KeyError:
             logger.error('Key Error processing file_ignore list values')
         return file_ignore
 
     def licence_extensions(self):
         try:
-            licence_extensions = (yl['licence']['licence_ext'])
+            licence_extensions = (ml['licence']['licence_ext'])
         except KeyError:
             logger.error('Key Error processing licence_extensions list values')
         return licence_extensions
 
     def licence_ignore(self):
         try:
-            licence_ignore = (yl['licence']['licence_ignore'])
+            licence_ignore = (ml['licence']['licence_ignore'])
         except KeyError:
             logger.error('Key Error processing licence_ignore list values')
         return licence_ignore