From 3e8826d66c23cc439df0a589f4c7821d2dfca575 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Tue, 18 Sep 2012 13:40:11 -0400 Subject: deduplicated Packages code, more docs --- src/lib/Bcfg2/Server/Plugins/Packages/Yum.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/lib/Bcfg2/Server/Plugins/Packages/Yum.py') diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py index c942a1061..b8648fdde 100644 --- a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py +++ b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py @@ -558,6 +558,7 @@ class YumCollection(_Collection): class YumSource(Source): basegroups = ['yum', 'redhat', 'centos', 'fedora'] ptype = 'yum' + unknown_filter = lambda u: u.startswith("rpmlib") def __init__(self, basepath, xsource, setup): Source.__init__(self, basepath, xsource, setup) @@ -632,20 +633,21 @@ class YumSource(Source): rmdurl = '%srepodata/repomd.xml' % url try: repomd = fetch_url(rmdurl) - xdata = lxml.etree.XML(repomd) except ValueError: self.logger.error("Packages: Bad url string %s" % rmdurl) return [] - except URLError: - err = sys.exc_info()[1] - self.logger.error("Packages: Failed to fetch url %s. %s" % - (rmdurl, err)) - return [] except HTTPError: err = sys.exc_info()[1] self.logger.error("Packages: Failed to fetch url %s. code=%s" % (rmdurl, err.code)) return [] + except URLError: + err = sys.exc_info()[1] + self.logger.error("Packages: Failed to fetch url %s. %s" % + (rmdurl, err)) + return [] + try: + xdata = lxml.etree.XML(repomd) except lxml.etree.XMLSyntaxError: err = sys.exc_info()[1] self.logger.error("Packages: Failed to process metadata at %s: %s" % @@ -764,17 +766,17 @@ class YumSource(Source): filtered = set() for unk in unknown: try: - if unk.startswith('rpmlib'): + if self.unknown_filter(unk): filtered.update(unk) except AttributeError: try: - if unk[0].startswith('rpmlib'): + if self.unknown_filter(unk[0]): filtered.update(unk) except (IndexError, AttributeError): pass + unknown.difference_update(filtered) else: - filtered = set([u for u in unknown if u.startswith('rpmlib')]) - unknown.difference_update(filtered) + Source.filter_unknown(self, unknown) def setup_data(self, force_update=False): if not self.use_yum: -- cgit v1.2.3-1-g7c22