[Freeipa-devel] [PATCH] update_entry

Kevin McCarthy kmccarth at redhat.com
Fri Oct 12 23:00:46 UTC 2007


This patch unifies the update_group and update_user methods into
update_entry.

The modivation for this was from the delegation management code, where I
need to update the cn=accounts entry.  Although calling update_group()
worked, it looked strange.

That said, it may be just as offensive to have an API with add_user,
delete_user, but update_entry.  I'm open to suggestions.

-Kevin

-------------- next part --------------
# HG changeset patch
# User Kevin McCarthy <kmccarth at redhat.com>
# Date 1192229916 25200
# Node ID 33d4a477d7326a633d6d65dea46817b1eb371416
# Parent  2ffed88489759ced4ba285c3f1d00f84eb3eeebe
Creates a single update_entry api call.

diff -r 2ffed8848975 -r 33d4a477d732 ipa-admintools/ipa-groupmod
--- a/ipa-admintools/ipa-groupmod	Fri Oct 12 15:11:55 2007 -0700
+++ b/ipa-admintools/ipa-groupmod	Fri Oct 12 15:58:36 2007 -0700
@@ -91,7 +91,7 @@ def main():
             if group is None:
                 return 1
             group.setValue('description', options.desc)
-            client.update_group(group)
+            client.update_entry(group)
             print args[1] + " successfully updated"
     except xmlrpclib.Fault, f:
         print f.faultString
diff -r 2ffed8848975 -r 33d4a477d732 ipa-admintools/ipa-usermod
--- a/ipa-admintools/ipa-usermod	Fri Oct 12 15:11:55 2007 -0700
+++ b/ipa-admintools/ipa-usermod	Fri Oct 12 15:58:36 2007 -0700
@@ -190,7 +190,7 @@ def main():
         user.setValue('loginshell', shell)
 
     try:
-        client.update_user(user)
+        client.update_entry(user)
     except xmlrpclib.Fault, f:
         print f.faultString
         return 1
diff -r 2ffed8848975 -r 33d4a477d732 ipa-python/ipaclient.py
--- a/ipa-python/ipaclient.py	Fri Oct 12 15:11:55 2007 -0700
+++ b/ipa-python/ipaclient.py	Fri Oct 12 15:58:36 2007 -0700
@@ -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
@@ -145,12 +151,6 @@ class IPAClient:
 
         return users
 
-    def update_user(self,user):
-        """Update a user entry."""
-
-        result = self.transport.update_user(user.origDataDict(), user.toDict())
-        return result
-
     def delete_user(self,uid):
         """Delete a user entry."""
 
@@ -285,11 +285,6 @@ class IPAClient:
 
         return self.transport.remove_groups_from_user(group_dns, user_dn)
 
-    def update_group(self,group):
-        """Update a group entry."""
-
-        return self.transport.update_group(group.origDataDict(), group.toDict())
-
     def delete_group(self,group_cn):
         """Delete a group entry."""
 
diff -r 2ffed8848975 -r 33d4a477d732 ipa-python/rpcclient.py
--- a/ipa-python/rpcclient.py	Fri Oct 12 15:11:55 2007 -0700
+++ b/ipa-python/rpcclient.py	Fri Oct 12 15:58:36 2007 -0700
@@ -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
 
@@ -237,20 +251,6 @@ class RPCClient:
     
         return ipautil.unwrap_binary_data(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(ipautil.wrap_binary_data(olduser),
-                    ipautil.wrap_binary_data(newuser))
-        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)
-
     def delete_user(self,uid):
         """Delete a user. uid is the uid of the user to delete."""
         server = self.setup_server()
@@ -491,20 +491,6 @@ class RPCClient:
 
         return ipautil.unwrap_binary_data(result)
 
-    def update_group(self,oldgroup,newgroup):
-        """Update an existing group. oldgroup and newgroup are dicts of attributes"""
-        server = self.setup_server()
-    
-        try:
-            result = server.update_group(ipautil.wrap_binary_data(oldgroup),
-                    ipautil.wrap_binary_data(newgroup))
-        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)
-
     def delete_group(self,group_cn):
         """Delete a group. group_cn is the cn of the group to be deleted."""
         server = self.setup_server()
