summaryrefslogtreecommitdiffstats
path: root/ipaserver
diff options
context:
space:
mode:
Diffstat (limited to 'ipaserver')
-rw-r--r--ipaserver/ipaldap.py12
-rw-r--r--ipaserver/plugins/b_ldap.py29
-rw-r--r--ipaserver/servercore.py14
3 files changed, 32 insertions, 23 deletions
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'])