summaryrefslogtreecommitdiffstats
path: root/ipalib/plugins/baseldap.py
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2013-01-31 11:19:13 +0100
committerMartin Kosek <mkosek@redhat.com>2013-03-01 16:59:46 +0100
commitbb36683c8480a68d54ef632daa0a4d6df9802187 (patch)
tree00c9652ad120eb4d3a0c3807025615ecbb0d03f1 /ipalib/plugins/baseldap.py
parent982b78277755a301e3baa1d4f2bd7e1663fb88a5 (diff)
downloadfreeipa-bb36683c8480a68d54ef632daa0a4d6df9802187.tar.gz
freeipa-bb36683c8480a68d54ef632daa0a4d6df9802187.tar.xz
freeipa-bb36683c8480a68d54ef632daa0a4d6df9802187.zip
Use the dn attribute of LDAPEntry to set/get DNs of entries.
Convert all code that uses the 'dn' key of LDAPEntry for this to use the dn attribute instead.
Diffstat (limited to 'ipalib/plugins/baseldap.py')
-rw-r--r--ipalib/plugins/baseldap.py58
1 files changed, 41 insertions, 17 deletions
diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py
index b34c92e6d..da89ad6f3 100644
--- a/ipalib/plugins/baseldap.py
+++ b/ipalib/plugins/baseldap.py
@@ -229,6 +229,12 @@ def entry_from_entry(entry, newentry):
for e in newentry.keys():
entry[e] = newentry[e]
+def entry_to_dict(entry, **options):
+ result = dict(entry)
+ if options.get('all', False):
+ result['dn'] = entry.dn
+ return result
+
def wait_for_value(ldap, dn, attr, value):
"""
389-ds postoperation plugins are executed after the data has been
@@ -978,6 +984,7 @@ class LDAPCreate(BaseLDAPCommand, crud.Create):
ldap = self.obj.backend
entry_attrs = self.args_options_2_entry(*keys, **options)
+ entry_attrs = ldap.make_entry(DN(), entry_attrs)
self.process_attr_options(entry_attrs, None, keys, options)
@@ -1063,13 +1070,15 @@ class LDAPCreate(BaseLDAPCommand, crud.Create):
for callback in self.get_callbacks('post'):
dn = callback(self, ldap, dn, entry_attrs, *keys, **options)
+ self.obj.convert_attribute_members(entry_attrs, *keys, **options)
+
assert isinstance(dn, DN)
+ entry_attrs = entry_to_dict(entry_attrs, **options)
entry_attrs['dn'] = dn
- self.obj.convert_attribute_members(entry_attrs, *keys, **options)
if self.obj.primary_key and keys[-1] is not None:
- return dict(result=dict(entry_attrs), value=keys[-1])
- return dict(result=dict(entry_attrs), value=u'')
+ return dict(result=entry_attrs, value=keys[-1])
+ return dict(result=entry_attrs, value=u'')
def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
assert isinstance(dn, DN)
@@ -1190,11 +1199,14 @@ class LDAPRetrieve(LDAPQuery):
assert isinstance(dn, DN)
self.obj.convert_attribute_members(entry_attrs, *keys, **options)
+
assert isinstance(dn, DN)
+ entry_attrs = entry_to_dict(entry_attrs, **options)
entry_attrs['dn'] = dn
+
if self.obj.primary_key and keys[-1] is not None:
- return dict(result=dict(entry_attrs), value=keys[-1])
- return dict(result=dict(entry_attrs), value=u'')
+ return dict(result=entry_attrs, value=keys[-1])
+ return dict(result=entry_attrs, value=u'')
def pre_callback(self, ldap, dn, attrs_list, *keys, **options):
assert isinstance(dn, DN)
@@ -1253,6 +1265,7 @@ class LDAPUpdate(LDAPQuery, crud.Update):
assert isinstance(dn, DN)
entry_attrs = self.args_options_2_entry(**options)
+ entry_attrs = ldap.make_entry(dn, entry_attrs)
self.process_attr_options(entry_attrs, dn, keys, options)
@@ -1321,9 +1334,12 @@ class LDAPUpdate(LDAPQuery, crud.Update):
assert isinstance(dn, DN)
self.obj.convert_attribute_members(entry_attrs, *keys, **options)
+
+ entry_attrs = entry_to_dict(entry_attrs, **options)
+
if self.obj.primary_key and keys[-1] is not None:
- return dict(result=dict(entry_attrs), value=keys[-1])
- return dict(result=dict(entry_attrs), value=u'')
+ return dict(result=entry_attrs, value=keys[-1])
+ return dict(result=entry_attrs, value=u'')
def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
assert isinstance(dn, DN)
@@ -1544,13 +1560,16 @@ class LDAPAddMember(LDAPModMember):
**options)
assert isinstance(dn, DN)
+ self.obj.convert_attribute_members(entry_attrs, *keys, **options)
+
assert isinstance(dn, DN)
+ entry_attrs = entry_to_dict(entry_attrs, **options)
entry_attrs['dn'] = dn
- self.obj.convert_attribute_members(entry_attrs, *keys, **options)
+
return dict(
completed=completed,
failed=failed,
- result=dict(entry_attrs),
+ result=entry_attrs,
)
def pre_callback(self, ldap, dn, found, not_found, *keys, **options):
@@ -1642,14 +1661,16 @@ class LDAPRemoveMember(LDAPModMember):
**options)
assert isinstance(dn, DN)
+ self.obj.convert_attribute_members(entry_attrs, *keys, **options)
+
assert isinstance(dn, DN)
+ entry_attrs = entry_to_dict(entry_attrs, **options)
entry_attrs['dn'] = dn
- self.obj.convert_attribute_members(entry_attrs, *keys, **options)
return dict(
completed=completed,
failed=failed,
- result=dict(entry_attrs),
+ result=entry_attrs,
)
def pre_callback(self, ldap, dn, found, not_found, *keys, **options):
@@ -1856,10 +1877,9 @@ class LDAPSearch(BaseLDAPCommand, crud.Search):
for e in entries:
self.obj.convert_attribute_members(e[1], *args, **options)
- for e in entries:
- assert isinstance(e[0], DN)
- e[1]['dn'] = e[0]
- entries = [dict(e) for (dn, e) in entries]
+ for (i, e) in enumerate(entries):
+ entries[i] = entry_to_dict(e, **options)
+ entries[i]['dn'] = e.dn
return dict(
result=entries,
@@ -1994,11 +2014,13 @@ class LDAPAddReverseMember(LDAPModReverseMember):
assert isinstance(dn, DN)
assert isinstance(dn, DN)
+ entry_attrs = entry_to_dict(entry_attrs, **options)
entry_attrs['dn'] = dn
+
return dict(
completed=completed,
failed=failed,
- result=dict(entry_attrs),
+ result=entry_attrs,
)
def pre_callback(self, ldap, dn, *keys, **options):
@@ -2094,11 +2116,13 @@ class LDAPRemoveReverseMember(LDAPModReverseMember):
assert isinstance(dn, DN)
assert isinstance(dn, DN)
+ entry_attrs = entry_to_dict(entry_attrs, **options)
entry_attrs['dn'] = dn
+
return dict(
completed=completed,
failed=failed,
- result=dict(entry_attrs),
+ result=entry_attrs,
)
def pre_callback(self, ldap, dn, *keys, **options):