Hi folks,

The 2022.02 tag has been pushed to master on git.lavasoftware.org.
.deb packages have been built in GitLab CI and are published at

  https://apt.lavasoftware.org/release

Docker images for amd64 and arm64 have been built in GitLab CI and
are available from

  https://hub.lavasoftware.org/

and

  https://hub.docker.com/u/lavasoftware


Changes in this release
==================

# Device-types

## New device-types

New supported devices:

* seco-c61

## d05

Use NFS version 3 by default when loading the root file-system with NFS.

## dephtcharge

Allow to boot from emmc. Typical extra kernel arguments for booting a Chrome OS image are `root=/dev/mmcblk0p3 cros_debug cros_secure`.

## hp-x360-14-G1-sona

Automatically retry on boot failures to workaround bootloader issues.

## UUU
 
Enable "on worker" uuu_usb_otg_path configuration instead of modifying devices definitions located on the master.
   
Before this change, the LAVA device dictionary contained static uuu USB ID as a string, like:
```jinja
{% set uuu_usb_otg_path = '1:324' %}
```

The dictionary can now contain a command that will actually return this string.

```jinja
{% set uuu_usb_otg_path_command = ['board-control', 'imx8mq-evk-01', 'extra', 'uuu_otg_path', '--silent'] %}
```  

# docker + adb,fastboot
 
We often observe race conditions where a USB device will disconnect between the time when it gets added to the docker command line as a `--device= option` and the time that the container actually starts.

Instead of running one-off containers, start the containers first, wait for them to be up, map devices into them with lava-dispatcher-host, and then run the command. This way, if the device gets disconnected it will be re-shared with the container once it is enumerated again.

# Settings

The LAVA server settings can now be configured from environment variables.
   
Every variables that starts with `LAVA_SETTINGS_` will be added to the django settings.

For complex settings, admins can use LAVA_JSON_SETTINGS which is expected to be a dictionary as json, base64 encoded. For instance:

```python
import base64
import json

data = {
  "WORKER_AUTO_REGISTER_NETMASK": ["::1"]
}
print(base64.b64encode(json.dumps(data).encode("utf-8")).decode("utf-8"))
```

In order to use it, add to the environment: `LAVA_JSON_SETTINGS="eyJXT1JLRVJfQVVUT19SRUdJU1RFUl9ORVRNQVNLIjogWyI6OjEiXX0="`.

See [the documentation](https://lava.readthedocs.io/en/latest/admin/basic-tutorials/instance/configure/#environment-variables).

# Container images

Fix LDAP support when using LDAPS and upgrade sentry-sdk to 1.5.5 in lava-server images.

# Debian packaging

Ensure `lava-celery-worker`, `lava-dispatcher-host` and `lava-docker-worker` are restarted on upgrades.

# Worker

## Logging interval

By default, lava-run will send the new logs to the server every second. For large labs, this would generate a consequent load on the server. This interval is now configurable when calling `lava-docker-worker` and `lava-worker`.


Rgds

--
Rémi Duraffort
TuxArchitect
Linaro