diff -r 2ffed8848975 -r 33d4a477d732 ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py	Fri Oct 12 15:11:55 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/delegation.py	Fri Oct 12 15:58:36 2007 -0700
@@ -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 -r 2ffed8848975 -r 33d4a477d732 ipa-server/ipa-gui/ipagui/subcontrollers/group.py
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/group.py	Fri Oct 12 15:11:55 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/group.py	Fri Oct 12 15:58:36 2007 -0700
@@ -246,7 +246,7 @@ class GroupController(IPAController):
                     new_group.setValue('gidnumber', new_gid)
 
             if group_modified:
-                rv = client.update_group(new_group)
+                rv = client.update_entry(new_group)
                 #
                 # If the group update succeeds, but below operations fail, we
                 # need to make sure a subsequent submit doesn't try to update
diff -r 2ffed8848975 -r 33d4a477d732 ipa-server/ipa-gui/ipagui/subcontrollers/user.py
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py	Fri Oct 12 15:11:55 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py	Fri Oct 12 15:58:36 2007 -0700
@@ -293,7 +293,7 @@ class UserController(IPAController):
                 new_user.setValue('gidnumber', str(kw.get('gidnumber')))
                 new_user.setValue('homedirectory', str(kw.get('homedirectory')))
 
-            rv = client.update_user(new_user)
+            rv = client.update_entry(new_user)
             #
             # If the user update succeeds, but below operations fail, we
             # need to make sure a subsequent submit doesn't try to update
diff -r 2ffed8848975 -r 33d4a477d732 ipa-server/xmlrpc-server/funcs.py
--- a/ipa-server/xmlrpc-server/funcs.py	Fri Oct 12 15:11:55 2007 -0700
+++ b/ipa-server/xmlrpc-server/funcs.py	Fri Oct 12 15:58:36 2007 -0700
@@ -372,6 +372,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):
@@ -614,10 +618,6 @@ class IPAServer:
             new_dict[k] = v
 
         return new_dict
-
-    def update_user (self, olduser, newuser, opts=None):
-        """Update a user in LDAP"""
-        return self.__update_entry(olduser, newuser, opts)
 
     def mark_user_deleted (self, uid, opts=None):
         """Mark a user as inactive in LDAP. We aren't actually deleting
@@ -1015,10 +1015,6 @@ class IPAServer:
                 failed.append(group_dn)
 
         return failed
-
-    def update_group (self, oldgroup, newgroup, opts=None):
-        """Update a group in LDAP"""
-        return self.__update_entry(oldgroup, newgroup, opts)
 
     def delete_group (self, group_dn, opts=None):
         """Delete a group
diff -r 2ffed8848975 -r 33d4a477d732 ipa-server/xmlrpc-server/ipaxmlrpc.py
--- a/ipa-server/xmlrpc-server/ipaxmlrpc.py	Fri Oct 12 15:11:55 2007 -0700
+++ b/ipa-server/xmlrpc-server/ipaxmlrpc.py	Fri Oct 12 15:58:36 2007 -0700
@@ -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)
@@ -327,7 +328,6 @@ def handler(req, profiling=False):
             h.register_function(f.get_add_schema)
             h.register_function(f.get_all_users)
             h.register_function(f.find_users)
-            h.register_function(f.update_user)
             h.register_function(f.delete_user)
             h.register_function(f.mark_user_deleted)
             h.register_function(f.modifyPassword)
@@ -345,7 +345,6 @@ def handler(req, profiling=False):
             h.register_function(f.remove_users_from_group)
             h.register_function(f.add_groups_to_user)
             h.register_function(f.remove_groups_from_user)
-            h.register_function(f.update_group)
             h.register_function(f.delete_group)
             h.handle_request(req)
         finally:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 4054 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20071012/a9bef447/attachment.bin>


More information about the Freeipa-devel mailing list