a4ee64fb3cfde4fb9b1af08eb9e8f668ee768536
SLS HLA Framework
Getting started
Install uv
CLI
Using the CLI:
cd cli
uv sync
source .venv/bin/activate
agebd --help
Adding a new service
agebd service add --help
Environments
The services are deployed to 2 environments:
| Environment | Network | Host | Deploy path on host |
|---|---|---|---|
prod |
machine |
sls-vserv-bd-hla01 |
/sls/bd/hla/prod/ |
dev |
office |
sls-vserv-bd-hla01-dev |
/sls/bd/hla/dev/ |
Process Variables (PVs)
We distinguish between
prodvsdevPVs- services specific PVs from a dedicated IOC vs external PVs from other IOCs
PVs - Service Specific
You create them, see (# TODO: docs...)
prod and dev PVs automatically get created.
In your code, you only use the prod name of a PV. The framework will automatically use the
dev name/PV when a service runs in the dev environment.
PVs - External
You can only access them. The framework will use the same PV in prod and dev,
i.e. there is no dev PV.
PVs - Examples
| Environment | Service Specific | External |
|---|---|---|
prod |
PV("AGEBD-MYSERVICE:MYPVNAME") |
PV("AGEOP-SOME-SERVICE:SOME-PVNAME") |
dev |
PV("AGEBD-MYSERVICE-DEV:MYPVNAME") |
- |
Python
For python services there are 3 environments. The python environment is set through the env variable AGEBD_ENV.
| Environment | PVs |
|---|---|
AGEBD_ENV=prod |
uses prod PVs |
AGEBD_ENV=dev |
uses dev PVs |
AGEBD_ENV=local |
uses fake/mock python objects as PVs, no access to real PVs |
Hosts overview
Check which network a host lives in, e.g. for sls-lca:
ping sls-lca.psi.ch
Machine Net (prod)
- sls-lca
- sls-vserv-bd-01
- sls-vserv-bd-hla01
Office Net (dev)
- sls-lc8
- sls-lc9
- sls-vserv-bd-01-dev
- sls-vserv-bd-hla01-dev
Languages
Python
97.6%
Jinja
1.6%
Shell
0.6%
Just
0.2%