summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/plugins/baseldap.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py
index 038fd8a8e..fe0edaeaf 100644
--- a/ipalib/plugins/baseldap.py
+++ b/ipalib/plugins/baseldap.py
@@ -74,7 +74,7 @@ class LDAPObject(Object):
for ldap_obj_name in self.attribute_members[attr]:
ldap_obj = self.api.Object[ldap_obj_name]
if member.find(ldap_obj.container_dn) > 0:
- new_attr = '%s %s' % (attr, ldap_obj.object_name_plural)
+ new_attr = '%s %s' % (attr, ldap_obj.object_name)
entry_attrs.setdefault(new_attr, []).append(
ldap_obj.get_primary_key_from_dn(member)
)
@@ -223,7 +223,7 @@ class LDAPRetrieve(LDAPQuery):
def pre_callback(self, ldap, dn, attrs_list, *keys, **options):
return dn
- def post_callback(self, ldap, dn, attrs_list, *keys, **options):
+ def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
return dn
@@ -236,6 +236,10 @@ class LDAPUpdate(LDAPQuery, crud.Update):
cli_name='raw',
doc='print entries as they are stored in LDAP',
),
+ Flag('all',
+ cli_name='all',
+ doc='retrieve all attributes',
+ ),
)
def execute(self, *keys, **options):
@@ -245,14 +249,19 @@ class LDAPUpdate(LDAPQuery, crud.Update):
entry_attrs = self.args_options_2_entry(**options)
- dn = self.pre_callback(ldap, dn, entry_attrs, *keys, **options)
+ if options['all']:
+ attrs_list = ['*']
+ else:
+ attrs_list = entry_attrs.keys()
+
+ dn = self.pre_callback(ldap, dn, entry_attrs, attrs_list, *keys, **options)
try:
ldap.update_entry(dn, entry_attrs)
except errors.EmptyModlist:
pass
- (dn, entry_attrs) = ldap.get_entry(dn, entry_attrs.keys())
+ (dn, entry_attrs) = ldap.get_entry(dn, attrs_list)
dn = self.post_callback(ldap, dn, entry_attrs, *keys, **options)
@@ -277,7 +286,7 @@ class LDAPUpdate(LDAPQuery, crud.Update):
else:
textui.print_dashed('Modified %s.' % self.obj.object_name)
- def pre_callback(self, ldap, dn, entry_attrs, *keys, **options):
+ def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
return dn
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
@@ -355,6 +364,8 @@ class LDAPModMember(LDAPQuery):
)
def get_options(self):
+ for option in super(LDAPModMember, self).get_options():
+ yield option
for attr in self.member_attributes:
for ldap_obj_name in self.obj.attribute_members[attr]:
ldap_obj = self.api.Object[ldap_obj_name]
@@ -444,7 +455,7 @@ class LDAPAddMember(LDAPModMember):
return dn
def post_callback(self, ldap, completed, failed, dn, entry_attrs, *keys, **options):
- return (completed, failed)
+ return (completed, dn)
class LDAPRemoveMember(LDAPModMember):