diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-12-22 15:41:24 -0700 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-12-22 15:41:24 -0700 |
commit | 5b637f6a18a647a0ff084b2932faa1a4a887a5c2 (patch) | |
tree | 17f3fdb8e1c00a6f14f2ffa2b9b5d4b45c6e48c8 /ipalib | |
parent | 885efbe085fcc177241a4553bde45f29241376e0 (diff) | |
download | freeipa-5b637f6a18a647a0ff084b2932faa1a4a887a5c2.tar.gz freeipa-5b637f6a18a647a0ff084b2932faa1a4a887a5c2.tar.xz freeipa-5b637f6a18a647a0ff084b2932faa1a4a887a5c2.zip |
Removed depreciated code from config.py; removed corresponding unit tests
Diffstat (limited to 'ipalib')
-rw-r--r-- | ipalib/cli.py | 1 | ||||
-rw-r--r-- | ipalib/config.py | 281 | ||||
-rw-r--r-- | ipalib/plugable.py | 2 |
3 files changed, 2 insertions, 282 deletions
diff --git a/ipalib/cli.py b/ipalib/cli.py index 518b71298..f4cdbbf57 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -37,7 +37,6 @@ import backend import errors import plugable import ipa_types -from config import set_default_env, read_config import util from constants import CLI_TAB diff --git a/ipalib/config.py b/ipalib/config.py index 1bec57e56..06ecb13f2 100644 --- a/ipalib/config.py +++ b/ipalib/config.py @@ -25,107 +25,13 @@ It will also take care of settings that can be discovered by different methods, such as DNS. """ -from ConfigParser import SafeConfigParser, ParsingError, RawConfigParser +from ConfigParser import RawConfigParser, ParsingError import types import os from os import path import sys -from errors import check_isinstance, raise_TypeError import constants -DEFAULT_CONF='/etc/ipa/ipa.conf' - - -class Environment(object): - """ - A mapping object used to store the environment variables. - """ - - def __init__(self): - object.__setattr__(self, '_Environment__map', {}) - - def __getattr__(self, name): - """ - Return the attribute named ``name``. - """ - return self[name] - - def __setattr__(self, name, value): - """ - Set the attribute named ``name`` to ``value``. - """ - self[name] = value - - def __delattr__(self, name): - """ - Raise AttributeError (deletion is not allowed). - """ - raise AttributeError('cannot del %s.%s' % - (self.__class__.__name__, name) - ) - - def __getitem__(self, key): - """ - Return the value corresponding to ``key``. - """ - val = self.__map[key] - if hasattr(val, 'get_value'): - return val.get_value() - else: - return val - - def __setitem__(self, key, value): - """ - Set the item at ``key`` to ``value``. - """ - if key in self or hasattr(self, key): - if hasattr(self.__map[key], 'set_value'): - self.__map[key].set_value(value) - else: - raise AttributeError('cannot overwrite %s.%s' % - (self.__class__.__name__, key) - ) - else: - self.__map[key] = value - - def __contains__(self, key): - """ - Return True if instance contains ``key``; otherwise return False. - """ - return key in self.__map - - def __iter__(self): - """ - Iterate through keys in ascending order. - """ - for key in sorted(self.__map): - 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: - try: - self[key] = value - except (AttributeError, KeyError): - pass - else: - self[key] = value - - def get(self, name, default=None): - """ - Return the value corresponding to ``key``. Defaults to ``default``. - """ - if name in self: - return self[name] - else: - return default class Env(object): @@ -349,188 +255,3 @@ class Env(object): """ for key in sorted(self.__d): yield key - - -def set_default_env(env): - """ - Set default values for ``env``. - """ - assert isinstance(env, Environment) - - default = dict( - basedn = EnvProp(basestring, 'dc=example,dc=com'), - container_accounts = EnvProp(basestring, 'cn=accounts'), - container_user = EnvProp(basestring, 'cn=users,cn=accounts'), - container_group = EnvProp(basestring, 'cn=groups,cn=accounts'), - container_service = EnvProp(basestring, 'cn=services,cn=accounts'), - container_host = EnvProp(basestring, 'cn=computers,cn=accounts'), - container_hostgroup = EnvProp(basestring, 'cn=hostgroups,cn=accounts'), - domain = LazyProp(basestring, get_domain), - interactive = EnvProp(bool, True), - query_dns = EnvProp(bool, True), - realm = LazyProp(basestring, get_realm), - server_context = EnvProp(bool, True), - server = LazyIter(basestring, get_servers), - verbose = EnvProp(bool, False), - ldaphost = EnvProp(basestring, 'localhost'), - ldapport = EnvProp(int, 389), - ) - - env.update(default) - - -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) - self._type = type_ - self._default = default - self._value = None - 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: - return self._default - else: - 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: - converted.append(self._validate_value(val)) - return tuple(converted) - else: - 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') - - if self._type == bool and isinstance(value, basestring): - if value.lower() in bool_true: - return True - elif value.lower() in bool_false: - return False - else: - raise raise_TypeError(value, bool, 'value') - check_isinstance(value, self._type, 'value') - return value - - -class LazyProp(EnvProp): - def __init__(self, type_, func, default=None, multi_value=False): - check_isinstance(func, types.FunctionType, 'func') - self._func = func - EnvProp.__init__(self, type_, default, multi_value) - - def get_value(self): - if self._get() != None: - return self._get() - else: - return self._func() - - -class LazyIter(LazyProp): - def __init__(self, type_, func, default=None): - LazyProp.__init__(self, type_, func, default, multi_value=True) - - def get_value(self): - val = self._get() - if val != None: - if type(val) == tuple: - for item in val: - yield item - else: - yield val - for item in self._func(): - if not val or item not in val: - 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)) - - parser = SafeConfigParser() - if config_file == None: - files = [DEFAULT_CONF, os.path.expanduser('~/.ipa.conf')] - else: - files = [config_file] - - for f in files: - try: - if isinstance(f, file): - parser.readfp(f) - else: - parser.read(f) - except ParsingError: - print "Can't read %s" % f - - ret = {} - if parser.has_section('defaults'): - for name, value in parser.items('defaults'): - value = tuple(elem.strip() for elem in value.split(',')) - if len(value) == 1: - value = value[0] - ret[name] = value - - return ret - - -# these functions are here just to "emulate" dns resolving for now -def get_domain(): - return "ipatest.com" - - -def get_realm(): - return "IPATEST.COM" - - -def get_servers(): - yield "server.ipatest.com" - yield "backup.ipatest.com" - yield "fake.ipatest.com" diff --git a/ipalib/plugable.py b/ipalib/plugable.py index 01b9b33c8..0120f9729 100644 --- a/ipalib/plugable.py +++ b/ipalib/plugable.py @@ -35,7 +35,7 @@ from os import path import subprocess import errors from errors import check_type, check_isinstance -from config import Environment, Env +from config import Env from constants import DEFAULT_CONFIG import util |