mirror of
https://github.com/samply/bridgehead.git
synced 2025-06-16 20:40:15 +02:00
Compare commits
29 Commits
metadata_f
...
feature/ad
Author | SHA1 | Date | |
---|---|---|---|
0967a691f4 | |||
1cb48c9192 | |||
7b3f605d6c | |||
0b7fc9c14e | |||
8d2104f074 | |||
2d6ee5b898 | |||
9c2185e68a | |||
c6bb44b107 | |||
48a297ecb2 | |||
5d94bac0e2 | |||
83555540f5 | |||
8a7d766581 | |||
635896b8f4 | |||
b074b865cd | |||
e396e00178 | |||
ecb29830e4 | |||
98121c17e8 | |||
e38511e118 | |||
8334fac84d | |||
8000356b57 | |||
74d8e68d96 | |||
c568a56651 | |||
8384143387 | |||
8fe73a8123 | |||
bca63e82a9 | |||
fa0d9fb8b4 | |||
139fcecabe | |||
2058a7a5c9 | |||
47364f999e |
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
* @samply/bridgehead-developers
|
24
README.md
24
README.md
@ -23,7 +23,6 @@ This repository is the starting point for any information and tools you will nee
|
|||||||
- [File structure](#file-structure)
|
- [File structure](#file-structure)
|
||||||
- [BBMRI-ERIC Directory entry needed](#bbmri-eric-directory-entry-needed)
|
- [BBMRI-ERIC Directory entry needed](#bbmri-eric-directory-entry-needed)
|
||||||
- [Loading data](#loading-data)
|
- [Loading data](#loading-data)
|
||||||
- [Metadata feedback](#metadata-feedback)
|
|
||||||
4. [Things you should know](#things-you-should-know)
|
4. [Things you should know](#things-you-should-know)
|
||||||
- [Auto-Updates](#auto-updates)
|
- [Auto-Updates](#auto-updates)
|
||||||
- [Auto-Backups](#auto-backups)
|
- [Auto-Backups](#auto-backups)
|
||||||
@ -155,8 +154,7 @@ Pay special attention to:
|
|||||||
Clone the bridgehead repository:
|
Clone the bridgehead repository:
|
||||||
```shell
|
```shell
|
||||||
sudo mkdir -p /srv/docker/
|
sudo mkdir -p /srv/docker/
|
||||||
sudo git clone https://github.com/samply/bridgehead.git /srv/docker/bridgehead
|
sudo git clone -b main https://github.com/samply/bridgehead.git /srv/docker/bridgehead
|
||||||
sudo git checkout metadata_fb # Only needed if you want to use metadata feedback
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, run the installation script:
|
Then, run the installation script:
|
||||||
@ -349,26 +347,6 @@ Normally, you will need to build your own ETL to feed the Bridgehead. However, t
|
|||||||
|
|
||||||
You can find the profiles for generating FHIR in [Simplifier](https://simplifier.net/bbmri.de/~resources?category=Profile).
|
You can find the profiles for generating FHIR in [Simplifier](https://simplifier.net/bbmri.de/~resources?category=Profile).
|
||||||
|
|
||||||
### Metadata feedback
|
|
||||||
|
|
||||||
The Bridgehead comes with a tool that allows you to associate metadata with samples. Multiple arbitrary text strings are allowed. A typical use case would be publications based on research using a sample. Here, one could lay down the DOI of the publication in the sample.
|
|
||||||
|
|
||||||
Full details of the system can be found [here](https://github.com/samply/feedback-deployment). To avail yourself of this feature, you need to
|
|
||||||
|
|
||||||
- Use the bbmri project.
|
|
||||||
- work with the ```metadata_fb``` branch of the Bridgehead repository.
|
|
||||||
- Build the feedback-agent Docker container (more details [here](https://github.com/samply/feedback-agent/)).
|
|
||||||
- Build the feedback-agent-ui Docker container (more details [here](https://github.com/samply/feedback-agent-ui/)).
|
|
||||||
|
|
||||||
The following extra environment variables need to be added to your ```/etc/bridgehead/bbmri.conf``` file:
|
|
||||||
|
|
||||||
``` code
|
|
||||||
ENABLE_EXPORTER=true
|
|
||||||
ENABLE_FEEDBACK_AGENT=true
|
|
||||||
FEEDBACK_HUB_URL=<URL for central feedback hub backend API>
|
|
||||||
FOCUS_RETRY_COUNT=256
|
|
||||||
```
|
|
||||||
|
|
||||||
## Things you should know
|
## Things you should know
|
||||||
|
|
||||||
### Auto-Updates
|
### Auto-Updates
|
||||||
|
@ -22,7 +22,6 @@ services:
|
|||||||
BROKER_URL: ${ERIC_BROKER_URL}
|
BROKER_URL: ${ERIC_BROKER_URL}
|
||||||
PROXY_ID: ${ERIC_PROXY_ID}
|
PROXY_ID: ${ERIC_PROXY_ID}
|
||||||
APP_focus_KEY: ${ERIC_FOCUS_BEAM_SECRET_SHORT}
|
APP_focus_KEY: ${ERIC_FOCUS_BEAM_SECRET_SHORT}
|
||||||
APP_feedback-agent_KEY: ${FEEDBACK_AGENT_BEAM_SECRET}
|
|
||||||
PRIVKEY_FILE: /run/secrets/proxy.pem
|
PRIVKEY_FILE: /run/secrets/proxy.pem
|
||||||
ALL_PROXY: http://forward_proxy:3128
|
ALL_PROXY: http://forward_proxy:3128
|
||||||
TLS_CA_CERTIFICATES_DIR: /conf/trusted-ca-certs
|
TLS_CA_CERTIFICATES_DIR: /conf/trusted-ca-certs
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
# Exporter and Reporter
|
|
||||||
|
|
||||||
|
|
||||||
## Exporter
|
|
||||||
The exporter is a REST API that exports the data of the different databases of the bridgehead in a set of tables.
|
|
||||||
It can accept different output formats as CSV, Excel, JSON or XML. It can also export data into Opal.
|
|
||||||
|
|
||||||
## Exporter-DB
|
|
||||||
It is a database to save queries for its execution in the exporter.
|
|
||||||
The exporter manages also the different executions of the same query in through the database.
|
|
||||||
|
|
||||||
## Reporter
|
|
||||||
This component is a plugin of the exporter that allows to create more complex Excel reports described in templates.
|
|
||||||
It is compatible with different template engines as Groovy, Thymeleaf,...
|
|
||||||
It is perfect to generate a document as our traditional CCP quality report.
|
|
@ -1,59 +0,0 @@
|
|||||||
version: "3.7"
|
|
||||||
|
|
||||||
services:
|
|
||||||
feedback-agent-ui:
|
|
||||||
image: "samply/feedback-agent-ui"
|
|
||||||
environment:
|
|
||||||
- VUE_APP_EXPORTER_URL=https://localhost/ccp-exporter
|
|
||||||
- VUE_APP_FB_BACKEND_URL=http://localhost:8072
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
# HTTPS
|
|
||||||
- traefik.http.routers.feedback_agent_ui_ccp_https.rule=PathPrefix(`/ccp-feedback-agent-ui`)
|
|
||||||
- traefik.http.services.feedback_agent_ui_ccp_https.loadbalancer.server.port=8096
|
|
||||||
- traefik.http.routers.feedback_agent_ui_ccp_https.entrypoints=websecure
|
|
||||||
- traefik.http.routers.feedback_agent_ui_ccp_https.tls=true
|
|
||||||
feedback-agent:
|
|
||||||
image: "samply/feedback-agent"
|
|
||||||
environment:
|
|
||||||
- SPRING_DATASOURCE_URL=jdbc:postgresql://feedback-agent-db:5432/compose-postgres
|
|
||||||
- SPRING_DATASOURCE_USERNAME=compose-postgres
|
|
||||||
- SPRING_DATASOURCE_PASSWORD=${FEEDBACK_AGENT_DB_PASSWORD}
|
|
||||||
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
|
|
||||||
- BEAM_PROXY_URI=http://beam-proxy-eric:8081
|
|
||||||
- FEEDBACK_HUB_URL=${FEEDBACK_HUB_URL}
|
|
||||||
- BLAZE_BASE_URL=http://blaze:8080/fhir
|
|
||||||
- FEEDBACK_AGENT_SECRET=${FEEDBACK_AGENT_BEAM_SECRET}
|
|
||||||
- FEEDBACK_AGENT_BEAM_ID=feedback-agent.${ERIC_PROXY_ID}
|
|
||||||
- FEEDBACK_HUB_BEAM_ID=feedback-hub.feedback-central.${ERIC_BROKER_ID}
|
|
||||||
- EXPORTER_API_KEY=${EXPORTER_API_KEY}
|
|
||||||
- CORS_ALLOWED_ORIGINS="https://${HOST}
|
|
||||||
networks:
|
|
||||||
# Only needed for local testing.
|
|
||||||
- feedback
|
|
||||||
- default
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
# HTTPS
|
|
||||||
- traefik.http.routers.feedback_agent_ccp_https.rule=PathPrefix(`/ccp-feedback-agent`)
|
|
||||||
- traefik.http.services.feedback_agent_ccp_https.loadbalancer.server.port=8072
|
|
||||||
- traefik.http.routers.feedback_agent_ccp_https.entrypoints=websecure
|
|
||||||
- traefik.http.middlewares.feedback_agent_ccp_https_strip.stripprefix.prefixes=/ccp-feedback-agent
|
|
||||||
- traefik.http.routers.feedback_agent_ccp_https.middlewares=feedback_agent_ccp_https_strip
|
|
||||||
- traefik.http.routers.feedback_agent_ccp_https.tls=true
|
|
||||||
feedback-agent-db:
|
|
||||||
image: 'postgres:13.1-alpine'
|
|
||||||
container_name: feedback-agent-db
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=compose-postgres
|
|
||||||
- POSTGRES_PASSWORD=${FEEDBACK_AGENT_DB_PASSWORD}
|
|
||||||
|
|
||||||
# This is needed when you run both agent and hub locally in a test
|
|
||||||
# environment. Not necessary in production, though it probably won't
|
|
||||||
# cause any problems.
|
|
||||||
networks:
|
|
||||||
# Network to connect agent and hub.
|
|
||||||
feedback:
|
|
||||||
name: feedback
|
|
||||||
driver: bridge
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [ "$ENABLE_FEEDBACK_AGENT" == true ]; then
|
|
||||||
OVERRIDE+=" -f ./$PROJECT/modules/feedback-agent-compose.yml"
|
|
||||||
FEEDBACK_AGENT_BEAM_SECRET="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)"
|
|
||||||
FEEDBACK_AGENT_DB_PASSWORD="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)"
|
|
||||||
fi
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
|||||||
# Metadata feedback agent
|
|
||||||
|
|
||||||
This component can be used to choose the sample to be associated
|
|
||||||
with a given piece of metadata (generally the ID of a publication
|
|
||||||
relating to research done with the sample).
|
|
||||||
|
|
@ -8,7 +8,8 @@ services:
|
|||||||
BASE_URL: "http://bridgehead-cce-blaze:8080"
|
BASE_URL: "http://bridgehead-cce-blaze:8080"
|
||||||
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
||||||
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
||||||
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
|
DB_BLOCK_CACHE_SIZE: ${BLAZE_MEMORY_CAP}
|
||||||
|
CQL_EXPR_CACHE_SIZE: ${BLAZE_CQL_CACHE_CAP:-32}
|
||||||
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
volumes:
|
volumes:
|
||||||
- "blaze-data:/app/data"
|
- "blaze-data:/app/data"
|
||||||
@ -31,6 +32,10 @@ services:
|
|||||||
BEAM_PROXY_URL: http://beam-proxy:8081
|
BEAM_PROXY_URL: http://beam-proxy:8081
|
||||||
RETRY_COUNT: ${FOCUS_RETRY_COUNT}
|
RETRY_COUNT: ${FOCUS_RETRY_COUNT}
|
||||||
EPSILON: 0.28
|
EPSILON: 0.28
|
||||||
|
QUERIES_TO_CACHE: '/queries_to_cache.conf'
|
||||||
|
ENDPOINT_TYPE: ${FOCUS_ENDPOINT_TYPE:-blaze}
|
||||||
|
volumes:
|
||||||
|
- /srv/docker/bridgehead/cce/queries_to_cache.conf:/queries_to_cache.conf:ro
|
||||||
depends_on:
|
depends_on:
|
||||||
- "beam-proxy"
|
- "beam-proxy"
|
||||||
- "blaze"
|
- "blaze"
|
||||||
|
6
cce/modules/export-and-qb.curl-templates
Normal file
6
cce/modules/export-and-qb.curl-templates
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Full Excel Export
|
||||||
|
curl --location --request POST 'https://${HOST}/cce-exporter/request?query=Patient&query-format=FHIR_PATH&template-id=ccp&output-format=EXCEL' \
|
||||||
|
--header 'x-api-key: ${EXPORT_API_KEY}'
|
||||||
|
|
||||||
|
# QB
|
||||||
|
curl --location --request POST 'https://${HOST}/cce-reporter/generate?template-id=ccp'
|
@ -3,65 +3,70 @@ version: "3.7"
|
|||||||
services:
|
services:
|
||||||
exporter:
|
exporter:
|
||||||
image: docker.verbis.dkfz.de/ccp/dktk-exporter:latest
|
image: docker.verbis.dkfz.de/ccp/dktk-exporter:latest
|
||||||
container_name: bridgehead-ccp-exporter
|
container_name: bridgehead-cce-exporter
|
||||||
environment:
|
environment:
|
||||||
JAVA_OPTS: "-Xms1G -Xmx8G -XX:+UseG1GC"
|
JAVA_OPTS: "-Xms1G -Xmx8G -XX:+UseG1GC"
|
||||||
LOG_LEVEL: "INFO"
|
LOG_LEVEL: "INFO"
|
||||||
EXPORTER_API_KEY: "${EXPORTER_API_KEY}"
|
EXPORTER_API_KEY: "${EXPORTER_API_KEY}" # Set in exporter-setup.sh
|
||||||
CROSS_ORIGINS: "https://${HOST}"
|
CROSS_ORIGINS: "https://${HOST}"
|
||||||
EXPORTER_DB_USER: "exporter"
|
EXPORTER_DB_USER: "exporter"
|
||||||
EXPORTER_DB_PASSWORD: "${EXPORTER_DB_PASSWORD}"
|
EXPORTER_DB_PASSWORD: "${EXPORTER_DB_PASSWORD}" # Set in exporter-setup.sh
|
||||||
EXPORTER_DB_URL: "jdbc:postgresql://exporter-db:5432/exporter"
|
EXPORTER_DB_URL: "jdbc:postgresql://exporter-db:5432/exporter"
|
||||||
HTTP_RELATIVE_PATH: "/ccp-exporter"
|
HTTP_RELATIVE_PATH: "/cce-exporter"
|
||||||
SITE: "${SITE_ID}"
|
SITE: "${SITE_ID}"
|
||||||
HTTP_SERVLET_REQUEST_SCHEME: "https"
|
HTTP_SERVLET_REQUEST_SCHEME: "https"
|
||||||
OPAL_PASSWORD: "${EXPORTER_OPAL_PASSWORD}"
|
OPAL_PASSWORD: "${EXPORTER_OPAL_PASSWORD}"
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.exporter_ccp.rule=PathPrefix(`/ccp-exporter`)"
|
- "traefik.http.routers.exporter_cce.rule=PathPrefix(`/cce-exporter`)"
|
||||||
- "traefik.http.services.exporter_ccp.loadbalancer.server.port=8092"
|
- "traefik.http.services.exporter_cce.loadbalancer.server.port=8092"
|
||||||
- "traefik.http.routers.exporter_ccp.tls=true"
|
- "traefik.http.routers.exporter_cce.tls=true"
|
||||||
- "traefik.http.middlewares.exporter_ccp_strip.stripprefix.prefixes=/ccp-exporter"
|
- "traefik.http.middlewares.exporter_cce_strip.stripprefix.prefixes=/cce-exporter"
|
||||||
- "traefik.http.routers.exporter_ccp.middlewares=exporter_ccp_strip"
|
- "traefik.http.routers.exporter_cce.middlewares=exporter_cce_strip"
|
||||||
volumes:
|
volumes:
|
||||||
- "/var/cache/bridgehead/ccp/exporter-files:/app/exporter-files/output"
|
- "/var/cache/bridgehead/cce/exporter-files:/app/exporter-files/output"
|
||||||
|
|
||||||
exporter-db:
|
exporter-db:
|
||||||
image: docker.verbis.dkfz.de/cache/postgres:${POSTGRES_TAG}
|
image: docker.verbis.dkfz.de/cache/postgres:${POSTGRES_TAG}
|
||||||
container_name: bridgehead-ccp-exporter-db
|
container_name: bridgehead-cce-exporter-db
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: "exporter"
|
POSTGRES_USER: "exporter"
|
||||||
POSTGRES_PASSWORD: "${EXPORTER_DB_PASSWORD}"
|
POSTGRES_PASSWORD: "${EXPORTER_DB_PASSWORD}" # Set in exporter-setup.sh
|
||||||
POSTGRES_DB: "exporter"
|
POSTGRES_DB: "exporter"
|
||||||
volumes:
|
volumes:
|
||||||
# Consider removing this volume once we find a solution to save Lens-queries to be executed in the explorer.
|
# Consider removing this volume once we find a solution to save Lens-queries to be executed in the explorer.
|
||||||
- "/var/cache/bridgehead/ccp/exporter-db:/var/lib/postgresql/data"
|
- "/var/cache/bridgehead/cce/exporter-db:/var/lib/postgresql/data"
|
||||||
|
|
||||||
reporter:
|
reporter:
|
||||||
image: docker.verbis.dkfz.de/ccp/dktk-reporter:latest
|
image: docker.verbis.dkfz.de/ccp/dktk-reporter:latest
|
||||||
container_name: bridgehead-ccp-reporter
|
container_name: bridgehead-cce-reporter
|
||||||
environment:
|
environment:
|
||||||
JAVA_OPTS: "-Xms1G -Xmx8G -XX:+UseG1GC"
|
JAVA_OPTS: "-Xms1G -Xmx8G -XX:+UseG1GC"
|
||||||
LOG_LEVEL: "INFO"
|
LOG_LEVEL: "INFO"
|
||||||
CROSS_ORIGINS: "https://${HOST}"
|
CROSS_ORIGINS: "https://${HOST}"
|
||||||
HTTP_RELATIVE_PATH: "/ccp-reporter"
|
HTTP_RELATIVE_PATH: "/cce-reporter"
|
||||||
SITE: "${SITE_ID}"
|
SITE: "${SITE_ID}"
|
||||||
EXPORTER_API_KEY: "${EXPORTER_API_KEY}"
|
EXPORTER_API_KEY: "${EXPORTER_API_KEY}" # Set in exporter-setup.sh
|
||||||
EXPORTER_URL: "http://exporter:8092"
|
EXPORTER_URL: "http://exporter:8092"
|
||||||
LOG_FHIR_VALIDATION: "false"
|
LOG_FHIR_VALIDATION: "false"
|
||||||
HTTP_SERVLET_REQUEST_SCHEME: "https"
|
HTTP_SERVLET_REQUEST_SCHEME: "https"
|
||||||
|
|
||||||
# In this initial development state of the bridgehead, we are trying to have so many volumes as possible.
|
# In this initial development state of the bridgehead, we are trying to have so many volumes as possible.
|
||||||
# However, in the first executions in the CCP sites, this volume seems to be very important. A report is
|
# However, in the first executions in the CCE sites, this volume seems to be very important. A report is
|
||||||
# a process that can take several hours, because it depends on the exporter.
|
# a process that can take several hours, because it depends on the exporter.
|
||||||
# There is a risk that the bridgehead restarts, losing the already created export.
|
# There is a risk that the bridgehead restarts, losing the already created export.
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
- "/var/cache/bridgehead/ccp/reporter-files:/app/reports"
|
- "/var/cache/bridgehead/cce/reporter-files:/app/reports"
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.reporter_ccp.rule=PathPrefix(`/ccp-reporter`)"
|
- "traefik.http.routers.reporter_cce.rule=PathPrefix(`/cce-reporter`)"
|
||||||
- "traefik.http.services.reporter_ccp.loadbalancer.server.port=8095"
|
- "traefik.http.services.reporter_cce.loadbalancer.server.port=8095"
|
||||||
- "traefik.http.routers.reporter_ccp.tls=true"
|
- "traefik.http.routers.reporter_cce.tls=true"
|
||||||
- "traefik.http.middlewares.reporter_ccp_strip.stripprefix.prefixes=/ccp-reporter"
|
- "traefik.http.middlewares.reporter_cce_strip.stripprefix.prefixes=/cce-reporter"
|
||||||
- "traefik.http.routers.reporter_ccp.middlewares=reporter_ccp_strip"
|
- "traefik.http.routers.reporter_cce.middlewares=reporter_cce_strip"
|
||||||
|
|
||||||
|
focus:
|
||||||
|
environment:
|
||||||
|
EXPORTER_URL: "http://exporter:8092"
|
||||||
|
EXPORTER_API_KEY: "${EXPORTER_API_KEY}"
|
@ -5,5 +5,4 @@ if [ "$ENABLE_EXPORTER" == true ]; then
|
|||||||
OVERRIDE+=" -f ./$PROJECT/modules/exporter-compose.yml"
|
OVERRIDE+=" -f ./$PROJECT/modules/exporter-compose.yml"
|
||||||
EXPORTER_DB_PASSWORD="$(echo \"This is a salt string to generate one consistent password for the exporter. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
|
EXPORTER_DB_PASSWORD="$(echo \"This is a salt string to generate one consistent password for the exporter. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 30)"
|
||||||
EXPORTER_API_KEY="$(echo \"This is a salt string to generate one consistent API KEY for the exporter. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 64)"
|
EXPORTER_API_KEY="$(echo \"This is a salt string to generate one consistent API KEY for the exporter. It is not required to be secret.\" | sha1sum | openssl pkeyutl -sign -inkey /etc/bridgehead/pki/${SITE_ID}.priv.pem | base64 | head -c 64)"
|
||||||
POSTGRES_TAG=15.6-alpine
|
|
||||||
fi
|
fi
|
89
cce/modules/teiler-compose.yml
Normal file
89
cce/modules/teiler-compose.yml
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
teiler-orchestrator:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/teiler-orchestrator:latest
|
||||||
|
container_name: bridgehead-teiler-orchestrator
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.teiler_orchestrator_cce.rule=PathPrefix(`/cce-teiler`)"
|
||||||
|
- "traefik.http.services.teiler_orchestrator_cce.loadbalancer.server.port=9000"
|
||||||
|
- "traefik.http.routers.teiler_orchestrator_cce.tls=true"
|
||||||
|
- "traefik.http.middlewares.teiler_orchestrator_cce_strip.stripprefix.prefixes=/cce-teiler"
|
||||||
|
- "traefik.http.routers.teiler_orchestrator_cce.middlewares=teiler_orchestrator_cce_strip"
|
||||||
|
environment:
|
||||||
|
TEILER_BACKEND_URL: "https://${HOST}/cce-teiler-backend"
|
||||||
|
TEILER_DASHBOARD_URL: "https://${HOST}/cce-teiler-dashboard"
|
||||||
|
DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE_LOWER_CASE}"
|
||||||
|
HTTP_RELATIVE_PATH: "/cce-teiler"
|
||||||
|
|
||||||
|
teiler-dashboard:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/teiler-dashboard:develop
|
||||||
|
container_name: bridgehead-teiler-dashboard
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.teiler_dashboard_cce.rule=PathPrefix(`/cce-teiler-dashboard`)"
|
||||||
|
- "traefik.http.services.teiler_dashboard_cce.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.routers.teiler_dashboard_cce.tls=true"
|
||||||
|
- "traefik.http.middlewares.teiler_dashboard_cce_strip.stripprefix.prefixes=/cce-teiler-dashboard"
|
||||||
|
- "traefik.http.routers.teiler_dashboard_cce.middlewares=teiler_dashboard_cce_strip"
|
||||||
|
environment:
|
||||||
|
DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}"
|
||||||
|
TEILER_BACKEND_URL: "https://${HOST}/cce-teiler-backend"
|
||||||
|
OIDC_URL: "${OIDC_URL}"
|
||||||
|
OIDC_REALM: "${OIDC_REALM}"
|
||||||
|
OIDC_CLIENT_ID: "${OIDC_PUBLIC_CLIENT_ID}"
|
||||||
|
OIDC_TOKEN_GROUP: "${OIDC_GROUP_CLAIM}"
|
||||||
|
TEILER_ADMIN_NAME: "${OPERATOR_FIRST_NAME} ${OPERATOR_LAST_NAME}"
|
||||||
|
TEILER_ADMIN_EMAIL: "${OPERATOR_EMAIL}"
|
||||||
|
TEILER_ADMIN_PHONE: "${OPERATOR_PHONE}"
|
||||||
|
TEILER_PROJECT: "${PROJECT}"
|
||||||
|
EXPORTER_API_KEY: "${EXPORTER_API_KEY}"
|
||||||
|
TEILER_ORCHESTRATOR_URL: "https://${HOST}/cce-teiler"
|
||||||
|
TEILER_DASHBOARD_HTTP_RELATIVE_PATH: "/cce-teiler-dashboard"
|
||||||
|
TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/cce-teiler"
|
||||||
|
TEILER_USER: "${OIDC_USER_GROUP}"
|
||||||
|
TEILER_ADMIN: "${OIDC_ADMIN_GROUP}"
|
||||||
|
REPORTER_DEFAULT_TEMPLATE_ID: "cce-qb"
|
||||||
|
EXPORTER_DEFAULT_TEMPLATE_ID: "cce"
|
||||||
|
|
||||||
|
|
||||||
|
teiler-backend:
|
||||||
|
image: docker.verbis.dkfz.de/ccp/dktk-teiler-backend:latest
|
||||||
|
container_name: bridgehead-teiler-backend
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.teiler_backend_cce.rule=PathPrefix(`/cce-teiler-backend`)"
|
||||||
|
- "traefik.http.services.teiler_backend_cce.loadbalancer.server.port=8085"
|
||||||
|
- "traefik.http.routers.teiler_backend_cce.tls=true"
|
||||||
|
- "traefik.http.middlewares.teiler_backend_cce_strip.stripprefix.prefixes=/cce-teiler-backend"
|
||||||
|
- "traefik.http.routers.teiler_backend_cce.middlewares=teiler_backend_cce_strip"
|
||||||
|
environment:
|
||||||
|
LOG_LEVEL: "INFO"
|
||||||
|
APPLICATION_PORT: "8085"
|
||||||
|
APPLICATION_ADDRESS: "${HOST}"
|
||||||
|
DEFAULT_LANGUAGE: "${TEILER_DEFAULT_LANGUAGE}"
|
||||||
|
CONFIG_ENV_VAR_PATH: "/run/secrets/cce.conf"
|
||||||
|
TEILER_ORCHESTRATOR_HTTP_RELATIVE_PATH: "/cce-teiler"
|
||||||
|
TEILER_ORCHESTRATOR_URL: "https://${HOST}/cce-teiler"
|
||||||
|
TEILER_DASHBOARD_DE_URL: "https://${HOST}/cce-teiler-dashboard/de"
|
||||||
|
TEILER_DASHBOARD_EN_URL: "https://${HOST}/cce-teiler-dashboard/en"
|
||||||
|
CENTRAX_URL: "${CENTRAXX_URL}"
|
||||||
|
HTTP_PROXY: "http://forward_proxy:3128"
|
||||||
|
ENABLE_MTBA: "${ENABLE_MTBA}"
|
||||||
|
ENABLE_DATASHIELD: "${ENABLE_DATASHIELD}"
|
||||||
|
TEILER_APP16_BACKENDURL: "https://${HOST}/cce-exporter"
|
||||||
|
TEILER_APP17_BACKENDURL: "https://${HOST}/cce-exporter"
|
||||||
|
TEILER_APP18_BACKENDURL: "https://${HOST}/cce-exporter"
|
||||||
|
TEILER_APP35_BACKENDURL: "https://${HOST}/cce-exporter"
|
||||||
|
TEILER_APP36_BACKENDURL: "https://${HOST}/cce-exporter"
|
||||||
|
TEILER_APP26_BACKENDURL: "https://${HOST}/cce-reporter"
|
||||||
|
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
- cce.conf
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
cce.conf:
|
||||||
|
file: /etc/bridgehead/cce.conf
|
9
cce/modules/teiler-setup.sh
Normal file
9
cce/modules/teiler-setup.sh
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
if [ "$ENABLE_TEILER" == true ];then
|
||||||
|
log INFO "Teiler setup detected -- will start Teiler services."
|
||||||
|
OVERRIDE+=" -f ./$PROJECT/modules/teiler-compose.yml"
|
||||||
|
TEILER_DEFAULT_LANGUAGE=DE
|
||||||
|
TEILER_DEFAULT_LANGUAGE_LOWER_CASE=${TEILER_DEFAULT_LANGUAGE,,}
|
||||||
|
add_public_oidc_redirect_url "/cce-teiler/*"
|
||||||
|
fi
|
2
cce/queries_to_cache.conf
Normal file
2
cce/queries_to_cache.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwpjb2Rlc3lzdGVtIFNhbXBsZU1hdGVyaWFsVHlwZTogJ2h0dHBzOi8vZmhpci5iYm1yaS5kZS9Db2RlU3lzdGVtL1NhbXBsZU1hdGVyaWFsVHlwZScKCmNvZGVzeXN0ZW0gbG9pbmM6ICdodHRwOi8vbG9pbmMub3JnJwoKY29udGV4dCBQYXRpZW50CgpES1RLX1NUUkFUX0dFTkRFUl9TVFJBVElGSUVSCgpES1RLX1NUUkFUX0FHRV9TVFJBVElGSUVSCgpES1RLX1NUUkFUX0RFQ0VBU0VEX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfRElBR05PU0lTX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfU1BFQ0lNRU5fU1RSQVRJRklFUgoKREtUS19TVFJBVF9QUk9DRURVUkVfU1RSQVRJRklFUgoKREtUS19TVFJBVF9NRURJQ0FUSU9OX1NUUkFUSUZJRVIKREtUS19TVFJBVF9ERUZfSU5fSU5JVElBTF9QT1BVTEFUSU9OCnRydWU=
|
||||||
|
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwpjb2Rlc3lzdGVtIFNhbXBsZU1hdGVyaWFsVHlwZTogJ2h0dHBzOi8vZmhpci5iYm1yaS5kZS9Db2RlU3lzdGVtL1NhbXBsZU1hdGVyaWFsVHlwZScKCmNvZGVzeXN0ZW0gbG9pbmM6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtIGljZDEwOiAnaHR0cDovL2ZoaXIuZGUvQ29kZVN5c3RlbS9iZmFybS9pY2QtMTAtZ20nCmNvZGVzeXN0ZW0gbW9ycGg6ICd1cm46b2lkOjIuMTYuODQwLjEuMTEzODgzLjYuNDMuMScKCmNvbnRleHQgUGF0aWVudAoKREtUS19TVFJBVF9HRU5ERVJfU1RSQVRJRklFUgoKREtUS19TVFJBVF9BR0VfU1RSQVRJRklFUgoKREtUS19TVFJBVF9ERUNFQVNFRF9TVFJBVElGSUVSCgpES1RLX1NUUkFUX0RJQUdOT1NJU19TVFJBVElGSUVSCgpES1RLX1NUUkFUX1NQRUNJTUVOX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfUFJPQ0VEVVJFX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfTUVESUNBVElPTl9TVFJBVElGSUVSCkRLVEtfU1RSQVRfREVGX0lOX0lOSVRJQUxfUE9QVUxBVElPTgooKGV4aXN0cyBbQ29uZGl0aW9uOiBDb2RlICdDNjEnIGZyb20gaWNkMTBdKSBhbmQKKChleGlzdHMgZnJvbSBbT2JzZXJ2YXRpb246IENvZGUgJzU5ODQ3LTQnIGZyb20gbG9pbmNdIE8Kd2hlcmUgTy52YWx1ZS5jb2RpbmcuY29kZSBjb250YWlucyAnODE0MC8zJykgb3IKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4MTQ3LzMnKSBvcgooZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzg0ODAvMycpIG9yCihleGlzdHMgZnJvbSBbT2JzZXJ2YXRpb246IENvZGUgJzU5ODQ3LTQnIGZyb20gbG9pbmNdIE8Kd2hlcmUgTy52YWx1ZS5jb2RpbmcuY29kZSBjb250YWlucyAnODUwMC8zJykpKQ==
|
12
cce/vars
12
cce/vars
@ -7,6 +7,18 @@ SUPPORT_EMAIL=manoj.waikar@dkfz-heidelberg.de
|
|||||||
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
|
PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem
|
||||||
BROKER_URL_FOR_PREREQ=$BROKER_URL
|
BROKER_URL_FOR_PREREQ=$BROKER_URL
|
||||||
|
|
||||||
|
POSTGRES_TAG=15.6-alpine
|
||||||
|
|
||||||
|
OIDC_USER_GROUP="CCE_$(capitalize_first_letter ${SITE_ID})"
|
||||||
|
OIDC_ADMIN_GROUP="CCE_$(capitalize_first_letter ${SITE_ID})_Verwalter"
|
||||||
|
OIDC_PRIVATE_CLIENT_ID=${SITE_ID}-private
|
||||||
|
OIDC_PUBLIC_CLIENT_ID=${SITE_ID}-public
|
||||||
|
# Use "test-realm-01" for testing
|
||||||
|
OIDC_REALM="${OIDC_REALM:-test-realm-01}"
|
||||||
|
OIDC_URL="https://login.verbis.dkfz.de"
|
||||||
|
OIDC_ISSUER_URL="${OIDC_URL}/realms/${OIDC_REALM}"
|
||||||
|
OIDC_GROUP_CLAIM="groups"
|
||||||
|
|
||||||
for module in $PROJECT/modules/*.sh
|
for module in $PROJECT/modules/*.sh
|
||||||
do
|
do
|
||||||
log DEBUG "sourcing $module"
|
log DEBUG "sourcing $module"
|
||||||
|
@ -35,7 +35,7 @@ services:
|
|||||||
QUERIES_TO_CACHE: '/queries_to_cache.conf'
|
QUERIES_TO_CACHE: '/queries_to_cache.conf'
|
||||||
ENDPOINT_TYPE: ${FOCUS_ENDPOINT_TYPE:-blaze}
|
ENDPOINT_TYPE: ${FOCUS_ENDPOINT_TYPE:-blaze}
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/docker/bridgehead/ccp/queries_to_cache.conf:/queries_to_cache.conf
|
- /srv/docker/bridgehead/ccp/queries_to_cache.conf:/queries_to_cache.conf:ro
|
||||||
depends_on:
|
depends_on:
|
||||||
- "beam-proxy"
|
- "beam-proxy"
|
||||||
- "blaze"
|
- "blaze"
|
||||||
|
@ -3,7 +3,7 @@ version: "3.7"
|
|||||||
services:
|
services:
|
||||||
obds2fhir-rest:
|
obds2fhir-rest:
|
||||||
container_name: bridgehead-obds2fhir-rest
|
container_name: bridgehead-obds2fhir-rest
|
||||||
image: docker.verbis.dkfz.de/ccp/obds2fhir-rest:main
|
image: docker.verbis.dkfz.de/samply/obds2fhir-rest:main
|
||||||
environment:
|
environment:
|
||||||
IDTYPE: BK_${IDMANAGEMENT_FRIENDLY_ID}_L-ID
|
IDTYPE: BK_${IDMANAGEMENT_FRIENDLY_ID}_L-ID
|
||||||
MAINZELLISTE_APIKEY: ${IDMANAGER_LOCAL_PATIENTLIST_APIKEY}
|
MAINZELLISTE_APIKEY: ${IDMANAGER_LOCAL_PATIENTLIST_APIKEY}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwoKY29kZXN5c3RlbSBsb2luYzogJ2h0dHA6Ly9sb2luYy5vcmcnCgpjb250ZXh0IFBhdGllbnQKCgpES1RLX1NUUkFUX0dFTkRFUl9TVFJBVElGSUVSCgpES1RLX1NUUkFUX1BSSU1BUllfRElBR05PU0lTX05PX1NPUlRfU1RSQVRJRklFUgpES1RLX1NUUkFUX0FHRV9DTEFTU19TVFJBVElGSUVSCgpES1RLX1NUUkFUX0RFQ0VBU0VEX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfRElBR05PU0lTX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfU1BFQ0lNRU5fU1RSQVRJRklFUgoKREtUS19TVFJBVF9QUk9DRURVUkVfU1RSQVRJRklFUgoKREtUS19TVFJBVF9NRURJQ0FUSU9OX1NUUkFUSUZJRVIKCiAgREtUS19TVFJBVF9ISVNUT0xPR1lfU1RSQVRJRklFUgpES1RLX1NUUkFUX0RFRl9JTl9JTklUSUFMX1BPUFVMQVRJT04KdHJ1ZQ==
|
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwoKY29kZXN5c3RlbSBsb2luYzogJ2h0dHA6Ly9sb2luYy5vcmcnCgpjb250ZXh0IFBhdGllbnQKCgpES1RLX1NUUkFUX0dFTkRFUl9TVFJBVElGSUVSCgpES1RLX1NUUkFUX1BSSU1BUllfRElBR05PU0lTX05PX1NPUlRfU1RSQVRJRklFUgpES1RLX1NUUkFUX0FHRV9DTEFTU19TVFJBVElGSUVSCgpES1RLX1NUUkFUX0RFQ0VBU0VEX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfRElBR05PU0lTX1NUUkFUSUZJRVIKCkRLVEtfUkVQTEFDRV9TUEVDSU1FTl9TVFJBVElGSUVSaWYgSW5Jbml0aWFsUG9wdWxhdGlvbiB0aGVuIFtTcGVjaW1lbl0gZWxzZSB7fSBhcyBMaXN0PFNwZWNpbWVuPgpES1RLX1NUUkFUX1BST0NFRFVSRV9TVFJBVElGSUVSCgpES1RLX1NUUkFUX01FRElDQVRJT05fU1RSQVRJRklFUgoKICBES1RLX1JFUExBQ0VfSElTVE9MT0dZX1NUUkFUSUZJRVIKIGlmIGhpc3RvLmNvZGUuY29kaW5nLndoZXJlKGNvZGUgPSAnNTk4NDctNCcpLmNvZGUuZmlyc3QoKSBpcyBudWxsIHRoZW4gMCBlbHNlIDEKREtUS19TVFJBVF9ERUZfSU5fSU5JVElBTF9QT1BVTEFUSU9OCnRydWU=
|
||||||
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwoKY29kZXN5c3RlbSBsb2luYzogJ2h0dHA6Ly9sb2luYy5vcmcnCmNvZGVzeXN0ZW0gaWNkMTA6ICdodHRwOi8vZmhpci5kZS9Db2RlU3lzdGVtL2JmYXJtL2ljZC0xMC1nbScKY29kZXN5c3RlbSBtb3JwaDogJ3VybjpvaWQ6Mi4xNi44NDAuMS4xMTM4ODMuNi40My4xJwoKY29udGV4dCBQYXRpZW50CgoKREtUS19TVFJBVF9HRU5ERVJfU1RSQVRJRklFUgoKREtUS19TVFJBVF9QUklNQVJZX0RJQUdOT1NJU19OT19TT1JUX1NUUkFUSUZJRVIKREtUS19TVFJBVF9BR0VfQ0xBU1NfU1RSQVRJRklFUgoKREtUS19TVFJBVF9ERUNFQVNFRF9TVFJBVElGSUVSCgpES1RLX1NUUkFUX0RJQUdOT1NJU19TVFJBVElGSUVSCgpES1RLX1NUUkFUX1NQRUNJTUVOX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfUFJPQ0VEVVJFX1NUUkFUSUZJRVIKCkRLVEtfU1RSQVRfTUVESUNBVElPTl9TVFJBVElGSUVSCgogIERLVEtfU1RSQVRfSElTVE9MT0dZX1NUUkFUSUZJRVIKREtUS19TVFJBVF9ERUZfSU5fSU5JVElBTF9QT1BVTEFUSU9OKGV4aXN0cyBbQ29uZGl0aW9uOiBDb2RlICdDNjEnIGZyb20gaWNkMTBdKSBhbmQgCigoZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzgxNDAvMycpIG9yIAooZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzgxNDcvMycpIG9yIAooZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzg0ODAvMycpIG9yIAooZXhpc3RzIGZyb20gW09ic2VydmF0aW9uOiBDb2RlICc1OTg0Ny00JyBmcm9tIGxvaW5jXSBPCndoZXJlIE8udmFsdWUuY29kaW5nLmNvZGUgY29udGFpbnMgJzg1MDAvMycpKQ==
|
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwoKY29kZXN5c3RlbSBsb2luYzogJ2h0dHA6Ly9sb2luYy5vcmcnCmNvZGVzeXN0ZW0gaWNkMTA6ICdodHRwOi8vZmhpci5kZS9Db2RlU3lzdGVtL2JmYXJtL2ljZC0xMC1nbScKY29kZXN5c3RlbSBtb3JwaDogJ3VybjpvaWQ6Mi4xNi44NDAuMS4xMTM4ODMuNi40My4xJwoKY29udGV4dCBQYXRpZW50CgoKREtUS19TVFJBVF9HRU5ERVJfU1RSQVRJRklFUgoKREtUS19TVFJBVF9QUklNQVJZX0RJQUdOT1NJU19OT19TT1JUX1NUUkFUSUZJRVIKREtUS19TVFJBVF9BR0VfQ0xBU1NfU1RSQVRJRklFUgoKREtUS19TVFJBVF9ERUNFQVNFRF9TVFJBVElGSUVSCgpES1RLX1NUUkFUX0RJQUdOT1NJU19TVFJBVElGSUVSCgpES1RLX1JFUExBQ0VfU1BFQ0lNRU5fU1RSQVRJRklFUmlmIEluSW5pdGlhbFBvcHVsYXRpb24gdGhlbiBbU3BlY2ltZW5dIGVsc2Uge30gYXMgTGlzdDxTcGVjaW1lbj4KREtUS19TVFJBVF9QUk9DRURVUkVfU1RSQVRJRklFUgoKREtUS19TVFJBVF9NRURJQ0FUSU9OX1NUUkFUSUZJRVIKCiAgREtUS19SRVBMQUNFX0hJU1RPTE9HWV9TVFJBVElGSUVSCiBpZiBoaXN0by5jb2RlLmNvZGluZy53aGVyZShjb2RlID0gJzU5ODQ3LTQnKS5jb2RlLmZpcnN0KCkgaXMgbnVsbCB0aGVuIDAgZWxzZSAxCkRLVEtfU1RSQVRfREVGX0lOX0lOSVRJQUxfUE9QVUxBVElPTihleGlzdHMgW0NvbmRpdGlvbjogQ29kZSAnQzYxJyBmcm9tIGljZDEwXSkgYW5kIAooKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4MTQwLzMnKSBvciAKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4MTQ3LzMnKSBvciAKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4NDgwLzMnKSBvciAKKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNTk4NDctNCcgZnJvbSBsb2luY10gTwp3aGVyZSBPLnZhbHVlLmNvZGluZy5jb2RlIGNvbnRhaW5zICc4NTAwLzMnKSk=
|
@ -33,7 +33,7 @@ services:
|
|||||||
EPSILON: 0.28
|
EPSILON: 0.28
|
||||||
QUERIES_TO_CACHE: '/queries_to_cache.conf'
|
QUERIES_TO_CACHE: '/queries_to_cache.conf'
|
||||||
volumes:
|
volumes:
|
||||||
- /srv/docker/bridgehead/dhki/queries_to_cache.conf:/queries_to_cache.conf
|
- /srv/docker/bridgehead/dhki/queries_to_cache.conf:/queries_to_cache.conf:ro
|
||||||
depends_on:
|
depends_on:
|
||||||
- "beam-proxy"
|
- "beam-proxy"
|
||||||
- "blaze"
|
- "blaze"
|
||||||
|
10
dhki/vars
10
dhki/vars
@ -17,4 +17,12 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
idManagementSetup
|
idManagementSetup
|
||||||
obds2fhirRestSetup
|
obds2fhirRestSetup
|
||||||
|
|
||||||
|
for module in modules/*.sh
|
||||||
|
do
|
||||||
|
log DEBUG "sourcing $module"
|
||||||
|
source $module
|
||||||
|
done
|
||||||
|
|
||||||
|
transfairSetup
|
@ -8,7 +8,8 @@ services:
|
|||||||
BASE_URL: "http://bridgehead-itcc-blaze:8080"
|
BASE_URL: "http://bridgehead-itcc-blaze:8080"
|
||||||
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
JAVA_TOOL_OPTIONS: "-Xmx${BLAZE_MEMORY_CAP:-4096}m"
|
||||||
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
DB_RESOURCE_CACHE_SIZE: ${BLAZE_RESOURCE_CACHE_CAP:-2500000}
|
||||||
DB_BLOCK_CACHE_SIZE: $BLAZE_MEMORY_CAP
|
DB_BLOCK_CACHE_SIZE: ${BLAZE_MEMORY_CAP}
|
||||||
|
CQL_EXPR_CACHE_SIZE: ${BLAZE_CQL_CACHE_CAP:-32}
|
||||||
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
volumes:
|
volumes:
|
||||||
- "blaze-data:/app/data"
|
- "blaze-data:/app/data"
|
||||||
@ -31,6 +32,10 @@ services:
|
|||||||
BEAM_PROXY_URL: http://beam-proxy:8081
|
BEAM_PROXY_URL: http://beam-proxy:8081
|
||||||
RETRY_COUNT: ${FOCUS_RETRY_COUNT}
|
RETRY_COUNT: ${FOCUS_RETRY_COUNT}
|
||||||
EPSILON: 0.28
|
EPSILON: 0.28
|
||||||
|
QUERIES_TO_CACHE: '/queries_to_cache.conf'
|
||||||
|
ENDPOINT_TYPE: ${FOCUS_ENDPOINT_TYPE:-blaze}
|
||||||
|
volumes:
|
||||||
|
- /srv/docker/bridgehead/itcc/queries_to_cache.conf:/queries_to_cache.conf:ro
|
||||||
depends_on:
|
depends_on:
|
||||||
- "beam-proxy"
|
- "beam-proxy"
|
||||||
- "blaze"
|
- "blaze"
|
||||||
|
2
itcc/queries_to_cache.conf
Normal file
2
itcc/queries_to_cache.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwpjb2Rlc3lzdGVtIFNhbXBsZU1hdGVyaWFsVHlwZTogJ2h0dHBzOi8vZmhpci5iYm1yaS5kZS9Db2RlU3lzdGVtL1NhbXBsZU1hdGVyaWFsVHlwZScKCmNvZGVzeXN0ZW0gbG9pbmM6ICdodHRwOi8vbG9pbmMub3JnJwoKY29udGV4dCBQYXRpZW50CkRLVEtfU1RSQVRfR0VOREVSX1NUUkFUSUZJRVIKICBES1RLX1NUUkFUX0RJQUdOT1NJU19TVFJBVElGSUVSCiAgSVRDQ19TVFJBVF9BR0VfQ0xBU1NfU1RSQVRJRklFUgogIERLVEtfU1RSQVRfREVGX0lOX0lOSVRJQUxfUE9QVUxBVElPTgp0cnVl
|
||||||
|
bGlicmFyeSBSZXRyaWV2ZQp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4wJwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4wJwpjb2Rlc3lzdGVtIFNhbXBsZU1hdGVyaWFsVHlwZTogJ2h0dHBzOi8vZmhpci5iYm1yaS5kZS9Db2RlU3lzdGVtL1NhbXBsZU1hdGVyaWFsVHlwZScKCmNvZGVzeXN0ZW0gbG9pbmM6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtIG1vbGVjdWxhck1hcmtlcjogJ2h0dHA6Ly93d3cuZ2VuZW5hbWVzLm9yZycKCmNvbnRleHQgUGF0aWVudApES1RLX1NUUkFUX0dFTkRFUl9TVFJBVElGSUVSCiAgREtUS19TVFJBVF9ESUFHTk9TSVNfU1RSQVRJRklFUgogIElUQ0NfU1RSQVRfQUdFX0NMQVNTX1NUUkFUSUZJRVIKICBES1RLX1NUUkFUX0RFRl9JTl9JTklUSUFMX1BPUFVMQVRJT04KKGV4aXN0cyBmcm9tIFtPYnNlcnZhdGlvbjogQ29kZSAnNjk1NDgtNicgZnJvbSBsb2luY10gTwp3aGVyZSBPLmNvbXBvbmVudC53aGVyZShjb2RlLmNvZGluZyBjb250YWlucyBDb2RlICc0ODAxOC02JyBmcm9tIGxvaW5jKS52YWx1ZS5jb2RpbmcgY29udGFpbnMgQ29kZSAnQlJBRicgZnJvbSBtb2xlY3VsYXJNYXJrZXIp
|
@ -313,7 +313,7 @@ function sync_secrets() {
|
|||||||
-e ALL_PROXY=$HTTPS_PROXY_FULL_URL \
|
-e ALL_PROXY=$HTTPS_PROXY_FULL_URL \
|
||||||
-e PROXY_ID=$PROXY_ID \
|
-e PROXY_ID=$PROXY_ID \
|
||||||
-e BROKER_URL=$BROKER_URL \
|
-e BROKER_URL=$BROKER_URL \
|
||||||
-e OIDC_PROVIDER=secret-sync-central.oidc-client-enrollment.$BROKER_ID \
|
-e OIDC_PROVIDER=secret-sync-central.central-secret-sync.$BROKER_ID \
|
||||||
-e SECRET_DEFINITIONS=$secret_sync_args \
|
-e SECRET_DEFINITIONS=$secret_sync_args \
|
||||||
docker.verbis.dkfz.de/cache/samply/secret-sync-local:latest
|
docker.verbis.dkfz.de/cache/samply/secret-sync-local:latest
|
||||||
|
|
||||||
@ -322,6 +322,57 @@ function sync_secrets() {
|
|||||||
set +a # Export variables in the regular way
|
set +a # Export variables in the regular way
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function secret_sync_gitlab_token() {
|
||||||
|
# Map the origin of the git repository /etc/bridgehead to the prefix recognized by Secret Sync
|
||||||
|
local gitlab
|
||||||
|
case "$(git -C /etc/bridgehead remote get-url origin)" in
|
||||||
|
*git.verbis.dkfz.de*) gitlab=verbis;;
|
||||||
|
*gitlab.bbmri-eric.eu*) gitlab=bbmri;;
|
||||||
|
*)
|
||||||
|
log "WARN" "Not running Secret Sync because the git repository /etc/bridgehead has unknown origin"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Use Secret Sync to validate the GitLab token in /var/cache/bridgehead/secrets/gitlab_token.
|
||||||
|
# If it is missing or expired, Secret Sync will create a new token and write it to the file.
|
||||||
|
# The git credential helper reads the token from the file during git pull.
|
||||||
|
mkdir -p /var/cache/bridgehead/secrets
|
||||||
|
touch /var/cache/bridgehead/secrets/gitlab_token # the file has to exist to be mounted correctly in the Docker container
|
||||||
|
log "INFO" "Running Secret Sync for the GitLab token (gitlab=$gitlab)"
|
||||||
|
docker pull docker.verbis.dkfz.de/cache/samply/secret-sync-local:latest # make sure we have the latest image
|
||||||
|
docker run --rm \
|
||||||
|
-v /var/cache/bridgehead/secrets/gitlab_token:/usr/local/cache \
|
||||||
|
-v $PRIVATEKEYFILENAME:/run/secrets/privkey.pem:ro \
|
||||||
|
-v /srv/docker/bridgehead/$PROJECT/root.crt.pem:/run/secrets/root.crt.pem:ro \
|
||||||
|
-v /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro \
|
||||||
|
-e TLS_CA_CERTIFICATES_DIR=/conf/trusted-ca-certs \
|
||||||
|
-e NO_PROXY=localhost,127.0.0.1 \
|
||||||
|
-e ALL_PROXY=$HTTPS_PROXY_FULL_URL \
|
||||||
|
-e PROXY_ID=$PROXY_ID \
|
||||||
|
-e BROKER_URL=$BROKER_URL \
|
||||||
|
-e GITLAB_PROJECT_ACCESS_TOKEN_PROVIDER=secret-sync-central.central-secret-sync.$BROKER_ID \
|
||||||
|
-e SECRET_DEFINITIONS=GitLabProjectAccessToken:BRIDGEHEAD_CONFIG_REPO_TOKEN:$gitlab \
|
||||||
|
docker.verbis.dkfz.de/cache/samply/secret-sync-local:latest
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
log "INFO" "Secret Sync was successful"
|
||||||
|
# In the past we used to hardcode tokens into the repository URL. We have to remove those now for the git credential helper to become effective.
|
||||||
|
CLEAN_REPO="$(git -C /etc/bridgehead remote get-url origin | sed -E 's|https://[^@]+@|https://|')"
|
||||||
|
git -C /etc/bridgehead remote set-url origin "$CLEAN_REPO"
|
||||||
|
# Set the git credential helper
|
||||||
|
git -C /etc/bridgehead config credential.helper /srv/docker/bridgehead/lib/gitlab-token-helper.sh
|
||||||
|
else
|
||||||
|
log "WARN" "Secret Sync failed"
|
||||||
|
# Remove the git credential helper
|
||||||
|
git -C /etc/bridgehead config --unset credential.helper
|
||||||
|
fi
|
||||||
|
|
||||||
|
# In the past the git credential helper was also set for /srv/docker/bridgehead but never used.
|
||||||
|
# Let's remove it to avoid confusion. This line can be removed at some point the future when we
|
||||||
|
# believe that it was removed on all/most production servers.
|
||||||
|
git -C /srv/docker/bridgehead config --unset credential.helper
|
||||||
|
}
|
||||||
|
|
||||||
capitalize_first_letter() {
|
capitalize_first_letter() {
|
||||||
input="$1"
|
input="$1"
|
||||||
capitalized="$(tr '[:lower:]' '[:upper:]' <<< ${input:0:1})${input:1}"
|
capitalized="$(tr '[:lower:]' '[:upper:]' <<< ${input:0:1})${input:1}"
|
||||||
|
@ -33,43 +33,7 @@ export SITE_ID
|
|||||||
checkOwner /srv/docker/bridgehead bridgehead || fail_and_report 1 "Update failed: Wrong permissions in /srv/docker/bridgehead"
|
checkOwner /srv/docker/bridgehead bridgehead || fail_and_report 1 "Update failed: Wrong permissions in /srv/docker/bridgehead"
|
||||||
checkOwner /etc/bridgehead bridgehead || fail_and_report 1 "Update failed: Wrong permissions in /etc/bridgehead"
|
checkOwner /etc/bridgehead bridgehead || fail_and_report 1 "Update failed: Wrong permissions in /etc/bridgehead"
|
||||||
|
|
||||||
# Use Secret Sync to validate the GitLab token in /var/cache/bridgehead/secrets/gitlab_token.
|
secret_sync_gitlab_token
|
||||||
# If it is missing or expired, Secret Sync will create a new token and write it to the file.
|
|
||||||
# The git credential helper reads the token from the file during git pull.
|
|
||||||
mkdir -p /var/cache/bridgehead/secrets
|
|
||||||
touch /var/cache/bridgehead/secrets/gitlab_token # the file has to exist to be mounted correctly in the Docker container
|
|
||||||
log "INFO" "Running Secret Sync for the GitLab token"
|
|
||||||
docker pull docker.verbis.dkfz.de/cache/samply/secret-sync-local:latest # make sure we have the latest image
|
|
||||||
docker run --rm \
|
|
||||||
-v /var/cache/bridgehead/secrets/gitlab_token:/usr/local/cache \
|
|
||||||
-v $PRIVATEKEYFILENAME:/run/secrets/privkey.pem:ro \
|
|
||||||
-v /srv/docker/bridgehead/$PROJECT/root.crt.pem:/run/secrets/root.crt.pem:ro \
|
|
||||||
-v /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro \
|
|
||||||
-e TLS_CA_CERTIFICATES_DIR=/conf/trusted-ca-certs \
|
|
||||||
-e NO_PROXY=localhost,127.0.0.1 \
|
|
||||||
-e ALL_PROXY=$HTTPS_PROXY_FULL_URL \
|
|
||||||
-e PROXY_ID=$PROXY_ID \
|
|
||||||
-e BROKER_URL=$BROKER_URL \
|
|
||||||
-e GITLAB_PROJECT_ACCESS_TOKEN_PROVIDER=secret-sync-central.oidc-client-enrollment.$BROKER_ID \
|
|
||||||
-e SECRET_DEFINITIONS=GitLabProjectAccessToken:BRIDGEHEAD_CONFIG_REPO_TOKEN: \
|
|
||||||
docker.verbis.dkfz.de/cache/samply/secret-sync-local:latest
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
log "INFO" "Secret Sync was successful"
|
|
||||||
# In the past we used to hardcode tokens into the repository URL. We have to remove those now for the git credential helper to become effective.
|
|
||||||
CLEAN_REPO="$(git -C /etc/bridgehead remote get-url origin | sed -E 's|https://[^@]+@|https://|')"
|
|
||||||
git -C /etc/bridgehead remote set-url origin "$CLEAN_REPO"
|
|
||||||
# Set the git credential helper
|
|
||||||
git -C /etc/bridgehead config credential.helper /srv/docker/bridgehead/lib/gitlab-token-helper.sh
|
|
||||||
else
|
|
||||||
log "WARN" "Secret Sync failed"
|
|
||||||
# Remove the git credential helper
|
|
||||||
git -C /etc/bridgehead config --unset credential.helper
|
|
||||||
fi
|
|
||||||
|
|
||||||
# In the past the git credential helper was also set for /srv/docker/bridgehead but never used.
|
|
||||||
# Let's remove it to avoid confusion. This line can be removed at some point the future when we
|
|
||||||
# believe that it was removed on all/most production servers.
|
|
||||||
git -C /srv/docker/bridgehead config --unset credential.helper
|
|
||||||
|
|
||||||
CHANGES=""
|
CHANGES=""
|
||||||
|
|
||||||
|
51
modules/transfair-compose.yml
Normal file
51
modules/transfair-compose.yml
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
services:
|
||||||
|
transfair:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/transfair:latest
|
||||||
|
container_name: bridgehead-transfair
|
||||||
|
environment:
|
||||||
|
# NOTE: Those 3 variables need only to be passed if their set, otherwise transfair will complain about empty url values
|
||||||
|
- INSTITUTE_TTP_URL
|
||||||
|
- INSTITUTE_TTP_API_KEY
|
||||||
|
- PROJECT_ID_SYSTEM
|
||||||
|
- FHIR_REQUEST_URL=${FHIR_REQUEST_URL}
|
||||||
|
- FHIR_INPUT_URL=${FHIR_INPUT_URL}
|
||||||
|
- FHIR_OUTPUT_URL=${FHIR_OUTPUT_URL:-http://blaze:8080}
|
||||||
|
- FHIR_REQUEST_CREDENTIALS=${FHIR_REQUEST_CREDENTIALS}
|
||||||
|
- FHIR_INPUT_CREDENTIALS=${FHIR_INPUT_CREDENTIALS}
|
||||||
|
- FHIR_OUTPUT_CREDENTIALS=${FHIR_OUTPUT_CREDENTIALS}
|
||||||
|
- EXCHANGE_ID_SYSTEM=${EXCHANGE_ID_SYSTEM:-SESSION_ID}
|
||||||
|
- DATABASE_URL=sqlite://transfair/data_requests.sql?mode=rwc
|
||||||
|
- RUST_LOG=${RUST_LOG:-info}
|
||||||
|
volumes:
|
||||||
|
- /var/cache/bridgehead/${PROJECT}/transfair:/transfair
|
||||||
|
|
||||||
|
transfair-input-blaze:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/blaze:0.28
|
||||||
|
container_name: bridgehead-transfair-input-blaze
|
||||||
|
environment:
|
||||||
|
BASE_URL: "http://bridgehead-transfair-input-blaze:8080"
|
||||||
|
JAVA_TOOL_OPTIONS: "-Xmx1024m"
|
||||||
|
DB_BLOCK_CACHE_SIZE: 1024
|
||||||
|
CQL_EXPR_CACHE_SIZE: 8
|
||||||
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
|
volumes:
|
||||||
|
- "transfair-input-blaze-data:/app/data"
|
||||||
|
profiles: ["transfair-input-blaze"]
|
||||||
|
|
||||||
|
transfair-request-blaze:
|
||||||
|
image: docker.verbis.dkfz.de/cache/samply/blaze:0.28
|
||||||
|
container_name: bridgehead-transfair-requests-blaze
|
||||||
|
environment:
|
||||||
|
BASE_URL: "http://bridgehead-transfair-requests-blaze:8080"
|
||||||
|
JAVA_TOOL_OPTIONS: "-Xmx1024m"
|
||||||
|
DB_BLOCK_CACHE_SIZE: 1024
|
||||||
|
CQL_EXPR_CACHE_SIZE: 8
|
||||||
|
ENFORCE_REFERENTIAL_INTEGRITY: "false"
|
||||||
|
volumes:
|
||||||
|
- "transfair-request-blaze-data:/app/data"
|
||||||
|
profiles: ["transfair-request-blaze"]
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
transfair-input-blaze-data:
|
||||||
|
transfair-request-blaze-data:
|
22
modules/transfair-setup.sh
Executable file
22
modules/transfair-setup.sh
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
function transfairSetup() {
|
||||||
|
if [[ -n "$INSTITUTE_TTP_URL" || -n "$EXCHANGE_ID_SYSTEM" ]]; then
|
||||||
|
echo "Starting transfair."
|
||||||
|
OVERRIDE+=" -f ./modules/transfair-compose.yml"
|
||||||
|
if [ -n "$FHIR_INPUT_URL" ]; then
|
||||||
|
log INFO "TransFAIR input fhir store set to external $FHIR_INPUT_URL"
|
||||||
|
else
|
||||||
|
log INFO "TransFAIR input fhir store not set writing to internal blaze"
|
||||||
|
FHIR_INPUT_URL="http://transfair-input-blaze:8080"
|
||||||
|
OVERRIDE+=" --profile transfair-input-blaze"
|
||||||
|
fi
|
||||||
|
if [ -n "$FHIR_REQUEST_URL" ]; then
|
||||||
|
log INFO "TransFAIR request fhir store set to external $FHIR_REQUEST_URL"
|
||||||
|
else
|
||||||
|
log INFO "TransFAIR request fhir store not set writing to internal blaze"
|
||||||
|
FHIR_REQUEST_URL="http://transfair-requests-blaze:8080"
|
||||||
|
OVERRIDE+=" --profile transfair-request-blaze"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
Reference in New Issue
Block a user