summaryrefslogtreecommitdiffstats
path: root/ipa-server
diff options
context:
space:
mode:
authorKevin McCarthy <kmccarth@redhat.com>2007-08-17 14:27:54 -0700
committerKevin McCarthy <kmccarth@redhat.com>2007-08-17 14:27:54 -0700
commita0e2fa00f1005bf7d5853c83ff0f567663352e92 (patch)
tree9a000cf4db2e32d0217e6a845e086ae8d726a4aa /ipa-server
parent48bb474e6848f02de2b77a7abf6aed13857267ee (diff)
downloadfreeipa-a0e2fa00f1005bf7d5853c83ff0f567663352e92.tar.gz
freeipa-a0e2fa00f1005bf7d5853c83ff0f567663352e92.tar.xz
freeipa-a0e2fa00f1005bf7d5853c83ff0f567663352e92.zip
Manual merge changes in for the cidict/ipaclient add_user()
Diffstat (limited to 'ipa-server')
-rw-r--r--ipa-server/ipaserver/ipaldap.py2
-rw-r--r--ipa-server/xmlrpc-server/funcs.py19
2 files changed, 19 insertions, 2 deletions
diff --git a/ipa-server/ipaserver/ipaldap.py b/ipa-server/ipaserver/ipaldap.py
index 936dd662b..a0f1cab4a 100644
--- a/ipa-server/ipaserver/ipaldap.py
+++ b/ipa-server/ipaserver/ipaldap.py
@@ -63,7 +63,7 @@ class Entry:
if isinstance(entrydata,tuple):
self.dn = entrydata[0]
self.data = ldap.cidict.cidict(entrydata[1])
- elif isinstance(entrydata,str):
+ elif isinstance(entrydata,str) or isinstance(entrydata,unicode):
self.dn = entrydata
self.data = ldap.cidict.cidict()
else:
diff --git a/ipa-server/xmlrpc-server/funcs.py b/ipa-server/xmlrpc-server/funcs.py
index df8bceaa7..22f52dae3 100644
--- a/ipa-server/xmlrpc-server/funcs.py
+++ b/ipa-server/xmlrpc-server/funcs.py
@@ -171,14 +171,31 @@ class IPAServer:
return self.convert_entry(ent)
- def add_user (self, user, user_container="ou=users,ou=default",opts=None):
+ def add_user (self, args, user_container="ou=users,ou=default",opts=None):
"""Add a user in LDAP. Takes as input a dict where the key is the
attribute name and the value is either a string or in the case
of a multi-valued field a list of values. user_container sets
where in the tree the user is placed."""
global _LDAPPool
+
+ # The XML-RPC server marshals the arguments into one variable
+ # while the direct caller has them separate. So do a little
+ # bit of gymnastics to figure things out. There has to be a
+ # better way, so FIXME
+ if isinstance(args,tuple):
+ opts = user_container
+ if len(args) == 2:
+ user = args[0]
+ user_container = args[1]
+ else:
+ user = args
+ user_container = "ou=users,ou=default"
+ else:
+ user = args
+
if (isinstance(user, tuple)):
user = user[0]
+
dn="uid=%s,%s,%s" % (user['uid'], user_container,self.basedn)
entry = ipaserver.ipaldap.Entry(str(dn))