Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Propriétés de la page
labelsoa-service
Date de lancementseptembre 2016
État du Service
État
subtletrue
colourGreen
titleProduction
ConcepteursDorian Becker, Alexandre Narbonne
Sourceshttps://github.com/gadzorg/gram2_api_server
Clés de routage écoutées
request.gramapi.group.update
Clés de routage émises
notify.account.created
notify.account.updated
notify.account.deleted
notify.group.created
notify.group.updated
notify.group.deleted
request.ldapd.account.update
request.ldapd.account.delete
request.ldapd.group.update
request.ldapd.group.delete

Présentation du service

Ce service fait l'interaction entre l'API GrAM et le système SOA

...

HébergementVOIR GrAM API 2Caractéristiques
ResourcesUser 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

Bloc de code
themeEclipse
titleExemple de fichier 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'

...

Clé de routageQuand ?Contenu du messageExemple de contenu
notify.account.createdLe compte a été créé dans le GrAM

key : l'uuid du compte

changes : la liste des changement sous la forme

Bloc de code
themeEclipse
languagejavascript
{
	"quoi": "Objet contenu dans l'attribut 'data' du message",
    "format": "JSON"  "attr1": [null,nouvelle_valeur_attr1],
  "attr2": [null,nouvelle_valeur_attr2]
}
Bloc de code
themeEclipse
languagejavascript
{  
   "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.updatedLe compte a été mis à jour dans le GrAM

key : l'uuid du compte

changes : la liste des changement sous la forme

Bloc de code
themeEclipse
languagejavascript
{
  "attr1": [ancienne_valeur_attr1,nouvelle_valeur_attr1],
  "attr2": [ancienne_valeur_attr2,nouvelle_valeur_attr2]
}
Bloc de code
themeEclipse
languagejavascript
{
  "key":"ae96e86a-c761-4ebe-a4c4-a31a226e7620",
  "changes":
    {
      "birthname": ["","VanelNaissance"],
      "email":["[email protected]","[email protected]"],
      "date_sortie_ecole":[null,"2002-01-01"]
    }
}
notify.account.deletedLe compte a été supprimé du GrAM
PAS ENCORE IMPLEMENTE 
key : l'uuid du compte
Bloc de code
themeEclipse
languagejavascript
{
  "key":"ae96e86a-c761-4ebe-a4c4-a31a226e7620",
}
notify.group.createdLe groupe a été créé dans le GrAM

key : l'uuid du compte

changes : la liste des changement sous la forme

Bloc de code
themeEclipse
languagejavascript
{
  "attr1": [null,nouvelle_valeur_attr1],
  "attr2": [null,nouvelle_valeur_attr2]
}

 

 

notify.group.updatedLe groupe a été mis à jour dans le GrAM

key : l'uuid du compte

changes : la liste des changement sous la forme

Bloc de code
themeEclipse
languagejavascript
{
  "attr1": [ancienne_valeur_attr1,nouvelle_valeur_attr1],
  "attr2": [ancienne_valeur_attr2,nouvelle_valeur_attr2]
}
Bloc de code
themeEclipse
languagejavascript
{
  "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
Bloc de code
themeEclipse
languagejavascript
{
  "key":"ae96e86a-c761-4ebe-a4c4-a31a226e7620",
}
Astuce

N'oubliez pas de mettre à jour la propriétés "Clés de routage émises" de la page avec les nouvelles routing keys

...

Clé de routageActions effectuéesContenu du messageExemple de contenu
request.gramapi.group.updateMet à jours les informations d'un groupe à partir des données du message, y compris la liste des membres
Bloc de code
themeEclipse
titleSCHEMA 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"
   ]
}
Bloc de code
themeEclipse
languagejavascript
{
	"quoi": "Objet contenu dans l'attribut 'data' du message",
    "format": "JSON"
}

...