Présentation du service
Ce service fait l'interaction entre l'API GrAM et le système SOA
Outre le fait de piloter les sous-système tel que le LDAP et les comptes GoogleApps, il permet d’exécuter des requêtes en mode "batch", notamment pour la mise à jour des groupes depuis le site Soce
Ce service est complètement intégré au sein de l'application GrAM API 2
Infos pour les Ops
Environnements
Développement
VHOST rabbitmq individuel pour chaque dev
Recette
Hébergement | VOIR GrAM API 2 |
---|---|
Resources | User rabbitmq : rec-gram |
Production
Hébergement | VOIR GrAM API 2 |
---|---|
Resources | User rabbitmq : rec-gram |
Dépendances extérieures
Aucune spécifiques au service rabbitMQ, de manière générale voir GrAM API 2
Déploiement
Configuration
voir GrAM API 2
L'application fonctionne soit avec des varaibles d'environnement, soit avec un fichier de configuration.
Le fichier de configuration est situé dans config/rabbitmq.yml
default: &default sender: gramapi host: localhost port: 5672 vhost: / queue_name: logs deferred_time: 5000 max_attempts: 10 exchange_name: "agoram_event_exchange" user: guest password: logging_key: "log" development: <<: *default test: <<: *default deferred_time: 10 max_attempts: 2 production: <<: *default
Tout ces attributs peuvent être indiquer en variable d'environnement en les mettant en majuscules et en prefixant le nom avec RABBITMQ_
Les variables d'environnement sont prioritaires sur le fichier de configuration
Exemple : RABBITMQ_HOST
Arret / Démarage
Sur Heroku :
Il suffit d'activer ou désactiver le dyno service_rabbitmq
En local :
Lancer la commande bundle exec rake gorg_service:run
pour démarrer le service
Ctrl+C pour le couper ou envoyer SIGINT
(kill -2
)
Installation
Infos pour les Dev'
Notifications générées
Clé de routage | Quand ? | Contenu du message | Exemple de contenu |
---|---|---|---|
notify.account.created | Le compte a été créé dans le GrAM | key : l'uuid du compte changes : la liste des changement sous la forme { "attr1": [null,nouvelle_valeur_attr1], "attr2": [null,nouvelle_valeur_attr2] } | { "key":"36a7e016-a300-4f52-85f4-6804dede6c6b", "changes":{ "uuid":[null,"36a7e016-a300-4f52-85f4-6804dede6c6b"], "hruid":[null,"paul.david-hewson.1986"], "id_soce":[null,1556001], "enabled":[null,true], "lastname":[null,"David Hewson"], "firstname":[null,"Paul"], "birthname":[null,""], "birth_firstname":[ null,""], "email":[null,"[email protected]"], "birthdate":[null,"1960-05-10"], "is_gadz":[null,true], "school_id":[null,""], "date_sortie_ecole":[null,"1990-12-12"], "buque_texte":[null,"Bono"], "buque_zaloeil":[null,"Bono"], "gadz_fams":[ null,"59"], "gadz_fams_zaloeil":[null,""], "gadz_proms_principale":[null,"1986"], "gadz_proms_secondaire":[null,""], "avatar_url":[null,"http://recette.soce.fr/images/"], "url":[null,"/api/v2/accounts/36a7e016-a300-4f52-85f4-6804dede6c6b"] } } |
notify.account.updated | Le compte a été mis à jour dans le GrAM | key : l'uuid du compte changes : la liste des changement sous la forme { "attr1": [ancienne_valeur_attr1,nouvelle_valeur_attr1], "attr2": [ancienne_valeur_attr2,nouvelle_valeur_attr2] } | { "key":"ae96e86a-c761-4ebe-a4c4-a31a226e7620", "changes": { "birthname": ["","VanelNaissance"], "email":["[email protected]","[email protected]"], "date_sortie_ecole":[null,"2002-01-01"] } } |
notify.account.deleted | Le compte a été supprimé du GrAM PAS ENCORE IMPLEMENTE | key : l'uuid du compte | { "key":"ae96e86a-c761-4ebe-a4c4-a31a226e7620", } |
notify.group.created | Le groupe a été créé dans le GrAM | key : l'uuid du compte changes : la liste des changement sous la forme { "attr1": [null,nouvelle_valeur_attr1], "attr2": [null,nouvelle_valeur_attr2] } |
|
notify.group.updated | Le groupe a été mis à jour dans le GrAM | key : l'uuid du compte changes : la liste des changement sous la forme { "attr1": [ancienne_valeur_attr1,nouvelle_valeur_attr1], "attr2": [ancienne_valeur_attr2,nouvelle_valeur_attr2] } | { "key":"ae96e86a-c761-4ebe-a4c4-a31a226e7620", "changes": { "name": ["roots","Les Roots"], } } |
notify.group.deleted | Le groupe a été supprimé du GrAM PAS ENCORE IMPLEMENTE | key : l'uuid du groupe | { "key":"ae96e86a-c761-4ebe-a4c4-a31a226e7620", } |
N'oubliez pas de mettre à jour la propriétés "Clés de routage émises" de la page avec les nouvelles routing keys
Changement des spécifications
Si vous modifiez le format d'une notification existante, essayez au maximum de conserver les données précédentes et pensez à reporter les changements sur les services clients de cette notification
Requêtes faites à d'autres services
Clé de routage | Commentaires |
---|---|
N'oubliez pas de mettre à jour la propriétés "Clés de routage émise" de la page avec les nouvelles routing keys
Requetes écoutées
Clé de routage | Actions effectuées | Contenu du message | Exemple de contenu |
---|---|---|---|
request.gramapi.group.update | Met à jours les informations d'un groupe à partir des données du message, y compris la liste des membres | SCHEMA JSON { "$schema":"http://json-schema.org/draft-04/schema#", "title":"Create Google Account message schema", "type":"object", "properties":{ "group_uuid":{ "type":"string", "description":"The unique identifier of linked GrAM Account", "pattern":"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" }, "name":{ "type":"string", "description":"Long name of the group" }, "short_name":{ "type":"string", "description":"String identifier of the group" }, "description":{ "type":"string", "description":"Description text of the group" }, "members":{ "type":"array", "description":"UUIDs of group members", "items":{ "type":"string", "pattern":"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" } } }, "additionalProperties":true, "required":[ "group_uuid", "name", "short_name", "description", "members" ] } | { "group_uuid": "ae96e86a-c761-4ebe-a4c4-a31a226e7620", "name": "roots", "members" : [ "a911e4ea-b205-433b-bb42-711faa10be27", "4fa874db-7730-4105-b550-8ea991907240" ] } |
N'oubliez pas de mettre à jour la propriétés "Clés de routage écoutées" de la page avec les nouvelles routing keys
Changement des spécifications
Si vous modifiez le format d'une requete existante, pensez à reporter les changements sur les services clients de cette requete
Notifications écoutées
Clé de routage | Actions effectuées |
---|---|
N'oubliez pas de mettre à jour la propriétés "Clés de routage écoutées" de la page avec les nouvelles routing keys