summaryrefslogtreecommitdiffstats
path: root/ipalib/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib/config.py')
-rw-r--r--ipalib/config.py38
1 files changed, 28 insertions, 10 deletions
diff --git a/ipalib/config.py b/ipalib/config.py
index c55c47c8a..a606a40b1 100644
--- a/ipalib/config.py
+++ b/ipalib/config.py
@@ -25,25 +25,41 @@ DEFAULT_CONF='/etc/ipa/ipa.conf'
def generate_env(d={}):
default = dict(
- server_context = True,
- query_dns = True,
- verbose = False,
+ basedn = 'dc=example,dc=com',
+ container_user = 'cn=users,cn=accounts',
+ domain = LazyProp(get_domain),
interactive = True,
- server = LazyIter(get_servers),
+ query_dns = True,
realm = LazyProp(get_realm),
- domain = LazyProp(get_domain),
- container_user='cn=users,cn=accounts',
- basedn='dc=example,dc=com',
+ server_context = True,
+ server = LazyIter(get_servers),
+ verbose = False,
)
for key, value in d.iteritems():
- if key in default and type(default[key]) in (LazyIter, LazyProp):
- default[key].set_value(value)
+ if key in default:
+ if isinstance(default[key], (LazyIter, LazyProp)):
+ default[key].set_value(value)
+ else:
+ default[key] = convert_val(type(default[key]), value)
else:
- default[key] = value
+ default[key] = value
return default
+# TODO: Add a validation function
+def convert_val(target_type, value):
+ bool_true = ('true', 'yes', 'on')
+ bool_false = ('false', 'no', 'off')
+
+ if target_type == bool and isinstance(value, basestring):
+ if value.lower() in bool_true:
+ return True
+ elif value.lower() in bool_false:
+ return False
+ return target_type(value)
+
+
class LazyProp(object):
def __init__(self, func, value=None):
assert isinstance(func, types.FunctionType)
@@ -73,6 +89,8 @@ class LazyIter(LazyProp):
yield item
+# TODO: Make it possible to use var = 'foo, bar' without
+# turning it into ("'foo", "bar'")
def read_config(config_file=None):
assert config_file == None or isinstance(config_file, (basestring, file))