summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Options.py
diff options
context:
space:
mode:
authorSol Jerome <sol.jerome@gmail.com>2013-07-08 16:29:33 -0500
committerSol Jerome <sol.jerome@gmail.com>2013-07-08 16:29:33 -0500
commitf24ee0bb658d2102c731960a78478687c22cc517 (patch)
treed9825dcc873f7adcdf615a96ab8f67881265a595 /src/lib/Bcfg2/Options.py
parent8bc0d778d5792e89451bd986831ca4ea10bfa39b (diff)
parenta0f20bdde06ccb7be85f59e1b8fbf57e1c492e64 (diff)
downloadbcfg2-f24ee0bb658d2102c731960a78478687c22cc517.tar.gz
bcfg2-f24ee0bb658d2102c731960a78478687c22cc517.tar.bz2
bcfg2-f24ee0bb658d2102c731960a78478687c22cc517.zip
Merge branch 'maint'
Conflicts: src/lib/Bcfg2/settings.py src/sbin/bcfg2-crypt
Diffstat (limited to 'src/lib/Bcfg2/Options.py')
-rw-r--r--src/lib/Bcfg2/Options.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py
index 64408693a..a1fd07b86 100644
--- a/src/lib/Bcfg2/Options.py
+++ b/src/lib/Bcfg2/Options.py
@@ -319,6 +319,28 @@ def colon_split(c_string):
return []
+def dict_split(c_string):
+ """ split an option string on commas, optionally surrounded by
+ whitespace and split the resulting items again on equals signs,
+ returning a dict """
+ result = dict()
+ if c_string:
+ items = re.split(r'\s*,\s*', c_string)
+ for item in items:
+ if r'=' in item:
+ key, value = item.split(r'=', 1)
+ try:
+ result[key] = get_bool(value)
+ except ValueError:
+ try:
+ result[key] = get_int(value)
+ except ValueError:
+ result[key] = value
+ else:
+ result[item] = True
+ return result
+
+
def get_bool(val):
""" given a string value of a boolean configuration option, return
an actual bool (True or False) """
@@ -646,6 +668,12 @@ DB_PORT = \
default='',
cf=('database', 'port'))
+DB_OPTIONS = \
+ Option('Database options',
+ default=dict(),
+ cf=('database', 'options'),
+ cook=dict_split)
+
# Django options
WEB_CFILE = \
Option('Web interface configuration file',
@@ -1217,6 +1245,7 @@ DATABASE_COMMON_OPTIONS = dict(web_configfile=WEB_CFILE,
db_password=DB_PASSWORD,
db_host=DB_HOST,
db_port=DB_PORT,
+ db_options=DB_OPTIONS,
time_zone=DJANGO_TIME_ZONE,
django_debug=DJANGO_DEBUG,
web_prefix=DJANGO_WEB_PREFIX)