Files
hla_framework_bd/README.md
T

91 lines
1.9 KiB
Markdown

# SLS HLA Framework
## Getting started
Install [uv](https://docs.astral.sh/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
- `prod` vs `dev` PVs
- **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`:
```shell
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