summaryrefslogtreecommitdiffstats
path: root/src/lib/Server/Plugin.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-01-13 08:09:22 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-01-13 08:09:22 -0500
commit238f6446d09ca8e3b7a082876920922ee1eda4d2 (patch)
tree7a59ba455180c9950631334180af64ba68eeadee /src/lib/Server/Plugin.py
parent8c9b825595174455242b3b2f6ca96ddcbdcfff2e (diff)
parentb6654dd316f9cd4f6a6673a89cdd48cc1b38b82a (diff)
downloadbcfg2-238f6446d09ca8e3b7a082876920922ee1eda4d2.tar.gz
bcfg2-238f6446d09ca8e3b7a082876920922ee1eda4d2.tar.bz2
bcfg2-238f6446d09ca8e3b7a082876920922ee1eda4d2.zip
merged branch rules_regex
Diffstat (limited to 'src/lib/Server/Plugin.py')
-rw-r--r--src/lib/Server/Plugin.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/lib/Server/Plugin.py b/src/lib/Server/Plugin.py
index d491d1609..4bfa3fdf5 100644
--- a/src/lib/Server/Plugin.py
+++ b/src/lib/Server/Plugin.py
@@ -11,6 +11,7 @@ import posixpath
import re
import sys
import threading
+from Bcfg2.Bcfg2Py3k import ConfigParser
from lxml.etree import XML, XMLSyntaxError
@@ -1142,3 +1143,51 @@ class GroupSpool(Plugin, Generator):
return
reqid = self.core.fam.AddMonitor(name, self)
self.handles[reqid] = relative
+
+class SimpleConfig(FileBacked,
+ ConfigParser.SafeConfigParser):
+ ''' a simple plugin config using ConfigParser '''
+ _required = True
+
+ def __init__(self, plugin):
+ filename = os.path.join(plugin.data, plugin.name.lower() + ".conf")
+ self.plugin = plugin
+ self.fam = self.plugin.core.fam
+ Bcfg2.Server.Plugin.FileBacked.__init__(self, filename)
+ ConfigParser.SafeConfigParser.__init__(self)
+
+ if (self._required or
+ (not self._required and os.path.exists(self.name))):
+ self.fam.AddMonitor(self.name, self)
+
+ def Index(self):
+ """ Build local data structures """
+ for section in self.sections():
+ self.remove_section(section)
+ self.read(self.name)
+
+ def get(self, section, option, default=None):
+ """ convenience method for getting config items """
+ try:
+ return ConfigParser.SafeConfigParser.get(self, section, option)
+ except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
+ if default is not None:
+ return default
+ else:
+ raise
+
+ def getboolean(self, section, option, default=None):
+ """ convenience method for getting boolean config items """
+ try:
+ return ConfigParser.SafeConfigParser.getboolean(self,
+ section, option)
+ except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
+ if default is not None:
+ return default
+ else:
+ raise
+ except ValueError:
+ if default is not None:
+ return default
+ else:
+ raise