Ceci est une ancienne révision du document !
Mise à jour de TaxRef
Présentation des étapes pour migrer TaxRef malgré l'utilisation en production d'une version ancienne de TaxHub (v1.9.4). Réaliser d'abord toutes ces étapes en local avant de les reproduire en production.
Pré-requis : la base de données ne doit pas avoir évolué… Rechercher les éventuelles évolutions dans la liste des releases.
Migration de TaxRef en version :
- v17 depuis v16 : évolution de la base impactant la migration entre la v1.9.4 et la v1.14.0 ⇒ nécessite de créer la table
taxonomie.t_meta_taxref
dans script SQL de pré-détection. - v16 depuis v15 : pas d'évolution de la base impactant la migration entre la v1.9.4 et la v1.11.3.
Installation de la dernière version de TaxHub
- Se connecter sur l'hôte
web-srv
- Se placer dans le dossier
~/www/
:cd ~/www/
- Cloner le dépôt Taxhub :
git clone https://github.com/PnX-SI/TaxHub.git taxhub.taxref_v16
- Mettre à jour les sous-module si utilisation en local en mode "dev" :
git submodule init; git submodule update
- Se placer dans le dossier cloné :
cd ~/www/taxhub.taxref_v16
- Copier les fichiers de configuration :
cp settings.ini.sample settings.ini cp apptax/config.py.sample apptax/config.py
- Éditer le fichier
settings.ini
:vi settings.ini
- Modifier les 3 paramètres suivant :
db_host=10.0.1.20 # Database name db_name=geonature2db # Database owner username user_pg=geonatadmin # Database owner password user_pg_pass=<geonatadmin-password>
- Éditer le fichier
config.py
:vi apptax/config.py
- Modifier les 2 paramètres suivant :
SQLALCHEMY_DATABASE_URI = "postgresql://geonatadmin:<geonatadmin-password>@10.0.1.20:5432/geonature2db" SECRET_KEY = '<generate-super-secret-key-with-uuid>'
- Lancer l'installation du
venv
:./install_app.sh
- Activer le
venv
:source venv/bin/activate
- Lancer l'import de TaxRef :
flask taxref migrate-to-v16 import-taxref-v16
- Pas certain que cela soit utile si on utilise le scripts SQL
pre_detection.sql
mais on peut lancer la commande suivante pour tester d'éventuel changement réalisé dans la base :flask taxref migrate-to-v16 test-changes-detection
- Lors de la réalisation des tests en local, préparer une nouveau dossier de version de TaxRef sur le dépôt
sinp-<region>-data
:- Copier les fichiers csv générés par le script précédent dans le dossier
taxref/v16/csv/
du dépôt. - Créer les scripts SQL qui permettront la migration dans le dossier
taxref/v16/sql/
. Se baser sur la version précédente de TaxRef pour avoir des exemples de script SQL qu'il faudra adapté aux informations fournies dans les fichiers CSV.
- Lors de la mise en production, récupérer les fichiers SQL permettant la migration :
wget https://raw.githubusercontent.com/cbn-alpin/sinp-<region>-data/main/taxref/v<version>/sql/pre_detection.sql wget https://raw.githubusercontent.com/cbn-alpin/sinp-<region>-data/main/taxref/v<version>/sql/post_detection.sql
- Lancer la migration de TaxRef :
flask taxref migrate-to-v16 apply-changes --script_predetection ./pre_detection.sql --script_postdetection ./post_detection.sql
- NOTE : pour une raison inconnue, dans le cas du SINP AURA, il m'a fallu lancer à 2 reprises cette commande. Après l'import, 14 conflits sont indiqués. Après le premier lancement, il reste 8 conflits. Après le second, cela tombe 0 et la migration s'effectue correctement…
- Vérifier que la nouvelle version de TaxRef a bien été migré correctement ! Vérifier qu'un cd_nom disparu dans la v16 n'est plus présent dans votre table
taxonomie.taxref
et qu'un nouveau cd_nom ajouté à partir de la v16 s'y trouve bien. - Lier à nouveau les statuts de protection aux zones géographiques :
flask taxref link-bdc-statut-to-areas
- Désactiver à nouveau les textes de la BDC Statut qui ne vous sont pas nécessaire à votre installation :
- SINP PACA :
psql -h localhost -U geonatadmin -d geonature2db -f ~/data/db-geonature/data/sql/04_disable_status_text.sql
- SINP AURA :
psql -h localhost -U geonatadmin -d geonature2db -f ~/data/db-geonature/data/sql/003_disable_status_text.sql
- Ajouter les éventuels nouveaux textes de cette nouvelle version de Taxref à ne pas prendre en compte à votre script
04_disable_status_text.sql
.
Détail utilisation du script "flask taxref migrate-to-vXX"
- Lancer le script :
flask taxref migrate-to-v17 import-taxref-v17
- La récupération de toutes les informations permettant la migration définitive vers la dernière version de TaxRef nécessite de lancer plusieurs fois ce script. Des fichiers de sortie différents seront ainsi générés.
- Le fichier liste_changements.csv est généré. Le charger dans le Drive. Figer la ligne 1 et y ajouter des filtres.
- Dans ce fichier tous les changements ne sont pas à corriger. À l'aide des filtres de la ligne 1, afficher seulement les lignes dont la colonne
action
afficher seulement lignes commençant par "Conflicts with attributes". Sélectionner ces lignes et les colorer en rouge. - Avec la colonne
f_cd_ref
trier les résultat de A à Z : cela va regrouper les lignes par f_cd_ref et il sera plus simple de repérer les cd_ref à remplacer. - La colonne
f_cd_ref
indique le cd_ref retenu et la colonnei_cd_ref
indique le cd_ref remplacé. Pour chaquef_cd_ref
on va trouver une ligne avec la même valeur dansi_cd_ref
et dansf_cd_ref
, elle est à ignorer. Il faut repérer les lignes où ils sont différents.- Pour chaque ligne :
- récupérer le
i_cd_ref
et s'en servir pour supprimer les attributs correspondant de la tablecor_taxon_attributs
dans le script SQL de prédétection. - si la colonne
media_nb
indique une valeur non NULL, il faut aussi remplacer l'attribution du cd_ref pour les médias correspondant dans le script SQL de prédétection en récupérant les valeurs des colonnesi_cd_ref
etf_cd_ref
. Si plusieursi_cd_ref
sont fusionnés dans le mêmef_cd_ref
, utiliser une clause IN.
- Relancer le script en essayant d'appliquer les changements
flask taxref migrate-to-v17 apply-changes
et en indiquant cette fois l'utilisation des fichiers SQL de pré-détection et post-détection :flask taxref migrate-to-v17 apply-changes –script_predetection ./pre_detection.sql –script_postdetection ./post_detection.sql
- Le fichier [https://github.com/cbn-alpin/sinp-aura-data/blob/main/taxref/v17/csv/missing_cd_nom_into_database.csv| missing_cd_nom_into_database.csv]] est généré. Le charger dans le Drive dans un second onglet. Figer la ligne 1 et y ajouter des filtres.
- La colonne
table_name
permet de filtrer sur la table :gn_synthese.synthese
les changements à effectuer sur la table correspondante :- les lignes ayant la valeur "2" ou "3" dans la colonne
cd_raison_suppression
nécessitent de mettre à NULL le champcd_nom
dans la tablegn_synthese.synthese
à l'aide de requêtes SQL qui seront à ajouter dans le fichier ''pre_detection.sql''. - les lignes ayant la valeur "1" dans la colonne
cd_raison_suppression
nécessitent de remplacer la valeur du champcd_nom
dans la tablegn_synthese.synthese
à l'aide de requêtes SQL qui seront à ajouter dans le fichier ''pre_detection.sql''.
taxonomie.bib_noms
les changements à effectuer sur la table correspondante :- quelques soit les valeurs de la colonne
cd_raison_suppression
, il faudra supprimer les lignes correspondantes de la tablecor_nom_liste
etbib_noms
à l'aide de requêtes SQL qui seront à ajouter dans le fichier ''pre_detection.sql''. - les lignes ayant la valeur "1" dans la colonne
cd_raison_suppression
nécessitent de remplacer la valeur du champcd_nom
dans la tabletaxonomie.bib_noms
à l'aide de requêtes SQL qui seront à ajouter dans le fichier ''pre_detection.sql''. Si les requêtes de mise à jour pose problème | vis à vis du maintient temporaire de l'ancienne version de TaxRef, il est possible d'ajouter les cd_nom correspondant à la liste des lignes à supprimer dans la tablecor_nom_liste
et des lignes à supprimer dans la tabletaxonomie.bib_noms
.
- Lancer à nouveau le script en essayant d'appliquer les changements
flask taxref migrate-to-v17 apply-changes
, normalement le script SQLpre_detection.sql
devrait s'exécuter correctement mais le scriptpost_detection.sql
devrait générer des erreurs. En effet, ce script est exécuté avant d'avoir réaliser le changement de référentiel TaxRef, ainsi la réactivation des contraintes désactiver dans le scriptpre_detection.sql
peuvent générer de nouvelles erreurs. Voir ticket #495. Il est donc nécessaire de modifier temporairement TaxRef pour qu'ils ressemblent à la future version sur laquelle nous cherchons à migrer.