diff options
author | Rob Crittenden <rcritten@redhat.com> | 2007-10-22 17:06:52 -0400 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2007-10-22 17:06:52 -0400 |
commit | 04636b8ae7b759291fe0c49991b3df760d6ad4c2 (patch) | |
tree | 5ef85e2b057c2dc94c5744492ddd83f70efa3a2b /ipa-python/aci.py | |
parent | a47f893957a2b07b87f26429183f61d781a257fc (diff) | |
download | freeipa-04636b8ae7b759291fe0c49991b3df760d6ad4c2.tar.gz freeipa-04636b8ae7b759291fe0c49991b3df760d6ad4c2.tar.xz freeipa-04636b8ae7b759291fe0c49991b3df760d6ad4c2.zip |
Add an LDAP attribute -> label mapping function to XML-RPC layer
Move some ACI functions around in preparation for cli delegation
Diffstat (limited to 'ipa-python/aci.py')
-rw-r--r-- | ipa-python/aci.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/ipa-python/aci.py b/ipa-python/aci.py index 092285e2a..60e19075a 100644 --- a/ipa-python/aci.py +++ b/ipa-python/aci.py @@ -17,6 +17,7 @@ import re import urllib +import ldap import ipa.ipautil @@ -129,3 +130,28 @@ class ACI: acistr = self._match(';)', acistr) if len(acistr) > 0: raise SyntaxError, "unexpected aci suffix at '%s'" % acistr + +def extract_group_cns(aci_list, client): + """Extracts all the cn's from a list of aci's and returns them as a hash + from group_dn to group_cn. + + It first tries to cheat by looking at the first rdn for the + group dn. If that's not cn for some reason, it looks up the group.""" + group_dn_to_cn = {} + for aci in aci_list: + for dn in (aci.source_group, aci.dest_group): + if not group_dn_to_cn.has_key(dn): + rdn_list = ldap.dn.str2dn(dn) + first_rdn = rdn_list[0] + for (type,value,junk) in first_rdn: + if type == "cn": + group_dn_to_cn[dn] = value + break; + else: + try: + group = client.get_entry_by_dn(dn, ['cn']) + group_dn_to_cn[dn] = group.getValue('cn') + except ipaerror.IPAError, e: + group_dn_to_cn[dn] = 'unknown' + + return group_dn_to_cn |