Ticket #902: Packages-whitelist.patch
File Packages-whitelist.patch, 3.7 KB (added by Richard Connon <[email protected]…>, 13 years ago) |
---|
-
src/lib/Server/Plugins/Packages.py
24 24 def source_from_xml(xsource): 25 25 ret = dict([('rawurl', False), ('url', False)]) 26 26 for key, tag in [('groups', 'Group'), ('components', 'Component'), 27 ('arches', 'Arch'), ('blacklist', 'Blacklist')]: 27 ('arches', 'Arch'), ('blacklist', 'Blacklist'), 28 ('whitelist', 'Whitelist')]: 28 29 ret[key] = [item.text for item in xsource.findall(tag)] 29 30 # version and component need to both contain data for sources to work 30 31 try: … … 66 67 class Source(object): 67 68 basegroups = [] 68 69 def __init__(self, basepath, url, version, arches, components, groups, rawurl, 69 blacklist, recommended):70 blacklist, whitelist, recommended): 70 71 self.basepath = basepath 71 72 self.version = version 72 73 self.components = components … … 77 78 self.deps = dict() 78 79 self.provides = dict() 79 80 self.blacklist = set(blacklist) 81 self.whitelist = set(whitelist) 80 82 self.cachefile = None 81 83 self.recommended = recommended 82 84 … … 170 172 Returns => (packages, unresolved requirements) 171 173 ''' 172 174 173 if requirement in self.blacklist:175 if (len(self.blacklist) > 0 and requirement in self.blacklist) or (len(self.whitelist) > 0 and requirement not in self.whitelist): 174 176 # requirement and all deps are suppressed 175 177 return (set(), set()) 176 178 … … 248 250 ptype = 'yum' 249 251 250 252 def __init__(self, basepath, url, version, arches, components, groups, 251 rawurl, blacklist, recommended):253 rawurl, blacklist, whitelist, recommended): 252 254 Source.__init__(self, basepath, url, version, arches, components, 253 groups, rawurl, blacklist, recommended)255 groups, rawurl, blacklist, whitelist, recommended) 254 256 if not self.rawurl: 255 257 self.baseurl = self.url + '%(version)s/%(component)s/%(arch)s/' 256 258 else: … … 404 406 ptype = 'deb' 405 407 406 408 def __init__(self, basepath, url, version, arches, components, groups, 407 rawurl, blacklist, recommended):409 rawurl, blacklist, whitelist, recommended): 408 410 Source.__init__(self, basepath, url, version, arches, components, groups, 409 rawurl, blacklist, recommended)411 rawurl, blacklist, whitelist, recommended) 410 412 if not self.rawurl: 411 413 self.cachefile = self.escape_url(self.url + '@' + self.version) + '.data' 412 414 else: -
schemas/packages.xsd
20 20 <xsd:element name="Version" type="xsd:string" minOccurs='0' 21 21 maxOccurs='1'/> 22 22 <xsd:element name="Component" type="xsd:string" minOccurs='0' 23 maxOccurs='unbounded'/> 24 <xsd:element name="Blacklist" type="xsd:string" minOccurs='0' 25 maxOccurs='unbounded'/> 23 maxOccurs='unbounded'/> 24 <xsd:choice> 25 <xsd:element name="Blacklist" type="xsd:string" minOccurs='0' 26 maxOccurs='unbounded'/> 27 <xsd:element name="Whitelist" type="xsd:string" minOccurs='0' 28 maxOccurs='unbounded'/> 29 </xsd:choice> 26 30 <xsd:element name="Arch" type="xsd:string" minOccurs='1' 27 31 maxOccurs='unbounded'/> 28 32 </xsd:sequence>