summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipa-python/ipaclient.py6
-rw-r--r--ipa-python/rpcclient.py14
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py3
-rw-r--r--ipa-server/xmlrpc-server/funcs.py12
-rw-r--r--ipa-server/xmlrpc-server/ipaxmlrpc.py1
5 files changed, 28 insertions, 8 deletions
diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py
index cf2e355a5..9f6f8f3e6 100644
--- a/ipa-python/ipaclient.py
+++ b/ipa-python/ipaclient.py
@@ -78,6 +78,12 @@ class IPAClient:
result = self.transport.get_entry_by_cn(cn,sattrs)
return entity.Entity(result)
+ def update_entry(self,entry):
+ """Update a entry."""
+
+ result = self.transport.update_entry(entry.origDataDict(), entry.toDict())
+ return result
+
# User support
def get_user_by_uid(self,uid,sattrs=None):
"""Get a specific user by uid. If sattrs is set then only those
diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py
index ae26d7070..eae68ee32 100644
--- a/ipa-python/rpcclient.py
+++ b/ipa-python/rpcclient.py
@@ -118,6 +118,20 @@ class RPCClient:
return ipautil.unwrap_binary_data(result)
+ def update_entry(self,oldentry,newentry):
+ """Update an existing entry. oldentry and newentry are dicts of attributes"""
+ server = self.setup_server()
+
+ try:
+ result = server.update_entry(ipautil.wrap_binary_data(oldentry),
+ ipautil.wrap_binary_data(newentry))
+ except xmlrpclib.Fault, fault:
+ raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+
+ return ipautil.unwrap_binary_data(result)
+
# User support
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py b/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py
index 8adbc7da6..908412767 100644
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py
@@ -62,8 +62,7 @@ class DelegationController(IPAController):
aci_entry = client.get_aci_entry(['dn'])
aci_entry.setValue('aci', new_aci.export_to_string())
- # TODO - add a client.update_entry() call instead
- client.update_group(aci_entry)
+ client.update_entry(aci_entry)
except ipaerror.IPAError, e:
turbogears.flash("Delgate add failed: " + str(e))
return dict(form=delegate_new_form, delegate=kw,
diff --git a/ipa-server/xmlrpc-server/funcs.py b/ipa-server/xmlrpc-server/funcs.py
index 0dd0c2c5d..8ba0efdde 100644
--- a/ipa-server/xmlrpc-server/funcs.py
+++ b/ipa-server/xmlrpc-server/funcs.py
@@ -343,6 +343,10 @@ class IPAServer:
filter = "(cn=" + cn + ")"
return self.__get_sub_entry(self.basedn, filter, sattrs, opts)
+ def update_entry (self, oldentry, newentry, opts=None):
+ """Update an entry in LDAP"""
+ return self.__update_entry(oldentry, newentry, opts)
+
# User support
def __is_user_unique(self, uid, opts):
@@ -586,9 +590,7 @@ class IPAServer:
return new_dict
- def update_user (self, olduser, newuser, opts=None):
- """Update a user in LDAP"""
- return self.__update_entry(olduser, newuser, opts)
+ update_user = update_entry
def mark_user_deleted (self, uid, opts=None):
"""Mark a user as inactive in LDAP. We aren't actually deleting
@@ -987,9 +989,7 @@ class IPAServer:
return failed
- def update_group (self, oldgroup, newgroup, opts=None):
- """Update a group in LDAP"""
- return self.__update_entry(oldgroup, newgroup, opts)
+ update_group = update_entry
def delete_group (self, group_dn, opts=None):
"""Delete a group
diff --git a/ipa-server/xmlrpc-server/ipaxmlrpc.py b/ipa-server/xmlrpc-server/ipaxmlrpc.py
index 3872ee21c..e9da95869 100644
--- a/ipa-server/xmlrpc-server/ipaxmlrpc.py
+++ b/ipa-server/xmlrpc-server/ipaxmlrpc.py
@@ -320,6 +320,7 @@ def handler(req, profiling=False):
h.register_function(f.get_aci_entry)
h.register_function(f.get_entry_by_dn)
h.register_function(f.get_entry_by_cn)
+ h.register_function(f.update_entry)
h.register_function(f.get_user_by_uid)
h.register_function(f.get_user_by_principal)
h.register_function(f.get_users_by_manager)