summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2014-03-27 17:52:45 +0100
committerPetr Viktorin <pviktori@redhat.com>2014-04-18 14:59:20 +0200
commita8dd7aa337f25abd938a582d0fcba51d3b356410 (patch)
treed2049d4bea9d3927b1d837fa49046b9ca493529c
parentb4860d09b4c343e5dd33e7e5e81f09e935002968 (diff)
downloadfreeipa-a8dd7aa337f25abd938a582d0fcba51d3b356410.tar.gz
freeipa-a8dd7aa337f25abd938a582d0fcba51d3b356410.tar.xz
freeipa-a8dd7aa337f25abd938a582d0fcba51d3b356410.zip
Use raw attribute values in command result when --raw is specified.
For backward compatibility, the values are converted to unicode, unless the attribute is binary or the conversion fails. Reviewed-By: Tomas Babej <tbabej@redhat.com>
-rw-r--r--ipalib/plugins/baseldap.py11
-rw-r--r--ipatests/test_xmlrpc/test_old_permission_plugin.py8
2 files changed, 14 insertions, 5 deletions
diff --git a/ipalib/plugins/baseldap.py b/ipalib/plugins/baseldap.py
index 949e5753b..cd4910bc1 100644
--- a/ipalib/plugins/baseldap.py
+++ b/ipalib/plugins/baseldap.py
@@ -235,7 +235,16 @@ def entry_from_entry(entry, newentry):
def entry_to_dict(entry, **options):
if options.get('raw', False):
- result = dict(entry)
+ result = {}
+ for attr, value in entry.raw.iteritems():
+ if entry.conn.get_type(attr) is not str:
+ value = list(value)
+ for (i, v) in enumerate(value):
+ try:
+ value[i] = v.decode('utf-8')
+ except UnicodeDecodeError:
+ pass
+ result[attr] = value
else:
result = dict((k.lower(), v) for (k, v) in entry.iteritems())
if options.get('all', False):
diff --git a/ipatests/test_xmlrpc/test_old_permission_plugin.py b/ipatests/test_xmlrpc/test_old_permission_plugin.py
index c9f7e8857..9de397d67 100644
--- a/ipatests/test_xmlrpc/test_old_permission_plugin.py
+++ b/ipatests/test_xmlrpc/test_old_permission_plugin.py
@@ -247,12 +247,12 @@ class test_old_permission(Declarative):
'cn': [permission1],
'objectclass': objectclasses.permission,
'member': [privilege1_dn],
- 'aci': (u'(targetfilter = "(objectclass=posixaccount)")'+
+ 'aci': [u'(targetfilter = "(objectclass=posixaccount)")'+
u'(version 3.0;acl "permission:testperm";' +
u'allow (write) ' +
u'groupdn = "ldap:///%s";)' % DN(
('cn', 'testperm'), ('cn', 'permissions'),
- ('cn', 'pbac'), api.env.basedn)),
+ ('cn', 'pbac'), api.env.basedn)],
'ipapermright': [u'write'],
'ipapermbindruletype': [u'permission'],
'ipapermissiontype': [u'V2', u'SYSTEM'],
@@ -360,8 +360,8 @@ class test_old_permission(Declarative):
'cn': [permission1],
'objectclass': objectclasses.permission,
'member': [privilege1_dn],
- 'aci': u'(targetfilter = "(objectclass=posixaccount)")(version 3.0;acl "permission:testperm";allow (write) groupdn = "ldap:///%s";)' % \
- DN(('cn', 'testperm'), ('cn', 'permissions'), ('cn', 'pbac'), api.env.basedn),
+ 'aci': [u'(targetfilter = "(objectclass=posixaccount)")(version 3.0;acl "permission:testperm";allow (write) groupdn = "ldap:///%s";)' % \
+ DN(('cn', 'testperm'), ('cn', 'permissions'), ('cn', 'pbac'), api.env.basedn)],
'ipapermright': [u'write'],
'ipapermbindruletype': [u'permission'],
'ipapermissiontype': [u'V2', u'SYSTEM'],