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