Device-types
============
New device-types
----------------
New supported devices:
* sun50i-h6-orangepi-one-plus (Allwinner)
* sun8i-a33-olinuxino (Olimex)
* TI CC13X2 LaunchPad (TI)
cmsis-dap
---------
In order to fix some infrequent issues on specific hardware and boards, LAVA will now explicitly perform a sync on the directory before umounting it.
depthcharge
-----------
### extra kernel arguments
Admins and users can now both define some extra kernel arguments in device-type templates and in the job context.
Use `base_kernel_args` in device-type templates and `extra_kernel_args` in job definitions.
### LZMA compression
Enable LZMA compression for arm64 kernel Image with Depthcharge.
docker
------
Secondary ssh connection is now supported for the docker device-type. Look at the [documentation](
https://docs.lavasoftware.org/lava/pipeline-writer-secondary.html#secure-shell-connections-ssh) for more information.
lxc
---
Under some circumstances, LAVA could leak the lxc rootfs in `/var/lib/lxc/`. LAVA will no longer leak such rootfs.
We advice admins to have a look at `/var/lib/lxc` and to remove unused rootfs as they can use a significant amount of disk space.
OpenOCD
-------
Admins can set `board_selection_cmd` in the device-type template to specify a command to pass the board id/serial number to OpenOCD.
See OpenOCD documentation for details on the command to set the serial number for the interface your device type is using.
Docker
======
Dockerfiles
-----------
The repository [lava/pkg/docker](
https://git.lavasoftware.org/lava/pkg/docker), hosting the Dockerfiles has been merged into the [lava/lava](
https://git.lavasoftware.org/lava/lava) repository.
This merge will allow (in a near future) to build the docker images from sources.
entrypoint.d
------------
When starting `lava-server` or `lava-dispatcher` docker images, admin can execute custom scripts by adding them into `/root/entrypoint.d/` The scripts will be executed right before the start of the services.
In this release the support for custom script has been fixed.
performances
------------
When running gunicorn in docker container, the service will now use `/dev/shm` for storing heartbeat artifacts.
By default, gunicorn will use /tmp which is not mounted in docker containers. `/dev/shm` is guaranteed to be available and an in-memory filesystem.
Using a non-memory file system can lead to intermittent hang.
See [gunicorn in docker](
https://pythonspeed.com/articles/gunicorn-in-docker/) for more information.
permissions
-----------
When starting `lava-logs` or `lava-server-gunicorn` the entrypoint will now check that the files under `/etc/lava-server/dispatcher-config/` and `/var/lib/lava-server/default/media/` belong to the `lavaserver` user and group.
The docker container will refuse to start if that's not the case as this can lead to crashes or strange behaviors.
lava-publisher
==============
The lava-publisher sockets will now automatically send ping messages thanks to the [ZMTP protocol](
https://rfc.zeromq.org/spec:37/ZMTP/).
If the connection is lost, the [heartbeating protocol](
https://rfc.zeromq.org/spec:37/ZMTP/#connection-heartbeating) will detect the issue and try to reconnect.
Error reporting
===============
In order to track crashes of the LAVA services, admins can setup [sentry](
https://sentry.io) in `/etc/lava-server/settings.conf`:
```json
"SENTRY_DSN": "http://<public_key>@<sentry>/<project-id>"
```
You should also install `sentry-sdk` from [pypi](
https://pypi.org/project/sentry-sdk/) with:
```shell
apt-get install python3-pip
python3 -m pip install sentry-sdk==0.10.2
```
The lava-server docker image comes with the sentry sdk already installed.
Rémi, for the LAVA team.