Hi folks,
The 2020.01 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
=================
Upgrading
=========
This release add database migrations to add one field to the workers
objects.
This migrations should be really quick due to the fairly small amount of
workers. However this mean that some downtime will be required.
Device-types
============
New device-types
----------------
New supported devices:
* sun50i-h6-pine-h64-model-b (Olimex)
docker
------
The docker DUTs can now use a specific network by setting `docker_networks`
in the device dictionary:
```jinja
{% set docker_networks = ["mynet", "mysecondnet"] %}
```
cmsis-dap
---------
cmsis-dap capable devices can now set `usb_sleep`.
This parameter will force lava to wait some seconds after the usb device
becomes visible.
sun50i devices
--------------
The initrd memory limit has been increased to fix a failure in u-boot with
large ramdisk. The new limit is set to `0xffffffffffffffff`.
REST API
========
We are expanding the REST API 0.2 functionalities in this release. New
methods
and endpoints are available for different models.
New endpoints with basic CRUD methods are available:
* /api/v0.2/tags/
* /api/v0.2/aliases/
Following endpoints have their functionalities expended so they now support
create, update and delete actions:
* /api/v0.2/workers/
* /api/v0.2/devices/
* /api/v0.2/devicetypes/
Devices endpoint now supports get and set dictionary via GET/POST request.
* /api/v0.2/devices/${hostname}/dictionary/
Similarly, devicetypes endpoint now supports retrieving and
creating/updating
the health checks and device type templates via GET/POST.
* /api/v0.2/devicetypes/${name}/health_check/
* /api/v0.2/devicetypes/${name}/template/
Workers endpoint now supports retrieving and creating/updating the
configuration and environment via GET/POST requests available here:
* /api/v0.2/workers/${hostname}/env/
* /api/v0.2/workers/${hostname}/config/
lava-dispatcher-host
====================
This release includes some new features towards being able to run
lava-dispatcher, or some test job actions, inside containers.
One of these is lava-dispatcher-host, a small package that provides the
minimal functionality that needs to run on the host OS: watching for udev
events for USB devices showing up, and making them available inside
containers.
For now, this only works for lxc containers, but it is separate from
lava-dispatcher itself so that when lava-dispatcher runs inside a docker
container, the amount of software needed on the host is minimal.
docker fastboot support
========================
This release also adds the possibility of deploying images and boot via a
fastboot binary that is running inside a docker container.
It simplifies AOSP deployment, which no longer need to instantiate a full
lxc container, install the tools inside of it, and boot it. The same can
now be achieved by using a pre-built docker images with the tools already
installed. For example, an AOSP deploy becomes:
```yaml
actions:
- deploy:
to: fastboot
docker:
image: my-fastboot-image
images:
ptable:
url: http://.../ptable.img
reboot: hard-reset
boot:
url: http://.../boot.img
reboot: hard-reset
# [... other images ...]
timeout:
minutes: 15
- boot:
method: fastboot
docker:
image: my-fastboot-image
prompts:
- 'healthd: No battery devices found'
- 'hikey: '
- 'console:'
timeout:
minutes: 15
```
Archive
=======
Some system images are compressed as a tarball (``.tar.*``), these images
need the ``archive`` option specified to unpack the system image correctly.
```yaml
- deploy:
images:
boot:
url: http://example.com/boot.tar.xz
compression: xz
archive: tar
```
The support for deploying qemu jobs using archive resources has been fixed.
Docker
======
Building images
---------------
The docker images are now built from sources. You can build the docker
image locally using:
```shell
.gitlab-ci/build/docker.sh dispatcher
.gitlab-ci/build/docker.sh server
```
lava-coordinator
----------------
`lava-coordinator` is now installed and started in `lava-server` docker
images.
lava-run
========
In previous releases, lava-run was executing host command under nice but
was not running itself under nice.
`lava-run` is now running under `nice` and the host command will not be
prepended anymore by `nice` as the niceness is inherited from the parent
process.
Worker concurrent limit
=======================
Admins can now limit the number of jobs running in parallel on the same
worker.
This limit can be set either from the admin interface or using lavacli:
```shell
lavacli workers update --job-limit 3 <worker>
```
Install script
==============
The `setup.py` script has been fully rewritten. This script is now used to
generate the Debian packages and the docker containers.
This script could be used to generate any distribution packages.
This script is now used to build docker containers from sources.
Settings
========
The django settings are stored in `/etc/lava-server/settings.conf` using
the json format.
Prior to this release, LAVA would silently ignore the settings if the file
was invalid. Starting from this release, LAVA services will refuse to start
if the file is not valid.
This will make errors easier to detect.
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro