# sdi-checker Nouvelle application basée sur sdi-consistence-check. Elle reprend l'objectif initial de pouvoir vérifier la cohérence entre les données et métadonnées d'une IDG. A ce stade, les principales modifications sont les suivantes: - Intégration dands un CLI (via le module Click) avec la possibilité également de l'utiliser comme une application dédiée (via le module Python Prompt Toolkit). - Ajout de la notion "d'audits" (enregistrement au format JSON de tests préenregistrés). - Séparation des logs (cf. classe libs/logs.py) et des rapports (cf. classe libs/reports.py) afin de pouvoir les enregistrer dans différents formats (JSON, CSV, etc.) Installation: ``` $ git clone ... $ cd sdi-checker $ python -m venv venv $ ./venv/scripts/activate # windows $ source ./venv/bin/activate # linux $ pip install -r requirements.txt ``` Utilisation: ``` # Créer un premier audit $ python .\sdi-checker.py audits add --url https://www.datagrandest.fr/geoserver/araa/ows --name 'WMS de l'ARAA' --type WMS Liste des audits Nb. audits: 3/3 +----+---------------+------+------------------------------------------------+ | ID | NAME | TYPE | URL | +----+---------------+------+------------------------------------------------+ | 0 | WMS de l'ARAA | WMS | https://www.datagrandest.fr/geoserver/araa/ows | +----+---------------+------+------------------------------------------------+ # Créer un second audit $ python .\sdi-checker.py audits add --url https://www.datagrandest.fr/geoserver/araa/ows --name 'WFS de l'ARAA' --type WFS Liste des audits Nb. audits: 3/3 +----+---------------+------+------------------------------------------------+ | ID | NAME | TYPE | URL | +----+---------------+------+------------------------------------------------+ | 0 | WMS de l'ARAA | WMS | https://www.datagrandest.fr/geoserver/araa/ows | | 1 | WMS de l'ARAA | WFS | https://www.datagrandest.fr/geoserver/araa/ows | +----+---------------+------+------------------------------------------------+ # Créer un troisième audit $ python .\sdi-checker.py audits add --url https://www.datagrandest.fr/geoserver/wfs --name 'Audit de test' --type WFS Liste des audits Nb. audits: 3/3 +----+---------------+------+------------------------------------------------+ | ID | NAME | TYPE | URL | +----+---------------+------+------------------------------------------------+ | 0 | WMS de l'ARAA | WMS | https://www.datagrandest.fr/geoserver/araa/ows | | 1 | WMS de l'ARAA | WFS | https://www.datagrandest.fr/geoserver/araa/ows | | 2 | Audit de test | WFS | https://www.datagrandest.fr/geoserver/wfs | +----+---------------+------+------------------------------------------------+ # Modifier un audit $ python .\sdi-checker.py audits edit 2 --url https://www.datagrandest.fr/geoserver/wms --name 'Audit WMS' --type WMS Liste des audits Nb. audits: 3/3 +----+---------------+------+------------------------------------------------+ | ID | NAME | TYPE | URL | +----+---------------+------+------------------------------------------------+ | 0 | WMS de l'ARAA | WMS | https://www.datagrandest.fr/geoserver/araa/ows | | 1 | WMS de l'ARAA | WFS | https://www.datagrandest.fr/geoserver/araa/ows | | 2 | Audit WMS | WMS | https://www.datagrandest.fr/geoserver/wms | +----+---------------+------+------------------------------------------------+ # Supprimer un audit $ python .\sdi-checker.py audits delete 2 Do you want to delete audit 2 ? [y/N]: y Liste des audits Nb. audits: 3/3 +----+---------------+------+------------------------------------------------+ | ID | NAME | TYPE | URL | +----+---------------+------+------------------------------------------------+ | 0 | WMS de l'ARAA | WMS | https://www.datagrandest.fr/geoserver/araa/ows | | 1 | WMS de l'ARAA | WFS | https://www.datagrandest.fr/geoserver/araa/ows | +----+---------------+------+------------------------------------------------+ # Lister les audits $ python .\sdi-checker.py audits list Liste des audits Nb. audits: 3/3 +----+---------------+------+------------------------------------------------+ | ID | NAME | TYPE | URL | +----+---------------+------+------------------------------------------------+ | 0 | WMS de l'ARAA | WMS | https://www.datagrandest.fr/geoserver/araa/ows | | 1 | WMS de l'ARAA | WFS | https://www.datagrandest.fr/geoserver/araa/ows | +----+---------------+------+------------------------------------------------+ # Lancer un audit pré-enregistré $ python .\sdi-checker.py audits run 0 (...) # Lancer un audit à la volée et enregistrer le résultat dans le fichier 'araa_wfs.json' $ python .\sdi-checker.py check wfs https://www.datagrandest.fr/geoserver/araa/ows -ro araa_wfs.json (...) ``` ## Organisation des fichiers - 1 fichier JSON avec la liste des audits et leurs paramètres Fichier "audits.json" ``` json [{ "id": "md5" "name": "wms_araa" "description": "Service WMS ARAA", "url": "https://www.datagrandest.fr/geoserver/araa/ows", "last_check": "1709124512", "reports": ["data/araa/1709124512.json"] ... }, { }] ``` ## Liste des commandes (à compléter) ### audits #### list/ls = liste les audits déjà renseignés Paramètres: - SEARCH = filtrer la liste des audits contenant le terme "SEARCH" #### add Objectif : ajouter un nouvel audit Paramètres: - name NAME - description DESCRIPTION - url SERVER - type {WMS,WFS,CSW} - inspire {flexible,strict} - geoserver-to-check GEOSERVER_TO_CHECK [GEOSERVER_TO_CHECK ...] - check-layers - disable-ssl-verification - only-err - xunit - xunit-output XUNIT_OUTPUT - log-to-file LOG_TO_FILE - timeout TIMEOUT #### delete/remove/del/rm Objectif : supprimer un audit Paramètres: - NAME / ID #### edit Objectif : modifier les paramètres d'un audit Paramètres: - NAME / ID #### run Objectif : lancer la génération d'un rapport (à partir d'un audit existant en utilisant `audits run NAME/ID`) Paramètres: - NAME / ID - TYPE / URL / ... - save = faut-il enregistrer le rapport dans la BDD ### check Objectif : lancer la génération d'un rapport en indiquant les paramètre en ligne de commande #### wms Objectif : générer le rapport d'un web service WMS Paramètres: - ... #### wfs Objectif : générer le rapport d'un web service WFS Paramètres: - ... #### csw Objectif : générer le rapport d'un web service CSW Paramètres: - ... ### reports #### list AUDITS Objectif : Paramètres: #### errors REPORT Objectif : Paramètres: #### layers REPORT Objectif : Paramètres: #### worspaces REPORT Objectif : Paramètres: #### dashboard REPPORT Objectif : Paramètres: ## API d'interrogation des serveurs et rapports Cette API a vocation a pemrttre de générer et consulter des rapports pour une réutilisation dans d'autres applications. Les bases du ode se situent dans `sdi-checker/app_web`. **!! Les fonctionnalités de consultation des rapports et erreurs (ex.: http://127.0.0.1:8001/reports) ne sont actuellement plus fonctionnels suite à une modification profonde du fonctionnement de l'application SDI Checker.** Utilisation: ``` # Démarrer le serveur $ python .\sdi-checker.py web [MODE] ``` Les modes possibles sont: - 'prod' (défaut) : ouvre Webview - 'dev' : ouvre Webview en mode développement - 'browser' : ouvre l'application dans le navigateur - 'wsgi' : exécuter le serveur dans un contexte WSGI A terme, cette partie du code devrait faire l'objet d'un projet spécifique avec un dépôt dédié. ## UI La volonté à terme est de développer une interface simple d'usage de l'API SDI Checker. Ce développement fera l'objet d'un projet spécifique. ## TODOLIST ### DONE - [x] audits - Créer nouvelle commande "audits" - [x] audits_list - Créer la sous-commande "list" - [x] audits_list - Ajouter une fonction display pour afficher la liste des service sous forme de table - [x] audits_add - Créer la sous-commande "add" - [x] audits_delete - Créer la sous-commande "delete" - [x] audits_edit - Créer la sous-commande "edit" - [x] audits_run - Créer la sous-commande "run" (cf. "check wms") ### TODO - Réfléchir à l'architecture et au fonctionnement de l'application - Travailler sur la commande "check_wms" avec l'ensemble des paramètres définis (format, etc.) - Reprendre le travail sur la commande "check_wms" et le reporter sur "check_wfs" - Reprendre le travail sur la commande "check_csw" et le reporter sur "check_csw" - Etufier la sauvegarde en base de donnée (SQLite en local + PostGreSQL) - reports - Créer nouvelle commande "reports" (reprendre sdi-cc-report) - reports_list - Créer la sous-commande "list" (reprendre sdi-cc-report) - reports_errors - Créer la sous-commande "errors" (reprendre sdi-cc-report) - reports_layers - Créer la sous-commande "layers" (reprendre sdi-cc-report) - reports_workspaces - Créer la sous-commande "workspaces" (reprendre sdi-cc-report) - reports_dashboard - Créer la sous-commande "dashboard" (reprendre sdi-cc-report) - api - Mettre en place l'API (cf. app_web) - ui - Développer un UI simple