CanDIGv2 Architecture
Repo structure
Section titled “Repo structure”Simplified repo structure with relevant files.
Directoryetc/
Directoryenv/
- example.env Copy and edit to configure variables
- nightly_env.sh
Directorytests/ Integration and performance tests
- test_integration.py Integration tests
Directoryvenv/ script, requirements for
candig
venv- activate.sh Activate candig conda env
- requirements.txt Dependencies for the stack
Directorylib/ submodule directories, docker compose, setup scripts and repos
- …
- Makefile
- create_service_store.sh
- nightly_build.sh Script that can deploy stack nightly
- nightly_build_token.py Post nightly results to Slack
- post_build.sh Runs after to build to check running containers
- pre-build-check.sh Runs before build and checks dependencies
- settings.py Gets env variables from .env
- setup_hosts.sh Sets up hosts if
LOCAL_IP_ADDR
not set - site_admin_token.py
List of Services and Components
Section titled “List of Services and Components”The following table lists the individual repos for each service and helper library developed by the CanDIG team that contribute to the CanDIGv2 stack.
Service/Component Name | Source | Description |
---|---|---|
authx | candigv2-authx | Library to facilitate interacting with AuthZ/AuthN services, Keycloak, Tyk, Opa, Vault & Access to minIO S3 objects |
CanDIG Data Portal | candig-data-portal | Front-end User interface for CanDIG Services |
CanDIGv2 Ingest Service | candigv2-ingest | Ingests clinical and genomic data into the CanDIG infrastructure. |
Clinical ETL Code | clinical_ETL_code | Code to convert spreadsheet format into the MoH data model in preparation for ingest into katsu |
Federation Service | federation-service | Distributes requests across each federated node of the distributed infrastructure |
HTSGet | htsget_app | Implementation of GA4GH htsget API which ingests and indexes VCF files and stores GA4GH DRS objects for retrieval |
Katsu | katsu | Manages the clinical metadata in a PostgreSQL database |
CanDIG OPA | candig-opa | Manages role-based access policies |
CanDIG Query service | candigv2-query | Manages front-end querying of services |
CanDIG logging | candigv2-logging | Logging package to unify logging across all services |
As well as in-house developed services, the CanDIG stack relies on external software which is configured to work within the stack, configurations are found in the /lib
folder for each software, these include:
Service/Component Name | Role |
---|---|
Keycloak | Authentication management |
minio | Object storage for genomic files |
OPA | Manages role-based access policies |
Tyk | API management and redirection |
Vault | Secret and password management |
Adding a new service
Section titled “Adding a new service”New services can be added under lib
directory. Please refer to the
template for new services README for more details.
diagram