sdi-checker/README.md
Guillaume RYCKELYNCK c6c2ee9c04 first commit
2024-06-22 22:00:42 +02:00

302 lines
9.2 KiB
Markdown

# 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