summaryrefslogtreecommitdiffstats
path: root/ipalib/errors.py
diff options
context:
space:
mode:
authorTomas Babej <tbabej@redhat.com>2014-11-19 12:00:07 +0100
committerJan Cholasta <jcholast@redhat.com>2015-01-13 16:16:14 +0000
commite11e8235ac9af09a587262368ef795cddbdd0e4e (patch)
tree8fafc818024ed5f4a5b334a5a9c74587983a5de8 /ipalib/errors.py
parentb6c58ff238eb335dcb2a80fc98ecfe8bce5e2422 (diff)
downloadfreeipa-e11e8235ac9af09a587262368ef795cddbdd0e4e.tar.gz
freeipa-e11e8235ac9af09a587262368ef795cddbdd0e4e.tar.xz
freeipa-e11e8235ac9af09a587262368ef795cddbdd0e4e.zip
baseldap: Handle missing parent objects properly in *-find commands
The find_entries function in ipaldap does not differentiate between a LDAP search that returns error code 32 (No such object) and LDAP search returning error code 0 (Success), but returning no results. In both cases errors.NotFound is raised. In turn, LDAPSearch commands interpret NotFound exception as no results. To differentiate between the cases, a new error EmptyResult was added, which inherits from NotFound to preserve the compatibility with the new code. This error is raised by ipaldap.find_entries in case it is performing a search with and the target dn does not exist. https://fedorahosted.org/freeipa/ticket/4659 Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Diffstat (limited to 'ipalib/errors.py')
-rw-r--r--ipalib/errors.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/ipalib/errors.py b/ipalib/errors.py
index f0426583d..89b1ef2e0 100644
--- a/ipalib/errors.py
+++ b/ipalib/errors.py
@@ -1329,6 +1329,21 @@ class PosixGroupViolation(ExecutionError):
errno = 4030
format = _('This is already a posix group and cannot be converted to external one')
+class EmptyResult(NotFound):
+ """
+ **4031** Raised when a LDAP search returned no results.
+
+ For example:
+
+ >>> raise EmptyResult(reason='no matching entry found')
+ Traceback (most recent call last):
+ ...
+ EmptyResult: no matching entry found
+
+ """
+
+ errno = 4031
+
class BuiltinError(ExecutionError):
"""
**4100** Base class for builtin execution errors (*4100 - 4199*).