From 306d8241b3c635fe9d0c9a92166066463dda1b8c Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Fri, 25 Apr 2008 13:33:01 -0400 Subject: [PATCH] Fix the client-side search size limit. I've changed the variable name searchlimit to sizelimit to match the name in python-ldap (and hopefully therefore be more readable). The big change was changing the default value from 0 to -1. As 0 we were never using the value from cn=ipaconfig python-ldap expects this to be an int type In the UI sizelimit was hardcoded at 0 for users 439880 --- ipa-python/ipaclient.py | 20 ++++---- ipa-python/rpcclient.py | 20 ++++---- .../ipa-gui/ipagui/subcontrollers/user.py | 2 +- ipa-server/xmlrpc-server/funcs.py | 48 +++++++++---------- 4 files changed, 45 insertions(+), 45 deletions(-) diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py index 1cd541c3f..6f31dd8f0 100644 --- a/ipa-python/ipaclient.py +++ b/ipa-python/ipaclient.py @@ -136,11 +136,11 @@ class IPAClient: result = self.transport.set_custom_fields(schema) return result - def find_users(self, criteria, sattrs=None, searchlimit=0, timelimit=-1): + def find_users(self, criteria, sattrs=None, sizelimit=-1, timelimit=-1): """Return a list: counter followed by a User object for each user that matches the criteria. If the results are truncated, counter will be set to -1""" - result = self.transport.find_users(criteria, sattrs, searchlimit, timelimit) + result = self.transport.find_users(criteria, sattrs, sizelimit, timelimit) counter = result[0] users = [counter] @@ -204,10 +204,10 @@ class IPAClient: result = self.transport.add_group(group_dict, group_container) return result - def find_groups(self, criteria, sattrs=None, searchlimit=0, timelimit=-1): + def find_groups(self, criteria, sattrs=None, sizelimit=-1, timelimit=-1): """Find groups whose cn matches the criteria. Wildcards are acceptable. Returns a list of Group objects.""" - result = self.transport.find_groups(criteria, sattrs, searchlimit, timelimit) + result = self.transport.find_groups(criteria, sattrs, sizelimit, timelimit) counter = result[0] groups = [counter] @@ -387,11 +387,11 @@ class IPAClient: def delete_service_principal(self, principal_dn): return self.transport.delete_service_principal(principal_dn) - def find_service_principal(self, criteria, sattrs=None, searchlimit=0, timelimit=-1): + def find_service_principal(self, criteria, sattrs=None, sizelimit=-1, timelimit=-1): """Return a list: counter followed by a Entity object for each host that matches the criteria. If the results are truncated, counter will be set to -1""" - result = self.transport.find_service_principal(criteria, sattrs, searchlimit, timelimit) + result = self.transport.find_service_principal(criteria, sattrs, sizelimit, timelimit) counter = result[0] hosts = [counter] @@ -426,8 +426,8 @@ class IPAClient: def delete_radius_client(self, ip_addr, container=None): return self.transport.delete_radius_client(ip_addr, container) - def find_radius_clients(self, criteria, container=None, sattrs=None, searchlimit=0, timelimit=-1): - result = self.transport.find_radius_clients(criteria, container, sattrs, searchlimit, timelimit) + def find_radius_clients(self, criteria, container=None, sattrs=None, sizelimit=-1, timelimit=-1): + result = self.transport.find_radius_clients(criteria, container, sattrs, sizelimit, timelimit) counter = result[0] users = [counter] @@ -458,8 +458,8 @@ class IPAClient: def delete_radius_profile(self, ip_addr, user_profile=None): return self.transport.delete_radius_profile(ip_addr, user_profile) - def find_radius_profiles(self, criteria, user_profile=None, sattrs=None, searchlimit=0, timelimit=-1): - result = self.transport.find_radius_profiles(criteria, user_profile, sattrs, searchlimit, timelimit) + def find_radius_profiles(self, criteria, user_profile=None, sattrs=None, sizelimit=-1, timelimit=-1): + result = self.transport.find_radius_profiles(criteria, user_profile, sattrs, sizelimit, timelimit) counter = result[0] users = [counter] diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py index aaaa5bbc7..ecd42b99d 100644 --- a/ipa-python/rpcclient.py +++ b/ipa-python/rpcclient.py @@ -257,7 +257,7 @@ class RPCClient: return ipautil.unwrap_binary_data(result) - def find_users (self, criteria, sattrs=None, searchlimit=0, timelimit=-1): + def find_users (self, criteria, sattrs=None, sizelimit=-1, timelimit=-1): """Return a list: counter followed by a dict for each user that matches the criteria. If the results are truncated, counter will be set to -1""" @@ -267,7 +267,7 @@ class RPCClient: # None values are not allowed in XML-RPC if sattrs is None: sattrs = "__NONE__" - result = server.find_users(criteria, sattrs, searchlimit, timelimit) + result = server.find_users(criteria, sattrs, sizelimit, timelimit) except xmlrpclib.Fault, fault: raise ipaerror.gen_exception(fault.faultCode, fault.faultString) except socket.error, (value, msg): @@ -383,7 +383,7 @@ class RPCClient: return ipautil.unwrap_binary_data(result) - def find_groups (self, criteria, sattrs=None, searchlimit=0, timelimit=-1): + def find_groups (self, criteria, sattrs=None, sizelimit=-1, timelimit=-1): """Return a list containing a Group object for each group that matches the criteria.""" @@ -392,7 +392,7 @@ class RPCClient: # None values are not allowed in XML-RPC if sattrs is None: sattrs = "__NONE__" - result = server.find_groups(criteria, sattrs, searchlimit, timelimit) + result = server.find_groups(criteria, sattrs, sizelimit, timelimit) except xmlrpclib.Fault, fault: raise ipaerror.gen_exception(fault.faultCode, fault.faultString) except socket.error, (value, msg): @@ -732,7 +732,7 @@ class RPCClient: return ipautil.unwrap_binary_data(result) - def find_service_principal (self, criteria, sattrs=None, searchlimit=0, timelimit=-1): + def find_service_principal (self, criteria, sattrs=None, sizelimit=-1, timelimit=-1): """Return a list: counter followed by a Entity object for each host that matches the criteria. If the results are truncated, counter will be set to -1""" @@ -742,7 +742,7 @@ class RPCClient: # None values are not allowed in XML-RPC if sattrs is None: sattrs = "__NONE__" - result = server.find_service_principal(criteria, sattrs, searchlimit, timelimit) + result = server.find_service_principal(criteria, sattrs, sizelimit, timelimit) except xmlrpclib.Fault, fault: raise ipaerror.gen_exception(fault.faultCode, fault.faultString) except socket.error, (value, msg): @@ -818,14 +818,14 @@ class RPCClient: return ipautil.unwrap_binary_data(result) - def find_radius_clients(self, criteria, container=None, sattrs=None, searchlimit=0, timelimit=-1): + def find_radius_clients(self, criteria, container=None, sattrs=None, sizelimit=-1, timelimit=-1): server = self.setup_server() if container is None: container = "__NONE__" try: # None values are not allowed in XML-RPC if sattrs is None: sattrs = "__NONE__" - result = server.find_radius_clients(criteria, container, sattrs, searchlimit, timelimit) + result = server.find_radius_clients(criteria, container, sattrs, sizelimit, timelimit) except xmlrpclib.Fault, fault: raise ipaerror.gen_exception(fault.faultCode, fault.faultString) except socket.error, (value, msg): @@ -887,14 +887,14 @@ class RPCClient: return ipautil.unwrap_binary_data(result) - def find_radius_profiles(self, criteria, user_profile=None, sattrs=None, searchlimit=0, timelimit=-1): + def find_radius_profiles(self, criteria, user_profile=None, sattrs=None, sizelimit=-1, timelimit=-1): server = self.setup_server() if user_profile is None: user_profile = "__NONE__" try: # None values are not allowed in XML-RPC if sattrs is None: sattrs = "__NONE__" - result = server.find_radius_profiles(criteria, user_profile, sattrs, searchlimit, timelimit) + result = server.find_radius_profiles(criteria, user_profile, sattrs, sizelimit, timelimit) except xmlrpclib.Fault, fault: raise ipaerror.gen_exception(fault.faultCode, fault.faultString) except socket.error, (value, msg): diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py index f57a29734..0a79fc794 100644 --- a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py +++ b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py @@ -650,7 +650,7 @@ class UserController(IPAController): uid = kw.get('uid') if uid != None and len(uid) > 0: try: - users = client.find_users(uid.encode('utf-8'), user_fields, 0, 2) + users = client.find_users(uid.encode('utf-8'), user_fields) counter = users[0] users = users[1:] if counter == -1: diff --git a/ipa-server/xmlrpc-server/funcs.py b/ipa-server/xmlrpc-server/funcs.py index 4c49d4701..74a3030c8 100644 --- a/ipa-server/xmlrpc-server/funcs.py +++ b/ipa-server/xmlrpc-server/funcs.py @@ -700,7 +700,7 @@ class IPAServer: self.releaseConnection(conn) return res - def find_radius_clients(self, ip_attrs, container=None, sattrs=None, searchlimit=0, timelimit=-1, opts=None): + def find_radius_clients(self, ip_attrs, container=None, sattrs=None, sizelimit=-1, timelimit=-1, opts=None): def gen_filter(objectclass, attr, values): '''Given ('myclass', 'myattr', [v1, v2]) returns (&(objectclass=myclass)(|(myattr=v1)(myattr=v2))) @@ -716,7 +716,7 @@ class IPAServer: conn = self.getConnection(opts) try: try: - results = conn.getListAsync(basedn, self.scope, filter, sattrs, 0, None, None, timelimit, searchlimit) + results = conn.getListAsync(basedn, self.scope, filter, sattrs, 0, None, None, timelimit, sizelimit) except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): results = [0] finally: @@ -801,7 +801,7 @@ class IPAServer: self.releaseConnection(conn) return res - def find_radius_profiles(self, uids, user_profile=True, sattrs=None, searchlimit=0, timelimit=-1, opts=None): + def find_radius_profiles(self, uids, user_profile=True, sattrs=None, sizelimit=-1, timelimit=-1, opts=None): def gen_filter(objectclass, attr, values): '''Given ('myclass', 'myattr', [v1, v2]) returns (&(objectclass=myclass)(|(myattr=v1)(myattr=v2))) @@ -822,7 +822,7 @@ class IPAServer: conn = self.getConnection(opts) try: try: - results = conn.getListAsync(basedn, self.scope, filter, sattrs, 0, None, None, timelimit, searchlimit) + results = conn.getListAsync(basedn, self.scope, filter, sattrs, 0, None, None, timelimit, sizelimit) except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): results = [0] finally: @@ -888,7 +888,7 @@ class IPAServer: return users - def find_users (self, criteria, sattrs, searchlimit=-1, timelimit=-1, + def find_users (self, criteria, sattrs, sizelimit=-1, timelimit=-1, opts=None): """Returns a list: counter followed by the results. If the results are truncated, counter will be set to -1.""" @@ -897,7 +897,7 @@ class IPAServer: raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) if sattrs is not None and not isinstance(sattrs, list): raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) - if not isinstance(searchlimit,int): + if not isinstance(sizelimit,int): raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) if not isinstance(timelimit,int): raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) @@ -906,8 +906,8 @@ class IPAServer: config = self.get_ipa_config(opts) if timelimit < 0: timelimit = float(config.get('ipasearchtimelimit')) - if searchlimit < 0: - searchlimit = float(config.get('ipasearchrecordslimit')) + if sizelimit < 0: + sizelimit = int(config.get('ipasearchrecordslimit')) # Assume the list of fields to search will come from a central # configuration repository. A good format for that would be @@ -937,14 +937,14 @@ class IPAServer: try: exact_results = conn.getListAsync(self.basedn, self.scope, exact_match_filter, sattrs, 0, None, None, timelimit, - searchlimit) + sizelimit) except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): exact_results = [0] try: partial_results = conn.getListAsync(self.basedn, self.scope, partial_match_filter, sattrs, 0, None, None, timelimit, - searchlimit) + sizelimit) except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): partial_results = [0] finally: @@ -1270,7 +1270,7 @@ class IPAServer: finally: self.releaseConnection(conn) - def find_groups (self, criteria, sattrs, searchlimit=-1, timelimit=-1, + def find_groups (self, criteria, sattrs, sizelimit=-1, timelimit=-1, opts=None): """Return a list containing a User object for each existing group that matches the criteria. @@ -1279,7 +1279,7 @@ class IPAServer: raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) if sattrs is not None and not isinstance(sattrs, list): raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) - if not isinstance(searchlimit,int): + if not isinstance(sizelimit,int): raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) if not isinstance(timelimit,int): raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) @@ -1289,8 +1289,8 @@ class IPAServer: config = self.get_ipa_config(opts) if timelimit < 0: timelimit = float(config.get('ipasearchtimelimit')) - if searchlimit < 0: - searchlimit = float(config.get('ipasearchrecordslimit')) + if sizelimit < 0: + sizelimit = int(config.get('ipasearchrecordslimit')) # Assume the list of fields to search will come from a central # configuration repository. A good format for that would be @@ -1323,14 +1323,14 @@ class IPAServer: try: exact_results = conn.getListAsync(self.basedn, self.scope, exact_match_filter, sattrs, 0, None, None, timelimit, - searchlimit) + sizelimit) except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): exact_results = [0] try: partial_results = conn.getListAsync(self.basedn, self.scope, partial_match_filter, sattrs, 0, None, None, timelimit, - searchlimit) + sizelimit) except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): partial_results = [0] finally: @@ -1822,7 +1822,7 @@ class IPAServer: logging.debug("IPA: group_members: %s %s %s" % (groupdn, attr_list, membertype)) - searchlimit = float(config.get('ipasearchrecordslimit')) + sizelimit = int(config.get('ipasearchrecordslimit')) groupdn = self.__safe_filter(groupdn) searchfilter = "(memberOf=%s)" % groupdn @@ -1836,7 +1836,7 @@ class IPAServer: try: results = conn.getListAsync(self.basedn, self.scope, searchfilter, attr_list, 0, None, None, timelimit, - searchlimit) + sizelimit) except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): results = [0] finally: @@ -1982,7 +1982,7 @@ class IPAServer: self.releaseConnection(conn) return res - def find_service_principal(self, criteria, sattrs, searchlimit=-1, + def find_service_principal(self, criteria, sattrs, sizelimit=-1, timelimit=-1, opts=None): """Returns a list: counter followed by the results. If the results are truncated, counter will be set to -1.""" @@ -1990,7 +1990,7 @@ class IPAServer: raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) if sattrs is not None and not isinstance(sattrs, list): raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) - if not isinstance(searchlimit,int): + if not isinstance(sizelimit,int): raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) if not isinstance(timelimit,int): raise ipaerror.gen_exception(ipaerror.INPUT_INVALID_PARAMETER) @@ -1998,8 +1998,8 @@ class IPAServer: config = self.get_ipa_config(opts) if timelimit < 0: timelimit = float(config.get('ipasearchtimelimit')) - if searchlimit < 0: - searchlimit = float(config.get('ipasearchrecordslimit')) + if sizelimit < 0: + sizelimit = int(config.get('ipasearchrecordslimit')) search_fields = ["krbprincipalname"] @@ -2026,14 +2026,14 @@ class IPAServer: try: exact_results = conn.getListAsync(self.basedn, self.scope, exact_match_filter, sattrs, 0, None, None, timelimit, - searchlimit) + sizelimit) except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): exact_results = [0] try: partial_results = conn.getListAsync(self.basedn, self.scope, partial_match_filter, sattrs, 0, None, None, timelimit, - searchlimit) + sizelimit) except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND): partial_results = [0] finally: