2 # -*- coding: utf-8 -*-
3 ##############################################################################
4 # Copyright (c) 2017 Luke Hinds <lhinds@redhat.com>, Red Hat
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 ##############################################################################
13 Gathers various values from the gate check yaml file and return them to the
17 import anteater.utils.anteater_logger as antlog
24 config = ConfigParser.RawConfigParser()
25 config.read('anteater.conf')
26 logger = antlog.Logger(__name__).getLogger()
27 master_list = config.get('config', 'master_list')
29 with open(master_list, 'r') as f:
30 yl = yaml.safe_load(f)
33 def _remove_nullvalue(contents):
34 if contents and len(contents) > 2 and 'nullvalue' in contents:
35 contents.remove('nullvalue')
39 ret = copy.deepcopy(org)
40 for key in list(set([k for k in org] + [k for k in ded])):
41 if key in org and key in ded:
42 ret[key] = list(set(ret[key] + ded[key]))
43 _remove_nullvalue(ret[key])
49 class GetLists(object):
50 def __init__(self, *args):
51 # Placeholder for future args if more filters are needed
55 def load_project_exception_file(self, project_exceptions, project):
59 for item in project_exceptions:
61 exception_file = item.get(project)
62 if exception_file is not None:
63 with open(exception_file, 'r') as f:
64 ex = yaml.safe_load(f)
67 yl[key][project] = _merge(yl[key][project], ex.get(key, None)) \
68 if project in yl[key] else ex.get(key, None)
71 def binary_list(self, project):
73 self.load_project_exception_file(yl.get('project_exceptions'), project)
75 default_list = (yl['binaries']['binary_ignore'])
77 logger.error('Key Error processing binary list values')
79 project_list = (yl['binaries'][project]['binary_ignore'])
81 logger.info('No binary waivers found for {0}'.
84 binary_re = re.compile("|".join(default_list),
88 binary_project_re = re.compile("|".join(project_list),
90 return binary_re, binary_project_re
92 binary_project_re = re.compile("")
93 return binary_re, binary_project_re
95 def file_audit_list(self, project):
97 self.load_project_exception_file(yl.get('project_exceptions'), project)
99 default_list = set((yl['file_audits']['file_names']))
101 logger.error('Key Error processing file_names list values')
103 project_list = set((yl['file_audits'][project]['file_names']))
104 logger.info('file_names waivers found for {0}'.
107 logger.info('No file_names waivers found for {0}'.
110 file_names_re = re.compile("|".join(default_list),
114 file_names_proj_re = re.compile("|".join(project_list),
116 return file_names_re, file_names_proj_re
118 file_names_proj_re = re.compile("")
119 return file_names_re, file_names_proj_re
121 def file_content_list(self, project):
123 self.load_project_exception_file(yl.get('project_exceptions'), project)
125 default_list = set((yl['file_audits']['file_contents']))
127 logger.error('Key Error processing file_contents list values')
129 project_list = set((yl['file_audits'][project]['file_contents']))
131 logger.info('No file_contents waivers found for {0}'.
134 file_contents_re = re.compile("|".join(default_list),
138 file_contents_proj_re = re.compile("|".join(project_list),
140 return file_contents_re, file_contents_proj_re
142 file_contents_proj_re = re.compile("")
143 return file_contents_re, file_contents_proj_re
145 def licence_extensions(self):
147 licence_extensions = (yl['licence']['licence_ext'])
149 logger.error('Key Error processing licence_extensions list values')
150 return licence_extensions
152 def licence_ignore(self):
154 licence_ignore = (yl['licence']['licence_ignore'])
156 logger.error('Key Error processing licence_ignore list values')
157 return licence_ignore