@@ -114,3 +114,74 @@ vous disposez comme dans les templates des variable
114114* ** rdnValue** contient la valeur du rdn
115115
116116
117+ ## Gestion du cycle de vie
118+ Dans le fichier config.yml une nouvelle clé est gérée :
119+ ```
120+ ...
121+ IDENTITY_LIFECYCLE_CHANGED:
122+ script: 'lifecycle.py'
123+ onError: 'stop'
124+ ```
125+ ** A noter : sesame-daemon doit être à la version >= 1.0.14**
126+
127+ ## Entrée envoyée au backend
128+ L'entrée envoyée au backend pour la generation des scripts est un peu differente que pour les autres actions
129+
130+ ``` json
131+
132+ "concernedTo" : " 6852cd3980ae416061df5dae" ,
133+ "payload" : {
134+ "before" : {
135+ "_id" : " 6852cd3980ae416061df5dae" ,
136+ "inetOrgPerson" : {
137+ "cn" : " Dupont Gerald" ,
138+ "displayName" : " Gérald Dupont" ,
139+ "facsimileTelephoneNumber" : " " ,
140+ ...
141+ "after" : {
142+ "_id" : " 6852cd3980ae416061df5dae" ,
143+ "inetOrgPerson" : {
144+ "cn" : " Dupont Gerald" ,
145+ "displayName" : " Gérald Dupont" ,
146+ "facsimileTelephoneNumber" : " " ,
147+
148+ ```
149+ * Une clé **before** représente l'identité avant modification par le cycle de vie
150+ * Une clé **after** représente l'identité après modification par le cycle de vie
151+
152+ ## Nom des templates pour le cycle de vie
153+ Par défaut l'installation ne donne qu'un script dummy pour le cycle de vie, c'est à vous de les créer selon vos besoins
154+
155+ Processus :
156+ Le backend cherche un script dans le répertoire **lifecyle** nommé 'X'_'Y' ou X_Y.py
157+ X etant la valeur de lifecyle précédant la modification
158+
159+ Exemple : si le cycle de vie passe de A à I le backend regardera si un template du nom de A_I ou A_I.py existe
160+
161+ Si il n y a pas de script pour cette transition le backend va prendre le script
162+ **lifecycle.py**.
163+
164+ Si aucun des templates existe le backend ne fait rien.
165+
166+ ### Squelette de script python pour le cycle de vie
167+
168+ ````
169+ #!/usr/bin/python3
170+ #Exemple de script lifecycle
171+ import sys
172+ # Import librairie
173+ sys.path.append('../lib')
174+ import backend_utils as u
175+ import backend_ldap as ldap
176+
177+
178+
179+ def main():
180+ # lecture json sur l'entree standart
181+ content=u.readjsoninput()
182+ #retour de l'execution au daemon
183+ return print(u.returncode(0,'lifecycle.py'))
184+
185+ if __name__ == '__main__':
186+ main()
187+ ````
0 commit comments