302 lines
9.2 KiB
Markdown
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
|