summaryrefslogtreecommitdiffstats
path: root/ipa-python
diff options
context:
space:
mode:
authorrcritten@redhat.com <rcritten@redhat.com>2007-08-14 17:22:05 -0400
committerrcritten@redhat.com <rcritten@redhat.com>2007-08-14 17:22:05 -0400
commit5f0f23ee91d51b2a45206ce7d9ddc413d3fa9670 (patch)
tree92fd71833e1689e008ccb4844350c566ebfd0b16 /ipa-python
parent547f501faee224d7d5d6998ce457fd2df0fd465d (diff)
downloadfreeipa-5f0f23ee91d51b2a45206ce7d9ddc413d3fa9670.tar.gz
freeipa-5f0f23ee91d51b2a45206ce7d9ddc413d3fa9670.tar.xz
freeipa-5f0f23ee91d51b2a45206ce7d9ddc413d3fa9670.zip
Ensure that the Apache server is in forked mode
Add ability to update existing users Try to prevent fetching and setting empty strings
Diffstat (limited to 'ipa-python')
-rw-r--r--ipa-python/ipaclient.py6
-rw-r--r--ipa-python/rpcclient.py16
-rw-r--r--ipa-python/user.py13
3 files changed, 33 insertions, 2 deletions
diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py
index 2c24e77d0..626e0a111 100644
--- a/ipa-python/ipaclient.py
+++ b/ipa-python/ipaclient.py
@@ -96,3 +96,9 @@ class IPAClient:
return users
+ def update_user(self,olduser,newuser):
+
+ realm = config.config.get_realm()
+
+ result = self.transport.update_user(olduser,newuser)
+ return result
diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py
index 243b5485f..abff0f8fa 100644
--- a/ipa-python/rpcclient.py
+++ b/ipa-python/rpcclient.py
@@ -74,8 +74,7 @@ class RPCClient:
raise xmlrpclib.Fault(value, msg)
return result
-
-
+
def add_user(self,user):
"""Add a new user"""
server = self.setup_server()
@@ -135,3 +134,16 @@ class RPCClient:
raise xmlrpclib.Fault(value, msg)
return result
+
+ def update_user(self,olduser,newuser):
+ """Update an existing user. olduser and newuser are dicts of attributes"""
+ server = self.setup_server()
+
+ try:
+ result = server.update_user(olduser, newuser)
+ except xmlrpclib.Fault, fault:
+ raise xmlrpclib.Fault(fault.faultCode, fault.faultString)
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+
+ return result
diff --git a/ipa-python/user.py b/ipa-python/user.py
index 6162354be..3c925bfb3 100644
--- a/ipa-python/user.py
+++ b/ipa-python/user.py
@@ -58,6 +58,8 @@ class User:
def getValue(self,name):
"""Get the first value for the attribute named name"""
value = self.data.get(name,[None])
+ if (len(value) < 1):
+ return value
if isinstance(value[0],list) or isinstance(value[0],tuple):
return value[0]
else:
@@ -72,6 +74,8 @@ class User:
ent.setValue('name', ('value1', 'value2', ..., 'valueN'))
Since *value is a tuple, we may have to extract a list or tuple from that
tuple as in the last two examples above"""
+ if (len(value[0]) < 1):
+ return
if isinstance(value[0],list) or isinstance(value[0],tuple):
self.data[name] = value[0]
else:
@@ -85,6 +89,15 @@ class User:
single value or a list of values."""
return self.data.items()
+ def toDict(self):
+ """Convert the attrs and values to a dict. The dict is keyed on the
+ attribute name. The value is either single value or a list of values."""
+ result = {}
+ for k in self.data.keys():
+ result[k] = self.data[k]
+ result['dn'] = self.dn
+ return result
+
def attrList(self):
"""Return a list of all attributes in the entry"""
return self.data.keys()