Ticket #902: Packages-whitelist.patch

File Packages-whitelist.patch, 3.7 KB (added by Richard Connon <[email protected]…>, 12 years ago)

Patch

  • src/lib/Server/Plugins/Packages.py

     
    2424def source_from_xml(xsource): 
    2525    ret = dict([('rawurl', False), ('url', False)]) 
    2626    for key, tag in [('groups', 'Group'), ('components', 'Component'), 
    27                      ('arches', 'Arch'), ('blacklist', 'Blacklist')]: 
     27                     ('arches', 'Arch'), ('blacklist', 'Blacklist'), 
     28                     ('whitelist', 'Whitelist')]: 
    2829        ret[key] = [item.text for item in xsource.findall(tag)] 
    2930    # version and component need to both contain data for sources to work 
    3031    try: 
     
    6667class Source(object): 
    6768    basegroups = [] 
    6869    def __init__(self, basepath, url, version, arches, components, groups, rawurl, 
    69                  blacklist, recommended): 
     70                 blacklist, whitelist, recommended): 
    7071        self.basepath = basepath 
    7172        self.version = version 
    7273        self.components = components 
     
    7778        self.deps = dict() 
    7879        self.provides = dict() 
    7980        self.blacklist = set(blacklist) 
     81        self.whitelist = set(whitelist) 
    8082        self.cachefile = None 
    8183        self.recommended = recommended 
    8284 
     
    170172        Returns => (packages, unresolved requirements) 
    171173        ''' 
    172174 
    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): 
    174176            # requirement and all deps are suppressed 
    175177            return (set(), set()) 
    176178 
     
    248250    ptype = 'yum' 
    249251 
    250252    def __init__(self, basepath, url, version, arches, components, groups, 
    251                  rawurl, blacklist, recommended): 
     253                 rawurl, blacklist, whitelist, recommended): 
    252254        Source.__init__(self, basepath, url, version, arches, components, 
    253                         groups, rawurl, blacklist, recommended) 
     255                        groups, rawurl, blacklist, whitelist, recommended) 
    254256        if not self.rawurl: 
    255257            self.baseurl = self.url + '%(version)s/%(component)s/%(arch)s/' 
    256258        else: 
     
    404406    ptype = 'deb' 
    405407 
    406408    def __init__(self, basepath, url, version, arches, components, groups, 
    407                  rawurl, blacklist, recommended): 
     409                 rawurl, blacklist, whitelist, recommended): 
    408410        Source.__init__(self, basepath, url, version, arches, components, groups, 
    409                         rawurl, blacklist, recommended) 
     411                        rawurl, blacklist, whitelist, recommended) 
    410412        if not self.rawurl: 
    411413            self.cachefile = self.escape_url(self.url + '@' + self.version) + '.data' 
    412414        else: 
  • schemas/packages.xsd

     
    2020      <xsd:element name="Version" type="xsd:string" minOccurs='0' 
    2121                   maxOccurs='1'/> 
    2222      <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> 
    2630      <xsd:element name="Arch" type="xsd:string"  minOccurs='1' 
    2731                   maxOccurs='unbounded'/> 
    2832    </xsd:sequence>