|
| 1 | +# Structure d'un backend |
| 2 | +## Architecture |
| 3 | +Un repertoire doit etre mise dans backends |
| 4 | +avec dedans : |
| 5 | +* un fichier de configuration (config.yml) |
| 6 | +* un repertoire bin comprenant les scripts |
| 7 | +* un repertoire etc optionnel peut aussi etre créé pour mettre les fichiers de configuration des scripts |
| 8 | + |
| 9 | +``` |
| 10 | +./nomDuBackend |
| 11 | +./nomDuBackend/config.yml |
| 12 | +./nomDuBackend/bin/ |
| 13 | +``` |
| 14 | + |
| 15 | +## Fichier de configuration config.yml |
| 16 | +```yaml |
| 17 | +name: 'dummy' |
| 18 | +description: 'Dummy backend for tests' |
| 19 | +active: 1 |
| 20 | +actions: |
| 21 | + CHANGEPWD: |
| 22 | + exec: "dummy.sh" |
| 23 | + onError: 'stop' |
| 24 | + ADDIDENT: |
| 25 | + exec: 'dummy.sh' |
| 26 | + onError: 'continue' |
| 27 | + UPDATEIDENT: |
| 28 | + exec: 'dummy.sh' |
| 29 | + onError: 'continue' |
| 30 | + DELIDENT: |
| 31 | + exec: 'dummy.sh' |
| 32 | + onError: 'continue' |
| 33 | + |
| 34 | + |
| 35 | +``` |
| 36 | +Le fichier de configuration doit comprendre : |
| 37 | +* name : le nom du backend |
| 38 | +* description : sa description |
| 39 | +* active : 0|1 0 le backend sera ignoré |
| 40 | +* actions : un tableau decrivant les actions |
| 41 | + * **CHANGEPWD** : exec sera executé sur l ordre de changement de mot de passe |
| 42 | + * **ADDIDENT** : exec sera executé sur l ordre de l'ajout d'une identite |
| 43 | + * **UPDATEIDENT** : exec sera executé sur l ordre de modification d'une identite |
| 44 | + * **DELIDENT** : exec sera executé sur l ordre de suppression d'une identite |
| 45 | + * Chaque action doit comprendre : |
| 46 | + * exec: le script qui sera executé (sans le path). Ce script doit être dans le répertoire bin du backend |
| 47 | + * onError : 'continue'|'stop Si une erreur se produit on arrete (stop) tout l'execution des backend ou on passe au suivant (continue) |
| 48 | + |
| 49 | + |
| 50 | +## Communication avec le script |
| 51 | +Le script recevera les données sur son entrée standard (STDIN) sous la forme d'une chaine json. |
| 52 | +Il redonnera le resultat sur sa sortie standard (STDOUT) et si il y a une erreur sur la sortie erreur (STDERR) |
| 53 | +le code d'erreur qu il doit fournir au demon : |
| 54 | +* 0 : OK |
| 55 | +* 1 : declenchera sur l'api une erreur de type 401 |
| 56 | +* 2 : déclenchera sur l'api une erreur de type 403 |
| 57 | +* ... : declenchera une erreur 500 |
| 58 | + |
| 59 | +Exemple de script bash : |
| 60 | +```bash |
| 61 | +#!/bin/bash |
| 62 | +echo "Hello Word" |
| 63 | +sleep 2 |
| 64 | +echo "j'ai recu :" |
| 65 | +cat - |
| 66 | +echo "je provoque une erreur " >&2 |
| 67 | +exit 3 |
| 68 | +``` |
0 commit comments