Support attributes with multiple names in LDAPEntry.

This commit is contained in:
Jan Cholasta
2013-01-31 11:57:02 +01:00
committed by Martin Kosek
parent f17aa00ff0
commit 3aa39547df
3 changed files with 20 additions and 4 deletions

View File

@@ -412,7 +412,6 @@ class host_add(LDAPCreate):
util.validate_host_dns(self.log, keys[-1])
if 'locality' in entry_attrs:
entry_attrs['l'] = entry_attrs['locality']
del entry_attrs['locality']
entry_attrs['cn'] = keys[-1]
entry_attrs['serverhostname'] = keys[-1].split('.', 1)[0]
if 'userpassword' not in entry_attrs and not options.get('random', False):
@@ -635,7 +634,6 @@ class host_mod(LDAPUpdate):
raise errors.ACIError(info=_('cn is immutable'))
if 'locality' in entry_attrs:
entry_attrs['l'] = entry_attrs['locality']
del entry_attrs['locality']
if 'krbprincipalname' in entry_attrs:
(dn, entry_attrs_old) = ldap.get_entry(
dn, ['objectclass', 'krbprincipalname']

View File

@@ -708,6 +708,18 @@ class LDAPEntry(dict):
else:
self._names[name] = name
try:
schema = self._conn.schema
except:
pass
else:
attrtype = schema.get_obj(ldap.schema.AttributeType,
name.encode('utf-8'))
if attrtype is not None:
for altname in attrtype.names:
altname = altname.decode('utf-8')
self._names[altname] = name
super(LDAPEntry, self).__setitem__(name, value)
def setdefault(self, name, default):

View File

@@ -165,17 +165,21 @@ class test_ldap(object):
assert u'cn' in e.keys()
assert 'CN' in e
assert 'CN' not in e.keys()
assert 'commonName' in e
assert 'commonName' not in e.keys()
assert e['CN'] is cn1
assert e['CN'] is e[u'cn']
e.dn = dn2
assert e.dn is dn2
e['CN'] = cn2
e['commonName'] = cn2
assert u'cn' in e
assert u'cn' not in e.keys()
assert 'CN' in e
assert 'CN' in e.keys()
assert 'CN' not in e.keys()
assert 'commonName' in e
assert 'commonName' in e.keys()
assert e['CN'] is cn2
assert e['CN'] is e[u'cn']
@@ -184,3 +188,5 @@ class test_ldap(object):
assert 'CN' not in e.keys()
assert u'cn' not in e
assert u'cn' not in e.keys()
assert 'commonName' not in e
assert 'commonName' not in e.keys()