From ef1cd6e24732e7fa64f6c4b0ce32a909fbf1df5d Mon Sep 17 00:00:00 2001 From: Jan Cholasta Date: Wed, 16 Jan 2013 14:14:58 +0100 Subject: Add custom mapping object for LDAP entry data. --- ipalib/plugins/automember.py | 6 +++--- ipalib/plugins/baseldap.py | 26 +++++++++++++------------- ipalib/plugins/dns.py | 14 +++++++------- ipalib/plugins/krbtpolicy.py | 4 ++-- ipalib/plugins/sudorule.py | 4 ++-- ipalib/plugins/trust.py | 2 +- 6 files changed, 28 insertions(+), 28 deletions(-) (limited to 'ipalib/plugins') diff --git a/ipalib/plugins/automember.py b/ipalib/plugins/automember.py index 0a7f37319..af39f6aac 100644 --- a/ipalib/plugins/automember.py +++ b/ipalib/plugins/automember.py @@ -305,7 +305,7 @@ class automember_add_condition(LDAPUpdate): try: (dn, old_entry) = ldap.get_entry( dn, [attr], normalize=self.obj.normalize_dn) - for regex in old_entry: + for regex in old_entry.keys(): if not isinstance(entry_attrs[regex], (list, tuple)): entry_attrs[regex] = [entry_attrs[regex]] duplicate = set(old_entry[regex]) & set(entry_attrs[regex]) @@ -319,7 +319,7 @@ class automember_add_condition(LDAPUpdate): # Set failed and completed to they can be harvested in the execute super setattr(context, 'failed', failed) setattr(context, 'completed', completed) - setattr(context, 'entry_attrs', entry_attrs) + setattr(context, 'entry_attrs', dict(entry_attrs)) # Make sure to returned the failed results if there is nothing to remove if completed == 0: @@ -409,7 +409,7 @@ class automember_remove_condition(LDAPUpdate): # Set failed and completed to they can be harvested in the execute super setattr(context, 'failed', failed) setattr(context, 'completed', completed) - setattr(context, 'entry_attrs', entry_attrs) + setattr(context, 'entry_attrs', dict(entry_attrs)) # Make sure to returned the failed results if there is nothing to remove if completed == 0: diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py index 1ebbe7a20..2cde65f1e 100644 --- a/ipalib/plugins/baseldap.py +++ b/ipalib/plugins/baseldap.py @@ -228,7 +228,7 @@ def entry_from_entry(entry, newentry): del entry[e] # Re-populate it with new wentry - for e in newentry: + for e in newentry.keys(): entry[e] = newentry[e] def wait_for_value(ldap, dn, attr, value): @@ -868,7 +868,7 @@ last, after all sets and adds."""), # Provide a nice error message when user tries to delete an # attribute that does not exist on the entry (and user is not # adding it) - names = set(n.lower() for n in old_entry) + names = set(n.lower() for n in old_entry.keys()) del_nonexisting = delattrs - (names | setattrs | addattrs) if del_nonexisting: raise errors.ValidationError(name=del_nonexisting.pop(), @@ -1070,8 +1070,8 @@ class LDAPCreate(BaseLDAPCommand, crud.Create): self.obj.convert_attribute_members(entry_attrs, *keys, **options) if self.obj.primary_key and keys[-1] is not None: - return dict(result=entry_attrs, value=keys[-1]) - return dict(result=entry_attrs, value=u'') + return dict(result=dict(entry_attrs), value=keys[-1]) + return dict(result=dict(entry_attrs), value=u'') def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options): assert isinstance(dn, DN) @@ -1195,8 +1195,8 @@ class LDAPRetrieve(LDAPQuery): assert isinstance(dn, DN) entry_attrs['dn'] = dn if self.obj.primary_key and keys[-1] is not None: - return dict(result=entry_attrs, value=keys[-1]) - return dict(result=entry_attrs, value=u'') + return dict(result=dict(entry_attrs), value=keys[-1]) + return dict(result=dict(entry_attrs), value=u'') def pre_callback(self, ldap, dn, attrs_list, *keys, **options): assert isinstance(dn, DN) @@ -1324,8 +1324,8 @@ class LDAPUpdate(LDAPQuery, crud.Update): self.obj.convert_attribute_members(entry_attrs, *keys, **options) if self.obj.primary_key and keys[-1] is not None: - return dict(result=entry_attrs, value=keys[-1]) - return dict(result=entry_attrs, value=u'') + return dict(result=dict(entry_attrs), value=keys[-1]) + return dict(result=dict(entry_attrs), value=u'') def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options): assert isinstance(dn, DN) @@ -1552,7 +1552,7 @@ class LDAPAddMember(LDAPModMember): return dict( completed=completed, failed=failed, - result=entry_attrs, + result=dict(entry_attrs), ) def pre_callback(self, ldap, dn, found, not_found, *keys, **options): @@ -1651,7 +1651,7 @@ class LDAPRemoveMember(LDAPModMember): return dict( completed=completed, failed=failed, - result=entry_attrs, + result=dict(entry_attrs), ) def pre_callback(self, ldap, dn, found, not_found, *keys, **options): @@ -1861,7 +1861,7 @@ class LDAPSearch(BaseLDAPCommand, crud.Search): for e in entries: assert isinstance(e[0], DN) e[1]['dn'] = e[0] - entries = [e for (dn, e) in entries] + entries = [dict(e) for (dn, e) in entries] return dict( result=entries, @@ -2000,7 +2000,7 @@ class LDAPAddReverseMember(LDAPModReverseMember): return dict( completed=completed, failed=failed, - result=entry_attrs, + result=dict(entry_attrs), ) def pre_callback(self, ldap, dn, *keys, **options): @@ -2100,7 +2100,7 @@ class LDAPRemoveReverseMember(LDAPModReverseMember): return dict( completed=completed, failed=failed, - result=entry_attrs, + result=dict(entry_attrs), ) def pre_callback(self, ldap, dn, *keys, **options): diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py index de13395ef..ff21c694d 100644 --- a/ipalib/plugins/dns.py +++ b/ipalib/plugins/dns.py @@ -2124,7 +2124,7 @@ class dnsrecord(LDAPObject): assert isinstance(dn, DN) ldap = self.api.Backend.ldap2 - for rtype in entry_attrs: + for rtype in entry_attrs.keys(): rtype_cb = getattr(self, '_%s_pre_callback' % rtype, None) if rtype_cb: rtype_cb(ldap, dn, entry_attrs, *keys, **options) @@ -2267,9 +2267,9 @@ class dnsrecord(LDAPObject): def check_record_type_collisions(self, old_entry, entry_attrs): # Test that only allowed combination of record types was created - attrs = set(attr for attr in entry_attrs if attr in _record_attributes + attrs = set(attr for attr in entry_attrs.keys() if attr in _record_attributes and entry_attrs[attr]) - attrs.update(attr for attr in old_entry if attr not in entry_attrs) + attrs.update(attr for attr in old_entry.keys() if attr not in entry_attrs) try: attrs.remove('cnamerecord') except KeyError: @@ -2404,7 +2404,7 @@ class dnsrecord_add(LDAPCreate): self.obj.run_precallback_validators(dn, entry_attrs, *keys, **options) # run precallback also for all new RR type attributes in entry_attrs - for attr in entry_attrs: + for attr in entry_attrs.keys(): try: param = self.params[attr] except KeyError: @@ -2437,7 +2437,7 @@ class dnsrecord_add(LDAPCreate): except errors.NotFound: pass else: - for attr in entry_attrs: + for attr in entry_attrs.keys(): if attr not in _record_attributes: continue if entry_attrs[attr] is None: @@ -2568,7 +2568,7 @@ class dnsrecord_mod(LDAPUpdate): normalize=self.obj.normalize_dn) del_all = True - for attr in old_entry: + for attr in old_entry.keys(): if old_entry[attr]: del_all = False break @@ -2709,7 +2709,7 @@ class dnsrecord_del(LDAPUpdate): del_all = False if not self.obj.is_pkey_zone_record(*keys): record_found = False - for attr in old_entry: + for attr in old_entry.keys(): if old_entry[attr]: record_found = True break diff --git a/ipalib/plugins/krbtpolicy.py b/ipalib/plugins/krbtpolicy.py index 60674cc06..07e3148db 100644 --- a/ipalib/plugins/krbtpolicy.py +++ b/ipalib/plugins/krbtpolicy.py @@ -177,7 +177,7 @@ class krbtpolicy_reset(LDAPQuery): (dn, entry_attrs) = ldap.get_entry(dn, self.obj.default_attributes) if keys[-1] is not None: - return dict(result=entry_attrs, value=keys[-1]) - return dict(result=entry_attrs, value=u'') + return dict(result=dict(entry_attrs), value=keys[-1]) + return dict(result=dict(entry_attrs), value=u'') api.register(krbtpolicy_reset) diff --git a/ipalib/plugins/sudorule.py b/ipalib/plugins/sudorule.py index 878033f0e..a453dcabf 100644 --- a/ipalib/plugins/sudorule.py +++ b/ipalib/plugins/sudorule.py @@ -642,7 +642,7 @@ class sudorule_add_option(LDAPQuery): dn, attrs_list, normalize=self.obj.normalize_dn ) - return dict(result=entry_attrs) + return dict(result=dict(entry_attrs)) def output_for_cli(self, textui, result, cn, **options): textui.print_dashed(_('Added option "%(option)s" to Sudo Rule "%(rule)s"') % \ @@ -697,7 +697,7 @@ class sudorule_remove_option(LDAPQuery): dn, attrs_list, normalize=self.obj.normalize_dn ) - return dict(result=entry_attrs) + return dict(result=dict(entry_attrs)) def output_for_cli(self, textui, result, cn, **options): textui.print_dashed(_('Removed option "%(option)s" from Sudo Rule "%(rule)s"') % \ diff --git a/ipalib/plugins/trust.py b/ipalib/plugins/trust.py index acb73aa3e..78a6d98f7 100644 --- a/ipalib/plugins/trust.py +++ b/ipalib/plugins/trust.py @@ -311,7 +311,7 @@ sides. base_dn = DN(api.env.container_trusts, api.env.basedn), filter = trust_filter) - result['result'] = trusts[0][1] + result['result'] = dict(trusts[0][1]) result['result']['trusttype'] = [trust_type_string(result['result']['ipanttrusttype'][0])] result['result']['trustdirection'] = [trust_direction_string(result['result']['ipanttrustdirection'][0])] result['result']['truststatus'] = [trust_status_string(result['verified'])] -- cgit