From 9ae740ec11040a07d3ebf5556955cb815c0d7826 Mon Sep 17 00:00:00 2001 From: Tim Laszlo Date: Tue, 3 Aug 2010 21:43:20 +0000 Subject: Packages: Resolver/Metadata options Patch from Jack Neely to add enable/disable options to the resolver and metadata pareser. git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5998 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Server/Plugins/Packages.py | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/lib/Server/Plugins/Packages.py b/src/lib/Server/Plugins/Packages.py index c8b1add44..870a3f6b0 100644 --- a/src/lib/Server/Plugins/Packages.py +++ b/src/lib/Server/Plugins/Packages.py @@ -6,7 +6,9 @@ import logging import lxml.etree import os import re +import sys import urllib2 +import ConfigParser try: from hashlib import md5 @@ -72,6 +74,7 @@ def _fetch_url(url): class Source(object): basegroups = [] + def __init__(self, basepath, url, version, arches, components, groups, rawurl, blacklist, whitelist, recommended): self.basepath = basepath @@ -562,6 +565,32 @@ class Packages(Bcfg2.Server.Plugin.Plugin, self.sentinels = set() self.sources = [] + # Grab the config file location + # XXX: Ugh...we need some help with Bcfg2's Option stuff + cfile = '/etc/bcfg2.conf' + if '-C' in sys.argv: + inx = sys.argv.index('-C') + if len(sys.argv) > inx + 1: + cfile = sys.argv[inx + 1] + + CP = ConfigParser.ConfigParser() + CP.read(cfile) + + # Did the user configure off the resolver? + self.disableResolver = False + try: + if CP.get('packages', 'resolver').lower() in ['0', 'false', 'no']: + self.disableResolver = True + except (ConfigParser.NoOptionError, ConfigParser.NoSectionError): + pass + self.disableMetaData = False + try: + if CP.get('packages', 'metadata').lower() in ['0', 'false', 'no']: + self.disableMetaData = True + self.disableResolver = True + except (ConfigParser.NoOptionError, ConfigParser.NoSectionError): + pass + if not os.path.exists(self.cachepath): # create cache directory if needed os.makedirs(self.cachepath) @@ -647,6 +676,8 @@ class Packages(Bcfg2.Server.Plugin.Plugin, meta - client metadata instance structures - a list of structure-stage entry combinations ''' + if self.disableResolver: return # Config requests no resolver + initial = set([pkg.get('name') for struct in structures \ for pkg in struct.findall('Package') + struct.findall('BoundPackage')]) @@ -726,7 +757,7 @@ class Packages(Bcfg2.Server.Plugin.Plugin, cachefiles = [] for source in self.sources: cachefiles.append(source.cachefile) - source.setup_data(force_update) + if not self.disableMetaData: source.setup_data(force_update) self.sentinels.update(source.basegroups) for cfile in glob.glob("%s/cache-*" % self.cachepath): if cfile not in cachefiles: -- cgit v1.2.3-1-g7c22