diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-05-11 13:27:07 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-05-11 13:27:17 -0400 |
commit | afeeb2b6430875cc3979ae4ad690d2a3efc0ac68 (patch) | |
tree | 8e68a03334c5f21cd0974c757b49ef75413d1c18 /src/lib/Bcfg2/Server/Plugins/Packages | |
parent | c5b4bfd842a6f03a4c840cd32c3a99bcc57a8c48 (diff) | |
download | bcfg2-afeeb2b6430875cc3979ae4ad690d2a3efc0ac68.tar.gz bcfg2-afeeb2b6430875cc3979ae4ad690d2a3efc0ac68.tar.bz2 bcfg2-afeeb2b6430875cc3979ae4ad690d2a3efc0ac68.zip |
moved plugin-specific configs to main config file; propagate "setup" object to server Core
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Packages')
5 files changed, 52 insertions, 68 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/PackagesConfig.py b/src/lib/Bcfg2/Server/Plugins/Packages/PackagesConfig.py deleted file mode 100644 index 3846c06ce..000000000 --- a/src/lib/Bcfg2/Server/Plugins/Packages/PackagesConfig.py +++ /dev/null @@ -1,15 +0,0 @@ -import Bcfg2.Server.Plugin - -class PackagesConfig(Bcfg2.Server.Plugin.SimpleConfig): - _required = False - - def Index(self): - """ Build local data structures """ - Bcfg2.Server.Plugin.SimpleConfig.Index(self) - - if hasattr(self.plugin, "sources") and self.plugin.sources.loaded: - # only reload Packages plugin if sources have been loaded. - # otherwise, this is getting called on server startup, and - # we have to wait until all sources have been indexed - # before we can call Packages.Reload() - self.plugin.Reload() diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/PackagesSources.py b/src/lib/Bcfg2/Server/Plugins/Packages/PackagesSources.py index a966268c0..7796b9e34 100644 --- a/src/lib/Bcfg2/Server/Plugins/Packages/PackagesSources.py +++ b/src/lib/Bcfg2/Server/Plugins/Packages/PackagesSources.py @@ -9,7 +9,7 @@ class PackagesSources(Bcfg2.Server.Plugin.SingleXMLFileBacked, Bcfg2.Server.Plugin.Debuggable): __identifier__ = None - def __init__(self, filename, cachepath, fam, packages, config): + def __init__(self, filename, cachepath, fam, packages, setup): Bcfg2.Server.Plugin.Debuggable.__init__(self) try: Bcfg2.Server.Plugin.SingleXMLFileBacked.__init__(self, @@ -24,7 +24,7 @@ class PackagesSources(Bcfg2.Server.Plugin.SingleXMLFileBacked, raise Bcfg2.Server.Plugin.PluginInitError(msg) Bcfg2.Server.Plugin.StructFile.__init__(self, filename) self.cachepath = cachepath - self.config = config + self.setup = setup if not os.path.exists(self.cachepath): # create cache directory if needed try: @@ -56,7 +56,7 @@ class PackagesSources(Bcfg2.Server.Plugin.SingleXMLFileBacked, self.parsed.add(fname) break - if self.config.loaded and self.loaded: + if self.loaded: self.logger.info("Reloading Packages plugin") self.pkg_obj.Reload() @@ -91,7 +91,7 @@ class PackagesSources(Bcfg2.Server.Plugin.SingleXMLFileBacked, return None try: - source = cls(self.cachepath, xsource, self.config) + source = cls(self.cachepath, xsource, self.setup) except SourceInitError: err = sys.exc_info()[1] self.logger.error("Packages: %s" % err) diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Source.py b/src/lib/Bcfg2/Server/Plugins/Packages/Source.py index ada04c067..edcdcd9f2 100644 --- a/src/lib/Bcfg2/Server/Plugins/Packages/Source.py +++ b/src/lib/Bcfg2/Server/Plugins/Packages/Source.py @@ -36,11 +36,11 @@ class Source(Bcfg2.Server.Plugin.Debuggable): genericrepo_re = re.compile('https?://.*?/([^/]+)/?$') basegroups = [] - def __init__(self, basepath, xsource, config): + def __init__(self, basepath, xsource, setup): Bcfg2.Server.Plugin.Debuggable.__init__(self) self.basepath = basepath self.xsource = xsource - self.config = config + self.setup = setup self.essentialpkgs = set() try: @@ -272,8 +272,8 @@ class Source(Bcfg2.Server.Plugin.Debuggable): if not found_arch: return False - if self.config.getboolean("global", "magic_groups", - default=True) == False: + if not self.setup.cfp.getboolean("packages", "magic_groups", + default=True): return True else: for group in self.basegroups: diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py index 941203db3..53344e200 100644 --- a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py +++ b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py @@ -15,7 +15,6 @@ from Bcfg2.Bcfg2Py3k import StringIO, cPickle, HTTPError, ConfigParser, file from Bcfg2.Server.Plugins.Packages.Collection import Collection from Bcfg2.Server.Plugins.Packages.Source import SourceInitError, Source, \ fetch_url -from Bcfg2.Server.Plugins.Packages.PackagesConfig import PackagesConfig logger = logging.getLogger(__name__) @@ -50,7 +49,7 @@ PULPSERVER = None PULPCONFIG = None -def _setup_pulp(config): +def _setup_pulp(setup): global PULPSERVER, PULPCONFIG if not has_pulp: msg = "Packages: Cannot create Pulp collection: Pulp libraries not found" @@ -59,8 +58,8 @@ def _setup_pulp(config): if PULPSERVER is None: try: - username = config.get("pulp", "username") - password = config.get("pulp", "password") + username = setup.cfp.get("packages:pulp", "username") + password = setup.cfp.get("packages:pulp", "password") except ConfigParser.NoSectionError: msg = "Packages: No [pulp] section found in Packages/packages.conf" logger.error(msg) @@ -91,11 +90,6 @@ class YumCollection(Collection): Collection.__init__(self, metadata, sources, basepath, debug=debug) self.keypath = os.path.join(self.basepath, "keys") - if len(sources): - self.config = sources[0].config - else: - self.config = PackageConfig('Packages') - if self.use_yum: self.cachefile = os.path.join(self.cachepath, "cache-%s" % self.cachekey) @@ -109,17 +103,18 @@ class YumCollection(Collection): "%s-yum.conf" % self.cachekey) self.write_config() if has_pulp and self.has_pulp_sources: - _setup_pulp(self.config) + _setup_pulp(self.setup) @property def helper(self): - return self.config.get("yum", "helper", - default="/usr/sbin/bcfg2-yum-helper") + return self.setup.cfp.get("packages:yum", "helper", + default="/usr/sbin/bcfg2-yum-helper") @property def use_yum(self): - return has_yum and self.config.getboolean("yum", "use_yum_libraries", - default=False) + return has_yum and self.setup.cfp.getboolean("packages:yum", + "use_yum_libraries", + default=False) @property def has_pulp_sources(self): @@ -140,9 +135,9 @@ class YumCollection(Collection): debuglevel="0", reposdir="/dev/null") try: - for opt in self.config.options("yum"): + for opt in self.setup.cfp.options("packages:yum"): if opt not in self.option_blacklist: - mainopts[opt] = self.config.get("yum", opt) + mainopts[opt] = self.setup.cfp.get("packages:yum", opt) except ConfigParser.NoSectionError: pass @@ -228,8 +223,8 @@ class YumCollection(Collection): for key in needkeys: # figure out the path of the key on the client - keydir = self.config.get("global", "gpg_keypath", - default="/etc/pki/rpm-gpg") + keydir = self.setup.cfp.get("global", "gpg_keypath", + default="/etc/pki/rpm-gpg") remotekey = os.path.join(keydir, os.path.basename(key)) localkey = os.path.join(self.keypath, os.path.basename(key)) kdata = open(localkey).read() @@ -451,13 +446,13 @@ class YumSource(Source): basegroups = ['yum', 'redhat', 'centos', 'fedora'] ptype = 'yum' - def __init__(self, basepath, xsource, config): - Source.__init__(self, basepath, xsource, config) + def __init__(self, basepath, xsource, setup): + Source.__init__(self, basepath, xsource, setup) self.pulp_id = None if has_pulp and xsource.get("pulp_id"): self.pulp_id = xsource.get("pulp_id") - _setup_pulp(self.config) + _setup_pulp(self.setup) repoapi = RepositoryAPI() try: self.repo = repoapi.repository(self.pulp_id) @@ -499,8 +494,9 @@ class YumSource(Source): @property def use_yum(self): - return has_yum and self.config.getboolean("yum", "use_yum_libraries", - default=False) + return has_yum and self.setup.cfp.getboolean("packages:yum", + "use_yum_libraries", + default=False) def save_state(self): if not self.use_yum: diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py b/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py index 4070b13ca..d789a6d39 100644 --- a/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py +++ b/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py @@ -10,7 +10,6 @@ import Bcfg2.Server.Plugin from Bcfg2.Bcfg2Py3k import ConfigParser, urlopen from Bcfg2.Server.Plugins.Packages import Collection from Bcfg2.Server.Plugins.Packages.PackagesSources import PackagesSources -from Bcfg2.Server.Plugins.Packages.PackagesConfig import PackagesConfig class Packages(Bcfg2.Server.Plugin.Plugin, Bcfg2.Server.Plugin.StructureValidator, @@ -36,11 +35,9 @@ class Packages(Bcfg2.Server.Plugin.Plugin, # create key directory if needed os.makedirs(self.keypath) - # set up config files - self.config = PackagesConfig(self) self.sources = PackagesSources(os.path.join(self.data, "sources.xml"), self.cachepath, core.fam, self, - self.config) + self.core.setup) def toggle_debug(self): Bcfg2.Server.Plugin.Plugin.toggle_debug(self) @@ -49,7 +46,7 @@ class Packages(Bcfg2.Server.Plugin.Plugin, @property def disableResolver(self): try: - return not self.config.getboolean("global", "resolver") + return not self.core.setup.cfp.getboolean("packages", "resolver") except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): return False except ValueError: @@ -57,20 +54,20 @@ class Packages(Bcfg2.Server.Plugin.Plugin, # "disabled", which are not handled according to the # Python docs but appear to be handled properly by # ConfigParser in at least some versions - return self.config.get("global", "resolver", - default="enabled").lower() == "disabled" + return self.core.setup.cfp.get("packages", "resolver", + default="enabled").lower() == "disabled" @property def disableMetaData(self): try: - return not self.config.getboolean("global", "resolver") + return not self.core.setup.cfp.getboolean("packages", "resolver") except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): return False except ValueError: # for historical reasons we also accept "enabled" and # "disabled" - return self.config.get("global", "metadata", - default="enabled").lower() == "disabled" + return self.core.setup.cfp.get("packages", "metadata", + default="enabled").lower() == "disabled" def create_config(self, entry, metadata): """ create yum/apt config for the specified host """ @@ -89,20 +86,23 @@ class Packages(Bcfg2.Server.Plugin.Plugin, def HandleEntry(self, entry, metadata): if entry.tag == 'Package': collection = self._get_collection(metadata) - entry.set('version', self.config.get("global", + entry.set('version', self.core.setup.cfp.get("packages", "version", default="auto")) entry.set('type', collection.ptype) elif entry.tag == 'Path': - if (entry.get("name") == self.config.get("global", "yum_config", - default="") or - entry.get("name") == self.config.get("global", "apt_config", - default="")): + if (entry.get("name") == self.core.setup.cfp.get("packages", + "yum_config", + default="") or + entry.get("name") == self.core.setup.cfp.get("packages", + "apt_config", + default="")): self.create_config(entry, metadata) def HandlesEntry(self, entry, metadata): if entry.tag == 'Package': - if self.config.getboolean("global", "magic_groups", default=True): + if self.core.setup.cfp.getboolean("packages", "magic_groups", + default=True): collection = self._get_collection(metadata) if collection.magic_groups_match(): return True @@ -110,10 +110,12 @@ class Packages(Bcfg2.Server.Plugin.Plugin, return True elif entry.tag == 'Path': # managed entries for yum/apt configs - if (entry.get("name") == self.config.get("global", "yum_config", - default="") or - entry.get("name") == self.config.get("global", "apt_config", - default="")): + if (entry.get("name") == self.core.setup.cfp.get("packages", + "yum_config", + default="") or + entry.get("name") == self.core.setup.cfp.get("packages", + "apt_config", + default="")): return True return False @@ -183,8 +185,9 @@ class Packages(Bcfg2.Server.Plugin.Plugin, newpkgs.sort() for pkg in newpkgs: lxml.etree.SubElement(independent, 'BoundPackage', name=pkg, - version=self.config.get("global", "version", - default="auto"), + version=self.core.setup.cfp.get("packages", + "version", + default="auto"), type=collection.ptype, origin='Packages') def Refresh(self): |