Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
162 commits
Select commit Hold shift + click to select a range
2684506
feat(sda-download): fix Range header to not always read from start of…
KarlG-nbis Dec 4, 2025
3780e2d
feat(sda-validator): WIP add sda-validator prototype with API(no auth…
KarlG-nbis Oct 7, 2025
cac598a
feat(sda-validator): move apptainer example directory
KarlG-nbis Oct 7, 2025
68dfd8d
feat(sda-validator): only allow getting the config variables, no dire…
KarlG-nbis Oct 8, 2025
6409520
feat(sda-validator): ensure internal/config library can handle config…
KarlG-nbis Oct 8, 2025
e2dccac
feat(sda-validator): split up code for readability and to reduce cogn…
KarlG-nbis Oct 8, 2025
b3df836
feat(sda-validator): fix import sorting
KarlG-nbis Oct 8, 2025
f1d6cdb
feat(sda-validator): remove leading slash in file paths in validation…
KarlG-nbis Oct 8, 2025
f179385
feat(sda-validator): add interface for executing os commands to allow…
KarlG-nbis Oct 8, 2025
554cf01
feat(sda-validator): add unit test for sda validator orchestrator api…
KarlG-nbis Oct 9, 2025
4da5d4b
feat(sda-validator): add a readme for apptainer example, and add a co…
KarlG-nbis Oct 10, 2025
2683ae6
feat(sda-validator): update docker file and kube resource example to …
KarlG-nbis Oct 13, 2025
f11119f
feat(sda-validator): update TestValidatePost and other unit test to work
KarlG-nbis Oct 13, 2025
4027e4a
feat(sda-validator): remove bash and sh from final image in dockerfile
KarlG-nbis Oct 13, 2025
e45525a
feat(sda-validator): use apptainer run instead of exec again, update …
KarlG-nbis Oct 13, 2025
d4d2758
feat(sda-validator): update to use --describe instead of describe whe…
KarlG-nbis Oct 14, 2025
ae14c5e
feat(k3d): fix reencryt host and port for k3d isolated
KarlG-nbis Oct 14, 2025
7a943f8
feat(sda-validator): add graceful shutdown of http server on terminat…
KarlG-nbis Oct 14, 2025
f3378b9
feat(sda-validator): add --net --network none options to apptainer ru…
KarlG-nbis Oct 20, 2025
8718f61
feat(sda-validator): create file to be validated with 0444 perm to on…
KarlG-nbis Oct 20, 2025
2a0346e
feat(sda-validator): allow for duplicate file paths in request
KarlG-nbis Oct 20, 2025
a2afa7c
feat(sda-validator-orchestrator): WIP add broker, database, http midd…
KarlG-nbis Oct 28, 2025
4bfe6ab
feat(rabbitmq): add queues for validator-orchestrator
KarlG-nbis Oct 28, 2025
0f4a26d
feat(sda-validator-orchestrator): update api unit tests
KarlG-nbis Oct 28, 2025
26c46fb
feat(sda-validator-orchestrator): add job preparation unit test, and …
KarlG-nbis Oct 29, 2025
23ea7ef
feat(sda-validator-orchestrator): add job worker unit tests
KarlG-nbis Oct 29, 2025
27c3b68
feat(sda-validator-orchestrator): add validators package unit tests
KarlG-nbis Oct 29, 2025
18059f0
feat(sda-validator): add another example validator: always success, a…
KarlG-nbis Oct 30, 2025
dacbdcb
feat(sda-validator-orchestrator): dont rely on viper string slice to …
KarlG-nbis Oct 30, 2025
6eaa881
feat(sda-validator-orchestrator): fix database readValidationResult m…
KarlG-nbis Oct 30, 2025
7e71026
feat(sda-validator-orchestrator): job preparation worker, check for n…
KarlG-nbis Oct 30, 2025
f852264
feat(sda-validator-orchestrator): add simple authenticator unit test,…
KarlG-nbis Oct 30, 2025
eff7f87
feat(sda-validator-orchestrator): add rbac unit tests
KarlG-nbis Oct 30, 2025
b752ae1
feat(sda-validator-orchestrator): remove X-Amz-Security-Token support…
KarlG-nbis Oct 30, 2025
c6a8dc8
feat(sda-validator-orchestrator): update and flesh out the README.md
KarlG-nbis Oct 30, 2025
33aeee4
feat(sda-validator-orchestrator): update the .kube example add a 2nd …
KarlG-nbis Oct 30, 2025
d71dc94
feat(sda-validator-orchestrator): fix linting issues
KarlG-nbis Oct 31, 2025
3bc6fd6
feat(sda-validator-orchestrator): fix some linting issues with amount…
KarlG-nbis Oct 31, 2025
04fb5b4
feat(sda-validator-orchestrator): refactor workers to not be singletons
KarlG-nbis Nov 3, 2025
dbe61f3
feat(sda-validator-orchestrator): update apptainer example README.md
KarlG-nbis Nov 3, 2025
5e3a600
feat(sda-validator-orchestrator): add kube secret example(without val…
KarlG-nbis Nov 3, 2025
3029219
feat(sda-validator-orchestrator): update dependencies
KarlG-nbis Nov 3, 2025
8d319ab
feat(sda-validator-orchestrator): update README.md add info about doc…
KarlG-nbis Nov 3, 2025
be894a3
feat(sda-validator-orchestrator): add flag for log.level to have in h…
KarlG-nbis Nov 4, 2025
244a59e
feat(sda-validator-orchestrator): fix result API not found case
KarlG-nbis Nov 4, 2025
0407b6b
feat(sda-validator-orchestrator): update readme.md, broker.close, jus…
KarlG-nbis Nov 4, 2025
56816c5
feat(sda-validator-orchestrator): fix potential nil pointer with read…
KarlG-nbis Nov 4, 2025
1aa6e17
feat(sda-validator-orchestrator): result API validate that validation…
KarlG-nbis Nov 4, 2025
6d58499
feat(sda-validator-orchestrator): update broker.ConnectionWatcher -> …
KarlG-nbis Nov 5, 2025
ffe9a73
feat(sda-validator-orchestrator): remove 01_create_db_and_schema.sql
KarlG-nbis Nov 10, 2025
81a6360
feat(sda-validator): fix mistake in rbac config flag, add more error …
KarlG-nbis Nov 13, 2025
b8ea4f7
feat(sda-validator-orchestrator): fix db message null values and null…
KarlG-nbis Nov 13, 2025
719ab8b
feat(sda-api): update /users/{userName}/files API to return Submissio…
KarlG-nbis Nov 19, 2025
94d98f6
feat(database): add unit test for new func SetSubmissionFileSize
KarlG-nbis Dec 4, 2025
8793114
feat(s3inbox): use SetSubmissionFileSize instead of direct query to d…
KarlG-nbis Dec 4, 2025
8d663dd
feat(api): fix TestAPIGetFiles_SubmissionFileSize unit test after mai…
KarlG-nbis Dec 4, 2025
f10acf9
feat(database): use time.Now().Nanosecond instead of rand to get a se…
KarlG-nbis Dec 4, 2025
10dffbb
feat(validator-orchestrator): update typos, etc, add support to host …
KarlG-nbis Dec 5, 2025
8954b48
feat(validator-orchestrator): fix linting issues with variable naming…
KarlG-nbis Dec 5, 2025
c64072e
feat(validator-orchestrator): fix some additional README.md typos
KarlG-nbis Dec 5, 2025
68e9b41
feat(validator-orchestrator): update validators unit test to reset st…
KarlG-nbis Dec 5, 2025
23c858d
build(deps): bump golangci/golangci-lint-action from 9.1.0 to 9.2.0
dependabot[bot] Dec 8, 2025
29c12d2
Merge pull request #2126 from neicnordic/bugfix/sda-download_range-he…
KarlG-nbis Dec 10, 2025
a326531
Merge pull request #2127 from neicnordic/dependabot/github_actions/go…
jbygdell Dec 15, 2025
2a733a5
feat(rabbitmq): remove unused binding to files queue
KarlG-nbis Nov 28, 2025
f9fc75d
Ensure the rotate key queue is empty before progressing.
jbygdell Dec 15, 2025
a0e64f7
Fix yq issue when running the test locally.
jbygdell Dec 15, 2025
6fcef71
Add retry to curl in order to prevent false error.
jbygdell Dec 15, 2025
9db7df3
Set content headers
jbygdell Dec 15, 2025
6b5ad03
Merge pull request #2136 from neicnordic/githubactions/fix-failing-tests
jbygdell Dec 15, 2025
d257d36
build(deps): bump github.com/quic-go/quic-go in /sda
dependabot[bot] Dec 15, 2025
d7856b4
fix(postgres): fix 20_deprecate_files_event_log_correlation_id.sql da…
KarlG-nbis Dec 12, 2025
308669f
fix(postgres): in 20_deprecate_files_event_log_correlation_id.sql rep…
KarlG-nbis Dec 12, 2025
90ee45b
Merge pull request #2134 from neicnordic/bugfix/correlation_id_deprec…
KarlG-nbis Dec 15, 2025
f98d189
Merge pull request #2133 from neicnordic/dependabot/go_modules/sda/gi…
nanjiangshu Dec 15, 2025
4d1a855
Prevent starting with an old DB schema #minor
jbygdell Dec 15, 2025
3231d45
build(deps): bump peter-evans/create-pull-request from 7 to 8
dependabot[bot] Dec 15, 2025
1810702
build(deps): bump the all-modules group in /sda-download with 2 updates
dependabot[bot] Dec 15, 2025
7883797
build(deps): bump codecov/codecov-action from 5.5.1 to 5.5.2
dependabot[bot] Dec 15, 2025
80826a0
build(deps): bump the all-modules group across 1 directory with 2 upd…
dependabot[bot] Dec 15, 2025
3df9375
Merge pull request #2138 from neicnordic/sda/restict-on-older-db-vers…
jbygdell Dec 16, 2025
5c631e5
Bump chart version
Dec 16, 2025
516e2be
build(deps): bump actions/cache from 4 to 5
dependabot[bot] Dec 16, 2025
3b04d72
Add job to remove correlation IDs from the DB schema
jbygdell Dec 16, 2025
46973a9
Merge pull request #2142 from neicnordic/dependabot/github_actions/co…
jbygdell Dec 16, 2025
8ee0432
Merge pull request #2141 from neicnordic/dependabot/github_actions/ac…
jbygdell Dec 16, 2025
086857f
Merge pull request #2139 from neicnordic/dependabot/github_actions/pe…
jbygdell Dec 16, 2025
dd4012c
Merge pull request #2124 from neicnordic/bump
jbygdell Dec 16, 2025
3712e42
build(deps): bump the all-modules group across 1 directory with 13 up…
dependabot[bot] Dec 16, 2025
4275233
[internal/storage] fix missing s3 config option
jbygdell Dec 15, 2025
89acbbb
Merge pull request #2140 from neicnordic/dependabot/go_modules/sda-do…
nanjiangshu Dec 16, 2025
c650e13
build(deps): bump github.com/quic-go/quic-go in /sda-download
dependabot[bot] Dec 16, 2025
ec19347
feat(sda-validator-orchestrator): add sda validator orchestrator inte…
KarlG-nbis Nov 13, 2025
e4d3f17
feat: update makefile, add build and integration tests for sda-valida…
KarlG-nbis Nov 13, 2025
140cbfa
feat(github actions): add tests and building of the sda-validator-orc…
KarlG-nbis Nov 14, 2025
ebb47a9
feat(github actions): always run the sda-validator-orchestrator integ…
KarlG-nbis Nov 14, 2025
cead055
feat(github actions): add linting of sda-validator-orchestrator
KarlG-nbis Nov 14, 2025
65a9d44
feat(github actions): add retagging of published sda-validator-orches…
KarlG-nbis Nov 14, 2025
5e44776
feat(github actions): fix running correct integration tests for sda-v…
KarlG-nbis Nov 14, 2025
357445b
feat(sda-validator-orchestrator): add health service and use in integ…
KarlG-nbis Nov 14, 2025
2c4a61f
feat(github actions): run sda-validator-orchestrator integration test…
KarlG-nbis Nov 17, 2025
483959c
feat(github actions): run sda-validator-orchestrator integration test…
KarlG-nbis Nov 17, 2025
15a137f
feat(github actions) fix go version used in sda-validator-orchestrato…
KarlG-nbis Nov 18, 2025
bdaedc3
feat(sda-validator-orchestrator): fix linting issues, mainly spacing,…
KarlG-nbis Nov 26, 2025
87322af
feat(integration tests): remove unused volume from validator-orchestr…
KarlG-nbis Dec 16, 2025
8dfd25e
feat(integration tests): update validator orchestrator integration te…
KarlG-nbis Dec 16, 2025
0480d35
feat(validator-orchestrator): fix api.server-cert and api.server-key …
KarlG-nbis Dec 16, 2025
559defc
Merge pull request #2137 from neicnordic/dependabot/go_modules/sda/al…
nanjiangshu Dec 17, 2025
7585792
Merge pull request #2132 from neicnordic/dependabot/go_modules/sda-do…
jbygdell Dec 17, 2025
82c987f
Merge pull request #2128 from neicnordic/dependabot/maven/sda-doa/all…
nanjiangshu Dec 19, 2025
cf12638
build(deps): bump org.springframework.boot:spring-boot-starter-parent
dependabot[bot] Dec 22, 2025
7297787
build(deps): bump google.golang.org/grpc
dependabot[bot] Dec 29, 2025
fbcfddb
build(deps): bump the all-modules group across 1 directory with 6 upd…
dependabot[bot] Dec 29, 2025
586d1ab
Merge pull request #2158 from neicnordic/dependabot/go_modules/sda/al…
jbygdell Jan 7, 2026
12028df
Merge pull request #2157 from neicnordic/dependabot/go_modules/sda-do…
jbygdell Jan 7, 2026
4a7d30f
Merge pull request #2057 from neicnordic/feature/validator-orchestrator
KarlG-nbis Jan 8, 2026
2285fcd
build(deps): bump the go_modules group across 2 directories with 2 up…
dependabot[bot] Jan 8, 2026
fa9071a
Merge pull request #2153 from neicnordic/dependabot/maven/sda-doa/all…
nanjiangshu Jan 12, 2026
45ce310
build(deps): bump golang.org/x/crypto
dependabot[bot] Jan 12, 2026
51bd5ba
build(deps): bump actions/checkout from 5 to 6
dependabot[bot] Jan 12, 2026
43ef6a5
build(deps): bump codecov/codecov-action from 5.5.1 to 5.5.2
dependabot[bot] Jan 12, 2026
526833f
build(deps): bump no.elixir:crypt4gh
dependabot[bot] Jan 12, 2026
0869771
build(deps): bump the all-modules group in /sda with 6 updates
dependabot[bot] Jan 12, 2026
9c2e10d
Merge pull request #2170 from neicnordic/dependabot/maven/sda-doa/all…
kjellp Jan 13, 2026
a5c2156
Merge pull request #2174 from neicnordic/dependabot/go_modules/sda/al…
nanjiangshu Jan 13, 2026
ce2d460
Merge pull request #2168 from neicnordic/dependabot/github_actions/co…
jbygdell Jan 13, 2026
df53dd2
fix: add validator-orchestrator to docker pull loop
Parisa68 Jan 13, 2026
f8c4aad
Merge pull request #2166 from neicnordic/dependabot/github_actions/ac…
nanjiangshu Jan 13, 2026
1b3f6f1
build(deps): bump golangci/golangci-lint-action from 8.0.0 to 9.2.0
dependabot[bot] Jan 13, 2026
b72641b
Merge pull request #2178 from neicnordic/fix/retag-validator-orchestr…
jbygdell Jan 13, 2026
99cd6ce
[sda-download] fix all non S3 linter issues
jbygdell Jan 13, 2026
6e876cd
Merge pull request #2165 from neicnordic/dependabot/go_modules/sda-do…
jbygdell Jan 15, 2026
3c5648e
Merge pull request #2167 from neicnordic/dependabot/github_actions/go…
jbygdell Jan 15, 2026
3fe16e2
Merge pull request #2179 from neicnordic/linter/fixes-in-sda-download
jbygdell Jan 15, 2026
eacfb15
[makefile] make k3s use v1.34 and remove Nginx
jbygdell Jan 7, 2026
c40f987
Parameterize the ingress annotations
jbygdell Dec 8, 2025
d173b11
[sda-svc] Fix Sync config
jbygdell Dec 17, 2025
8dc6d36
[sda-svc] Fix re-encrypt readiness port
jbygdell Dec 17, 2025
7216da7
[sda-svc] Update readme
jbygdell Dec 18, 2025
f890720
[sda-svc] add label selectors to exposed deployments
jbygdell Jan 7, 2026
322d47b
[sda-svc] add min cli version to downloads config
jbygdell Jan 12, 2026
ce2a194
[sda-svc] ensure CPU limits are on whole units
jbygdell Jan 12, 2026
9bb6c4f
[sda-svc] create config before jobs.
jbygdell Jan 12, 2026
251c8c7
Bump chart version
jbygdell Jan 7, 2026
49cffb2
Merge pull request #2160 from neicnordic/chart-updates
jbygdell Jan 15, 2026
a11e2a8
Merge pull request #2161 from neicnordic/dependabot/go_modules/dot-gi…
nanjiangshu Jan 15, 2026
d7330a3
fix: syntax and typo
nanjiangshu Jan 15, 2026
b36e97e
feat: bump chart version
nanjiangshu Jan 15, 2026
6861c64
Merge pull request #2186 from neicnordic/fix/chart-download-secrets
nanjiangshu Jan 15, 2026
bf7ab43
feat(db): add file_headers_backup table for key rotation
nanjiangshu Jan 12, 2026
1aedd38
feat(db): grant rotatekey role access to backup table
nanjiangshu Jan 12, 2026
cd30020
feat(rotatekey): implement header backup before re-encryption
nanjiangshu Jan 12, 2026
521d509
feat: add unit tests for backupHeader
nanjiangshu Jan 13, 2026
30cfd4f
feat: update unit test to reflect backup of header
nanjiangshu Jan 13, 2026
782d988
feat: update integration test for rotatekey
nanjiangshu Jan 13, 2026
0803b0e
feat(db): Use file_id as the primary key
nanjiangshu Jan 13, 2026
4523c94
feat(rotatekey): check minimal db version
nanjiangshu Jan 13, 2026
1218750
feat: update db setup and query after using file_id as the primary key
nanjiangshu Jan 13, 2026
795ef6f
feat: apply reviewers comments
nanjiangshu Jan 15, 2026
a36baf2
Merge pull request #2164 from neicnordic/feature/backup-header-before…
nanjiangshu Jan 16, 2026
9ce83a8
Merge remote-tracking branch 'refs/remotes/upstream/main' into sync-f…
kkochel Jan 21, 2026
377c017
Fix after migration
kkochel Jan 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/integration/scripts/charts/dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ fi

## update values file with all credentials
if [ "$2" == "federated" ]; then
yq -i '.global.schemaType = federated' "$values_file"
yq -i '.global.schemaType = "federated"' "$values_file"
fi

yq -i '
Expand Down
2 changes: 1 addition & 1 deletion .github/integration/scripts/charts/deploy_charts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ if [ "$1" == "sda-mq" ]; then
--wait

if [ "$4" == "federated" ]; then
curl -kL -u "admin:$ADMINPASS" -X PUT "$PROTOCOL://broker.127.0.0.1.nip.io/api/queues/sda/from_cega"
curl --retry 100 -kL -u "admin:$ADMINPASS" -d '{"durable": true}' -H "Content-Type: application/json" -X PUT "$PROTOCOL://broker.127.0.0.1.nip.io/api/queues/sda/from_cega"
fi
fi

Expand Down
4 changes: 2 additions & 2 deletions .github/integration/scripts/charts/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ global:
s3ReadyPath: "/minio/health/ready"
existingClaim: inbox-pvc
reencrypt:
host: reencrypt
port: 50443
host: pipeline-sda-svc-reencrypt
port: 50051
sync:
api:
password: "apiuser"
Expand Down
366 changes: 366 additions & 0 deletions .github/integration/sda-validator-orchestrator-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,366 @@
services:
credentials:
container_name: credentials
command:
- "/bin/sh"
- "-c"
- |
sh /scripts/make_sda_credentials.sh;

curl -s -u guest:guest -X PUT -k "http://rabbitmq:15672/api/users/validator_orchestrator" -H "content-type:application/json" -d '{"password": "validator_orchestrator", "tags":"none"}';
curl -s -u guest:guest -X PUT -k "http://rabbitmq:15672/api/permissions/sda/validator_orchestrator" -H "content-type:application/json" -d '{"configure":"","write":"sda","read":".*"}';
depends_on:
postgres:
condition: service_healthy
rabbitmq:
condition: service_healthy
environment:
- PGPASSWORD=rootpasswd
image: python:3.11-slim-bookworm
volumes:
- ./scripts:/scripts
- shared:/shared


database_init:
container_name: database_init
image: postgres:15.4-alpine
command:
- "/bin/sh"
- "-c"
- |
pg_isready
psql -c "CREATE DATABASE sda_validator_orchestrator" || true;
psql -d sda_validator_orchestrator -c "CREATE SCHEMA sda_validator_orchestrator;" || true;
export PGOPTIONS="--search_path=sda_validator_orchestrator";
find /init/ -name *.sql -exec psql -d sda_validator_orchestrator -f {} \;
psql -d sda_validator_orchestrator -c "CREATE USER validator_orchestrator WITH PASSWORD 'validator_orchestrator'";
psql -d sda_validator_orchestrator -c "GRANT USAGE ON SCHEMA sda_validator_orchestrator TO validator_orchestrator;";
psql -d sda_validator_orchestrator -c "GRANT ALL ON ALL TABLES IN SCHEMA sda_validator_orchestrator TO validator_orchestrator;";
psql -d sda_validator_orchestrator -c "GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA sda_validator_orchestrator TO validator_orchestrator;";
depends_on:
postgres:
condition: service_healthy
restart: on-failure
environment:
- PGHOST=postgres
- PGPORT=5432
- PGUSER=postgres
- PGPASSWORD=rootpasswd
volumes:
- ./../../sda-validator/orchestrator/database/postgres/initdb.d/:/init
- shared:/shared

postgres:
build:
context: ../../postgresql
container_name: postgres
environment:
- POSTGRES_PASSWORD=rootpasswd
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 2s
retries: 6
image: ghcr.io/biobanklab/sensitive-data-archive:PR${PR_NUMBER}-postgres
extra_hosts:
- "localhost:host-gateway"
ports:
- "15432:5432"
restart: always
volumes:
- postgres_data:/var/lib/postgresql/data

rabbitmq:
build:
context: ../../rabbitmq
container_name: rabbitmq
healthcheck:
test:
[
"CMD",
"bash",
"-c",
"rabbitmq-diagnostics -q check_running && rabbitmq-diagnostics -q check_local_alarms",
]
interval: 10s
timeout: 5s
retries: 6
image: ghcr.io/biobanklab/sensitive-data-archive:PR${PR_NUMBER}-rabbitmq
ports:
- "15672:15672"
- "5672:5672"
restart: always
volumes:
- rabbitmq_data:/var/lib/rabbitmq

minio:
image: minio/minio
command: server /data --console-address ":9001"
container_name: s3
environment:
- MINIO_ROOT_USER=access
- MINIO_ROOT_PASSWORD=secretKey
- MINIO_SERVER_URL=http://127.0.0.1:9000
healthcheck:
test: ["CMD", "curl", "-fkq", "http://localhost:9000/minio/health/live"]
interval: 10s
timeout: 2s
retries: 6
ports:
- "19000:9000"
- "19001:9001"
volumes:
- minio_data:/data

validator-orchestrator_init:
container_name: validator-orchestrator_init
image: golang:1.25-alpine
depends_on:
credentials:
condition: service_completed_successfully
command:
- "/bin/sh"
- "-c"
- |
chmod 777 -R /validators/;
wget -O /validators/100-200_word_validator.sif https://github.com/neicnordic/sensitive-data-archive/raw/18059f008da61d41ee54758b93f761c3ea6d318c/sda-validator/apptainer-example/100-200_word_validator.sif
wget -O /validators/always_success.sif https://github.com/neicnordic/sensitive-data-archive/raw/18059f008da61d41ee54758b93f761c3ea6d318c/sda-validator/apptainer-example/always_success.sif;
mkdir /validators/config
cp /config.yaml /validators/config/config.yaml;
echo "sda-api-token: "$(cat /shared/token) >> /validators/config/config.yaml;
echo '{
"policy": [
{
"role": "admin",
"path": "/admin/*",
"action": "(GET)|(POST)"
}, {
"role": "submission",
"path": "/validators",
"action": "GET"
}, {
"role": "submission",
"path": "/validate",
"action": "POST"
}, {
"role": "submission",
"path": "/result",
"action": "GET"
}
],
"roles": [
{
"role": "admin",
"rolebinding": "submission"
},
{
"role": "admin_user@integration.test",
"rolebinding": "admin"
}, {
"role": "submission_user@integration.test",
"rolebinding": "submission"
}
]
}' > /validators/config/rbac.policy

volumes:
- validators:/validators
- ./sda/config.yaml:/config.yaml
- shared:/shared

validator-orchestrator:
build:
args:
GOLANG_VERSION: ${GOLANG_VERSION:-1.20}
context: ../../sda
target: debug
security_opt: # Unconfine seccomp and apparmor to allow apptainer to create usernamespaces within the container
- seccomp=unconfined
- apparmor=unconfined
image: ghcr.io/biobanklab/sensitive-data-archive:PR${PR_NUMBER}-validator-orchestrator
container_name: validator-orchestrator
depends_on:
api:
condition: service_started
database_init:
condition: service_completed_successfully
validator-orchestrator_init:
condition: service_completed_successfully
environment:
- LOG_LEVEL=DEBUG
- API_PORT=8080
- VALIDATOR_PATHS=/validators/100-200_word_validator.sif,/validators/always_success.sif
- SDA_API_URL=http://api:8080
- BROKER_PASSWORD=validator_orchestrator
- BROKER_USER=validator_orchestrator
- JOB_QUEUE=validation-job-queue
- JOB_PREPARATION_QUEUE=validation-job-preparation-queue
- DATABASE_HOST=postgres
- DATABASE_PORT=5432
- DATABASE_USER=validator_orchestrator
- DATABASE_PASSWORD=validator_orchestrator
- CONFIG_FILE=/validators/config/config.yaml
- JWT_PUB_KEY_URL=http://localhost:8800/oidc/jwk
- RBAC_POLICY_FILE_PATH=/validators/config/rbac.policy
healthcheck:
test:
[ "CMD", "/bin/grpc_health_probe", "--addr", "localhost:9000" ]
interval: 10s
timeout: 2s
retries: 6
extra_hosts:
- "localhost:host-gateway"
restart: always
volumes:
- validators:/validators
ports:
- "8082:8080"

s3inbox:
build:
args:
GOLANG_VERSION: ${GOLANG_VERSION:-1.20}
context: ../../sda
target: debug
image: ghcr.io/biobanklab/sensitive-data-archive:PR${PR_NUMBER}
command: [ sda-s3inbox ]
container_name: s3inbox
depends_on:
credentials:
condition: service_completed_successfully
minio:
condition: service_healthy
mock-aai:
condition: service_healthy
postgres:
condition: service_healthy
rabbitmq:
condition: service_healthy
environment:
- BROKER_PASSWORD=inbox
- BROKER_USER=inbox
- BROKER_ROUTINGKEY=inbox
- DB_PASSWORD=inbox
- DB_USER=inbox
extra_hosts:
- "localhost:host-gateway"
restart: always
volumes:
- ./sda/config.yaml:/config.yaml
- shared:/shared
ports:
- "18000:8000"
- "18001:8001"

api:
command: [ sda-api ]
container_name: api
depends_on:
reencrypt:
condition: service_started
credentials:
condition: service_completed_successfully
postgres:
condition: service_healthy
mock-aai:
condition: service_healthy
rabbitmq:
condition: service_healthy
environment:
- BROKER_PASSWORD=api
- BROKER_USER=api
- DB_PASSWORD=api
- DB_USER=api
extra_hosts:
- "localhost:host-gateway"
image: ghcr.io/biobanklab/sensitive-data-archive:PR${PR_NUMBER}
ports:
- "8090:8080"
restart: always
volumes:
- ./sda/config.yaml:/config.yaml
- ./sda/rbac.json:/rbac.json
- shared:/shared



reencrypt:
image: ghcr.io/biobanklab/sensitive-data-archive:PR${PR_NUMBER}
command: [sda-reencrypt]
container_name: reencrypt
depends_on:
credentials:
condition: service_completed_successfully
ports:
- "50051:50051"
restart: always
volumes:
- ./sda/config.yaml:/config.yaml
- shared:/shared

mock-aai:
container_name: ls-aai-mock
depends_on:
aai-db:
condition: service_healthy
environment:
- DOCKERHOST=localhost
healthcheck:
test:
[ "CMD", "/bin/true" ]
interval: 10s
timeout: 2s
retries: 6
image: registry.gitlab.ics.muni.cz:443/perun/deployment/proxyidp/proxyidp-public-docker-images/ls_aai_mock:2.5.3-broker2.1.13-tomcat9.0-jdk21
ports:
- "8800:8080"
volumes:
- "./sda/aai-mock:/etc/lsaai-mock"


aai-db:
container_name: ls-aai-db
environment:
MYSQL_ROOT_PASSWORD: "aaiPass"
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: "aai"
MYSQL_USER: "aai"
MYSQL_PASSWORD: "aaiPass"
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-h", "localhost" ]
interval: 10s
timeout: 2s
retries: 6
image: mysql/mysql-server:latest
volumes:
- ./sda/aai-mock/aai-mock.sql:/docker-entrypoint-initdb.d/1.sql

integration_test:
container_name: tester
command:
- "/bin/sh"
- "-c"
- |
cd /tests;
go test -v ./...
depends_on:
validator-orchestrator:
condition: service_healthy
s3inbox:
condition: service_started
extra_hosts:
- "localhost:host-gateway"
image: golang:1.25-alpine
profiles:
- tests
volumes:
- shared:/shared
- ./tests/validator-orchestrator:/tests

volumes:
minio_data:
postgres_data:
rabbitmq_data:
shared:
validators:
Loading
Loading