Commit 24c0f41e authored by Jonathan Schaeffer's avatar Jonathan Schaeffer
Browse files

doc

parent 40d6540b
# Container for webservice dataselect
# Webservice dataselect en container
Implements the FDSN dataselect webservice using RESIF's backend.
Ce projet est un empaquetage pour exécuter le webservice dataselect sous forme de container.
## How to run
Il dépend de plusieurs projets Git enregistrés en submodules.
### Prerquisites
Pour mettre à jour ces submodules, faire la manip suivante (dans cet exemple c'est wss-config)
* Archive volume : you need to map a volume of Miniseed data to `/mnt/nfs/summer/validated_seismic_data`
* BUD volume : you need to map a volume of BUD data to `/mnt/nfs/summer/bud_data`
* resifInv database access : provide the running container with the environment variables :
* `PGUSER`: postgres role wich can connect to resifInv, select on all tables in public schema and have all privileges in `dataselect` schema.
* `PGPASSWORD`: password for the role
* `PGDATABASE`: database name
* `PGHOST`: hostname of the SGBD hosting resifInv database
* `PGPORT`: port number
* resifAuth database access :
* `RESIFAUTH_PGHOST`
* `RESIFAUTH_PGPORT`
* `RESIFAUTH_USER`: this postgres role must have SELECT permissions on all tables in schema public in `RESIFAUTH_PGDATABASE`
* `RESIFAUTH_PASS`
* `RESIFAUTH_PGDATABASE`
* The permissions for this role are :
``` sql
grant SELECT on ws_roles to wsdataselect ;
grant SELECT on ws_users to wsdataselect ;
grant CONNECT on DATABASE resifAuth to wsdataselect;
```
git submodule update --remote --merge
git add deps-git/wss-config
git commit -m "update wss-config submodule"
git push
Le Dockerfile crée un container complet.
### Building
Before building, we need to get all the environment. This is done by running `prebuild.sh`.
Now you can build:
``` shell
docker build -t ws-dataselect .
docker run --rm --name ws-dataselect\
-e PGPASSWORD=XXXXXXXX\
-e PGUSER=plop\
-e PGPASSWORD=plop\
-e PGDATABASE=plop\
-e PGHOST=plop\
-e PGPORT=5432\
-e RESIFAUTH_PGHOST=plop\
-e RESIFAUTH_PGPORT=5432\
-e RESIFAUTH_USER=plop\
-e RESIFAUTH_PASS=plop\
-e RESIFAUTH_PGDATABASE=plop\
-p 8888:8080\
--mount type=bind,source=/mnt/summer/validated_seismic_data,target=/mnt/nfs/summer/validated_seismic_data\
--mount type=bind,source=/mnt/summer/bud_data,target=/mnt/nfs/summer/bud_data\
ws-dataselect
```
To test the service :
``` shell
wget localhost:8888/fdsnws/dataselect/1/query?net=FR&start=2020-02-02&end=2020-02-03
```
The interesting logs are sadly not available with `docker log`. You can see them here:
``` shell
docker exec -it ws-dataselect /bin/bash
tail -f /home/sysop/logs/wss-handler.log
tail -f /home/sysop/logs/resifDE.log
```
## Work notes
### 2020-02-07
La pile logicielle RESIF est copiée dans ce dossier par commodité, mais il faut trouver un meilleur moyen de la livrer.
Elle est constituée de 4 morceaux dans 4 dépôts git différents :
- wss-config
- wss-python-handler
- wss-resif-backend
- ws-extract-scripts
Je les ai rassemblés dans 3 répertoire (fusion de wss-python-handler et wss-resif-backend) afin de simplifier.
J'ai fait pas mal de modifications sur WSShandler.py notamment pour s'affranchir du lien symbollique qui détermine l'opération et pour mettre ça en option.
Cependant ceci n'est pas encore testé extensivement.
Il faudrait maintenant :
- exécuter ce docker dans un environnement foncitonnel (avec accès à une archive)
- passer une série de tests pour valider son fonctionnement
- trouver un bon moyen de gérer les sources
- faire évoluer un peu le logiciel (passage à python3 du backend par exemple)
Le fichier .gitlab-ci.yaml permet de construire et héberger ce container sur gitlab.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment