From 5af07b693a35953d84c2465fa82eca2f64e09f5d Mon Sep 17 00:00:00 2001 From: Pavel Zuna Date: Thu, 27 Aug 2009 15:49:58 +0200 Subject: Make the config plugin use baseldap classes. --- ipalib/plugins/config.py | 136 ++++++++++++----------------------------------- 1 file changed, 33 insertions(+), 103 deletions(-) diff --git a/ipalib/plugins/config.py b/ipalib/plugins/config.py index e45c0a3af..82eea97ba 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) -- cgit