summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-05-11 13:57:01 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-05-11 13:57:01 -0400
commitdc63ebe24b7c76b721aa8ed7d8fae278f1a8aa11 (patch)
tree0f83c1712c17dea06051041c64ff0c58a1ea19b0 /src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py
parentafeeb2b6430875cc3979ae4ad690d2a3efc0ac68 (diff)
downloadbcfg2-dc63ebe24b7c76b721aa8ed7d8fae278f1a8aa11.tar.gz
bcfg2-dc63ebe24b7c76b721aa8ed7d8fae278f1a8aa11.tar.bz2
bcfg2-dc63ebe24b7c76b721aa8ed7d8fae278f1a8aa11.zip
added ability to disable Cfg file validation
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py54
1 files changed, 32 insertions, 22 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py b/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py
index f59890574..6c7585993 100644
--- a/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py
+++ b/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py
@@ -8,12 +8,14 @@ import pkgutil
import logging
import binascii
import lxml.etree
+import Bcfg2.Options
import Bcfg2.Server.Plugin
from Bcfg2.Bcfg2Py3k import u_str
logger = logging.getLogger(__name__)
PROCESSORS = None
+SETUP = None
class CfgBaseFileMatcher(Bcfg2.Server.Plugin.SpecificData):
__basenames__ = []
@@ -246,28 +248,26 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet):
for fltr in filters:
data = fltr.modify_data(entry, metadata, data)
- # TODO: disable runtime verification in config, but let
- # bcfg2-test turn it back on dynamically. need to sort out
- # config files first.
-
- # we can have multiple verifiers, but we only want to use the
- # best matching verifier of each class
- verifiers_by_class = dict()
- for verifier in verifiers:
- cls = verifier.__class__.__name__
- if cls not in verifiers_by_class:
- verifiers_by_class[cls] = [verifier]
- else:
- verifiers_by_class[cls].append(verifier)
- for verifiers in verifiers_by_class.values():
- verifier = self.best_matching(metadata, verifiers)
- try:
- verifier.verify_entry(entry, metadata, data)
- except CfgVerificationError:
- msg = "Data for %s for %s failed to verify: %s" % \
- (entry.get('name'), metadata.hostname, sys.exc_info()[1])
- logger.error(msg)
- raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
+ if SETUP['validate']:
+ # we can have multiple verifiers, but we only want to use the
+ # best matching verifier of each class
+ verifiers_by_class = dict()
+ for verifier in verifiers:
+ cls = verifier.__class__.__name__
+ if cls not in verifiers_by_class:
+ verifiers_by_class[cls] = [verifier]
+ else:
+ verifiers_by_class[cls].append(verifier)
+ for verifiers in verifiers_by_class.values():
+ verifier = self.best_matching(metadata, verifiers)
+ try:
+ verifier.verify_entry(entry, metadata, data)
+ except CfgVerificationError:
+ msg = "Data for %s for %s failed to verify: %s" % \
+ (entry.get('name'), metadata.hostname,
+ sys.exc_info()[1])
+ logger.error(msg)
+ raise Bcfg2.Server.Plugin.PluginExecutionError(msg)
if entry.get('encoding') == 'base64':
data = binascii.b2a_base64(data)
@@ -378,6 +378,16 @@ class Cfg(Bcfg2.Server.Plugin.GroupSpool,
es_cls = CfgEntrySet
es_child_cls = Bcfg2.Server.Plugin.SpecificData
+ def __init__(self, core, datastore):
+ global SETUP
+ Bcfg2.Server.Plugin.GroupSpool.__init__(self, core, datastore)
+ Bcfg2.Server.Plugin.PullTarget.__init__(self)
+
+ SETUP = core.setup
+ if 'validate' not in SETUP:
+ SETUP['validate'] = Bcfg2.Options.CFG_VALIDATION
+ SETUP.reparse()
+
def AcceptChoices(self, entry, metadata):
return self.entries[entry.get('name')].list_accept_choices(entry,
metadata)