Présentation du service
Ce service offre une couche d'abstraction vis à vis du système de mailing lists. Il permet notament le passage à GoogleApps comme gestionnaire système d'hébergement des mailingin lists
Cette fonction était auparavant portée directement via platal via une interface XML-RPC avec Mailman2
Le passage a un micro service à était décider afin de permettre de changer à nouveau de système de gestion de mailing lists en cas de problème avec Google
Ce service est autonome et peut-être stateless
Infos pour les Ops
Environnements
Développement
Domaine Google Apps de recette Poubs.org
VHost rabbit MQ pour chaque developpeurs
Recette
Hébergement | Heroku |
---|---|
Caractéristiques | App rec-mailling-lists-daemon sur appartenant à l'utilisateur [email protected] |
Resources |
|
Production
Hébergement | Heroku |
---|---|
Caractéristiques | App rec-mailling-lists-daemon sur appartenant à l'utilisateur [email protected] |
Resources |
|
Dépendances extérieures
API Google
Redis pour être stateless (stockage des token de l'api Google)
Déploiement
Configuration
L'application fonctionne soit avec des variables d'environnement, soit avec un fichier de configuration.
Le fichier de configuration est situé dans config/config.yml
default: &default application_name: GoogleDirectoryDaemon-test application_id: gdd authorizer: DefaultAuthorizer admin_user_id: my.user@my_org.com message_handler_map: request.gapps.create: DefaultMessageHandler rabbitmq_host: localhost rabbitmq_port: 5672 rabbitmq_vhost: / rabbitmq_queue_name: gdirdaemon rabbitmq_deferred_time: 1800000 rabbitmq_max_attempts: 48 exchange_name: exchange rabbitmq_user: my_user rabbitmq_password: P4ssWord log_routing_key:"logging.key" logger_level: DEBUG development: <<: *default test: <<: *default production: <<: *default
Tout ces attributs peuvent être indiquer en variable d'environnement en les mettant en majuscules et en prefixant le nom avec GMLD_
Les variables d'environnement sont prioritaires sur le fichier de configuration
Exemple : GMLD_RABBITMQ_HOST
L'environnement utilisé est défini par la variable d'environnement GOOGLE_DIRECTORY_DAEMON_ENV
et à pour valeur "development" par défaut
La variable logger_level
permet de définir la verbosité des logs. Les valeurs autorisées sont :
- DEBUG - valeur par défaut
- INFO
- WARN
- ERROR
- FATAL
Pour fonctionner les API google on besoin d'un json appelé client_secret.json.
Ce fichier est stocké dans le dossier secrets/
Il est également possible de stocker le JSON dans la variable d'environnement GMLD_GOOGLE_CLIENT_SECRET
Si la variable d'environnement REDIS_URL est définie l'appli stockera les token de connexion dans le Redis, sinon ils seront stocké dans secrets/tokens.yaml
Arret / Démarage
Sur Heroku :
Il suffit d'activer ou désactiver le dyno worker
En local :
Lancer l'executable bin/worker
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 |
---|---|---|---|
|
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.mailinglist.update | Crée ou met à jour la liste de diffusion pour atteindre l'état spécifié |
| { "name":"PouetList3", "primary_email":"[email protected]", "description":"Liste de test de Karine", "aliases":[ "[email protected]" ], "members":[ "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]" ], "message_max_bytes_size":500, "object_tag":"Test Message Header", "message_footer":"Test Message Footer", "is_archived":true, "distribution_policy":"open" } |
request.mailinglist.delete | Supprime la mailing list | La clé mailling_list_key | { "mailling_list_key":"[email protected]", } |
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
{ "name":"PouetList3", "primary_email":"[email protected]", "description":"Liste de test de Karine", "aliases":[ "[email protected]" ], "members":[ "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]" ], "message_max_bytes_size":500, "object_tag":"Test Message Header", "message_footer":"Test Message Footer", "is_archived":true, "distribution_policy":"open" }