1.8 KiB
1.8 KiB
Adding a new service
Python setup
Install the uv package manager
CLI (Command-Line Interface)
We have our own cli called agebd.
To use the cli, first clone this repo. Then:
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- service 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
The framework will use the same PV in prod and dev, i.e. there is no dev PV.
However, in dev you can only read from the PV, whereas in prod you can also write to it.
PVs - Examples
| Environment | Service Specific | External |
|---|---|---|
prod |
PV("AGEBD-MYSERVICE:MYPVNAME") read&write |
PV("AGEOP-SOME-SERVICE:SOME-PVNAME") read&write |
dev |
PV("AGEBD-MYSERVICE-DEV:MYPVNAME") read&write |
PV("AGEOP-SOME-SERVICE:SOME-PVNAME") readonly |
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 |