admin:services:re2o
Ceci est une ancienne révision du document !
Re2o
Migration depuis l'ancien ldap
Les anciennes données étaient dans l'ancien ldap sur dodecagon, il a été nécessaire de transéferer tout le monde. Pour info, voici comment on a procédé :
Transfert des users
conn = Connection(server, 'cn=admin,dc=federez,dc=net', 'pkop', auto_bind=True) conn.search('ou=users,dc=federez,dc=net', '(objectclass=inetOrgPerson)', attributes=ALL_ATTRIBUTES) entries = conn.entries In [79]: from users.models import Adherent, ListShell In [78]: for en in ent: ...: adh = Adherent() ...: adh.pseudo = str(en.cn) ...: if len(str(en.displayName).split())>1: ...: adh.surname = str(en.displayName).split()[1] ...: adh.name = str(en.displayName).split()[0] ...: else: ...: adh.surname = str(en.displayName) ...: adh.name = str(en.displayName) ...: adh.email = str(en.mail) ...: if hasattr(en, 'loginShell'): ...: adh.shell, created = ListShell.objects.get_or_create(shell=str(en.loginShell)) ...: if hasattr(en, 'uidNumber'): ...: adh.uid_number = str(en.uidNumber) ...: if hasattr(en, 'sambaNTPassword'): ...: adh.sambaNTPassword = en.sambaNTPassword ...: if hasattr(en, 'userPassword'): ...: adh.password = str(en.userPassword.value.decode("utf-8")[:6]) + '$' + str(en.userPassword.value.decode("utf-8")[6:]) ...: adh.save()
Transfert des services-users (bind ldap pour les services)
conn.search('ou=service-users,dc=federez,dc=net', '(objectclass=simpleSecurityObject)', attributes=ALL_ATTRIBUTES) entries = conn.entries In [87]: for en in entries: ...: s = ServiceUser() ...: s.pseudo = str(en.cn) ...: s.password = str(en.userPassword.value.decode("utf-8")[:6]) + '$' + str(en.userPassword.value.decode("utf-8")[6:]) ...: s.save()
Transfert des assos
A la main, il n'y en avait pas 150
Transfert des groupes/liens users-asssos
Plus compliqué, il a fallu extraire le pseudo depuis l'objet member of dans les groupes, les jointures n'existant évidemment pas en ldap.
from users.models import User, Adherent, Club conn.search('ou=associations,dc=federez,dc=net', '(objectclass=groupOfUniqueNames)', attributes=ALL_ATTRIBUTES) entries = conn.entries In [1]: for ent in entries: ...: club_instance = Club.objects.get(pseudo=str(ent.o)) ...: if hasattr(ent, 'owner'): ...: for own in ent.owner: ...: uid = conn.search('ou=users,dc=federez,dc=net', '(%s)' % str(own.split(',')[0]), attributes=ALL_ATTRIBUTES) ...: user = conn.entries[0] ...: user_instance = Adherent.objects.get(pseudo=str(user.cn)) ...: club_instance.administrators.add(user_instance) ...: if hasattr(ent, 'uniqueMember'): ...: for memb in ent.uniqueMember: ...: uid = conn.search('ou=users,dc=federez,dc=net', '(%s)' % str(memb.split(',')[0]), attributes=ALL_ATTRIBUTES) ...: user = conn.entries[0] ...: user_instance = Adherent.objects.get(pseudo=str(user.cn)) ...: club_instance.members.add(user_instance)
admin/services/re2o.1511160796.txt.gz · Dernière modification : 2017/11/20 07:53 de chirac