This repository holds the a definition of t01 IOC Instances and services. Each sub folder of the services directory contains a helm chart for a specific service or IOC. The corresponding deployments repo can be found at [https://gitlab.diamond.ac.uk/controls/containers/beamline/t01-deployment].
Pre commit hooks will validate the synoptic and additional soft support if present. To install pre-commit hooks run:
uvx pre-commit installTo force execution of the pre-commit hooks on all files run:
uvx pre-commit run --all-filesRuntime support (stream protocol files, EPICS DB templates and the ibek entity
models that describe them) is vendored directly into each IOC instance's
config/ folder from a central pattern library (e.g.
ibek-runtime-streamdevice or ibek-runtime-support).
config/ is the Kubernetes ConfigMap that is mounted into the running
container, so it holds runtime inputs only and must stay under 1 MiB.
Manage vendored patterns from the repo root with ibek pattern:
# vendor a pattern (writes config/ files + ../runtime-lock.yaml + ../ioc.schema.json)
ibek pattern add <library>:<pattern>@<tag> services/<instance>
# re-vendor after a version bump (e.g. raised by Renovate on runtime-lock.yaml)
ibek pattern update services/<instance>
# verify on-disk vendored files still match their recorded sha256 hashes
ibek pattern check services/<instance>
# restore a vendored file that was accidentally edited
ibek pattern restore services/<instance>How it fits together:
services/<instance>/runtime-lock.yaml— records the librarysource, the pinnedversion(git tag) and thesha256of every vendored file. Renovate watches this file and raises a PR when a new library release is available; after a bump CI / the maintainer must re-runibek pattern update.services/<instance>/ioc.schema.json— a per-instance JSON schema (referenced from the first line ofconfig/ioc.yaml) generated byibek pattern schema. It is regenerated by a pre-commit hook and combines the base IOC schema, every vendored pattern's entity models and any local*.ibek.support.yamlyou drop intoconfig/.- Local beamline support — for one-off, beamline-specific support just add a
plain editable
*.ibek.support.yaml(plus any DB/proto it needs) directly inconfig/. It is not recorded in the lock file and is merged into the schema automatically, so you can edit it freely. - Vendored files carry a
DO NOT EDITheader and are content-addressed; never hand-edit them (CI verifies their hashes viaibek pattern check). A new formatter / EOL pre-commit hook must exclude the files listed inruntime-lock.yaml.
Note: the old top-level
ibek-runtime-support/directory, the globalruntime.schema.jsonand the per-repo schema pre-commit hook have been retired in favour of this per-instance vendoring model.