diff options
author | Sol Jerome <sol.jerome@gmail.com> | 2013-06-29 18:58:30 -0500 |
---|---|---|
committer | Sol Jerome <sol.jerome@gmail.com> | 2013-06-29 18:58:30 -0500 |
commit | 049ff41ca5b333b602b4adf19a7630ba7f2be754 (patch) | |
tree | 3df7450b4fa4771e6e24dcba93b4dad620818af1 /src/lib/Bcfg2/Options.py | |
parent | 3346f2ea0f00e62a30ca38d680abdb47f8440259 (diff) | |
parent | 58f4b311bfa9f192c9d4d4a418e9f0db5bce1897 (diff) | |
download | bcfg2-049ff41ca5b333b602b4adf19a7630ba7f2be754.tar.gz bcfg2-049ff41ca5b333b602b4adf19a7630ba7f2be754.tar.bz2 bcfg2-049ff41ca5b333b602b4adf19a7630ba7f2be754.zip |
Merge branch 'django-db-options' of https://github.com/AlexanderS/bcfg2 into maint
Diffstat (limited to 'src/lib/Bcfg2/Options.py')
-rw-r--r-- | src/lib/Bcfg2/Options.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py index 243c4ed2a..84551a02d 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 commans, optionally sourrunded 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) """ @@ -652,6 +674,12 @@ DB_PORT = \ cf=('database', 'port'), deprecated_cf=('statistics', 'database_port')) +DB_OPTIONS = \ + Option('Database options', + default=dict(), + cf=('database', 'options'), + cook=dict_split) + # Django options WEB_CFILE = \ Option('Web interface configuration file', @@ -1285,6 +1313,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) |