9.2 KiB
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"
[{
"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
- audits - Créer nouvelle commande "audits"
- audits_list - Créer la sous-commande "list"
- audits_list - Ajouter une fonction display pour afficher la liste des service sous forme de table
- audits_add - Créer la sous-commande "add"
- audits_delete - Créer la sous-commande "delete"
- audits_edit - Créer la sous-commande "edit"
- 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