diff options
author | rcritten@redhat.com <rcritten@redhat.com> | 2007-08-14 17:22:05 -0400 |
---|---|---|
committer | rcritten@redhat.com <rcritten@redhat.com> | 2007-08-14 17:22:05 -0400 |
commit | 5f0f23ee91d51b2a45206ce7d9ddc413d3fa9670 (patch) | |
tree | 92fd71833e1689e008ccb4844350c566ebfd0b16 /ipa-python | |
parent | 547f501faee224d7d5d6998ce457fd2df0fd465d (diff) | |
download | freeipa-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.py | 6 | ||||
-rw-r--r-- | ipa-python/rpcclient.py | 16 | ||||
-rw-r--r-- | ipa-python/user.py | 13 |
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() |