Backend for the ChRIS store. This is a Django-PostgreSQL project that houses descriptions of ChRIS plugin-apps and workflows for registering to a ChRIS CUBE instance.
This page describes how to quickly get the set of services comprising the backend up and running for development and how to run the automated tests. A production deployment of the ChRIS store backend services is also explained.
Currently tested platforms:
Ubuntu 18.04+ and MAC OS X 10.14+ and Fedora 31+
(Additional instructions for Fedora)Docker 18.06.0+
Docker Compose 1.27.0+
Consult this page: https://docs.docker.com/engine/install/linux-postinstall/
If you read nothing else on this page, and just want to get an instance of the ChRIS store backend services up and running with no mess, no fuss:
git clone https://github.com/FNNDSC/ChRIS_store.git
cd ChRIS_store
./make.sh down ; ./make.sh up
The resulting instance uses the default Django development server and therefore is not suitable for production.
Start a local Docker Swarm cluster if not already started:
docker swarm init --advertise-addr 127.0.0.1
Fetch source code:
git clone https://github.com/FNNDSC/ChRIS_store
cd ChRIS_store
Create secrets
directory:
mkdir swarm/prod/secrets
Now copy all the required secret configuration files into the secrets
directory, please take a look at
this
wiki page to learn more about these files
Deploy ChRIS store backend containers:
./deploy.sh up
Remove ChRIS store backend containers:
cd ChRIS_store
./deploy.sh down
Remove the local Docker Swarm cluster if desired:
docker swarm leave --force
Start ChRIS Store services by running the make bash script from the repository source directory
git clone https://github.com/FNNDSC/ChRIS_store.git
./make.sh up
All the steps performed by the above script are properly documented in the script itself.
After running this script all the automated tests should have successfully run and a Django development server should be running in interactive mode in this terminal.
Open another terminal and run the Unit and Integration tests within the container running the Django server:
To run only the Unit tests:
cd ChRIS_store
docker-compose -f docker-compose_dev.yml exec chris_store_dev python manage.py test --exclude-tag integration
To run only the Integration tests:
docker-compose -f docker-compose_dev.yml exec chris_store_dev python manage.py test --tag integration
To run all the tests:
docker-compose -f docker-compose_dev.yml exec chris_store_dev python manage.py test
Make sure the store_backend/
dir is world writable. Then type:
docker-compose -f docker-compose_dev.yml exec chris_store_dev coverage run --source=plugins,pipelines,users manage.py test
docker-compose -f docker-compose_dev.yml exec chris_store_dev coverage report
Using HTTPie to play with the REST API
http http://localhost:8010/api/v1/
First save the plugin representation json file by running the plugin with the --savejson
flag:
docker run --rm -v /tmp/json:/json fnndsc/pl-simplefsapp simplefsapp --savejson /json
Then upload the plugin representation json file to the ChRIS Store as part of the POST
request:
http -a cubeadmin:cubeadmin1234 -f POST http://localhost:8010/api/v1/plugins/ dock_image=fnndsc/pl-simplefsapp descriptor_file@/tmp/json/SimpleFSApp.json public_repo=https://github.com/FNNDSC/pl-simplefsapp name=pl-simplefsapp
http POST http://localhost:8010/api/v1/users/ Content-Type:application/vnd.collection+json Accept:application/vnd.collection+json template:='{"data":[{"name":"email","value":"developer@babymri.org"}, {"name":"password","value":"newstoreuser1234"}, {"name":"username","value":"newstoreuser"}]}'
Stop and remove ChRIS Store services by running the make bash script from the repository source directory
./make.sh down
Available here.
Install Sphinx and the http extension (useful to document the REST API)
pip install Sphinx
pip install sphinxcontrib-httpdomain
Build the html documentation
cd docs/
make html
If you are interested in contributing or joining us, Check here.