diff options
author | Rob Crittenden <rcritten@redhat.com> | 2008-10-21 16:33:34 -0400 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2008-10-21 16:33:34 -0400 |
commit | 245969858d8484428db1edbff8d6bd36587fb144 (patch) | |
tree | 1221092bfd6bcf4b0e56543e790cf8bbf0fe0de8 /ipa_server | |
parent | 3cbb5c6eeb131e931e4489eafd434079442ca3a7 (diff) | |
download | freeipa-245969858d8484428db1edbff8d6bd36587fb144.tar.gz freeipa-245969858d8484428db1edbff8d6bd36587fb144.tar.xz freeipa-245969858d8484428db1edbff8d6bd36587fb144.zip |
Implement group member add/remove
Add gidNumber to the group command-line
Diffstat (limited to 'ipa_server')
-rw-r--r-- | ipa_server/plugins/b_ldap.py | 18 | ||||
-rw-r--r-- | ipa_server/servercore.py | 46 |
2 files changed, 44 insertions, 20 deletions
diff --git a/ipa_server/plugins/b_ldap.py b/ipa_server/plugins/b_ldap.py index e63865bbf..a07e8e710 100644 --- a/ipa_server/plugins/b_ldap.py +++ b/ipa_server/plugins/b_ldap.py @@ -146,6 +146,24 @@ class ldap(CrudBackend): def modify_password(self, dn, **kw): return servercore.modify_password(dn, kw.get('oldpass'), kw.get('newpass')) + def add_member_to_group(self, memberdn, groupdn): + """ + Add a new member to a group. + + :param memberdn: the DN of the member to add + :param groupdn: the DN of the group to add a member to + """ + return servercore.add_member_to_group(memberdn, groupdn) + + def remove_member_from_group(self, memberdn, groupdn): + """ + Remove a new member from a group. + + :param memberdn: the DN of the member to remove + :param groupdn: the DN of the group to remove a member from + """ + return servercore.remove_member_from_group(memberdn, groupdn) + # The CRUD operations def create(self, **kw): diff --git a/ipa_server/servercore.py b/ipa_server/servercore.py index 1f41d410f..e69967a90 100644 --- a/ipa_server/servercore.py +++ b/ipa_server/servercore.py @@ -389,7 +389,9 @@ def mark_entry_inactive (dn): return res def add_member_to_group(member_dn, group_dn): - """Add a member to an existing group.""" + """ + Add a member to an existing group. + """ # logging.info("IPA: add_member_to_group '%s' to '%s'" % (member_dn, group_dn)) if member_dn.lower() == group_dn.lower(): # You can't add a group to itself @@ -404,12 +406,12 @@ def add_member_to_group(member_dn, group_dn): if not member_entry: raise errors.NotFound - if group.get('member') is not None: - if isinstance(group.get('member'),basestring): - group['member'] = [group['member']] - group['member'].append(member_dn) - else: - group['member'] = member_dn + # Add the new member to the group member attribute + members = group.get('member', []) + if isinstance(members, basestring): + members = [members] + members.append(member_dn) + group['member'] = members try: return update_entry(group) @@ -430,20 +432,24 @@ def remove_member_from_group(member_dn, group_dn=None): """ # logging.info("IPA: remove_member_from_group '%s' from '%s'" % (member_dn, group_dn)) - if group.get('member') is not None: - if isinstance(group.get('member'),basestring): - group['member'] = [group['member']] - for i in range(len(group['member'])): - group['member'][i] = ipaldap.IPAdmin.normalizeDN(group['member'][i]) - try: - group['member'].remove(member_dn) - except ValueError: - # member is not in the group - # FIXME: raise more specific error? - raise errors.NotGroupMember - else: - # Nothing to do if the group has no members + members = group.get('member', False) + if not members: + raise errors.NotGroupMember + + if isinstance(members,basestring): + members = [members] + for i in range(len(members)): + members[i] = ipaldap.IPAdmin.normalizeDN(members[i]) + try: + members.remove(member_dn) + except ValueError: + # member is not in the group + # FIXME: raise more specific error? raise errors.NotGroupMember + except Exception, e: + raise e + + group['member'] = members try: return update_entry(group) |