summaryrefslogtreecommitdiffstats
path: root/ipalib/config.py
diff options
context:
space:
mode:
authorMartin Nagy <mnagy@redhat.com>2008-10-02 20:24:05 +0200
committerJason Gerard DeRose <jderose@redhat.com>2008-10-02 17:22:41 -0600
commit149429f3057e3ae934e660e3276c9e8d3c935d17 (patch)
tree8110fe604c94f70275991e483889b94b8e226afd /ipalib/config.py
parent6000b6b5c62181d25783b6d45adb2ed6f3928480 (diff)
downloadfreeipa-149429f3057e3ae934e660e3276c9e8d3c935d17.tar.gz
freeipa-149429f3057e3ae934e660e3276c9e8d3c935d17.tar.xz
freeipa-149429f3057e3ae934e660e3276c9e8d3c935d17.zip
Environment is now subclassed from object, rather then dict. Added tests for Environment and config.py
Diffstat (limited to 'ipalib/config.py')
-rw-r--r--ipalib/config.py40
1 files changed, 23 insertions, 17 deletions
diff --git a/ipalib/config.py b/ipalib/config.py
index bb345661c..73d23c8e0 100644
--- a/ipalib/config.py
+++ b/ipalib/config.py
@@ -17,22 +17,31 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+import types
-def default_environment():
+DEFAULT_CONF='/etc/ipa/ipa.conf'
+
+def generate_env(d={}):
default = dict(
- conf = '/etc/ipa/ipa.conf',
server_context = True,
query_dns = True,
verbose = False,
- servers = LazyIter(myservers),
- realm = LazyProp(myrealm),
- domain = LazyProp(mydomain),
+ servers = LazyIter(get_servers),
+ realm = LazyProp(get_realm),
+ domain = LazyProp(get_domain),
)
+ for key, value in d.iteritems():
+ if key in default and type(default[key]) in (LazyIter, LazyProp):
+ default[key].set_value(value)
+ else:
+ default[key] = value
+
return default
class LazyProp(object):
def __init__(self, func, value=None):
+ assert isinstance(func, types.FunctionType)
self._func = func
self._value = value
@@ -40,26 +49,26 @@ class LazyProp(object):
self._value = value
def get_value(self):
- if self._value is None:
+ if self._value == None:
return self._func()
else:
return self._value
-# FIXME: make sure to eliminate duplicates
class LazyIter(LazyProp):
def get_value(self):
- if self._value is not None:
- if type(self._value) is tuple:
+ if self._value != None:
+ if type(self._value) == tuple:
for item in self._value:
yield item
else:
yield self._value
for item in self._func():
- yield item
+ if not self._value or item not in self._value:
+ yield item
-def read_config(file):
+def read_config(file=DEFAULT_CONF):
assert isinstance(file, basestring)
# open the file and read configuration, return a dict
# for now, these are here just for testing purposes
@@ -67,18 +76,15 @@ def read_config(file):
# these functions are here just to "emulate" dns resolving for now
-def mydomain():
+def get_domain():
return "ipatest.com"
-def myrealm():
+def get_realm():
return "IPATEST.COM"
-def myservers():
- # print is here to demonstrate that the querying will occur only when it is
- # really needed
- print "Querying DNS"
+def get_servers():
yield "server.ipatest.com"
yield "backup.ipatest.com"
yield "fake.ipatest.com"