Spécification initiale#
Voir le ticket JIRA
Contexte#
Gérer les publications & co pour les configurations de type ITINERARY-ISOCURVE
Description#
Les tâches de cet agents de publication sont de:
Gérer les publication / dépublication / synchronisation en provenance de l’entrepôt vers du
ITINERARY-ISOCURVE
Alimenter son service lors du démarrage de celui-ci
Points d’attention#
Le pot commun IGNGPF-319 reprend les opérations génériques à implémenter, ainsi que les éléments du message principaux : seul le détails du type_infos
est repris ici.
Régles de gestion#
Le type de l’offre doit être
ITINERARY-ISOCURVE
Le
type_infos
du message de publication est celui indiqué dans la configuration, à quelques exceptions (voir ci après)used_data/stored_data
va contenir la “vraie” structure de la donnée stockée
stored_data* {
_id* string
name* string
type* stringEnum: --> GRAPHE-DB, GRAPH-OSRM ou GRAPH-VALHALLA
srs string
extent { x1 x2 y1 y2}
type_infos {
--> Voir les tickets IGNGPF-1107, IGNGPF-1108, IGNGPF-1109
}
storage* {
_id* string
name* string
type* string
type_infos* {
--> Voir ci-dessous
}
}
used_data/stored_data/storage
va contenir la “vraie” structure du stockage avec untype_infos
qui dépend du type de stockage :S3
ouPOSTGRESQL-ROUTING
l’agent de publication doit :
Utiliser les mécanisme commun de pyroger pour gérer les cas de démarrage et la reception des messages à sa destination, en appliquant les principes de publication / dépublication / synchronisation spécifique décrits ci-dessous
Publication : à partir de la configuration et disponible dans la balise
type_infos
, l’agent de publication va:Créer les fichiers de configurations road2 via l’utilitaire road2config disponible via le paquet python route-graph-generator
Copier ces fichiers dans le répertoire des resources et sources du service road2
Dans le cas des graphes OSRM et Valhalla, les fichiers disponibles dans le stockage objet doivent être copiés sur un volume partagé avec le endpoint
Afin d’éviter de recopier plusieurs fois les mêmes données, on vérifie le hash md5 de la stored data sur le S3. S’il est identique à celui présent sur le endpoint, le téléchargement n’est pas effectué et l’on garde la donnée disponible
Le fichier de hash md5 de la stored data sur le S3 est copié sur le endpoint
Attention : il s’agit d’une pratique qui ne correspond pas au comportement attendu dans l’entrepot. Cependant les utilitaires OSRM et Valhalla utilisés pour faire le calcul d’itinéraire ne supportent pas le stockage objet.
Récupérer le nom du service associé au endpoint road2 : requete sur route
/admin/1.0.0/services
Demander le redémarrage du service road2 via une requête sur la route
/admin/services/:service/restart
Dépublication : à partir de la configuration et disponible dans la balise
type_infos
, l’agent de publication va:Récupérer les sources Road2 à supprimer depuis le layername de la configuration à dépublier, dans le fichier .resource
Supprimer le fichier de resource associé à la configuration
Récupérér l’ensemble des sources encore utilisées par Road2 depuis tout les fichiers de resource
Supprimer les sources de la resource à dépublier qui ne sont pas utilisées:
Suppression des répertoires indiqués dans la balise storage:
répertoire des graphes pour OSRM
répertoire des tuiles pour Valhalla
fichier de configuration de base pour PGR
Suppression du fichier .source -Récupérer le nom du service associé au endpoint road2 : requete sur route
/admin/1.0.0/services
Demander le redémarrage du service road2 via une requête sur la route
/admin/services/:service/restart
Synchronisation: à partir de la configuration et disponible dans la balise
type_infos
, l’agent de publication va:Récupérer les sources Road2 utilisées par la configuration de publication actuelle depuis la définition de la resource à modifier dans le fichier .resource
Effectuer une nouvelle publication avec la nouvelle configuration. Si les données sont déjà disponibles, elles ne seront pas retélécharger.
Récupérér l’ensemble des sources encore utilisées par Road2 depuis tout les fichiers de resource
Supprimer les sources de la resource initiale (avant modification) qui ne sont pas utilisées:
Suppression des répertoires indiqués dans la balise storage:
répertoire des graphes pour OSRM
répertoire des tuiles pour Valhalla
fichier de configuration de base pour PGR
Suppression du fichier .source
Lors du redémarrage du service, si la requête retourne une erreur, la publication ou synchronisation doit :
retourner un statut ERR
supprimer les fichiers copiés sur le endpoint (resource, sources, graphes ou configuration de base)
un restart du service est effectué pour que les autres configurations restent disponibles
Cas d’erreurs :
les graphes copiés ne peuvent pas être utilisés par Road2 lors du redémarrage du service
la base de données pgrouting n’est pas accessible
la configuration indiquée n’est pas supportée par Road2
les CRS indiqués ne sont pas supportés par Road2 (dans les stored data ou la configuration des projections de la resource)