diff options
author | Sol Jerome <sol.jerome@gmail.com> | 2014-10-29 15:30:26 -0500 |
---|---|---|
committer | Sol Jerome <sol.jerome@gmail.com> | 2014-10-29 15:42:42 -0500 |
commit | 835c459b9849b888fdecd045f5d64b37742eb2b3 (patch) | |
tree | 56b08cb53f26b59fac27de9026e86b4a60991ffb /src/lib/Bcfg2/Client/Tools/__init__.py | |
parent | 111bb75cf8872cc2bca4b00983c5ea9beffed7ae (diff) | |
download | bcfg2-835c459b9849b888fdecd045f5d64b37742eb2b3.tar.gz bcfg2-835c459b9849b888fdecd045f5d64b37742eb2b3.tar.bz2 bcfg2-835c459b9849b888fdecd045f5d64b37742eb2b3.zip |
Tools: Fix install of non-whitelisted services
Previously, a service restart would occur even when running in whitelist
mode without the service being present in the whitelist.
Signed-off-by: Sol Jerome <sol.jerome@gmail.com>
Diffstat (limited to 'src/lib/Bcfg2/Client/Tools/__init__.py')
-rw-r--r-- | src/lib/Bcfg2/Client/Tools/__init__.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/__init__.py b/src/lib/Bcfg2/Client/Tools/__init__.py index 703b8ff57..0bec71e20 100644 --- a/src/lib/Bcfg2/Client/Tools/__init__.py +++ b/src/lib/Bcfg2/Client/Tools/__init__.py @@ -1,10 +1,12 @@ """This contains all Bcfg2 Tool modules""" import os -import sys import stat +import sys + import Bcfg2.Client import Bcfg2.Client.XML +from Bcfg2.Client.Frame import matches_white_list, passes_black_list from Bcfg2.Utils import Executor, ClassName from Bcfg2.Compat import walk_packages # pylint: disable=W0622 @@ -141,6 +143,21 @@ class Tool(object): raise ToolInstantiationError("%s: %s not executable" % (self.name, filename)) + def _install_allowed(self, entry): + """ Return true if the given entry is allowed to be installed by + the whitelist or blacklist """ + if self.setup['decision'] == 'whitelist' and \ + not matches_white_list(entry, self.setup['decision_list']): + self.logger.info("In whitelist mode: suppressing %s: %s" % + (entry.tag, entry.get('name'))) + return False + if self.setup['decision'] == 'blacklist' and \ + not passes_black_list(entry, self.setup['decision_list']): + self.logger.info("In blacklist mode: suppressing %s: %s" % + (entry.tag, entry.get('name'))) + return False + return True + def BundleUpdated(self, bundle, states): # pylint: disable=W0613 """ Callback that is invoked when a bundle has been updated. @@ -591,7 +608,8 @@ class SvcTool(Tool): return for entry in bundle: - if not self.handlesEntry(entry): + if (not self.handlesEntry(entry) + or not self._install_allowed(entry)): continue estatus = entry.get('status') |