bh: utils/testing create_ldap_users.py,1.3,1.4

cvs at kolab.org cvs at kolab.org
Thu May 22 19:12:06 CEST 2008


Author: bh

Update of /kolabrepository/utils/testing
In directory doto:/tmp/cvs-serv15791

Modified Files:
	create_ldap_users.py 
Log Message:
Added code to create and delete groups as well.


Index: create_ldap_users.py
===================================================================
RCS file: /kolabrepository/utils/testing/create_ldap_users.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- create_ldap_users.py	24 Oct 2005 15:09:04 -0000	1.3
+++ create_ldap_users.py	22 May 2008 17:12:03 -0000	1.4
@@ -45,6 +45,14 @@
     return conn.search_s("k=kolab," + base_dn, ldap.SCOPE_BASE,
                          filterstr='(objectClass=*)')[0][1]
 
+def set_delete_flag(conn, filterstr):
+    hosts = fetch_kolab_info(conn)["kolabHost"]
+    result = conn.search_s(base_dn, ldap.SCOPE_ONELEVEL, filterstr=filterstr)
+    for dn, attrs in result:
+        print dn, hosts
+        conn.modify_s(dn, [(ldap.MOD_ADD, "kolabDeleteFlag", hosts)])
+
+
 def add_user(conn, num_users):
     kolab_info = fetch_kolab_info(conn)
 
@@ -73,12 +81,35 @@
 
 
 def delete_auto_users(conn):
-    hosts = fetch_kolab_info(conn)["kolabHost"]
-    result = conn.search_s(base_dn, ldap.SCOPE_ONELEVEL,
-                     filterstr="(&(objectClass=kolabInetOrgPerson)(cn=auto*))")
-    for dn, attrs in result:
-        print dn, hosts
-        conn.modify_s(dn, [(ldap.MOD_ADD, "kolabDeleteFlag", hosts)])
+    set_delete_flag(conn, "(&(objectClass=kolabInetOrgPerson)(cn=auto*))")
+
+
+def add_groups(conn, num_entries, member):
+    kolab_info = fetch_kolab_info(conn)
+
+    mail_domain = kolab_info["postfix-mydomain"][0]
+    # use the first of the kolab hosts as home server.
+    kolab_home_server = kolab_info["kolabHost"][0]
+
+    common_attrs = {
+        'objectClass': ['top', 'groupOfNames', 'kolabGroupOfNames'],
+        }
+
+    users =  [("testgrp%d@%s" % (n, mail_domain), "auto", "autotest%d" % n)
+              for n in range(num_entries)]
+    for n in range(num_entries):
+        mail = "testgrp%d@%s" % (n, mail_domain)
+        descr = common_attrs.copy()
+        descr["cn"] = [mail]
+        descr["mail"] = [mail]
+        descr["member"] = [member]
+        dn = "cn=" + mail + "," + base_dn
+        print dn, descr
+        print conn.add_s(dn, ldap.modlist.addModlist(descr))
+
+
+def delete_auto_groups(conn):
+    set_delete_flag(conn, "(&(objectClass=kolabGroupOfNames)(cn=testgrp*))")
 
 
 def main():
@@ -88,10 +119,13 @@
     port = None
     admin_dn_part = "cn=manager"
     base_dn = None
-    num_users = 10
+    num_entries = 10
+    entry_type = "user"
+    group_member = None
 
-    opts, args = getopt.getopt(sys.argv[1:], 'h:p:u:n:',
-                               ["host=", "port=", "user=", "num="])
+    opts, args = getopt.getopt(sys.argv[1:], 'h:p:u:n:t:',
+                               ["host=", "port=", "user=", "num=",
+                                "type=", "member="])
     for optchar, value in opts:
         if optchar in ("-h", "--host"):
             hostname = value
@@ -99,8 +133,13 @@
             port = int(value)
         elif optchar in ("-u", "--user"):
             admin_dn_part = value
+        elif optchar in ("-t", "--type"):
+            entry_type = value
+        elif optchar in "--member":
+            # dn of the initial member.  groups may not be empty in Kolab
+            group_member = value
         elif optchar in ("-n", "--num"):
-            num_users = int(value)
+            num_entries = int(value)
         else:
             print >>sys.stderr, "Unknown option", optchar
             sys.exit(1)
@@ -126,10 +165,16 @@
 
 
     conn = open_ldap(uri, admin_dn_part)
-    if cmd == "add":
-        add_user(conn, num_users = num_users)
-    elif cmd == "delete":
-        delete_auto_users(conn)
+    if entry_type == "user":
+        if cmd == "add":
+            add_user(conn, num_entries)
+        elif cmd == "delete":
+            delete_auto_users(conn)
+    elif entry_type == "group":
+        if cmd == "add":
+            add_groups(conn, num_entries, group_member)
+        elif cmd == "delete":
+            delete_auto_groups(conn)
 
 
 





More information about the commits mailing list