From 5717c9d6689f15c46801f2d251e174fad4ce4748 Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Wed, 28 Jan 2009 21:47:21 -0700 Subject: Applied Rob's errors patch --- ipaserver/ipaldap.py | 12 ++++++------ ipaserver/plugins/b_ldap.py | 29 +++++++++++++++++++---------- ipaserver/servercore.py | 14 +++++++------- 3 files changed, 32 insertions(+), 23 deletions(-) (limited to 'ipaserver') diff --git a/ipaserver/ipaldap.py b/ipaserver/ipaldap.py index 4a2e4e31c..e7177b3e2 100644 --- a/ipaserver/ipaldap.py +++ b/ipaserver/ipaldap.py @@ -32,7 +32,7 @@ import ldap.sasl from ldap.controls import LDAPControl,DecodeControlTuples,EncodeControlTuples from ldap.ldapobject import SimpleLDAPObject from ipaserver import ipautil -from ipalib import errors +from ipalib import errors, errors2 # Global variable to define SASL auth sasl_auth = ldap.sasl.sasl({},'GSSAPI') @@ -294,12 +294,12 @@ class IPAdmin(SimpleLDAPObject): res = self.search(*args) objtype, obj = self.result(res) except ldap.NO_SUCH_OBJECT, e: - raise errors.NotFound, notfound(args) + raise errors2.NotFound(msg=notfound(args)) except ldap.LDAPError, e: raise errors.DatabaseError, e if not obj: - raise errors.NotFound, notfound(args) + raise errors2.NotFound(msg=notfound(args)) elif isinstance(obj,Entry): return obj @@ -323,7 +323,7 @@ class IPAdmin(SimpleLDAPObject): raise e if not obj: - raise errors.NotFound, notfound(args) + raise errors2.NotFound(msg=notfound(args)) entries = [] for s in obj: @@ -360,7 +360,7 @@ class IPAdmin(SimpleLDAPObject): raise e if not entries: - raise errors.NotFound, notfound(args) + raise errors2.NotFound(msg=notfound(args)) if partial == 1: counter = -1 @@ -380,7 +380,7 @@ class IPAdmin(SimpleLDAPObject): self.set_option(ldap.OPT_SERVER_CONTROLS, sctrl) self.add_s(*args) except ldap.ALREADY_EXISTS, e: - raise errors.DuplicateEntry, "Entry already exists" + raise errors2.DuplicateEntry except ldap.LDAPError, e: raise errors.DatabaseError, e return True diff --git a/ipaserver/plugins/b_ldap.py b/ipaserver/plugins/b_ldap.py index 1160bf9e7..20fd01ec9 100644 --- a/ipaserver/plugins/b_ldap.py +++ b/ipaserver/plugins/b_ldap.py @@ -82,6 +82,16 @@ class ldap(CrudBackend): self.api.env.basedn, ) + def make_taskgroup_dn(self, cn): + """ + Construct group of tasks dn from cn. + """ + return 'cn=%s,%s,%s' % ( + self.dn.escape_dn_chars(cn), + self.api.env.container_taskgroup, + self.api.env.basedn, + ) + def make_service_dn(self, principal): """ Construct service principal dn from principal name @@ -227,14 +237,12 @@ class ldap(CrudBackend): else: assert type(value) in (str, unicode, bool, int, float) yield (key, value) - yield (key, value) def create(self, **kw): if servercore.entry_exists(kw['dn']): - raise errors.DuplicateEntry("entry already exists") + raise errors2.DuplicateEntry kw = dict(self.strip_none(kw)) - entry = ipaldap.Entry(kw['dn']) # dn isn't allowed to be in the entry itself @@ -251,19 +259,20 @@ class ldap(CrudBackend): return servercore.get_entry_by_dn(dn, attributes) def update(self, dn, **kw): - result = self.retrieve(dn, ["*"]) - start_keys = kw.keys() + result = self.retrieve(dn, ["*"] + kw.keys()) entry = ipaldap.Entry((dn, servercore.convert_scalar_values(result))) + start_keys = kw.keys() kw = dict(self.strip_none(kw)) + end_keys = kw.keys() + removed_keys = list(set(start_keys) - set(end_keys)) for k in kw: entry.setValues(k, kw[k]) - remove_keys = list(set(start_keys) - set(kw.keys())) - for k in remove_keys: + for k in removed_keys: entry.delAttr(k) - servercore.update_entry(entry.toDict(), remove_keys) + servercore.update_entry(entry.toDict(), removed_keys) return self.retrieve(dn) @@ -300,13 +309,13 @@ class ldap(CrudBackend): try: exact_results = servercore.search(search_base, exact_match_filter, attributes) - except errors.NotFound: + except errors2.NotFound: exact_results = [0] try: partial_results = servercore.search(search_base, partial_match_filter, attributes) - except errors.NotFound: + except errors2.NotFound: partial_results = [0] exact_counter = exact_results[0] diff --git a/ipaserver/servercore.py b/ipaserver/servercore.py index 19adb019f..c97148b37 100644 --- a/ipaserver/servercore.py +++ b/ipaserver/servercore.py @@ -23,7 +23,7 @@ import re from ipalib.request import context from ipaserver import ipaldap import ipautil -from ipalib import errors +from ipalib import errors, errors2 from ipalib import api def convert_entry(ent): @@ -186,7 +186,7 @@ def entry_exists(dn): try: get_base_entry(dn, "objectclass=*", ['dn','objectclass']) return True - except errors.NotFound: + except errors2.NotFound: return False def get_user_by_uid (uid, sattrs): @@ -270,7 +270,7 @@ def search(base, filter, attributes, timelimit=1, sizelimit=3000): results = context.ldap.conn.getListAsync(base, ldap.SCOPE_SUBTREE, filter, attributes, 0, None, None, timelimit, sizelimit) except ldap.NO_SUCH_OBJECT: - raise errors.NotFound + raise errors2.NotFound counter = results[0] entries = [counter] @@ -317,7 +317,7 @@ def get_ipa_config(): config = get_sub_entry("cn=etc," + api.env.basedn, searchfilter) except ldap.NO_SUCH_OBJECT, e: # FIXME - raise errors.NotFound + raise errors2.NotFound return config @@ -409,12 +409,12 @@ def add_member_to_group(member_dn, group_dn, memberattr='member'): group = get_entry_by_dn(group_dn, None) if group is None: - raise errors.NotFound + raise errors2.NotFound # check to make sure member_dn exists member_entry = get_base_entry(member_dn, "(objectClass=*)", ['dn','objectclass']) if not member_entry: - raise errors.NotFound + raise errors2.NotFound # Add the new member to the group member attribute members = group.get(memberattr, []) @@ -433,7 +433,7 @@ def remove_member_from_group(member_dn, group_dn, memberattr='member'): group = get_entry_by_dn(group_dn, None) if group is None: - raise errors.NotFound + raise errors2.NotFound """ if group.get('cn') == "admins": member = get_entry_by_dn(member_dn, ['dn','uid']) -- cgit