A fresh `make local` now completes the whole flow with no manual seeding, closing the three S-B04 gaps in the host-browser stack: - flowable-init also deploys diploma-eligibility.dmn (was BPMN-only), so completing WachtOpDocumenten routes through the DMN to Beoordelen instead of 404ing. - a local-seed one-shot seeds + publishes the BIG zaaktype (server-assigned URL) and writes it to seed-env:/acl.env; the ACL sources it on startup (entrypoint override), since the UUID isn't knowable at compose-write time. - an nrc-subscribe one-shot registers the `zaken` abonnement at the event-subscriber callback, so notifications reach the projection and the openbaar register. Both one-shots reach OpenZaak/NRC by container IP (a single-label host fails their Django URLValidator), mirroring the CI verify scripts. Asserted by `make verify-local`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
36 lines
1.9 KiB
Bash
Executable File
36 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
# Local-stack bootstrap (S-B04, #110, ADR-0020) — the "seed zaaktype + wire the ACL" step.
|
|
#
|
|
# Runs as the `local-seed` init container of infra/docker-compose.local.yml. It seeds + publishes
|
|
# the BIG zaaktype (and the Diploma informatieobjecttype) into OpenZaak, then writes the resulting
|
|
# **server-assigned** URLs into /out/acl.env, which the ACL entrypoint sources before starting. This
|
|
# is the local-stack equivalent of what infra/run-domain-check.sh does for CI: the zaaktype UUID is
|
|
# assigned by OpenZaak at creation, so it can't be a static value in the compose file.
|
|
#
|
|
# Why the container IP and not the `openzaak` service name: OpenZaak validates URL query params
|
|
# (e.g. ?catalogus=) with Django's URLValidator, which rejects a single-label host like `openzaak`.
|
|
# Seeding against the resolved IP keeps the seeded URLs valid AND host-consistent with the ACL, which
|
|
# we point at the same IP below. See docs/runbooks/gitea-actions-gotchas.md and ADR-0020.
|
|
set -eu
|
|
|
|
oz_ip="$(python3 -c "import socket;print(socket.gethostbyname('openzaak'))")"
|
|
OZ_BASE="http://${oz_ip}:8000"
|
|
export OZ_BASE OZ_PUBLISH=1
|
|
|
|
echo ">> seeding + publishing the BIG zaaktype at ${OZ_BASE} (idempotent)"
|
|
out="$(python3 /work/seed_catalogus.py)"
|
|
echo "$out"
|
|
|
|
zt="$(printf '%s\n' "$out" | sed -n 's/^ZAAKTYPE_URL //p' | head -1)"
|
|
iot="$(printf '%s\n' "$out" | sed -n 's/^INFORMATIEOBJECTTYPE_URL //p' | head -1)"
|
|
[ -n "$zt" ] || { echo "ERROR: seed did not report a ZAAKTYPE_URL" >&2; exit 1; }
|
|
[ -n "$iot" ] || { echo "ERROR: seed did not report an INFORMATIEOBJECTTYPE_URL" >&2; exit 1; }
|
|
|
|
# The ACL entrypoint sources this; these keys override the placeholder defaults in the compose file.
|
|
cat > /out/acl.env <<EOF
|
|
Acl__OpenZaak__BaseUrl=${OZ_BASE}/
|
|
Acl__Defaults__ZaaktypeUrl=${zt}
|
|
Acl__Defaults__InformatieobjecttypeUrl=${iot}
|
|
EOF
|
|
echo ">> wrote /out/acl.env (base=${OZ_BASE}/ zaaktype=${zt})"
|