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

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