summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/config.py54
1 files changed, 52 insertions, 2 deletions
diff --git a/ipalib/config.py b/ipalib/config.py
index 7899d077f..e1b12f1ee 100644
--- a/ipalib/config.py
+++ b/ipalib/config.py
@@ -17,6 +17,14 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+"""
+Basic configuration management.
+
+This module handles the reading and representation of basic local settings.
+It will also take care of settings that can be discovered by different
+methods, such as DNS.
+"""
+
from ConfigParser import SafeConfigParser, ParsingError
import types
import os
@@ -92,6 +100,12 @@ class Environment(object):
yield key
def update(self, new_vals, ignore_errors = False):
+ """
+ Update variables using keys and values from ``new_vals``.
+
+ Error will occur if there is an attempt to override variable that was
+ already set, unless``ignore_errors`` is True.
+ """
assert type(new_vals) == dict
for key, value in new_vals.iteritems():
if ignore_errors:
@@ -103,11 +117,19 @@ class Environment(object):
self[key] = value
def get(self, name, default=None):
- return self.__map.get(name, default)
-
+ """
+ Return the value corresponding to ``key``. Defaults to ``default``.
+ """
+ if name in self:
+ return self[name]
+ else:
+ return default
def set_default_env(env):
+ """
+ Set default values for ``env``.
+ """
assert isinstance(env, Environment)
default = dict(
@@ -129,7 +151,15 @@ def set_default_env(env):
class EnvProp(object):
+ """
+ Environment set-once property with optional default value.
+ """
def __init__(self, type_, default, multi_value=False):
+ """
+ :param type_: Type of the property.
+ :param default: Default value.
+ :param multi_value: Allow multiple values.
+ """
if multi_value:
if isinstance(default, tuple) and len(default):
check_isinstance(default[0], type_, allow_none=True)
@@ -139,17 +169,29 @@ class EnvProp(object):
self._multi_value = multi_value
def get_value(self):
+ """
+ Return the value if it was set.
+
+ If the value is not set return the default. Otherwise raise an
+ exception.
+ """
if self._get() != None:
return self._get()
else:
raise KeyError, 'Value not set'
def set_value(self, value):
+ """
+ Set the value.
+ """
if self._value != None:
raise KeyError, 'Value already set'
self._value = self._validate(value)
def _get(self):
+ """
+ Return value, default, or None.
+ """
if self._value != None:
return self._value
elif self._default != None:
@@ -158,6 +200,11 @@ class EnvProp(object):
return None
def _validate(self, value):
+ """
+ Make sure ``value`` is of the right type. Do conversions if necessary.
+
+ This will also handle multi value.
+ """
if self._multi_value and isinstance(value, tuple):
converted = []
for val in value:
@@ -167,6 +214,9 @@ class EnvProp(object):
return self._validate_value(value)
def _validate_value(self, value):
+ """
+ Validate and convert a single value.
+ """
bool_true = ('true', 'yes', 'on')
bool_false = ('false', 'no', 'off')