summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorPavel Zuna <pzuna@redhat.com>2009-08-27 15:49:58 +0200
committerRob Crittenden <rcritten@redhat.com>2009-10-05 15:58:40 -0400
commit5af07b693a35953d84c2465fa82eca2f64e09f5d (patch)
tree1a4bf9fd7ca851c195fb3fe726f260fc2c6ff106 /ipalib
parenta6eb928f9871700d4c749e6fb1a8161940dda02b (diff)
downloadfreeipa-5af07b693a35953d84c2465fa82eca2f64e09f5d.tar.gz
freeipa-5af07b693a35953d84c2465fa82eca2f64e09f5d.tar.xz
freeipa-5af07b693a35953d84c2465fa82eca2f64e09f5d.zip
Make the config plugin use baseldap classes.
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/plugins/config.py136
1 files changed, 33 insertions, 103 deletions
diff --git a/ipalib/plugins/config.py b/ipalib/plugins/config.py
index e45c0a3a..82eea97b 100644
--- a/ipalib/plugins/config.py
+++ b/ipalib/plugins/config.py
@@ -17,167 +17,97 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
"""
IPA configuration
"""
-from ipalib import api, errors
-from ipalib import Command
+from ipalib import api
from ipalib import Int, Str
+from ipalib.plugins.baseldap import *
-_search_options = {
- 'ipaSearchTimeLimit': 'Time limit (in seconds)',
- 'ipaSearchRecordsLimit': 'Record limit',
- 'ipaUserSearchFields': 'User search fields',
- 'ipaGroupSearchFields': 'Group search fields',
-}
-
-_user_options = {
- 'ipaMaxUsernameLength': 'Maximum name length',
- 'ipaHomesRootDir': 'Root for home directories',
- 'ipaDefaultLoginShell': 'Default shell',
- 'ipaDefaultPrimaryGroup': 'Default group',
- 'ipaDefaultEmailDomain': 'Default e-mail domain',
-}
-
-_options = {
- 'Search': _search_options,
- 'User': _user_options,
-}
-
-class config_mod(Command):
+class config(LDAPObject):
"""
- Modify IPA configuration options.
+ IPA configuration object
"""
- takes_options = (
+ object_name = 'configuration options'
+ default_attributes = [
+ 'ipamaxusernamelength', 'ipahomesrootdir', 'ipadefaultloginshell',
+ 'ipadefaultprimarygroup', 'ipadefaultdomain', 'ipasearchtimelimit',
+ 'ipasearchrecordslimit', 'ipausersearchfields', 'ipagroupsearchfields',
+ ]
+ attribute_names = {
+ 'ipamaxusernamelength': 'maximum username length',
+ 'ipahomesrootdir': 'root of home directories',
+ 'ipadefaultloginshell': 'default login shell',
+ 'ipadefaultprimarygroup': 'default primary group',
+ 'ipadefaultdomain': 'default e-mail domain',
+ 'ipasearchtimelimit': 'time limit for search queries',
+ 'ipasearchrecordslimit': 'result count limit for search queries',
+ 'ipausersearchfields': 'search fields for users',
+ 'ipagroupsearchfields': 'search fields for groups',
+ }
+
+ takes_params = (
Int('ipamaxusernamelength?',
cli_name='maxusername',
doc='Max. Username length',
minvalue=1,
- attribute=True,
),
Str('ipahomesrootdir?',
cli_name='homedirectory',
doc='Default location of home directories',
- attribute=True,
),
Str('ipadefaultloginshell?',
cli_name='defaultshell',
doc='Default shell for new users',
- attribute=True,
),
Str('ipadefaultprimarygroup?',
cli_name='defaultgroup',
doc='Default group for new users',
- attribute=True,
),
Str('ipadefaultemaildomain?',
cli_name='emaildomain',
doc='Default e-mail domain new users',
- attribute=True,
),
Int('ipasearchtimelimit?',
cli_name='searchtimelimit',
doc='Max. amount of time (sec.) for a search (-1 is unlimited)',
minvalue=-1,
- attribute=True,
),
Int('ipasearchrecordslimit?',
cli_name='searchrecordslimit',
doc='Max. number of records to search (-1 is unlimited)',
minvalue=-1,
- attribute=True,
),
Str('ipausersearchfields?',
cli_name='usersearch',
doc='A comma-separated list of fields to search when searching for users',
- attribute=True,
),
Str('ipagroupsearchfields?',
cli_name='groupsearch',
doc='A comma-separated list of fields to search when searching for groups',
- attribute=True,
),
)
- def execute(self, *args, **options):
- """
- Execute the config-mod operation.
-
- The dn should not be passed as a keyword argument as it is constructed
- by this method.
-
- Returns the entry
-
- :param args: This function takes no positional arguments
- :param kw: Keyword arguments for the other LDAP attributes.
- """
- assert 'dn' not in options
- ldap = self.api.Backend.ldap2
-
- (dn, entry_attrs) = ldap.get_ipa_config()
- entry_attrs = self.args_options_2_entry(*args, **options)
-
- try:
- ldap.update_entry(dn, entry_attrs)
- except errors.EmptyModlist:
- pass
+ def get_dn(self, *keys, **kwargs):
+ return 'cn=ipaconfig,cn=etc'
- return ldap.get_entry(dn, entry_attrs.keys())
+api.register(config)
- def output_for_cli(self, textui, result, *args, **options):
- (dn, entry_attrs) = result
- for p in self.params:
- textui.print_plain(p)
- textui.print_name(self.name)
- for (name, options) in _options.iteritems():
- textui.print_plain('%s options:' % name)
- for (k, v) in options.iteritems():
- k = k.lower()
- if k in entry_attrs:
- textui.print_attribute(v, entry_attrs[k])
- textui.print_plain('')
- textui.print_dashed('Modified IPA configuration options.')
+class config_mod(LDAPUpdate):
+ """
+ Modify configuration options.
+ """
api.register(config_mod)
-class config2_show(Command):
+class config_show(LDAPRetrieve):
"""
- Display IPA configuration options.
+ Display configuration options.
"""
- def execute(self, *args, **options):
- """
- Execute the config-show operation.
-
- The dn should not be passed as a keyword argument as it is constructed
- by this method.
-
- Returns the entry
-
- :param args: Not used.
- :param kw: Not used.
- """
- ldap = self.api.Backend.ldap2
- return ldap.get_ipa_config()
-
- def output_for_cli(self, textui, result, *args, **options):
- (dn, entry_attrs) = result
- count = 0
-
- textui.print_name(self.name)
- for (name, options) in _options.iteritems():
- textui.print_plain('%s options:' % name)
- for (k, v) in options.iteritems():
- if k in entry_attrs:
- textui.print_attribute(v, entry_attrs[k])
- count += 1
- textui.print_plain('')
- textui.print_count(count, '%d option', '%d options')
-
-api.register(config2_show)
+api.register(config_show)