Spécification initiale

Contexte

Script de recopie de pyramide depuis une livraison vers une donnée stockée

Ce script sera exécuté afin de produire une pyramide à destination de Rok4 depuis des données raster issues d’une livraison

Cette intégration permet de créer une nouvelle donnée stockée pyramide rok4 image diffusable ou d’en mettre à jour une déjà existante.

Données en entrée

  • une livraison de type ROK4-PYRAMID

Donnée en sortie

  • une donnée stockée de type ROK4-PYRAMID-RASTER ou ROK4-PYRAMID-VECTOR, stockée sur du S3, déjà existante (`MODIFYING)

Paramètres

  • non_existing : Enum(ERROR, SKIP, FORCE) par défaut à ERROR : indique le comportement à avoir pour une dalle qui n’existe pas dans la pyramide cible

  • process_size : bool par défaut à True : indique si on souhaite recalculer la taille de la pyramide après l’injection des dalles

Étapes et régles métier

  1. Contrôler les paramètres :

    • Voir toutes les contraintes ci-dessus (paramètres, type et nombre de données en entrée et en sortie, types des stockages)

    • le TMS doit être le même dans la livraison en entrée et la pyramide en sortie

    • Le format doit être le même dans la livraison en entrée et la pyramide en sortie. Pour la pyramide en sortie, le format est défini dans le fichier descriptor json de la pyramide. Le fichier <stored_data._id>json à la racine de la donnée stockée est utilisé comme fichier descriptor. La balise format du fichier doit être utilisée.

    • Si le format est celui d’une pyramide raster (qu’il y a un channels_number), il doit être le même dans la livraison en entrée et la pyramide en sortie

  2. Identifier les fichiers en entrée à traiter et la destination :

    • les paramètres de connection au S3 pour la récupération des fichiers et l’écriture des pyramides sont issus des variables globales du parameters.json (accès au S3), et également :

      • du storage de la livraison en entrée (inputs/uploads[0]/storage/type_infos/pot_name) et de la livraison en elle même : upload/{inputs/uploads[0]/_id}/

      • du storage de la donnée stockée en sortie (output/stored_data/storage/type_infos/pot_name) et de la donnée stockée en elle même : stored_data/{output/stored_data/_id}/

    • Pour chaque dalle livrée, il faut la recopier à l’emplacement final :

      • source : {inputs/uploads[0]/storage/type_infos/pot_name}/DATA_{level}_{column}_{row}.tif

      • destination : {output/stored_data/storage/type_infos/pot_name}/{output/stored_data/id}/{output/stored_data/id}/DATA_{level}_{column}_{row}

  3. Calculer les informations sur la donnée en sortie :

    • Dans output.stored_data :

      • size : si process_size à True, la taille complète des fichiers de la données stockée en sortie sur le S3 en fin de processus, en octets : à mettre à jour

    • Dans pipeline_status : Une ligne indiquant le status du script :

      • SUCCESS : L’intégration n’a pas rencontré de problème, pour aucun des fichiers de la livraison.

      • FAILURE : Une erreur est intervenu lors du calcul de pyramide :

        • Erreur de validation

      • TECHNICAL_ERROR : En cas d’erreur technique :

        • Mauvaise composition du parameters.json

        • Valeur inatendue dans le schéma JSON

        • Erreur de lecture / écriture dans le S3