diff options
author | Sol Jerome <sol.jerome@gmail.com> | 2014-11-04 09:57:08 -0600 |
---|---|---|
committer | Sol Jerome <sol.jerome@gmail.com> | 2014-11-04 10:20:37 -0600 |
commit | 257eb0c174ef2fdaa2015975c5919979afa8da90 (patch) | |
tree | 51eabc1e3abcb5fdc07e350236d0469ce01e239d /src | |
parent | 84ba7561d9450d05b0dd99b69c16437b29100704 (diff) | |
download | bcfg2-257eb0c174ef2fdaa2015975c5919979afa8da90.tar.gz bcfg2-257eb0c174ef2fdaa2015975c5919979afa8da90.tar.bz2 bcfg2-257eb0c174ef2fdaa2015975c5919979afa8da90.zip |
Options.py: Fix database OPTIONS parsing
Instead of parsing key/value pairs from bcfg2.conf, this allows the
setting of the literal value which is then passed through to django as
the value of the OPTIONS setting.
This change allows for setting arbitrary options since some settings
require nested dictionaries, etc.
Signed-off-by: Sol Jerome <sol.jerome@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/Bcfg2/Options.py | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py index 9752ab758..652e216a5 100644 --- a/src/lib/Bcfg2/Options.py +++ b/src/lib/Bcfg2/Options.py @@ -1,14 +1,16 @@ """Option parsing library for utilities.""" +import ast import copy import getopt +import grp import inspect import os +import pwd import re import shlex import sys -import grp -import pwd + import Bcfg2.Client.Tools from Bcfg2.Compat import ConfigParser from Bcfg2.version import __version__ @@ -329,25 +331,9 @@ def colon_split(c_string): 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 + """ literally evaluate the option in order to allow for arbitrarily nested + dictionaries """ + return ast.literal_eval(c_string) def get_bool(val): |