Hi folks,
The 205.04 tag has been pushed to master on gitlab.com/lava/lava.
.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://registry.gitlab.com/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
==================
# Device-types
## New device-types
* aml-s905d3-cc
* bcm2837-rpi-3-b-plus
* bcm2712-rpi-5-b
* mt8188-geralt-ciri-sku0
* qcs6490-rb3gen2
* rk3588-rock-5-itx
* supermicro-as-2015hr-tnr
## U-boot device-types
Allow adding extra boot methods
On system ready devices we usually boot from u-boot into grub. To be able
to interact with such a chainloaded bootloader, a device can now use the
extra_boot_methods variable.
Add the following to a device dict entry:
```jinja
{% set extra_boot_methods %}
grub:
parameters:
bootloader_prompt: {{ bootloader_prompt|default('grub>') }}
needs_interrupt: {{ grub_needs_interrupt|default(true) }}
grub-efi:
parameters:
bootloader_prompt: {{ bootloader_prompt|default('grub>') }}
needs_interrupt: {{ grub_needs_interrupt|default(true) }}
{% endset %}
```
# LAVA dispatcher
## Kernel message parsing
Look for u-boot start message to detect DUT reset and fail the job.
## Deploy to downloads
Save "downloads://*" file to unique path by default.
This change unifies the default behavior across the `http(s)://`, `file://`
and `downloads://` schemas and it provides the `uniquify` parameter for
overwriting.
## Postprocess action
Export `HTTP_CACHE`, `LAVA_JOB_ID` and `LAVA_DISPATCHER_IP` as environment
variables in the docker container runner post-processing code.
`HTTP_CACHE` is also exported to docker test actions.
## Slow serial
For device-types with slow or unreliable serial connections, a parameter
has been present in LAVA for a long time: `test_character_delays`. This is
forcing LAVA to sleep some milliseconds between each characters sent to the
serial console.
With this release, the lava-test-runner script will now sleep for the same
amount of time before sending each test signal. This should help mitigating
the impact of these serial connections.
## lava-test-shell
Add a new option to pass the output for a given test result, the result
will be the same as calling the command with the `--shell` argument.
The passed quoted arguments are now properly preserved by lava-test-shell.
Previously the arguments had to be quoted multiple times to prevent them
being split. Now the argument will be preserved quoted. For example, before
`lava-test-shell "some arg"` the `some arg` would be split to to two so the
`"'some arg'"` quoting was required. Now `"some arg"` will always be a
single argument. This was undocumented change in last LAVA 2024.02 release.
# LAVA worker
Fix frequent worker offline events. After 2024.09, frequent online ->
offline -> online records are observed on most workers. It is a regression
introduced by the commit be0f40cbf7c7e95fb03bd83507a84ccaf43d9baf.
Rgds
--
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro
Hi folks,
The 205.02 tag has been pushed to master on gitlab.com/lava/lava.
.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://registry.gitlab.com/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
==================
# Device-types
## New device-types
* imx8dxl-evk-dl2
* imx8dxl-orangebox
* imx8mp-ipi-lec
* imx8mp-tqma8mpql-mba8mpxl
* imx91-11x11-frdm
* imx943-19x19-lpddr4-evk
* imx943-19x19-lpddr5-evk
* mimxrt1170-evk
* mimxrt1180-evk
* mt8365-genio-350-evk
* mt8370-genio-510-evk
* mt8395-genio-1200-evk
* mt8390-genio-700-evk
* mt8395-radxa-nio-12l
* mt8188-geralt-ciri-sku1
* mt8188-geralt-ciri-sku2
## AVH
Add support for firmware package. In the job definition, add:
```yaml
fw_package:
url: https://example.com/kronos-baremetal-psa-secure-storage-1.0.zip
storage_file: virtio_0
root_partition: 1
```
## fastboot
Add support for auto fastboot device detection. If only one fastboot device
is attached to a dispatcher, LAVA can now automatically discover the adb
and fastboot serial number. In the device dictionary, add:
```jinja
{% set fastboot_auto_detection = true %}
```
## FVP
Allow to pass custom environment variables to the FVP binary. In the job
definition add `environment: ["HELLO=WORLD"]`
## JLink
### Custom erase and reset commands
Allow to customize erase and reset commands. In the device-type template
add:
```jinja
{% set erase_command = "erase" %}
{% set reset_command = "r" %}
```
## K3
Use common templates for K3 platforms. This template provides `booti`
addresses and also set `uboot_ramdisk_format` to `raw` by default.
### Multi-core boards
Allow JLink to connect to multi-core boards (e.g. M33 or M7). In the
device-type template, a new parameter lists the supported core types. By
default, LAVA will connect to the first in the list.
```jinja
{% set supported_core_types = ['M33', 'M7'] %}
```
To select another core, specify it in the job definition:
```yaml
- boot:
method: jlink
coretype : "M7"
[...]
```
### QEMU
Add `mips64el`, `ppc64le` and `riscv32` to the list of supported
architectures.
## u-boot devices
Add support for raw initramfs images. For device-type with recent u-boot,
use raw ramdisk format by updating the device-type template:
```jinja
{% set uboot_ramdisk_format = uboot_ramdisk_format|default('raw') %}
```
# LAVA dispatcher
## Timeout and retries
When only deploy/boot/test block timeout is defined, the same timeout is
used for all the actions inside the block. When a RetryAction's child
action fails on timeout, it leaves no time for the next retry to run as the
parent timeout is respected too.
This change propagates timeout by levels and retries for retry actions. It
uses `parent_timeout // parent_retries` for child action timeout. The logic
is similar to setting a smaller named/child action timeout manually.
This change might require some adaptations to the timeout. For instance
downloads are automatically retried 3 times, so the download timeout will
be divided by 3 with this change, allowing for some retries.
## lava-dispatcher-host
Make `lava-dispatcher-host` cli startup 3 times faster. This is import as
this is used in udev rules.
# LAVA server
## Database configuration
Allow to set database `CONN_MAX_AGE` and `CONN_HEALTH_CHECKS` from
environment variables:
```yaml
LAVA_SETTINGS_DB_CONN_MAX_AGE=60
LAVA_SETTINGS_DB_CONN_HEALTH_CHECKS=true
```
Or inside `LAVA_JSON_SETTINGS` with:
```
DB_CONN_MAX_AGE=60
DB_CONN_HEALTH_CHECKS=true
```
## Notifications
Allow to send notification to device owner. In the notification block, add:
```yaml
to:
user: "{LAVA_DEVICE_OWNER}"
```
## Scheduler queue timeout
Allow to specify a default schedule queue timeout. In the configuration add:
```yaml
QUEUE_TIMEOUT_HOURS=5 # In hours
```
Rgds
--
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2024.09 tag has been pushed to master on gitlab.com/lava/lava.
.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://registry.gitlab.com/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
==================
# Upgrading
## Database migrations
This release includes migrations for both lava_scheduler_app and
lava_results_app. The migrations add unique constraints to fix potential
(and rare) race conditions when receiving and parsing job logs.
In order to apply the migrations, the database should not contains TestJobs
with duplicated sub_id, TestSets, TestSuites or TestCases. Otherwise the
migrations will fail.
An helper script as been added as part of this release to **remove test
jobs with such duplicates**. The helper **should** be ran **before**
running the migrations.
```shell
lava-server manage check_uniqueness --yes
```
When using `--yes`, the helper script will automatically **remove** the
faulty jobs.
# Device-types
## New device-types
* imx8mp-debix-model-a
* imx91-9x9-qsb
* imx93-11x11-frdm
* imx95-15x15-ab2
* imx95-15x15-evk
* imx95-19x19-verdin
* k3-am62p5-sk
* qrb4210-rb2-uboot
* r8a779f4-s4sk
* r9a07g044l2-smarc
# Deploy actions
# Downloads
Make overlay tarball available in downloads. When running postprocess
action in "downloads" deployment it is sometimes necessary to use LAVA
overlay. Example use case is when running tests on the board without
networking. This release makes it possible to, for example, append LAVA
overlay to the ramdisk during postprocessing step.
```yaml
actions:
- deploy:
images:
image:
url: 'https://example.com/Image'
dtb:
url: 'https://example.com/device.dtb'
ramdisk:
url: 'https://example.com/ramdisk.gz'
timeout:
minutes: 5
to: downloads
postprocess:
docker:
image: mkbootimage:master
steps:
- mkdir lava_overlay
- tar xvf overlay*.tar.gz -C lava_overlay
- "(cd lava_overlay ; find * | cpio -o -H newc -R +0:+0 | gzip -9
>> ../ramdisk.gz)"
- mkbootimg --header_version 2 --kernel Image --dtb device.dtb
--cmdline "earlycon clk_ignore_unused pd_ignore_unused audit=0" --ramdisk
ramdisk.gz --output boot.img
```
## Fasboot
Allow fastboot devices to use minimal and u-boot boot methods. Some boards
like the Qualcomm robotics platforms can run U-Boot by chainloading with
fastboot. Add support for using the U-Boot boot method as a second step
after "fastboot boot".
## u-boot
### Device tree overlay
Add support for device tree overlay when deploying to u-boot with tftp. The
resource should be called `dtbo`.
```yaml
actions:
- deploy:
to: tftp
dtbo:
url: https://example.com/dtb-overlay
```
The support should be added to the u-boot device-type with:
```jinja
{% set enable_dtbo_support = 'true' %}
```
Also specify the right addresses with:
```jinja
{% set bootm_dtbo_addr = '0x93c00000' %}
{% set bootz_dtbo_addr = bootm_dtbo_addr %}
{% set dtb_base_resize = dtb_base_resize | default(1048576) %}
```
### Skip power reset
Allow to skip resetting the device for u-boot. Allow user to define a
fastboot boot action to load u-boot boot image, and then define a u-boot
boot action to run u-boot level boot steps.
```yaml
actions:
- boot:
method: fastboot
[...]
- boot:
method: u-boot
reset: false
[...]
```
## USB mass-storage
Add a new method to deploy to USB mass storage gadget. This feature
requires hardware support on the worker and is currently only available for
u-boot DUTs (but can be extended to other DUTs).
The device dictionary should include:
```jinja2
{% set usbg_ms_commands = {
"disable": ["gadget-ms", "off"],
"enable": ["gadget-ms", "on", "{IMAGE}"],
} %}
```
The job definition should look like:
```yaml
actions:
- deploy:
to: usbg-ms
image:
url: https://example.com/.../20231109_raspi_4_bookworm.img.xz
compression: zstd
format: ext4
partition: 1
overlays:
lava: true
```
# LAVA server
## Rest API
Add a new endpoint to cancel jobs in batch by POSTing to the endpoint the
list of job ids.
## Scheduler
When finishing a job, the scheduler will now schedule the next jobs way
faster. The process for reporting the end of a job has been improved,
reducing the time between two consecutive jobs.
Rgds
--
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2024.05 tag has been pushed to master on gitlab.com/lava/lava.
.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://registry.gitlab.com/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
==================
# Security issue
A security issue as been found by Arnaud Ferraris in the callback code.
Every user that can view a job can access to the callback token.
We strongly advice to upgrade LAVA to 2024.05 to fix this issue and to
revoke every callback token.
# Device-types
## New device-types
* imx8mn-ddr3l-ab2
* imx91-11x11-evk
* imx93-14x14-evk
* qrb4210-rb2
* sm8550-hdk
* stm32mp157c-lxa-tac-gen1
## FVP
Allow to to import fvp ubl license file. `ubl_license` can be either a
license file or a license code now.
LAVA runs `armlm activate` for the former and `armlm import` for the latter.
## meson-g12
Add a default `boot_character_delay` of 10ms for all the device-types based
on `meson-g12`.
## rk3399-rock-pi-4b
Allow to override `boot(i|m)_*` variables.
# lava-run
When LAVA interacts with a DUT, LAVA uses pexpect to parse the DUT output.
Starting from this release, LAVA will better handle logging coming from
pexpect and only print the strings sent by LAVA once.
# lava-scheduler
Improve the `lava-scheduler` performances by lowering the number of SQL
requests generated by the scheduling. Also improve performances by
improving the job filtering when using tags.
# lava-server manage
Allow to automatically update a user password from the `lava-server manage`
command line. Admins should call
```shell
sudo lava-server manage users update --passwd <PASSWD> <USERNAME>
```
# lava-worker
lava-worker is now running job cleanups (removing failed job temporary
directory) in a specific thread to avoid blocking the main thread for too
long. This was causing the lava-worker to be marked offline for some
minutes with cleaning large job directories.
Rgds
--
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2024.03 tag has been pushed to master on gitlab.com/lava/lava.
.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://registry.gitlab.com/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
==================
# Device-types
## New device-types
* mt8195-cherry-tomato-r3
## aaeon-UPN-EHLX4RE-A10-0864
Allow to set `kernel_start_message` variable.
## bcm2837-rpi-3-b
Fix the DT load addresses that was potentially overwriting u-boot ATAGs.
See [rpi-3-32b fix](
https://gitlab.com/lava/lava/-/commit/afa28d5ae128a591414517edd72652800a72b…
)
## FVP
Automatically retry failures when activating the ARMLM license.
# APIs
## Rest API
The REST API v1 has been removed. The API has been superseded by v2 for a
long time now.
At the same time, a new version of the API (v3) has been started. This is
still an on going work to improve the API performances and reliability.
## XMLRPC
### Devices
Allow to update a device `physical_owner` field from the API. Calling
`lavacli devices update --user <username>` will update the field.
### Workers
Validate yaml syntax before updating the worker configuration.
# docker
## lava-dispatcher
Use QEMU from bookworm-backports, upgrading from 2.7 to 8.2.1.
# Services
## lava-dispatcher-host
Improve stability by handling more potential exceptions.
## lava-publisher
Improve lava-publisher stability by handling multiple potential connection
errors.
## lava-run
When sending logs over https fails because the payload is too large,
lava-run will automatically reduce the size of the payload before retrying.
Before this version, lava-run would retry with the exact same payload (or
sometime even larger one) and will be unlikely to ever succeed.
When failing to send logs to the server, lava-run will also record the
error to stderr. lava-worker will then forward these messages to the
server. This will be recorded as failure_comment.
## lava-server-gunicorn
Switch gunicorn default worker from eventlet to gthread.
With eventlet, the event notification system (based on ZMQ socket) will
need to create a new socket for each connection. If the publisher service
is unreachable, the server will consume all the file descriptors and crash
after some time.
gthread worker allows to reuse the same zmq socket for multiple requests
while still allowing requests to live longer than the worker timeout.
Regarding the performances, the apache bench test results shown that
gthread is able to handle more concurrent connection than eventlet in most
use cases.
## lava-server cli
A new argument has been added to the `lava-server jobs rm` command:
`--logs-only`. When this parameter is set, the command will only remove the
logs from the filesystem while keeping the TestJob objects in the database.
Rgds
--
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2024.01 tag has been pushed to master on gitlab.com/lava/lava.
.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://registry.gitlab.com/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
==================
# Upgrading
## Database migrations
This release includes one migration in lava_scheduler_app. Remote artifact token
max length is increased from 100 to 200 for super-long API tokens.
# Device-types
## New device-types
New supported devices:
* stm32mp157a-dhcor-avenger96
* meson-g12b-a311d-libretech-cc
* meson-sm1-s905d3-libretech-cc
* imx93-11x11-evk-pmic-pf0900
* avh(Arm Virtual Hardware)
* imx95-19x19-evk
* dell-latitude-3445-7520c-skyrim
* mt8186-corsola-steelix-sku131072
## NXP
Download addresses for i.MX8 are updated to match those shipped in the
firmware for i.MX8MP-EVK which has been continuing to work happily. The old
addresses no longer give enough room to avoid them overwriting each other.
# LAVA publisher
IPV6 is supported in ZMQ events now. Adding the following line in server
settings enables IPV6 support.
```yaml
EVENT_IPV6: true
```
# LAVA scheduler
* Improve device's Jinja template performance by using a shared Jinja
environment. The template cache will be shared between HTTP requests and no
longer spend time to compile templates for every request. For example, when a
dispatcher downloads job from the server the template has to be rendered with
a job's context.
* Record worker health transitions. Worker online and offline state changes are
logged and displayed now.
# REST API
The `/device/validate` endpoint now requires "add_device" permission.
# Deploy and boot methods
## avh
New AVH deploy and boot methods are added for integrating Arm Virtual Hardware
in LAVA.
Example:
```yaml
device_type: avh
job_name: avh-rpi4b-deploy-boot-example
timeouts:
job:
minutes: 60
priority: medium
visibility: public
secrets:
# The value should be the name of user's remote artifact token
avh_api_token: remote_artifact_token_name
actions:
- deploy:
to: avh
options:
model: rpi4b
api_endpoint: https://app.avh.arm.com/api
project_name: "Default Project"
timeout:
minutes: 30
images:
rootfs:
# Disk image.
url: https://example.com/rpi4b/nand
format: ext4
# root partition for LAVA test overlay.
root_partition: 1
# Partition for custom overlays.
partition: 1
overlays:
modules:
compression: xz
format: tar
path: /
url: https://example.com/rpi4b/modules.tar.xz
kernel:
url: https://example.com/rpi4b/kernel
dtb:
url: https://example.com/rpi4b/devicetree
- boot:
method: avh
timeout:
minutes: 20
prompts:
- "pi@raspberrypi:"
- "root@raspberrypi:"
auto_login:
login_prompt: "login:"
username: pi
password_prompt: 'Password:'
password: raspberry
login_commands:
- sudo su
```
## fvp
Added buffering to the model stdout and stderr. Without this buffering, the
model sometimes hangs when stdout or stderr buffers are full.
## fastboot
DUT will be powered off when fastboot timeout. On some devices, the fastboot
command will never return and is not killable. This might block lava-run
forever. Powering-off the DUT will release fastboot command.
## uuu
* Fixed individual action timeout not being respected in
boot-corrupt-boot-media.
* Disconnect device after uuu boot action to flush the output buffer.
## download
Allow to turn off kisscache at job level.
Example:
```yaml
- deploy:
timeout:
minutes: 5
to: tmpfs
images:
rootfs:
use_cache: false
```
# LAVA dispatcher
## Git clones
Added 6 times retries for git clone function. It could be helpful for
infrastructure level one time failure.
## DUT output
In case it is needed by post-processing out of LAVA, single `\r` character in
pexpect output is not stripped off anymore.
## Test definition parameters
Fixed test definition parameter `0` being converted to the empty string. LAVA
dispatcher converts both key values `None` and `0` to `''` before. Now only
`None` is converted.
Example:
```yaml
- test:
timeout:
minutes: 5
definitions:
- repository: http://git.linaro.org/lava-team/lava-functional-tests.git
from: git
path: lava-test-shell/smoke-tests-net.yaml
name: smoke-tests
parameters:
USE_NC: 0
```
`USE_NC: 0` was converted to `USE_NC=''` in the `run.sh` shell script before. It
is now converted to `USE_NC='0'`.
Rgds
--
Chase Qi
Senior Engineer
Automation Software Team
Linaro
_______________________________________________
lava-announce mailing list -- lava-announce(a)lists.lavasoftware.org
To unsubscribe send an email to lava-announce-leave(a)lists.lavasoftware.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
Hello Everyone,
for more than 5 years now, the LAVA gitlab server has been hosted and
maintained by Linaro in the Cambridge lab.
We recently decided to migrate the LAVA project source code to gitlab.com
as gitlab is providing licenses for OSS projects like LAVA (and the server
is getting older).
The migration has been finished today. Every projects are now in the LAVA
namespace at https://gitlab.com/lava/
For instance:
* lava: https://gitlab.com/lava/lava/
* lavacli: https://gitlab.com/lava/lavacli/
* lavafed: https://gitlab.com/lava/lavafed/
* meta-lava: https://gitlab.com/lava/meta-lava/
* ...
You need to change the git configuration to point to gitlab.com instead of
git.lavasoftware.org.
As the migration process does not migrate the pipeline data, if you have
open MRs, please rebase and update them.
If you need access, please create a username on gitlab.com and request
access.
Best regards
--
Rémi Duraffort
Principal Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2023.10 tag has been pushed to master on gitlab.com/lava/lava.
.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://registry.gitlab.com/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
==================
# Device-types
## New device-types
New supported devices:
* acer-chromebox-cxi5-brask
* acer-cp514-2h-1130g7-volteer
* acer-cp514-2h-1160g7-volteer
* dell-latitude-5300-8145U-arcada
* hifive-unmatched-a00
# lava-docker-worker
Add a systemd unit file to start multiple lava-docker-worker instances.
```shell
systemctl start lava-docker-worker@<instance-01>
systemctl start lava-docker-worker@<instance-02>
```
# Scheduler race condition
A scheduler race condition has been fixed in this release. This race
condition has been affecting LAVA for many years. This was causing multiple
issues like:
* #620: Cannot access Multinode Job with Sub ID
* #622: One of Multinode Job Stuck in Scheduling status forever
* A device is set to reserved state without a job assigned to it
# Packages
Publish debian packages to [lava-apt-repo](
https://gitlab.com/lava/lava-apt-repo/) gitlab page.
# XMLRPC API
## Jobs filtering
Extend the `scheduler.jobs.list` endpoint to filter jobs that take longer
than N minutes.
When there are some network issues or changes on the worker side, jobs that
handled by the worker may not updated to finish state even after job
timeout reached.
## Inactive users
Disable token for inactive users. This is already the case for the REST
API. Extend this behavior to the XMLRPC API.
Rgds
--
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2023.06 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
## Database migrations
Three database migrations are present in this release:
* lava_results_app.0019_update_query_contenttype
* lava_scheduler_app.0057_dt_permissions_worker_master_version
* lava_scheduler_app.0058_add_testjob_view_performance_indexes
The three migrations can be safely ran before upgrading and restarting
gunicorn.
If you already applied the two first migrations, you should revert them by
calling:
```shell
lava-server manage migrate lava_results_app 0018_drop_buglink
lava-server manage migrate lava_scheduler_app 0056_testjob_queue_timeout
```
Then you can safely call
```shell
lava-server manage migrate
```
# Device-types
## New device-types
New supported devices:
* acer-n20q11-r856ltn-p1s2-nissa
* r8a779m1-ulcb
# Docker images
The LAVA container images are now based on Debian (12) Bookworm.
# Docker caching
When using a docker container in a job action, by default, LAVA dispatcher
will call `docker image pull` to get the latest version of the image.
In order to drop the `pull`, ones can add `local: true`. Starting from this
release, when using `local: true`, if and only if the image is not present
locally, LAVA dispatcher will pull the image first.
If the image is already available on the worker, then LAVA dispatcher will
never force a refresh.
# Job metadata
Allow to pass any kind of objects into the job metadata:
```
metadata:
api:
name: example.com
url: https://example.com/api/
version: latest
node_id: 12345
```
# Kernel log parsing
Allow to ignore kernel errors when parsing the boot log.
In order to use this, add `ignore_kernel_messages: True` to the boot action.
# lava-docker-worker
The LAVA project is currently migrating to [gitlab](https://gitlab.com/lava/).
In order to ease the transition, lava-docker-worker is now pulling docker
images from `registry.gitlab.com` and fallback to `hub.lavasoftware.org`.
# Performances
## lava-run logs
When failing to push logs from `lava-run` to the server, wait some time
before retrying. Prior to this version, `lava-run` was DOSing the server in
case of error.
## lava-server
The LAVA server SQL queries has been improved a lot and should make the web
interface way faster.
# Prometheus
A prometheus endpoint is now available at `/v1/prometheus`. To configure
prometheus, add:
```yaml
- job_name: "lava"
metrics_path: "/v1/prometheus"
static_configs:
- targets: ["https://lavaserver.example.com"]
```
To export metrics about private devices, you should provide basic
authentication with username and token (same as XMLRPC API).
# Version format
The development version string format is now `<tag>.dev<commits>` instead
of `<tag>.<commits>.g<hash>` to follow python recommendations that are now
enforced by Debian 12.
Rgds
--
Rémi Duraffort
Principal Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2023.05 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
==================
# Relicense LAVA to GPLv2 or later
Before this patch, LAVA code was licensed under GPLv2 (or later) or AGPLv3,
depending on the python module. This release relicense all the code to
GPLv2 or later.
Approval from the relevant contributors has been requested and granted
before hand.
# Migration to gitlab.com
Most of the LAVA projects has been migrated to [gitlab.com](
https://gitlab.com/lava) in the `lava` namespace. The remaining projects
(including LAVA) should be migrated before the end of July.
# Deploy to UUU
Connect device before flashing images. The DUT serial output is now
included in job logs. This is useful to retrieve error message from boot
image raised during flash steps
# lava-docker-worker
Don't use cache when building the dispatcher docker image
This is to make sure the latest dependencies defined in Dockerfile are
built into the custom image, typically when the depends are pull from git
repo or downloaded from internet.
Also add `--use-cache` to allow to override the default behavior.
# LAVAFed rework
The lavafed project has been reworked bringing a better test overage on
real devices. The project is mostly using staging.validation.linaro.org
instance for running on physical devices. If you are willing to
participate, please provide access to you staging instances.
# LAVA server performances
The performances of the LAVA server service has been improved by reworking
the SQL queries when enforcing the authorization model. This should improve
the performances on most pages.
# XML-RPC API
Add support to delete device and worker:
```
scheduler.devices.delete
scheduler.workers.delete
```
Rgds
--
Rémi Duraffort
Principal Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2023.03 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
==================
## New device-types
New supported devices:
* hp-14b-na0052xx-zork
* imx8mm-innocomm-wb15-evk
* rk3588-rock-5b
## Deploy
### Apply overlay
Fix applying overlay to a custom directory.
The test directory, which defaults to `/lava-%s` (where `%s` gets replaced
by the `job ID`), can be overridden like this:
```yaml
context:
lava_test_results_dir: /var/lib/lava-%s
```
### nbd
Handle `nbd-server` running as non-root.
On Debian, nbd-server is running as nbd by default, thus preventing the
image owned by root to be mounted as rw. So LAVA should detect the
nbd-server user and chown image to it.
## Boot
### Fastboot
LAVA is now raising `InfrastructureError` on `fastboot-boot-commands`
timeout.
Timeouts caused by the DUT not entering fastboot mode or by faults in the
connection to the DUT while running pre-boot fastboot commands should be
treated as infrastructure errors.
### Nodebooter
Add support for nodebooter service for booting grub based devices. In order
to enable the support, add to the device-type template:
```yaml
{% set has_nodebooter = True %}
```
Nodebooter action will start the nodebooter container, configure it, add
the DUT via API to nodebooter and reset the device to be netbooted by
nodebooter.
### uuu
Serial availability is now skipped when the first command is `bcu: reset
usb` or when uuu block contain only bcu protocol.
## Healthz
Add a new endpoint at `/v1/healthz/`. This endpoint checks that the
connection to the database is working properly and returns either 200 or
500. This can be used by reverse proxy to check the status of the gunicorn
process.
## lava-docker-worker
Fix `lava-docker-worker` systemd service dependencies. The service should
depend on both `containerd` and `docker`.
Prior to this version, system reboot would take a lot of time waiting
lava-docker-worker to stop.
## XMLRPC
### encoding
Fix the encoding of the response from the server. This will fix encoding
issues with some specific characters.
### Device(-type)s permissions
A new set of api endpoints has been added to manage devices and
device-types permissions:
* `scheduler.devices.perms(add|delete|list)`
* `scheduler.device_typess.perms(add|delete|list)`
### Users and groups
A new set of api endpoints has been added to mange users and groups:
* `auth.groups`: (add|delete|list|show) groups
* `auth.groups.perms` (add|delete|list) permissions of a specific group
* `auth.users` (add|delete|list|show|update) users
* `auth.users.groups` (add|delete|list) groups of a specific user
* `auth.users.perms` (add|delete|list) permissions of a specific user
Rgds
--
Rémi Duraffort
Principal Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2023.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
==================
## New device-types
New supported devices:
* acer-cbv514-1h-34uz-brya
* acer-chromebox-cxi4-puff
* acer-cp514-3wh-r0qs-guybrush
* b-u585i-iot02a
* stm32mp15x-eval
## Deploy and boot methods
### FVP
Under some rare circumstances some FVP model can enter an infinite loop of
printing again and again the same lines. This was preventing LAVA to cleanup
correctly and was leaking a running model inside it's docker container.
Starting from this release, LAVA will cleanup the container correctly.
### uuu
Distinguish between normal timeout and abnormal exit when running serial
download check.
## lava-dispatcher-host package
Add support to install and use `lava-dispatcher-host` on Ubuntu 20.10 and
22.04. Also fix device sharing on Debian Bookworm.
## lava-publisher
lava-publisher is now listening on /ws/v1/healthz endpoint and returns a 200
status code. This can be used to check lava-publisher health.
## LAVA events
websocket events are not authenticated. When connecting to the websocket
stream, you will only receive events for devices that you can access. Use
the
latest lavacli release to send authenticated websocket requests.
## Performances
The performance of the server part has been improved on multiple pages.
Loading
the corresponding pages should be way quicker now.
## PostgreSQL
Starting from 2023.02, LAVA will set a default value of 600 to
`CONN_MAX_AGE`,
enabling persistent database connection. This is recommended by Django and
should improve the performances.
Rgds
--
Rémi Duraffort
Principal Tech Lead
Automation Software Team
Linaro
Hi folks,
The 2023.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
==================
## New device-types
New supported devices:
* hp-x360-14a-cb0001xx-zork
* imx6ulz-lite-evk
* imx93-9x9-qsb
* jh7100-starfive-visionfive-v1
* mt8195-cherry-tomato-r2
## Security issues
Multiple security issues has been found and fixed in this release. The
details will be shared in some weeks in order to give time for admins to
upgrade.
## Debian support
The support for Debian Buster has been dropped as Debian Buster does not
provide support for the latest pyyaml versions.
This release also add support for Debian Bookworm.
## Action timeouts
Allow defining a timeout for an individual action in the block section.
This allows to override all the actions in a block at once, while still
being
able to control single action timeouts within the same block.
```yaml
actions:
- deploy:
timeout:
minutes: 5
timeouts:
http-download:
minutes: 1
```
## Interactive test action
In interactive test action, you can now user the server IP and Job ID in
test
commands. The variables are `SERVER_IP` and `JOB_ID`.
This can be used with:
```yaml
- test:
interactive:
- name: network
prompts: ["=> ", "/ # "]
script:
- command: ping {SERVER_IP}
```
## Settings
A new set of environment variable is taken into account when loading
settings.
Every variables prefixed by `LAVA_YAML_SETTINGS_` will be yaml loaded and
added
to the django settings.
For instance to define `Debug` to `True`:
```shell
LAVA_YAML_SETTINGS_DEBUG=true
```
This will be useful when deploying using docker-compose or k8s.
## Test definitions
This release drop the TarRepoAction test definition action.
This feature was never used in LAVAv2 and has been replaced by the
UrlRepoAction since 2022.09.
Instead of providing the tar as base64 encoded in the job definition (that
can
be huged), the user can provide a url to the tar that will be downloaded,
decompressed (if needed) and extracted.
## XMLRPC API
Lava uses XMLRPC for its system management endpoints, which is secured via
HTTP
basic authentication. This adds `system.set_user_groups` taking a string
email
address for the user, and an array of string group names which will be the
exact set of groups of which the user is a member.
This endpoint requires a token from a user with staff permissions in order
to
access it.
Rgds
--
Rémi Duraffort
Principal Tech Lead
Automation Software Team
Linaro
We have recently fixed some serious security issues on LAVA server.
CVE-2022-44641: Recursive XML entity expansion
Users with valid accounts can submit a specially crafted XML document via the
XMLRPC that causes a recursive XML entity expansion, consuming large amounts
of resources and eventually cause a Denial of Service on the LAVA server.
This problem was found, and the fix provided, by Igor Ponomarev from
Collabora. The fix has been released in 2022.11, with the following patch:
https://git.lavasoftware.org/lava/lava/-/commit/1bee0f8957741582c2bed800974…
CVE-2022-45132: Code execution in jinja templates
A specially crafted jinja2 template can be submitted to a publicly accessible
REST API endpoint without any authentication and cause a remote command
execution as the same user that is running the LAVA server web application.
This problem was found, and the fix provided, by Igor Ponomarev from
Collabora. The fix has been released in 2022.11.1, with the following patch:
https://git.lavasoftware.org/lava/lava/-/commit/ab17e8304f10c7c0fe912067f2e…
We strongly recommend that administrators upgrade to the 2022.11.1
release immediately, or failing that, at least apply the patches linked
above locally to their lava server.
Hi folks,
The 2022.11 tag has been pushed to master on git.lavasoftware.org
<http://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:
* kv260
* sm8350-hdk
* asus-CM1400CXA-dalboz
## imx8
* separate common configure of 8u series to imx8u-common and add new device
type imx8ulp-9x9-evk
# LAVA dispatcher
* Modifying sparse rootfs is now fully supported.
* Add ava and base-edk2 device types
* schema.deploy.fvp: add the optional uniquify param
# Bug fixes
* Fix filenames when overlaying tar files
* Add missing OIDC setting keys to common settings
* share/requires.py: fix building for debian -backports and -security suites
* reprepro-release: don't trigger on debian/* tags
* Fix a huge performance issue when parsing kernel boot log
* schema: allow to use auto_login in depthcharge boot action
* kernel messages: fix match for login prompts
* device-type: add bcu_board_name for some missed imx boards
* fvp: raise a JobError when escaping is required
Thanks,
--
Stevan Radaković | Senior Engineer
Linaro.org <www.linaro.org> │ Open source software for ARM SoCs
Hi folks,
The 2022.10 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
==================
## New device-types
New supported devices:
* acer-R721T-grunt
* k3-am625-sk
* r8a77950-ulcb
* sc7180-trogdor-kingoftown
## Security issue
A security issue as been discovered in LAVA. We advice LAVA admins to
upgrade their instances.
## Django authentication
Fix two authorization issues for device (type) visibility
First one is on worker detail page while looking at transitions, a
non-authorized user can see device transitions for devices he's not
supposed to.
Second one is the device type health history; users are able to view the
whole page they're not supposed to. Also on the same page, transitions are
shown to non-authorized users.
## Use monotonic times
`time.time()` is affected by system time changes like daylight savings,
leap seconds and clock drift.
Monotonic time will always move forward. lava-dispatcher is now using it to
compute duration and timeouts.
Thanks
--
Rémi Duraffort
LAVA and Tux Architect
Linaro
Hi folks,
The 2022.08 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
==================
## New device-types
New supported devices:
* aaeon-UPN-EHLX4RE-A10-0864
* imx8ulp-evk
* imx93-11x11-evk
* mt8192-asurada-spherion-r0
* synquacer-uboot
## Grub based device-types
Allow device-type to easily disable interrupting boot. This is not required
if grub is build to always drop to a shell.
In the device-type template or device dictionary, add:
```jinja
{% set grub_needs_interrupt = false %}
```
## UUU and BCU
Add support for [BCU](https://github.com/NXPmicro/bcu#readme) to the UUU
based device-types. This utility allows changing the board's boot
configuration (mainly SD card, eMMC or USB Serial Download Protocol)
through a serial interface.
In the device dictionary, add:
```jinja
{% set bcu_board_id = '2-1.3' %}
```
Then in the job definition, you can use bcu directly:
```yaml
- boot:
method: uuu
commands:
- bcu: reset usb
- uuu: -b emmc {boot}
- bcu: set_boot_mode emmc
timeout:
minutes: 20
```
The support has been enabled for imx8dxl-evk imx8ulp-evk imx8mp-evk and
imx93-11x11-evk device-types.
## OpenID connect
LAVA server can now support OpenID connect (for instance Azure ID or
Keycloack) to authenticate users.
In roder to use this feature, you should install `mozilla-django-oidc` and
add to the settings:
```yaml
AUTH_OIDC:
OIDC_RP_CLIENT_ID: "1"
OIDC_RP_CLIENT_SECRET: "bd01adf93cfb"
OIDC_OP_AUTHORIZATION_ENDPOINT: "http://testprovider:8080/openid/authorize
"
OIDC_OP_TOKEN_ENDPOINT: "http://testprovider:8080/openid/token"
OIDC_OP_USER_ENDPOINT: "http://testprovider:8080/openid/userinfo"
```
See [mozilla-django-oidc](
https://mozilla-django-oidc.readthedocs.io/en/stable/settings.html) for the
full list of options.
## Transfer Overlay
For device-type where the base OS does not provide tools to download over
http (like wget or curl), the transfer overlay action can now use NFS.
In order to use this, the job definition would look like:
```yaml
- boot:
[...]
transfer_overlay:
transfer_method: nfs
download_command: mount -t nfs -o nolock
unpack_command: cp -rf
```
Rgds
--
Rémi Duraffort
Tux and LAVA Architect
Linaro
Hi folks,
The 2022.06 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:
* bcm2835-rpi-b-rev2
* jh7100-visionfive
* kontron-bl-imx8mm
* rk3399-roc-pc
# Docker test shell
Starting from this release, when using the docker test shell, the current
device connection will be recorded in the logs as a feedback connection.
This allows to print the DUT logs while running a docker test shell.
# Callbacks
It is now possible to receive a callback notification for both `running`
and `finished` job. You have to set `criteria: all` in the job definition.
# Private instance
It is now possible to require all users to login before accessing any page
outside of the home page, documentation pages and the login page itself by
setting the `REQUIRE_LOGIN` variable in any YAML configuration file under
`/etc/lava-server/settings.d/*.yaml`.
Rgds
--
Rémi Duraffort
TuxArchitect
Linaro
Hi folks,
The 2022.05 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:
* am437x-idk-evm
* am57xx-beagle-x15
* armada-388-clearfog-pro
* hp-14-db0003na-grunt
* imx6dl-udoo
* kontron-kswitch-d10-mmt-6g-2gs
* kontron-kswitch-d10-mmt-8g
* rk3399-khadas-edge-v
* sun9i-a80-cubieboard4
## depthcharge
Add extra_kernel_args parameter to the Depthcharge boot method, to allow
specifying additional kernel arguments specific for each boot action in
multi-stage jobs.
# Debian package
## lava-dispatcher-host
Allow to install the package on Ubuntu focal. This allows to run a lava
worker on Ubuntu focal thanks to `lava-docker-worker`.
# Social accounts
Add a page allowing users to manage the social account connection.
# Performances
## Scheduler
Improve scheduler performance by caching the device-type templates. The
previous caching mechanism was in fact broken.
## Web interface
Improve server performances when browsing the LAVA web interface as
anonymous user.
Rgds
--
Rémi Duraffort
LAVA and TuxArchitect
Linaro
Hi folks,
The 2022.04 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:
* morello
# Authentications
Allow to enable login with multiple social accounts at once. The login page
will display the available options with logos.
# Environment
The dispatcher IP is now available in the test shell actions as
`LAVA_DISPATCHER_IP`.
# Git authentication
LAVA can now clone from authenticated git repositories. The credentials
should be present in the local environment variable, for example via the
`secrets` dictionary. LAVA dispatcher now expands environment variables in
git urls:
```yaml
actions:
- test:
definitions:
- repository: https://${USER}:${TOKEN}@example.com/definitions.git
from: git
[...]
secrets:
USER: MY_USER
TOKEN: MY_TOKEN
```
# lava-docker-worker
The LAVA team advice to replace `lava-worker` by `lava-docker-worker` as
this daemon will automatically upgrade and downgrade the local lava-woker
container to match the remote server version.
For this release, the `lava-docker-worker` daemon stability as been improve
a lot in this release. This is now used in production at Linaro.
# Overlays
The lava dispatcher is now able to run `img2simg` after applying the
overlays. Users should add `spare: true`:
```yaml
rootfs:
url: "http://example.com/rootfs.ext4.xz"
format: ext4
sparse: true
overlays:
modules:
url: "http://example.com/modules.tar.xz"
[...]
```
# Server performances
## logging interval
Starting from this release, the default logging interval is set to 5s.
lava-run will now send the job logs every 5s, instead of every seconds.
This should decrease the load on the LAVA server.
## Scheduler lock
Prior to this release, the lava-scheduler process was locking the worker
table during the scheduling. On large instances, this would prevent the
workers to update their status.
Starting from this release, lava-scheduler is not locking the worker table
anymore.
# XML-RPC API
## Device-types
The XML-RPC API is now returning the `health_denominator` and
`health_frequency` when calling `scheduler.device_types.show`. This
function will also return a boolean (`default_template`) indicating if this
device-type is using a custom templare or the default one.
## Devices
The XML-RPC API allows to change the device-type of a specific device when
calling `scheduler.devices.update`.
## workers
The XML-RPC API call `scheduler.workers.show` is now returning booleans
(`default_config`, `default_env` and `default_env_dut`) to indicate if the
worker is using a custom config (env or env-dut) file.
Rgds
--
Rémi Duraffort
LAVA and Tux Architect
Linaro
Hi folks,
The 2022.03 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:
* at91sam9g20ek
# Server performances
Improve server performances by dropping COUNT queries that where used for
pagination. Also cache permissions to avoid recalculation in the same page.
# lava-(docker)-worker
Allow to set `--job-log-interval` for both `lava-docker-worker` and
`lava-worker`. On large instances, admins can increase the value to lower
server load.
# lava-dispatcher-host
Fix a file descriptor leak. Without this patch, after some jobs, the
process will run out of file descriptors.
# lava-run
Add job definition secrets to the environment when starting `lava-run`.
This allows to download from private git repositories by providing
authentication in the job definition secrets.
Rgds
--
Rémi Duraffort
TuxArchitect
Linaro
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/config…
).
# 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
Hi folks,
The 2022.01.2 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
This release is reverting the "Balance job scheduling between submitters"
feature. In fact on large instances with large queue, this feature is
making scheduling way slower.
The feature will be reworked and reintroduced in a later release when the
performance issue has been fixed.
Rgds
--
Rémi Duraffort
TuxArchitect
Linaro
Hi folks,
The 2022.01.1 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:
* acer-cb317-1h-c3z6-dedede
* dell-latitude-5400-4305U-sarien (split from dell-latitude-5400-sarien)
* fsl-ls1046a-frwy
* fsl-ls2088a-rdb
* fsl-lx2162a-qds
* hp-x360-12b-ca0500na-n4000-octopus
* lenovo-TPad-C13-Yoga-zork
* rk3399-rock-pi-4b
* seco-b68
*
## fsl-l*-rdb
Allow to boot from an alternate bank. In order to use this feature, set
`uboot_altbank` to `True` in the job context:
```yaml
context:
uboot_altbank: true
```
Admins should set `uboot_altbank_cmd` in the device-type template.
# lava-dispatcher-host
Add support for docker device sharing under cgroups v2.
Under cgroups v2, device access control is done with BPF programs only.
When docker creates a container, it already attaches a BPF program to that
container cgroup. lava-dispather-host replaces that BPF program with one of
its own, that allows the regular list of devices containers can usually
access (`/dev/null`, `/dev/zero`, ...), plus all the devices shared with
the container. Subsequent device sharing with the same container overrides
that BPF program with a new one
# Scheduler
## Balance job scheduling between submitters
This patch is intended to prevent submitter starvation when jobs have the
same priority and single submitter sends a large batch of jobs.
It is implemented by determining a number of already running jobs for each
submitter and using it to annotate the jobs submitted to the queue. This
allows reordering the job queue for picking a job from the submitter that
could potentially be starving for an available device. To ensure fairness
in edge cases (equal number of running jobs, single device of given device
type) jobs sharing the same set of attributes are randomised.
## Active workers
Only schedule jobs on active workers. When a worker is in maintenance, no
jobs will be scheduled on the attached devices.
# kexec
Add an option to download the artifacts from deployment action. The job
would look like:
```yaml
- deploy:
to: download
images:
kernel:
url: https://example.com/Image.bin
initrd:
url: https://example.com/rootfs.cpio.gz
compression: gz
- boot:
method: minimal
auto_login:
[...]
prompts:
- "root@localhost:~# "
- boot:
method: kexec
deploy: true
kernel: /boot/Image.bin
initrd: /boot/rootfs.cpio.gz
command: /usr/sbin/kexec
[...]
```
# Overlay
Add support for tar filesystem. This allow to add overlays to nfsrootfs for
the boards that use NFS.
Rgds
--
Rémi Duraffort
LAV A and Tux Architect
Linaro
Hi folks,
The 2021.11 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:
* asus-cx9400-volteer
* lenovo-hr330a-7x33cto1ww-emag
* sc7180-trogdor-lazor-limozeen
## kontron-sl28
Define `initrd_high` and `fdt_high` as these boards are 64 bits.
## grub devices
### bootp interface
It's now possible to set the `bootp` interface when net booting with grub.
Admins should add to device-dict:
```jinja
{% set net_interface = "efinet2" %}
```
### base_kernel_args
Allow to set `extra_kernel_args` in grub jobs. This was impossible in
previous version due to a bug in the jinja templates.
This can be set in the device dictionary or the job definition context.
### FVP
The support for reading feedback channels when running an FVP model as been
improved thanks to the work of Paul Sokolovsky.
With these changes LAVA is able to consume and record most of the feedback
channels data.
Job submitter can also configure the timeout on feedback channels reading
in the finalize action:
```yaml
timeouts:
connections:
read-feedback: 20
```
With a large timeout, LAVA will have more time to consume the remaining
data when finalizing a job.
## Minimal boot
Add support for `pre_os_command` and `pre_power_command` in minimal boot
action.
The job definition would look like:
```yaml
- boot
method: minimal
pre_power_command: true
```
These commands can be useful to activate or deactivate external hardware
before powering on the DUT.
## NBD
In order to boot DUT with NBD support, LAVA was using `xnbd-server`.
This project is not maintained anymore so LAVA is now using `nbd-server`
instead.
# Management command
Admins can now list jobs with `lava-server manage jobs list`.
To list health check jobs than where submitted in the last 10 days:
```shell
lava-server manage jobs list --submitter lava-health --newer-than 10d
```
To run lxc jobs, that where submitted in the la 10 days:
```shell
lava-server manage jobs list --newer-than 10d --lxc
```
# Performances
The performances of the following pages has been improved drastically:
* /results
* /scheduler/mydevices
* /scheduler/mydevicetypehealthhistory
Rendering these pages will generate way fewer SQL queries.
Rgds
--
Rémi Duraffort
LAVA and TuxArchitect
Linaro
Hi folks,
The 2021.10 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:
* arduino-nano-33-ble
* imx8mp-ab2
* meson-sm1-odroid-c4
* pc-k10n78
## mt8192-asurada
mt8192-asurada as been renamed mt8192-asurada-rev1 to match the device-tree
name.
## FVP
In order to fix some issues with the secondary consoles that should be read
at all time, LAVA is now using a specific wrapper called `lava-outerr`.
The wrapper script consumes the sub-process std(out|err) as fast as
possible, keep the data in a buffer and written to std(out|err) whenever
possible.
## nrf52-nitrogen
Allow to set connect_before_flash. The value is False for backward
compatibility. You can set it in the device dictionary:
```jinja
{% set connect_before_flash = true %}
```
# External authentication
Since [2021.03](2021.03#authentication), LAVA can delegate the
authentication to GitLab using the `django-allauth` module.
This release add the possibility to use any supported [provider](
https://django-allauth.readthedocs.io/en/latest/providers.html).
In order to use it, add this to the configuration:
```yaml
AUTH_SOCIALACCOUNT: "{'gitlab':{'GITLAB_URL': 'https://gitlab.example.com
'}}"
```
See `django-allauth` documentation for the right parameters.
For background compatibility, `AUTH_GITLAB_URL` and `AUTH_GITLAB_SCOPE` are
still supported.
# Interactive tests
When running tests with LAVA test shell, LAVA will regularly read the
connections from the non-active namespaces. In the logs, this is called
"feedbacks". This is important for some device-types like fvp models.
Interactive tests are now also regularly reading the non-actives
connections to fix some issues with the fvp device-type.
# kexec
The kexec boot method is now able to crash the kernel to test the kdump
feature.
The job definition will look like:
```yaml
boot:
method: kexec
kernel: /home/vmlinux
dtb: /home/dtb
initrd: /home/initrd
command: /sbin/kexec
on_panic: true
boot_message: "Starting crashdump kernel"
prompts:
- 'root@debian:~#'
```
LAVA will use `--load-panic` instead of `--load` and will call `echo c >
/proc/sysrq-trigger` to force a kernel crash.
# Overlays
It's now possible to add single files to a given root file system (or
initrd) with the overlays feature.
The job definition should look like:
```yaml
rootfs:
image_arg: "-initrd {rootfs}"
url: "https://example.com/rootfs.cpio.zst"
compression: zstd
format: cpio.newc
overlays:
onefile:
url: https://example.com/file
format: file
path: /hello-world
```
# qemu and docker
The qemu-system packages included in the lava-dispatcher docker image are
now coming from bullseye-backports.
Rgds
--
Rémi Duraffort
LAVA and Tux Architect
Linaro
Hi folks,
The 2021.09 tag has been pushed to master on git.lavasoftware.org
<http://git.lavasoftware.org>.
.deb packages have been built in GitLab CI and are published at
https://apt.lavasoftware.org/release <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/ <https://hub.lavasoftware.org/>
and
https://hub.docker.com/u/lavasoftware
<https://hub.docker.com/u/lavasoftware>
Changes in this release
==================
# Upgrading
## Database migrations
No DB migrations in this release.
# Device-types
## New device-types
New supported devices:
* Cypress cy8ckit-064s0s2-4343w
* qrb5165-rb5
* mt8192-asurada
## NXP
Make lpcxpresso55s69 support flasher deploy and minimal boot method for
trusted
firmware M.
# LAVA dispatcher
## Overlay
When using the lava_test_results_dir the compress overlay used to add
the whole
path to the tarball. This resulted in qemu guestfs mount to have double
path of
the lava_test_results_dir as a LAVA overlay home directory. This issue
is now
fixed by having the tarball contain only to bottom level directory from the
lava_test_results_dir parameter.
# Docker
## LAVA docker worker
Support providing a custom dockerfile so that users can provide the
container
with additional package installations or custom scripts they might require.
# Bug fixes
* Show template error clearly when using sync_to_lava feature.
* download: add a 60s timeout to every http request
Thank you,
--
Stevan Radaković | LAVA Senior Engineer
Linaro.org <www.linaro.org> │ Open source software for ARM SoCs
Hi folks,
The 2021.08 tag has been pushed to master on git.lavasoftware.org
<http://git.lavasoftware.org>.
.deb packages have been built in GitLab CI and are published at
https://apt.lavasoftware.org/release <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/ <https://hub.lavasoftware.org/>
and
https://hub.docker.com/u/lavasoftware
<https://hub.docker.com/u/lavasoftware>
Changes in this release
==================
# Upgrading
## Database migrations
Added queue_timeout field to TestJob model.
# Device-types
## New device-types
New supported devices:
* asus-C436FA-Flip-hatch
* dell-latitude-5400-sarien
* gemini-ssi1328
* i945gsex-qs
* imx8mp-ddr4-evk
* intel-ixp42x-welltech-epbx100
* jh7100-beaglev-starlight
* hp-x360-14-G1-sona
* sm8150-mtp
* sm8250-mtp
* sm8350-mtp
## apertis
New deployment type for apertis is now available. Apertis is a Debian
derivative with images that typically do not have bash and often the
rootfs is
mounted read-only as well.
## jacuzzi
Device type acer-mt8183-cp311-3h-jacuzzi renamed to
mt8183-kukui-jacuzzi-juniper-sku16 to fit the device tree name.
## depthcharge
base-depthcharge device type template now supports flasher method and also a
minimal boot.
## qemu
Add cpu and machine context options for i386 arch.
## i.mx
Default ```shutdown_message``` was changed to 'Restarting system'
## pyocd
Allow to set the pyocd flash tool command. Example:
```yaml
{% set pyocd_command = "pyocd" %}
```
Specifically, for nitrogen board, allow to customize flash and boot cmds by
introducing pyocd_options to pyocd parameters. Defaults remain the same as
before.
## uuu
New option is now supported, ```uuu_power_off_before_corrupt_boot_media```
which will power down the device before the power up.
# API
## REST API
Test definition validation is now part of the LAVA REST API v2.
# LAVA server
## Scheduler UI
Add maintenance column to scheduler index view.
# LAVA dispatcher
## lava_test_shell
```ip``` command is now supported in lava test shell as in some yocto
releases
there is no /sbin/ifconfig but rather only /sbin/ip.
# Docker
## test docker action
When waiting for docker shell prompt, check it didn't die if there's
some error
in docker command line.
Allow to add arbitrary docker options through the device type. Example:
```yaml
actions:
deploy:
...
boot:
methods:
pyocd:
...
test:
methods:
docker:
global_options:
- --debug
options:
- --privileged
-
--mount=type=bind,source=/dev/disk/by-id,destination=/dev/disk/by-id
-
--mount=type=bind,source=/dev/serial/by-id,destination=/dev/serial/by-id
- {{ docker_shell_extra_arguments }}
```
## LAVA docker
debian:bullseye-slim is now used as base image.
# LXC
## lxc-mocker
Added support to use overlay for LXC rootfs. In order to provide support of
running multiple jobs at the same time in LXC mocker use a overlay
filesystem
to create a unique rootfs per LXC. This functionality can be activated using
LXC_MOCKER_USE_OVERLAY env variable which is disabled by default.
# Bug fixes
* Fix the documentation for "django migrations" setup command.
* Fix environment warnings during debian package upgrade
* Fix file permissions for jh7100-beaglev-starlight.jinja2 and
stm32mp157c-lxa-mc1.jinja2
* docs: fix dead link for XMLRPC methods
* pycocd: fix crash if pre_os_command is not defined
* kernel messages: fix order of messages
* scheduler_app: always select related submitter of current_job
* qemu: Don't disable the vland block in qemu
* qemu: lava_test_results_dir is now used as a mountpoint for guestfs
* debian: depends on uglifyjs instead of node-uglify
* schema: fix docker.network_from type
* download: fix crash when content-length == 0
* lava_rest_app: lock the job when calling cancel inside a transaction
* XMLRPC: fix TOCTOU crash
* docker: set dokerfile version to 1.2
* Job error: Failed to erase old recovery image is now and
Infrastructure error
Best regards,
--
Stevan Radaković | LAVA Senior Engineer
Linaro.org <www.linaro.org> │ Open source software for ARM SoCs
Hi folks,
The 2021.05 tag has been pushed to master on git.lavasoftware.org
<http://git.lavasoftware.org>.
.deb packages have been built in GitLab CI and are published at
https://apt.lavasoftware.org/release <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/ <https://hub.lavasoftware.org/>
and
https://hub.docker.com/u/lavasoftware
<https://hub.docker.com/u/lavasoftware>
Changes in this release
==================
# Device-types
## New device-types
New supported devices:
* n1sdp
* stm32l562e-dk
* avenger96
* BeagleBone Enhanced
* asus-C523NA-A20057-coral
* asus-C433TA-AJ0005-rammus
* hp-x360-12b-n4000-octopus
## xilinx-zcu102
Fixed broken device type template.
## lpcxpresso55s69
Add support for "pyocd" boot method.
## u-boot
Add more uboot error messages encoutered on kernelci labs.
# LAVA server
## docker
### psql config generation
When running every services in the same container, generate the
configuration.
### Set environment for qemu in docker
When using qemu in docker, environment are not passed to it.
For the moment, only QEMU_AUDIO_DRV is usefull for qemu, so we pass only
it for limiting the length of the command line.
# Bug fixes
* lava-server: Remove console logs from profile template.
* doc: reminder to add the site to Chosen sites
* postinst: lava-scheduler is again a lava service
* security: Support security fix in pyyaml 5.4
* debian: lava-lxc-mocker: don't provide lxc
* lava_rest_app: test_api: don't subclass pathlib.Path
Thank you,
--
Stevan Radaković | LAVA Senior Engineer
Linaro.org <www.linaro.org> │ Open source software for ARM SoCs
Hi folks,
The 2021.04 tag has been pushed to master on git.lavasoftware.org
<http://git.lavasoftware.org>.
.deb packages have been built in GitLab CI and are published at
https://apt.lavasoftware.org/release <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/ <https://hub.lavasoftware.org/>
and
https://hub.docker.com/u/lavasoftware
<https://hub.docker.com/u/lavasoftware>
Changes in this release
==================
# Device-types
## New device-types
New supported device:
* kontron-pitx-imx8m
## imx8
The base_high_limits attribute default value is now false.
## lpcxpresso55s69
Add support for "pyocd" boot method.
## docker
### image dependencies
Two new apache2 mods are now enabled in lava-server docker image:
* mod_rewrite
* mod_ssl
Enabling these two modules by default will make docker based https
deployment
and upgrade easier.
The new dependency has been added to the docker image:
python3-django-allauth.
This makes gitlab SSO possible in the docker deployment.
### package versions
The following packages are now installed from the buster backports and
will thus
have a higher installation version:
* qemu-system-arm
* qemu-system-mips
* qemu-system-misc
* qemu-system-ppc
* qemu-system-x86
## FVP
Instead of launching a long-running container to just get the model version,
LAVA now does a one-off docker run call. This avoids leaving that container
running in the background.
# LAVA server
## notifications
A custom query argument named ```dependency_query``` is added for
notification
criteria section. If specified, the notifications will only be sent if
all the
jobs from the query satisfy the criteria condition specified in criteria
status
field. Example code:
```yaml
notify:
criteria:
status: finished
dependency_query: testjob__description__icontains__somestring
callback:
url: https://git.lavasoftware.org/api/v4/projects/1232/jobs/11113/play
method: POST
```
## configuration
LAVA now makes it possible to set the database, secret key and
ALLOWED_HOSTS for
each environment based on environment variables. It is useful for other use
cases as well, such as LAVA deployments based on containers.
Variables that can be set via env variables:
* DATABASE_URL
* INSTANCE_NAME
* SECRET_KEY
* ALLOWED_HOSTS
## Worker token API
It is now possible to set the worker token via the lava-server manage
command.
## Debian packaging
Downgraded postgresql and apache2 to a Recommends for lava-server,
making LAVA
setup more flexible.
## Master/worker version mismatch
Added a new setting variable ALLOW_VERSION_MISMATCH to disable the version
check.
Note: users should be aware of potential side effects of version mismatch.
# LAVA dispatcher
## boot/pyocd
A new option is available in pyocd boot action, ```connect_before_flash```.
This will allow to connect to device before flashing and capture serial
output
appearing immediately after flashing.
## failure retry interval
By default, individual action would be retried after 1 second, but you
can now
specify ``failure_retry_interval`` to increase the interval between retries.
```yaml
- deploy:
failure_retry_interval: 10
```
## overlay
LAVA is now adding env variables (from env-dut.yaml) to the secrets file in
overlay.
# Bug fixes
* lava-server manage sync: show device type when devices come back from
retired
* dispatcher: download: catch stderr when decompression fails
* doc: authentication: add notes to GitLab auth integration
* testdef: do not crash if a test step is None
* tar test definition: fix compression support
* containers: fix duplicate mount point for container share
Thank you,
--
Stevan Radaković | LAVA Senior Engineer
Linaro.org <www.linaro.org> │ Open source software for ARM SoCs
Hi folks,
Due to an issue with authorization in REST API in 2021.03 release, we're
putting out a 2021.03.post1 hotfix.
The 2021.03.post1 tag has been pushed to master on git.lavasoftware.org
<http://git.lavasoftware.org>.
.deb packages have been built in GitLab CI and are published at
https://apt.lavasoftware.org/release <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/ <https://hub.lavasoftware.org/>
and
https://hub.docker.com/u/lavasoftware
<https://hub.docker.com/u/lavasoftware>
Changes in this release
==============
# REST API
Issue where non-admin users could not submit jobs to unrestricted
devices introduced in 2021.03 is now fixed.
# FVP
## Add namespace to the feedback channel.
Feedback logs will now have an additional field indicating the namespace.
## Allow to specify the docker network.
Similar to the docker device type, allow to specify the docker network.
The use case is network isolation on a host running concurrent FVP devices.
Cheers,
--
Stevan Radaković | LAVA Senior Engineer
Linaro.org <www.linaro.org> │ Open source software for ARM SoCs
Hi folks,
The 2021.03 tag has been pushed to master on git.lavasoftware.org
<http://git.lavasoftware.org>.
.deb packages have been built in GitLab CI and are published at
https://apt.lavasoftware.org/release <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/ <https://hub.lavasoftware.org/>
and
https://hub.docker.com/u/lavasoftware
<https://hub.docker.com/u/lavasoftware>
Changes in this release
==================
# Upgrading
## Security issues
A security issue has been discovered and fixed in LAVA:
* removing/updating jobs via API without authentication
Every version of LAVA (since 2018) is affected.
We strongly advise to upgrade your instances to LAVA 2021.03.
# Device-types
## New device-types
New supported devices:
* imx6sl
* imx6ull
* imx8dxl-phantom-mek
* stm32mp157c-lxa-mc1
* meson-axg-s400
* meson-gxl-s905x-p212
## docker
Docker container can now run on a remote machine with the following option:
```yaml
methods:
docker:
options:
remote: {{ docker_remote|default('') }}
```
## depthcharge
A depthcharge support for x86 architecture has been added as part of the
base-depthcharge.jinja2 template.
## qemu
It is now possible to change machine type for m68k qemu jobs.
## mason
mason templates now support using booti via use_mainline_uboot flag.
# Device management
## sync command
Additional options have been added to the ``sync`` management command:
* physical_owner
* physical_group
* group_device_permissions
Example device dictionary snippet:
```jinja
{% set sync_to_lava = {
"device_type": "qemu",
"worker": "worker-1",
"physical_owner": "user1",
"physical_group": "group1",
"group_device_permissions": [
["change_device", "group1"],
["view_device", "group1"],
["submit_to_device", "group1"],
]
}
%}
```
# Authentication
## Gitlab integration
GitLab auth provider from allauth has been added as the new authentication
backend. For this the django-allauth package needs to be installed manually.
The following line needs to be added to the settings file:
```yaml
AUTH_GITLAB_URL: "https://gitlab.example.com"
```
For more information please refer to
https://docs.lavasoftware.org/lava/authentication.html
# LAVA dispatcher
## Ping interval
Time between two pings to the server is now configurable via
``--ping-interval`` argument.
# Docker
## options
LOGLEVEL setting can now be overridden by setting an environment variable on
the container.
# Bug fixes
* udev.py: Fix wait_device_board_id test
* rcar-gen3-common: fix kernel/dtb address
* dispatcher: fix JLink boot method to support LPC55S
* downloads: Add export of dynamic_data on postprocess
* job: do use sub_id with urls in templates
* apply_overlay: do not crash when the overlay is mentioned but missing
* schema: Fix docker image regexp
* map_scanned_results: try to keep most of the data when results is too
large
* docker: upgrade sentry_sdk to 1.0.0
* qemu: Do not search qemu binary when docker is in use
* rest api: Updating device dict should not check for global user
permission.
* lava-server manage wait: make the command more resilient
Thanks,
--
Stevan Radaković | LAVA Senior Engineer
Linaro.org <www.linaro.org> │ Open source software for ARM SoCs
Hi folks,
The 2021.01 tag has been pushed to master on git.lavasoftware.org
<http://git.lavasoftware.org>.
.deb packages have been built in GitLab CI and are published at
https://apt.lavasoftware.org/release <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/ <https://hub.lavasoftware.org/>
and
https://hub.docker.com/u/lavasoftware
<https://hub.docker.com/u/lavasoftware>
Changes in this release
==================
# Device-types
## New device-types
New supported devices:
* Musca S
* imx8dxl-ddr3l-evk
* hp-11A-G6-EE-grunt x86_64 Chromebook
## FVP
Multiple console.
Allow for reading from multiple FVP consoles. All output from additional
consoles is directed to LAVA feedback log.
FVP boot now method allows to define additional regexes to match more than
one console.
This is done with ``feedbacks`` keyword:
```yaml
console_string: 'terminal_0: Listening for serial connection on
port (?P<PORT>\d+)'
feedbacks:
- '(?P<NAME>terminal_1): Listening for serial connection on port
(?P<PORT>\d+)'
- '(?P<NAME>terminal_2): Listening for serial connection on port
(?P<PORT>\d+)'
- '(?P<NAME>terminal_3): Listening for serial connection on port
(?P<PORT>\d+)'
```
Feedbacks will be read twice during boot process (before matching login
prompt) and periodically during test-shell.
## docker
Mappings in static_info are now correctly added to the container as well.
## cmsis_dap
As part of job log, LAVA now logs contents of DAPLink virtual USB disk and
contents of DETAILS.TXT (if any).
Add action parameter "post_umount_delay". This tells LAVA to wait given
number of seconds after the umount command.
# Docker actions
## downloads namespace
Docker test shell action can now specify custom downloads namespace.
* if user specify downloads-namespace, use it
* if user not specify downloads-namespace, fall back to `namespace` to mount
the downloads dir.
# LAVA dispatcher
## support uniqify parameter in deploy to: downloads
This will cause the downloaded files to be available under ${image_key}/,
instead of at the root of the downloads directory. It allows jobs to
download more than one image with the same filename.
# Bug fixes
* REST API: __in filtering now works correctly for `choice` fields.
* REST API: fix field names crash in RelatedFilters due to django filters
upgrade
* lxc-mocker: avoid `apt upgrade` on lxc-create
* lava_dispatcher: add wait_device_board_id in device_info for fastboot
Thanks,
--
Stevan Radaković | LAVA Engineer
Linaro.org <www.linaro.org> │ Open source software for ARM SoCs
Hi folks,
The 2020.10 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
No database migrations are included in this release.
# Device-types
## New device-types
New supported devices:
* imx8dx-mek
* imx8mq-zii-ultra-zest
# Secret management for deploy action URLs
We now support custom headers in the GET requests for deploy action URLs
(images, kernel, ramdisk etc) in the job definition [schema](
https://docs.lavasoftware.org/lava/pipeline-schema.html#job-submission-sche…
).
This mainly serves for passing the authentication tokens for the services
which
require one (ie. gitlab).
LAVA now also supports per user token management (found in both admin app
and
in the Profile page). Every entry will have a `token name` and the token
itself.
If the `headers` entry in the job definition contains the existing token
name
in the list of submitters list of tokens, the system will replace it with
the
token value in the header when downloading artifacts from the deploy
section.
The token values will never be visible in the job definition and also the
user
submitting the job will only ever be able to use own tokens.
Example:
```yaml
images:
kernel:
image_arg: '-kernel {kernel} -append "console=ttyAMA0,115200
root=/dev/ram0 debug verbose"'
url:
https://git.lavasoftware.org/api/v4/projects/61/jobs/112514/artifacts
headers:
"PRIVATE_TOKEN": my_private_gitlab_token
sha256sum:
c45f07a9c0ebd0c06a9dcb9676d7aada63967e0733d072f9e529b697a8a7c6ca
```
# XMLRPC and rest APIs
## Job and worker token
Super users can now get Job and Worker token from the rest api endpoints.
The field is called `token`.
```json
{
"hostname": "staging01.lavalab",
"health": "Active",
"state": "Online",
...
"token": "<worker_token>"
}
```
For XMLRPC, only the worker token is available.
# Notifications and celery
Sending notifications for large jobs can take a large amount of CPU and
time. For instances that uses a lot of notifications, admins can delegate
this work to a celery worker.
In order to use this new feature, admins should:
* pick and install a celery broker (rabbitmq, redis, ...)
```shell
sudo apt-get install redis-server python2-redis
```
* update the settings
```yaml
CELERY_TASK_ALWAYS_EAGER: false
CELERY_BROKER_URL: "redis://localhost:6379/0"
```
* restart `lava-server-gunicorn` and activate `lava-celery-worker`
```shell
sudo service lava-server-gunicorn restart
sudo systemctl enable lava-celery-worker
sudo service lava-celery-worker start
```
The use of `celery` and `lava-celey-worker` is optional. By default, LAVA
will continue to send notification like in previous releases.
## DUT environment
Environment variables can be set on the DUT by updating the configuration
file. The configuration could be stored in:
* `/etc/lava-server/dispatcher.d/{name}/env-dut.yaml`
* `/etc/lava-server/env.dut.yaml`
The filename where not consistent. Starting from this release, the
configuration files are:
* `/etc/lava-server/dispatcher.d/{name}/env-dut.yaml`
* `/etc/lava-server/env-dut.yaml`
* `/etc/lava-server/env.dut.yaml`
`/etc/lava-server/env.dut.yaml` is **deprecated** and will be dropped in a
future version.
# Crashes
Some crashes where fixed in the release:
* `docker test action` crash when using test definition dependencies
* `lava-dispatcher-host` crash in race condition
* `lava_scheduler_app` crash with some really long log lines
* `lava-server manage linaro_ldapuserlist` crash after python3-ldap upgrade
* `lava-worker` crash with version mismatch
* `lava-worker` crash when `result.yaml` is empty
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
The 2020.09 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 is bringing a big architectural change by replacing ZMQ by
HTTP(s) for server-worker communication.
Admin will have to update the configuration of each worker.
## From ZMQ to HTTP(s)
The protocol that LAVA is using to communicate between the server and the
workers has been changed from ZMQ to HTTP(s).
This will improve performance and reliability but admins will have to
update their configuration after the upgrade.
## Database migrations
This release include two migrations:
* lava_results_app.0017_testdata_onetoone_field: drop the bug link
* lava_scheduler_app.0053_testjob_and_worker_token
# Device-types
## New device-types
New supported devices:
* imx8mn-evk
## Juno-r2 and tee
Fix a bug in LAVA %2020.08 that was preventing the use of juno-r2 boards.
This is a regression from %2020.07 introduced by the support for `tee` in
u-boot jobs.
## SoCA9
Update the dtb address from `0x00000100` to `0x00001000` to prevent some
issues with u-boot 2020.07.
# From ZMQ to HTTP(s)
In prior versions LAVA daemons where using ZMQ to communicate and send
logs. In this release, LAVA is using plain HTTP(s) to control the remote
worker and send job logs.
## Reasons
### Load-balancing and fault-tolerance
The previous architecture was not able to cope with a large number of jobs
running in parallel. Mainly because it was impossible to load-balance the
traffic to multiple `lava-logs` and `lava-master`.
By using HTTPS(s) it is way easier to load-balance the traffic to multiple
instances of `lava-server-gunicorn`.
With load-balancing we can also increase fault-tolerance and move toward
zero-downtime upgrades.
### Master and scheduling
In the previous design, `lava-master` was both the master and the job
scheduler. This was introducing latency to start jobs when running many
jobs in parallel.
With the new design, `lava-scheduler` is running in the background,
scheduling jobs while `lava-server-gunicorn` is serving both clients and
workers.
### Proxies
Using HTTPS(s) will also easier the adoption of remote workers. In fact,
connection to non-standard port is often impossible in corporate
environment.
### Job termination
With the previous design, `lava-logs` and `lava-master` where both
responsible for terminating a job. This was sometime leading to a dead lock
where the job was waiting forever for its end.
This is not possible anymore as `lava-server-gunicorn` is responsible for
both the logs and the job termination.
### Simplifying the architecture
By using HTTP(s) instead of ZMQ, we are able to decrease the number of
services running on the server. We are planning to also drop the need for
`lava-coordinator` in the future.
Using HTTP(s) also allow to decrease the number of network ports that the
server should listen to. This is simplifying deployment and help hosting
many instances on the same physical server.
## Services
The following services has been dropped:
* `lava-logs`: the logs are sent directly to `lava-server-gunicorn`
* `lava-master`: the workers are pulling jobs from `lava-server-gunicorn`
This release is introducing a new service called `lava-scheduler` that is
solely responsible for scheduling jobs.
In this release `lava-slave` has been rewritten from scratch and renamed
`lava-worker`.
## Version mismatch
With previous LAVA version, `lava-master` was not checking `lava-slave`
version. This was sometime leading to strange behavior when the server was
upgraded but not the dispatcher.
`lava-server-gunicorn` is now able to check the `lava-worker` version every
time the service is requesting jobs to run.
In the event of a version mismatch, the server will put the worker offline,
refusing to start jobs on this worker.
When it's safe to stop the worker (the worker is done with the current set
of jobs), the server will return a specific error. If you use the new [LAVA
docker worker](#lava-docker-worker), `lava-worker` will be automatically
upgraded to the server version whenever needed.
## Upgrading
After the upgrade, every worker will be inactive as the `lava-worker`
services won't be able to connect to `lava-server-gunicorn`.
For each worker, admins will have to update the configuration.
* Update the `URL` variable in the worker configuration
(`/etc/lava-dispatcher/lava-worker`). This is the full URL to the server.
* Add the worker token in `/var/lib/lava/dispatcher/worker/token`. Admins
can find the token in the worker admin page at [
http://INSTANCE/admin/lava_scheduler_app/worker/WORKER_NAME/change/](http:/…
.
* restart `lava-worker`
# LAVA docker worker
This release introduces a program called `lava-docker-worker` that runs a
LAVA worker inside a Docker container. This script is provided by the
`lava-dispatcher-host` package, and has has the following features:
* Takes the same parameters as regular `lava-worker`.
* Detects the LAVA version of the server, and runs the worker from the same
LAVA version
* Automatically upgrades the worker when the server upgrades.
* Docker containers started by it are it siblings and not children, i.e.
they will run under the host system directly.
This worker in Docker should support most user cases that are supported by
the regular LAVA worker, except running LXC containers.
It's important to note that the container started by `lava-docker-worker`
runs in privileged mode and with host networking, what means that it is
less isolated from the host system as you would usually expect application
containers to be:
- it has access to **all** devices under `/dev`.
- it uses the same networking stack as the host system.
In this case, you should consider `lava-docker-worker` as a distribution
facilitator, not as an isolation mechanism. You should not run
`lava-docker-worker` on a host where you wouldn't run the regular LAVA
worker.
# Bug link
The possibility to link a bug to a specific test job or result as been
dropped. This feature was generating a huge load on the database server
without a real benefits.
# Tests from tar
Starting from this release, LAVA can pull tests from a tar archive instead
of a git repository.
The job definition will look like:
```yaml
- test:
name: basic-linux-smoke
timeout:
minutes: 10
definitions:
- repository:
https://github.com/Linaro/test-definitions/archive/2019.03.tar.gz
from: url
path: automated/linux/smoke/smoke.yaml
name: linux-smoke
compression: gz
```
# LAVA job id
LAVA is now exporting the job id to the lava test shell environment. The
variable is called `LAVA_JOB_ID` and can be used with
```shell
echo "$LAVA_JOB_ID"
```
We are willing to export more LAVA data as environment variable in the
future.
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
The 2020.08 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
=========
Database migrations
-------------------
No database migrations are included in this release.
Device-types
============
New device-types
----------------
New supported devices:
- ls1021a-tw
QEMU
----
Add support for riscV. The architecture would be `riscv64`.
U-Boot
======
When booting with u-boot, lava can now load tee over tftp. User should
provide a resource called `tee` in the deploy action.
```yaml
- deploy:
to: tftp
tee:
url: file:/local/lava-ref-binaries/fsl-imx6q-sabresd-linux/uTee-6qsdb
```
uuu
===
When booting with `uuu`, user can specify a docker container that will use
to run the `uuu` binary. The job definition would look like:
```yaml
actions:
- boot:
method: uuu
commands:
- uuu : -b sd {boot}
docker:
image: atline/uuu:1.3.191
```
Admins can specify a default docker image in the device dictionary:
```jinja
{% set uuu_docker_image = "atline/uuu:1.3.191" %}
```
If the DUT is not directly connected to the dispatcher, you can enable the
`remote uuu` support:
```jinja
{% set uuu_remote_options = "--tlsverify --tlscacert=/remote_ca.pem
--tlscert=/remote_cert.pem --tlskey=/remote_key.pem -H 10.192.244.5:2376" %}
```
Docker test action
==================
Power commands
--------------
When using a docker test action, the power commands are now available as
environment variables:
* `LAVA_HARD_RESET_COMMAND`
* `LAVA_POWER_ON_COMMAND`
* `LAVA_POWER_OFF_COMMAND`
Note that each of these operations can actually require more than one
command, in which case the corresponding environment variable will have the
multiple commands with `&&` between them.
Because of this, the safest way to run the commands is passing the entire
contents of the variable as a single argument to `sh -c`, like this:
```bash
sh -c "${LAVA_HARD_RESET_COMMAND}"
```
Android serial
--------------
Add `LAVA_BOARD_ID` as an alias for `ANDROID_SERIAL`.
Extra bind mounts
-----------------
Admins can specify extra files and directories that lava will bind mount
when executing the docker test action.
This is set per dispatcher in the dispatcher configuration file:
```yaml
# Directories to be bind mounted in test actions that run with docker.
# Must be an array with exactly two/three items:
# 1st item: the source directory in the host (mandatory)
# 2nd item: the destination directory in the container (mandatory)
# 3rd item: bind mount mode (optional)
# default is read-only if this item omitted
# set as "rw" could make the directory in container writable
test_docker_bind_mounts:
- [<bind-mount1-host-path>, <bind-mount1-container-path>]
- [<bind-mount2-host-path>, <bind-mount2-container-path>, "rw"]
```
Docker in actions
=================
Local images
------------
When using a docker image for actions that support it (`docker`,
`fastboot`, `fvp`, `qemu` and `uuu` for the moment), LAVA will run `docker
pull` then `docker run`.
When using local image, the call to `docker pull` will fail. This version
add the possibility to use local images:
```yaml
- boot:
docker:
name: "my-docker-image"
local: true
```
Init
----
Always run with an init system. The docker command is now `docker run
--init ...`.
Gunicorn worker class
=====================
By default gunicorn is using the "sync" worker which is not suitable for
long
requests like downloading large log files.
When using an async worker (like eventlet), the worker can process multiple
long running requests at the same time while answering to master pings. In
this case, requests are not aborted after timeout, allowing to
download large log files.
Release %2020.07 introduced an option to change the gunicorn worker class
while keeping `sync` as the default.
After many tests on Linaro LAVA instances, this release change the default
worker class from `sync` to `eventlet`. As a result `lava-server` now
depends on `python3-eventlet`.
Test job log
============
When migrating to another log storage handler, like `mongodb` or
`elasticsearch`, admins can now migrate every job logs using `copy-logs`
command:
```bash
sudo lava-server manage copy-logs LogsMongo
```
This command will go through every test job and migrate the logs from the
file system to the right log handler.
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
Sorry for forgetting to send the release mail when LAVA 2020.07 was
released, on June the 9th.
The 2020.07 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
=========
Minimal python version for debian package is now 3.6.
Database migrations
-------------------
No database migrations are included in this release.
Device-types
============
New device-types
----------------
New supported devices:
- de0-nano-soc
- imx6dl-sabreauto
- imx6dl-sabresd
- imx6qp-sabreauto
- imx6qp-sabresd
- imx6sll-evk
- imx6sx-sdb
- imx6ul-14x14-evk
- imx6ull-14x14-evk
- imx7ulp-evk
- r8a7742-iwg21d-q7
- r8a7743-iwg20d-q7
- r8a7744-iwg20d-q7
- r8a7745-iwg22d-sodimm
- r8a77470-iwg23s-sbc
- r8a774a1-hihope-rzg2m-ex
- r8a774b1-hihope-rzg2n-ex
- r8a774c0-ek874
- r8a774e1-hihope-rzg2h-ex
Updated device types:
- imx7d-sdb not takes settings now from imx6us7d-common
- The following device types have gotten device_info entries, which allow
them
to be tested from containers (e.g. docker):
- cc13x2-launchpad
- cc3220SF
- disco-l475-iot1
- frdm-k64f
- frdm-kw41z
- mimxrt1050_evk
- nucleo-l476rg
- stm32-carbon
Changes in docker test shell
============================
Docker test shell has received updates to make it more robust and support
more use cases. In particular:
- It's now possible to e.g. reset devices via adb/fastboot, and have they
be shared with the container
again when the come up after the reboot.
- making the test action not wait for the device to appear on USB is no
longer necessary, and support for
it has been removed. Devices will now be shared with the container as
soon as they appear even if they
are not active when the test container starts.
Gunicorn configuration update
=============================
By default gunicorn is using the "sync" worker which is not suitable for
long
requests like downloading large log files.
When using an async worker (like eventlet), the worker can process multiple
long running requests at the same time while answering to master pings. In
this case, requests are not aborted after timeout, allowing to
download large log files.
This release introduces a way to change the worker class and the timeout
while
keeping the current default (sync worker and a timeout of 30 seconds).
In order to use eventlet, admins should install python3-eventlet, update the
[configuration](
https://docs.gunicorn.org/en/stable/settings.html#worker-class)
and restart lava-server-gunicorn.
Bug fixes
=========
Fixes a bug where filtering by id field for test jobs in REST API didn't
work.
Fixes a crash when test job state is set but device state is not set yet.
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
The 2020.06 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
=========
Database migrations
-------------------
A new `is_synced` field as been added to the `Device` model. The field will
be used to know when a given device is managed by `lava-server manage sync`
command or is managed manually.
Device-types
============
New device-types
----------------
New supported devices:
* d2500cc
* imx6qp-wandboard-revd1
Device management
=================
```shell
lava-server manage sync
```
LAVA can now synchronize database records with the device dictionary via
this
management command. It currently supports these models:
* Device
* Device type
* Tag
* Alias
This can make administration less cumbersome and can help with Ansible and
similar setups. By using this feature administrators are able to keep the
list
of these records inside the version control.
For device records, a flag named **is_synced** is used to recognize devices
which are synced to/from the device dictionary. This option can be updated
via
usual channels (web UI admin, APIs) and will be automatically set to True
for
newly added device via this method.
Example device dictionary snippet:
```jinja
{% set sync_to_lava = {
"device_type": "qemu",
"worker": "worker-01"
"tags": ["tag1", "tag2"],
"aliases": ["alias1", "alias2"],
}
%}
```
Scheduler
=========
Fix multinode scheduling. The scheduler was expecting ids of jobs in a
multinode group to be consecutive.
This is not guaranteed and was leading to a dead lock when scheduling
interleaved multinode jobs.
`command` action
================
The [command](
https://lava.readthedocs.io/en/latest/technical-references/job-definition/a…)
action can now run recovery commands `recovery_mode` and `recovery_off`:
```yaml
actions:
- command:
name: recovery_off
```
Auto login
==========
The auto-login action is now able to retry on failed login. This can happen
when the kernel print some stack trace while booting.
Connection closed
=================
LAVA is now able to detect when the connection is closed by the DUT. When
retrying to boot the DUT, LAVA will automatically reconnect to the DUT.
The `minimal` boot action has been updated to detect such event and mark
the job as `incomplete`.
Documentation
=============
The documentation work is progressing with some new pages added. The
work-in-progress documentation is visible on [read the doc](
https://lava.readthedocs.io/).
Test job log
============
Prior to this release, LAVA would always store test job logs on the
filesystem in
`/var/lib/lava-server/default/media/job-output/<year>/<month>/<day>/<id>`.
In release [2020.05](2020.05), the support for mongodb was added.
Elasticsearch
-------------
The support for [Elasticsearch](https://www.elastic.co) was added in this
release.
To use elastic search to store the logs, admin should update the
configuration:
```yaml
LAVA_LOG_BACKEND: "lava_scheduler_app.logutils.LogsElasticsearch"
ELASTICSEARCH_URI: "<URI|http://localhost:9200/>"
ELASTICSEARCH_INDEX: "<INDEX_NAME|lava-logs>"
ELASTICSEARCH_APIKEY: "<API_KEY>"
```
Firestore
---------
The support of [Firestore](https://firebase.google.com/docs/firestore/) was
added in this release.
Admin should update the configuration:
```yaml
LAVA_LOG_BACKEND: "lava_scheduler_app.logutils.LogsFirestore"
```
In the environment, `GOOGLE_APPLICATION_CREDENTIALS` should point to the
google cloud credentials.
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
The 2020.05 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
=========
Database migrations
-------------------
A new `master_version_notified` field has been added to the `Worker` model.
The field will be used to know if admins where notified of the version
mismatch between master and dispatchers.
Device-type templates
---------------------
The post-installation script will look at the device-types templates in
`/etc/lava-server/dispatcher-config/device-types/` and remove the templates
that are already present in `/usr/share/lava-server/device-types/` (and
identical).
Device-types
============
New device-types
----------------
New supported devices:
* imx6q-sabreauto
* imx8dxl-evk
* imx8mp-evk
* imx8qm-mek
* imx8qxp-mek
* ls1012ardb
* ls1028ardb
* ls1046ardb
* ls1088ardb
* fsl-s32v234sbc (and s32v234-evb)
* mt8173-elm-hana
U-Boot
------
The `uboot_error_messages` variable allows device-type templates to set
their own list of u-boot error messages as required if the default set is
not appropriate. For example it may be required that one of the default
error messages is ignored.
```jinja
{% set uboot_error_messages = [
'Resetting CPU',
'Must RESET board to recover',
'TIMEOUT']
%}
```
The `uboot_extra_error_message` variable can still be used in conjunction
with `uboot_error_messages`.
Minnowboard
-----------
Replace `boot_message` by `kernel_start_message` as the latter has been
deprecated for a long time.
nfs boot commands
-----------------
Drop "intr" mount option that has been deprecated in 2.6.25. This is the
default value since 2.6.25.
OpenOCD
-------
Open serial connection prior to invoking OpenOCD in OpenOCD boot method
The serial connection should be opened prior to invoking OpenOCD. This
fixes an issue where on some devices verbose serial output is truncated
when the data size exceeds buffering in the firmware.
Download
========
When downloading artifacts fail for network issues, LAVA `dispatcher` will
retry up to 15 times over 10 minutes.
These retries will fix some intermittent failures.
API
===
New system endpoints
--------------------
We've added a support for getting the system version and current user
New endpoints available for REST API:
* `/api/v0.2/system/version/`
* `/api/v0.2/system/whoami/`
New test endpoints
------------------
The endpoint will allow to access the tests for a given job at:
* `/api/v0.2/jobs/<job_id>/tests/`
The results are also available at:
* `/api/v0.2/jobs/<job_id>/suites/<suite_id>/tests/`
docker
======
Site
-----
When starting `lava-server`, you can set the `Site` by setting the
`LAVA_SITE` environment variable.
Superuser
---------
When starting `lava-server`, the entrypoint can create a super user for
you. Just set `LAVA_ADMIN_USERNAME` and `LAVA_ADMIN_PASSWORD` environment
variable.
Interactive tests and multinode
===============================
Implement multinode synchronization and `delay` primitives.
Introduce `delay` primitive to wait a given number of seconds (incl.
fractional) and `lava-send`, `lava-wait`, `lava-wait-all`, `lava-sync` for
multinode synchronization.
Syntax for multinode primitives follows one used in test-definitions, i.e.
single-line based.
A job definition would look like:
```yaml
- test:
role: [server]
interactive:
- name: boot
prompts: ["/ #"]
echo: discard
script:
- command: ifconfig
name: result
successes:
- message: "inet addr:(?P<ip>\\d+\\.\\d+\\.\\d+\\.\\d+)"
- lava-send: booted ipaddr={ip}
- test:
role: [client]
interactive:
- name: boot
prompts: ["/ #"]
echo: discard
script:
- delay: 5
- lava-send: booted
- lava-wait-all: booted
- command: 'echo "Other side has IP: {ipaddr}"'
```
In this example, LAVA will capture the IP in the success message on the
server and use the value in the client command.
LAVA settings
=============
In previous LAVA versions, the settings are stored in:
* `/etc/lava-server/instance.conf`: database settings
* `/etc/lava-server/settings.conf`: global settings (json)
* `/etc/lava-server/secret_key.conf`: secret key created on the fly
In order to make admin task easier, the settings are now stored in yaml
files under `/etc/lava-server/settings.d/`.
The legacy configuration files will be loaded first and then the files in
`/etc/lava-server/settings.d/` in alphabetical order.
Upgrade notification
====================
When `lava-master` restarts, it will check that the remote dispatchers are
running the same version. If that's not the case, `lava-master` will send a
mail to each worker admin.
This feature can be activated in the settings:
```yaml
MASTER_UPGRADE_NOTIFY: true
```
Test job log
============
Prior to this release, LAVA would always store test job logs on the
filesystem in
`/var/lib/lava-server/default/media/job-output/<year>/<month>/<day>/<id>`.
Starting from this release, admins can configure the logger backend to
either the filesystem (default) or [mongodb](https://www.mongodb.com/).
In order to use Mongodb, admin should install `python3-pymongo` and update
the settings:
```yaml
LAVA_LOG_BACKEND: "lava_scheduler_app.logutils.LogsMongo"
MONGO_DB_URI: "mongodb://<username>:<password>@localhost:27017/"
```
The mongodb support is currently in Beta mainly because performances can
still be improved.
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
The 2020.04 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
=========
Device-type templates
---------------------
Device-type templates as been moved from
`/etc/lava-server/dispatcher-config/device-types/` to
`/usr/share/lava-server/device-types/`.
Database migrations
-------------------
A new `version` field as been added to the `Worker` model. The field will
be used to track remove dispatcher version and check for incompatibilities
between master and dispatcher.
Device-types
============
New device-types
----------------
New supported devices:
* Fixed Virtual Platforms
* fsl-ls1043a-rdb
* fsl-lx2160a-rdb
* fsl-s32v234sbc
* imx6q-var-dt6customboard
* imx6q-sabresd
* imx7d-sdb
* imx8mm-ddr4-evk
* imx8mm-evk
* r8a7795-h3ulcb-kf
* sun8i-h3-bananapi-m2-plus
Fixed Virtual Platforms
-----------------------
FVP jobs can now be ran in LAVA. LAVA will execute FVP devices inside Docker
containers that should be provided by job submitter.
A job definition would be:
```yaml
- deploy:
to: fvp
images:
bl1:
url: https://example.com/fvp/bl1.bin
[...]
ramdisk:
url: https://example.com/fvp/ramdisk.img
- boot:
method: fvp
docker:
name: "foundation:11.9"
local: true
image:
/opt/model/Foundation_Platformpkg/models/Linux64_GCC-6.4/Foundation_Platform
version_string: 'ARM V8 Foundation Platformr0p0 [^\\n]+'
timeout:
minutes: 7
console_string: 'terminal_0: Listening for serial connection on port
(?P<PORT>\d+)'
arguments:
- "--cores=4"
- "--no-secure-memory"
- "--visualization"
- "--gicv3"
- "--data={BL1}@0x0"
- "--data={FIP}@0x8000000"
- "--data={IMAGE}@0x80080000"
- "--data={DTB}@0x82000000"
- "--data={RAMDISK}@0x84000000"
- "--block-device={ROOTFS}"
prompts:
- 'root@genericarmv8:~#'
```
To use this new device-type, the job definition should define a
[deploy](https://docs.lavasoftware.org/lava/actions-deploy.html#to-fvp)
and a
[boot](https://docs.lavasoftware.org/lava/actions-boot.html#fvp)
action.
More information in the [FVP documentation](
https://docs.lavasoftware.org/lava/fvp.html).
UBoot USB Mass Storage
----------------------
LAVA dispatcher will now use `bmaptool` instead of `dd` to flash images. The
layout is computed right before the flash.
Docker test action
==================
The docker test action introduced in LAVA
[2020.02](https://git.lavasoftware.org/lava/lava/-/wikis/releases/2020.02/)
has
been improved.
Serial connection to the device
-------------------------------
The connection commands are now exposed in the test environment as
`LAVA_CONNECTION_COMMAND` and `LAVA_CONNECTION_COMMAND_*`.
For example the given connection commands:
```jinja
{% set connection_list = ['uart0', 'uart1'] %}
{% set connection_commands = {'uart0': 'telnet localhost 4002', 'uart1':
'telnet 192.168.1.200 8001'} %}
```
Will be exported as:
```shell
LAVA_CONNECTION_COMMAND='telnet 192.168.1.200 8001'
LAVA_CONNECTION_COMMAND_UART0='telnet localhost 4002'
LAVA_CONNECTION_COMMAND_UART1='telnet 192.168.1.200 8001'
```
Waiting for device on USB made optional
---------------------------------------
By default, the docker test action will wait for the device to be connected
and exposed to the host via its USB OTG port.
In some use cases, however, you need to e.g. interact with u-boot before a
USB OTG port is enabled, so waiting on the device coming up on USB would
not work. To avoid waiting for the USB connection, you can specify the
`docker.wait.device` parameter set to false:
```yaml
actions:
# ....
- test:
docker:
image: my-image
wait:
device: false
# ....
```
Device type templates
=====================
The default device-type templates has been moved from
`/etc/lava-server/dispatcher-config/device-types` to
`/usr/share/lava-server/device-types/`.
When rendering device dictionaries, LAVA will use templates in
`/etc/lava-server/dispatcher-config/device-types` and then fallback to
`/usr/share/lava-server/device-types/`. This mechanism allow admins to
override
device-type templates.
When using the APIs to override device-type templates, LAVA will write the
template into `/etc/lava-server/dispatcher-config/device-types`.
Compression formats
===================
[zstd](https://facebook.github.io/zstd/) as been added to the list of
supported compression formats.
In order to use it in a job definition you should use:
```yaml
actions:
- deploy:
rootfs:
url: https://example.com/rootfs.ext4.zst
compression: zstd
```
The `zstd` package should be installed on the dispatcher. This is already
the case for the lava-dispatcher docker image.
Postprocessing images with docker
=================================
This release adds support for postprocessing downloaded images using
user-provider docker containers. To make use of this feature, you need to
use the new ***downloads*** deploy target. Example:
```yaml
actions:
- deploy:
to: downloads
images:
# ...
postprocess:
docker:
image: my-image
steps:
- /path/to/my/postprocessing/script
```
The provided docker image will be run with the download directory as
current working directory, and the commands listed in `steps` will be
executed. Any changes that the commands make to the downloaded images are
persisted for later actions, and this includes not only modifying the
existing images, but also creating new files in there.
To make use of any files left in the downloads directory, you need a second
deploy action, which can refer to files in the downloads directory using
the ***downloads://*** pseudo URL scheme. Example:
```yaml
- deploy:
to: fastboot
docker:
image: my-adb-fastboot-image
images:
ptable:
url: downloads://ptable-linux-8g.img
reboot: hard-reset
boot:
url: downloads://boot.img
reboot: hard-reset
system:
url: downloads://rpb-console-image-lkft.rootfs.img
apply-overlay: true
```
Interactive non-exiting commands
================================
Interactive test received a new field: ```wait_for_prompt```. It defaults
to True but can be set to False in the job definition. Idea behind this
feature is to allow for non exiting commands to work in non-posix shells.
Example can be invoking fastboot in u-boot shell and flashing the board
from the subsequent test action
```yaml
- test:
timeout:
minutes: 10
interactive:
- name: erase-emmc
prompts: ['=> ']
script:
- command: mmc dev 1 0
name: mmc_dev
successes:
- message: mmc1(part 0) is current device
- command: mmc rescan
name: mmc_rescan
- command: mmc erase 0 0x400000
name: mmc_erase
successes:
- message: "4194304 blocks erased: OK"
- name: fastboot
prompts: ['=> ', '/ # ']
script:
- command: env default -f -a
name: env-default
successes:
- message: Resetting to default environment
- command: setenv partitions $partitions_android
name: setenv-partitions
- command: fastboot 1
success:
- message: "\n"
wait_for_prompt: false
```
Boot QEMU from docker image
===========================
We now allow users to provide their own docker image that LAVA will use to
start QEMU.
This will allow users to use recent QEMU version and to test QEMU itself.
Job definition schema example:
```yaml
- boot:
method: qemu
timeout:
minutes: 2
media: tmpfs
docker:
image: my-qemu-image
binary: /usr/bin/qemu-system-x86_64
prompts:
- "root@debian:"
auto_login:
login_prompt: "login:"
username: root
```
API
===
New certificate endpoints
-------------------------
We've added a support for downloading master certificate and for uploading a
worker certificate to master. This will make setting up a remote worker a
bit
easier for the administrators.
New endpoints available for REST API:
* ```/api/v0.2/workers/${hostname}/certificate/```
* ```/api/v0.2/system/certificate/```
The first one excepts both GET and POST requests so the user can also
download
the certificate for worker for double checking, while the second one can be
used only via GET request and will download the master public key.
New methods available for XMLRPC API:
* #scheduler.workers.get_certificate($hostname)
* #scheduler.workers.set_certificate($hostname, $key)
* #system.get_master_certificate()
They mirror the REST API calls described above.
Authorization
=============
New permissions backend for workers
-----------------------------------
The worker model is now protected by the "new" authorization system. You can
find settings in the admin section for managing individual workers.
Only `change` permission is used for workers, in order to allow
administrators
to control who can upload worker certificate, environment and
configuration files.
Note that the worker authorization settings will **NOT** affect the device
or
device type authorization in any way. It's only affecting worker objects and
nothing else.
Common device commands now available to test jobs
=================================================
LAVA already supported configuring per-device custom commands that can be
used
from test jobs, like this:
```yaml
actions:
# ...
- command:
name: my-custom-command
```
With this release, the following built-in commands can also be used:
`pre_power_command`,
`pre_os_command`, `power_on`, `power_off`, and `hard_reset`. Although lab
admins can
configure these commands to be anything, the following table describes
their usual
semantics:
| Command | Usual meaning |
| :------------------ | :------------------------------------ |
| `pre_power_command` | Turns USB OTG port ON |
| `pre_os_command` | Turns USB OTG port OFF |
| `power_on` | Turns power to the board ON |
| `power_off` | Turns power to the board OFF |
| `hard_reset` | Turns power to the board OFF, then ON |
No extra configuration is required: these commands are already required to
be defined
for each device, and are now made available to the "command" action without
need to
explicitly add them to the custom commands configuration.
The changelog is also available in the wiki:
https://git.lavasoftware.org/lava/lava/-/wikis/releases/2020.04
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
Hello,
As you know, we are trying to release a new version of LAVA every month.
We are delaying this month release (2020.03) due to some issues and crashes
that we found in the last days.
Issues where found on staging.vlo, lavafed and meta-lava, proving that the
CI is working.
Where are currently working on fixing the issues and proving that LAVA is
ready for release.
The next release should be ready for the end of next week and would be
called 2020.04.
Rgds
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
The 2020.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
=================
Upgrading
=========
Debian stretch
--------------
The support for Debian Stretch as been dropped. The minimal supported
version is now Debian Buster.
Security issues
---------------
Two security issues have been discovered and fixed in LAVA:
* remote code execution on the dispatcher (as root)
* overriding any directory on the dispatcher filesystem
Every version of LAVA (since 2014) are affected. However, only
authenticated users can exploit these issues.
We strongly advise to upgrade your instances to LAVA 2020.02.
Device-types
============
New device-types
----------------
New supported devices:
* bcm2711-rpi-4-b
* meson-sm1-khadas-vim3l
* musca-a
* musca-b
* rk3288-miqi
* sun50i-h5-nanopi-neo-plus2
docker
------
ADmins can add any extra argument to the docker DUT by setting
`docker_extra_arguments` in the device dictionary:
```jinja
{% set docker_extra_arguments = ["--ip", "10.0.1.3"] %}
```
MPS2
----
Allow to use the `flasher` deploy method.
Musca
-----
Add support for Musca boards.
```yaml
actions:
- deploy:
to: musca
images:
test_binary:
url: https://community.arm.com/.../MuscaBlinky_5F00_v002.hex
- boot:
method: musca
```
UUU deploy and boot
--------------------
[UUU](https://github.com/NXPmicro/mfgtools) is NXP's flashing tool for IMX
platforms.
UUU allows to intercept IMX ROM code, and download images on target by
using SDP (Serial Download Protocol).
IMX platforms are booting in SDP mode based on dip switches, but also falls
back in SDP mode when no valid bootloader is found in the selected boot
media (eg: SD card, or eMMC).
```yaml
actions:
- deploy:
to: uuu
images:
boot:
url: https://example.com/initramfs-genericarmv7a.cpio.gz
compression: gz
timeout:
minutes: 2
- boot:
method: uuu
commands:
- uuu: -b sd {boot}
timeout:
minutes: 4
```
vexpress
--------
The u-boot commands are now send one by one. The use of environment
variable to store boot commands has also been removed in favor of executing
the commands immediately.
This will allow to detect error early in the job.
Docker test action
==================
LAVA dispatcher can now run a test action in a docker container running on
the host. This feature can be used to run android tests from a user-defined
docker container against the DUT.
```yaml
- test:
timeout:
minutes: 10
docker:
image: adb-fastboot
definitions:
- repository:
metadata:
format: Lava-Test Test Definition 1.0
name: smoke-adb-tests
description: "Simple adb tests"
run:
steps:
- date
- hostname
- adb devices
- adb shell date
- adb shell hostname
from: inline
path: inline-smoke-test
name: docker-test
```
Image modification
==================
LAVA dispatcher can now append user-defined overlays to images. For
example, users can now ask LAVA to add some modules to the rootfs.
Currently, the image to update should be either a `cpio` (newc) or an
`ext4` image. The overlays should be tar archives.
The job definition would look like this:
```yaml
rootfs:
url: http://example.com/rootfs.ext4.xz
compression: xz
format: ext4
overlays:
modules:
url: http://example.com/modules.tar.gz
compression: gz
format: tar
path: /
```
Dispatcher configuration
========================
Allow to set `http`, `nfs` and `tftp` dispatcher ip in the dispatcher
configuration.
Edit `/etc/lava-server/dispatcher.d/<hostname>/dispatcher.yaml`:
```yaml
dispatcher_http_ip: <dispatcher-http-ip>:<port>
dispatcher_nfs_ip: <dispatcher-nfs-ip>:<port>
dispatcher_tftp_ip: <dispatcher-tftp-ip>:<port>
```
If the value is not defined, LAVA will fallback to `dispatcher_ip`.
REST API
========
New TestJob endpoints
---------------------
New actions are available for TestJob REST API:
* ```/api/v0.2/jobs/${job_id}/resubmit/```
* ```/api/v0.2/jobs/${job_id}/cancel/```
* ```/api/v0.2/jobs/validate/```
Validate action expects a POST request with job definition data which is to
be validated against validation schema as argument.
New permissions endpoints
-------------------------
Additional new endpoints are available in REST API:
* ```/api/v0.2/permissions/devicetypes/```
* ```/api/v0.2/permissions/devices/```
They are used to control the new authorization system. Available only for
system administrators.
Bugs
----
Issue when non authenticated users where trying to list devices or device
types
which resulted in an error is now fixed.
Web server
==========
Gunicorn is now responsible for serving static files (css, js, ...). This
was handled by Apache2 before. This change is improving performances by
improving browser caching and pre-compressing resources.
This will allow to use any reverse proxy like HAProxy, nginx or Traefik.
Development
===========
Dispatcher remote debugging
---------------------------
Starting lava-slave with `--debug` will make it call `lava-run` with
`--debug`. And that will make the lava-run stop right before running each
job and start a remote pdb debugging session at that point.
The debugger is accessed via telnet.
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
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
Hi folks,
The 2019.12 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:
* odroid-n2 (Amlogic)
* sun50i-h6-orangepi-3 (Olimex)
docker
------
A docker device can now use capabilities by setting `docker_capabilities`
in the device dictionary:
```jinja
{% set docker_capabilities = ["NET_ADMIN"] %}
```
TC2
---
Set `test_character_delay` to `50ms` by default to mitigate some serial
corruptions.
u-boot
------
In u-boot boot action, the `type` parameter has been removed. The type of a
kernel should be specified in the deploy action.
```yaml
- boot:
method: u-boot
type: bootz
```
Should be replaced by:
```yaml
- deploy:
to: tftp
kernel:
url: http://example.com/kernel
type: zimage
```
This support has been deprecated for more than a year.
Interactive test
================
echo: discard
-------------
When using interactive test with shells, LAVA will look for successes and
failures in the full output, including the command that was echoed by the
shell.
For example, when interacting with u-boot, LAVA will match the full output
of the DUT, including the shell echo:
```shell
=> echo "foo"
bar
```
LAVA would match the string `foo` echoed by the DUT.
This release adds a `echo` option allowing to skip the echoed string.
```yaml
- test:
interactive:
- name: network
prompts: ["=>", "/ # "]
echo: discard
script:
- name: dhcp
command: dhcp
[...]
```
unnamed commands
----------------
When using an interactive test action, if a command fail LAVA will:
* if the command is named: record the test case and execute the next command
* if the command is unnamed: raise a `TestError`
More information in the [documentation](
https://docs.lavasoftware.org/lava/actions-test.html#interactive).
Multinode
=========
Multinode jobs can now make use of `interactive` and `monitor` test
actions. However, the support for multinode is limited as these test
actions does not support synchronization.
If synchronization is required, use the `lava-test-shell` action.
REST API
========
Using display names when querying REST API
------------------------------------------
The choice fields in LAVA where previously queried in the following manner
in REST API when using filters:
```/api/v0.1/jobs/?health=2```
This is now fixed, fields like health and status, will use their display
names for filtering like so:
```/api/v0.1/jobs/?health=Incomplete```
API version bump
----------------
The new REST API version 0.2 is now available. New endpoints are available
for accessing the LAVA results (specifically test suites and test cases).
The old version is also available for compatibility with current API
clients.
New endpoints available:
* /api/v0.2/jobs/<job_id>/csv/
* /api/v0.2/jobs/<job_id>/yaml/
* /api/v0.2/jobs/<job_id>/suites/<suite_id>/
* /api/v0.2/jobs/<job_id>/suites/<suite_id>/csv/
* /api/v0.2/jobs/<job_id>/suites/<suite_id>/yaml/
* /api/v0.2/jobs/<job_id>/suites/<suite_id>/tests/
* /api/v0.2/jobs/<job_id>/suites/<suite_id>/tests/<test_id>/
Old endpoints removed:
* /api/v0.2/jobs/<job_id>/tests/
lxc protocol
============
Jobs using the lxc protocol to update resources inside the lxc test shell,
can now have access to the `NFS_ROOTFS` and `NFS_SERVER_IP` environment
variable.
This will allow jobs to boot using adb and nfs.
Database migrations
===================
This release includes a database migration to remove effects of an old bug
that was creating duplicated database objects. The duplicated objects are
anyway not accessible from the web interface nor the APIs.
The duplicated `TestData` objects will be removed from the database.
Device config schema
====================
`lava-schema`, the tool currently used to check job definition schema, can
now also check for device configuration schema.
```shell
/usr/share/lava-common/lava-schema.py device device.jinja2
```
By default, `lava-schema` will expect a `jinja2` template as first
argument. This file would be rendered prior to run the schema checker.
To check an already rendered device dictionary, add `--no-render`.
```shell
/usr/share/lava-common/lava-schema.py device --no-render device.yaml
```
By default, `lava-schema` will look for base templates in
`/etc/lava-server/dispatcher-config/device-types`. You can specify the path
to use by adding `--path``.
Checksum
========
LAVA is now able to check `sha512sum` checksums of downloaded resources:
```yaml
- deploy:
images:
system:
url: http://example.com/system.img.xz
compression: xz
sha512sum:
e0e82b5adfae84ff97f4f6488e5b4c64b0dfc7ad8a37b4bcbb887d9f85a6be0a
```
Test shell variables
=====================
Users can now set environment variables in the lava test shell by adding
`environment` to the job definition:
```yaml
environment:
FOO: bar
BAR: baz
```
The variables will be made available in the lava test shell.
More information in the [documentation](
https://docs.lavasoftware.org/lava/dispatcher-format.html#provide-environme…
).
Performances
============
The performances of the lava-server services has been dramatically improved.
With this release, the lava server and master can schedule, start and
handle 2.5 times more parallel jobs than in the previous version.
Moreover submitting jobs is now 3 times faster.
We will continue in the following releases to improve the performances.
Caching
=======
LAVA dispatcher can now make use of simple caching service like [KissCache](
https://git.lavasoftware.org/ivoire/KissCache).
Admin would have to update the dispatcher configuration in
`/etc/lava-server/dispatcher.d/<hostname>/dispatcher.yaml`:
```shell
# Set this variable when using http caching service based on url
substitution
# like KissCache
# When downloading resources, lava dispatcher will use this formating string
# instead of the original url.
http_url_format_string: "https://cache.lavasoftware.org/api/v1/fetch/?url=%s
"
```
More information in the [documentation](
https://docs.lavasoftware.org/lava/proxy.html#using-the-http-cache).
Bazaar
======
The support for pulling test definition from bazaar repositories has been
dropped due to the lack of users.
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
Hello,
following the release of LAVA 2019.11, we released lavacli v0.9.9
This release does:
* fix a crash with LAVA >= 2019.09
* improve log colors
* allow to follow logs when submitting jobs
As usual, lavacli could be installed from:
* pypi (https://pypi.org/project/lavacli/)
* debian (https://tracker.debian.org/pkg/lavacli) (coming soon).
Cheers
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
The 2019.11 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:
* imx8mn-ddr4-evk
* meson-sm1-sei610 (Amlogic)
* r8a7796-m3ulcb-kf
udev events
===========
Fix a race condition when waiting for `udev events`. If the dispatcher is
under load, sometimes the udev event will be sent before `lava-run` start
waiting for event.
In such case, the event is lost and LAVA will wait forever.
LAVA is now waiting for the event and at the same time looking at the usb
devices. If the event is missed, LAVA will notice the presence of the usb
device.
Documentation
=============
The documentation has been improved. The job definition snippets are now
easier to understand and to copy&paste into your own job definition.
This is an ongoing work that will continue in the following releases.
Job definition schema
=====================
Job context
-----------
The schema validator is now checking the content of the `context`
dictionary for both single and multinode jobs.
A new set of keys has been added: `custom_kernel_args` and `no_kvm`
Only the following keys are now allowed:
* `arch`, `boot_console`, `boot_root`, `cpu`, `extra_options`,
`guestfs_driveid`, `guestfs_interface`, `guestfs_size`, `machine`,
`memory`, `model`, `monitor`, `netdevice`, `no_kvm`, `serial`, `vga`
* `booti_dtb_addr`, `booti_kernel_addr`, `booti_ramdisk_addr`,
`bootm_dtb_addr`, `bootm_kernel_addr`, `bootm_ramdisk_addr`,
`bootz_dtb_addr`, `bootz_kernel_addr`, `bootz_ramdisk_addr`
* `boot_character_delay`, `bootloader_prompt`, `console_device`,
`custom_kernel_args`, `extra_kernel_args`, `extra_nfsroot_args`,
`kernel_loglevel`, `kernel_start_message`, `lava_test_results_dir`,
`menu_interrupt_prompt`, `mustang_menu_list`, `test_character_delay`,
`tftp_mac_address`, `uboot_extra_error_message`, `uboot_needs_interrupt`
Jobs using keys that are not listed in this list will be rejected.
If you think that some more keys should be whitelisted, talk to us.
Debian packaging
================
The `lava-dispatcher` Debian package architecture is now set to `All` as
the code is architecture independent.
Administrators
==============
Device dictionary
-----------------
Admins can now check device configuration using the `lava-server` command
line:
```shell
lava-server manage devices check qemu-01
lava-server manage devices check --all
```
Controlling devices
------------------
Admins can now use the control commands specified into the device
dictionary manually:
```shell
lava-server manage devices control <hostname> <command>
```
The commands are: `on`, `off`, `reset` and `connect`
Docker
======
The `lava-server` and `lava-dispatcher` docker images are now based on
debian `buster`.
Thanks
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
The 2019.10 tag has been pushed to master on git.lavasoftware.org.
.deb packages have been built in GitLab CI and will be 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:
* hifive-unleashed-a00 (SiFi)
* meson-g12b-a311d-khadas-vim3 (Amlogic)
* meson-gxm-q200 (Amlogic)
* MIMXRT1050-EVK (NXP)
* sun4i-a10-olinuxino-lime (Olimex)
* sun7i-a20-olinuxino-lime2 (Olimex)
* sun7i-a20-olinuxino-micro (Olimex)
u-boot error messages
---------------------
The list of u-boot errors that LAVA can recognized has been extended. The
full list is now: `Resetting CPU`, `Must RESET board to recover`,
`TIMEOUT`, `Retry count exceeded`, `Retry time exceeded; starting again`,
`ERROR: The remote end did not respond in time.`, `Bad Linux ARM64 Image
magic!`, `Wrong Ramdisk Image Format`, `Ramdisk image is corrupt or
invalid`, `ERROR: Failed to allocate`, `TFTP error: trying to overwrite
reserved memory`
dragonboard
-----------
Update the device-type template to flash GPT partitions in the right order
(if present).
meson-g12a-sei510
-----------------
Fix some issues with u-boot command corruptions and allow to use LAVA tftp
resources already setup by LAVA.
imx6q-sabrelite
---------------
Move the addresses around for imx6q-sabrelite to give `63MiB` for the
kernel image, `1MiB` for the dtb and the rest for the ramdisk.
jlink
-----
LAVA can now boot some boards using the `jlink` boot method. Currently,
only the `frdm-k64f` can use this method.
```yaml
- deploy:
timeout:
minutes: 3
to: tmpfs
images:
zephyr:
url: http://zephyr.bin
- boot:
method: jlink
timeout:
minutes: 10
```
vemsd
-----
The `vemsd` support has been improved after some experiments in the
Cambridge lab:
1. call `sync` on the mount point prior to umount
2. raise the right exception when failing to flash (Infrastructure error)
mps
---
The `mps` support was also improved after some issues in the Cambridge lab:
1. allow to flash multiple test binaries in one deploy block
2. allow to use soft reboot
```yaml
- deploy:
to: mps
images:
recovery_image:
url: mps2_sse200_an512.tar.gz
compression: gz
test_binary_1:
url: tfm_sign.bin
test_binary_2:
url: mcuboot.bin
```
Authorization
=============
Some issues found with the new authorization model has been fixed:
* fix crashes in some XMLRPC calls
* merge `admin_testjob` and `cancel_resubmit_testjob` into `change_testjob`
* remove `submit_testjob` and `add_testjob` permissions
* remove old permissions like `dashoard_app`
* rename `admin_` permissions to `change_` permissions
The [documentation](https://docs.lavasoftware.org/lava/authorization.html)
of this new model has been updated.
gunicorn
========
Fix log rotation. Due to a missing reload in the log rotate configuration
file, the `lava-server-gunicorn` service was logging to the old log file,
even after the log rotation.
Admin should look at the logs in `/var/log/lava-server/`.
Docker
======
Add an option to `lava-master` to set the event url when `lava-master` and
`lava-publisher` are running on two different hosts or containers.
Add `EVENT_URL="--event-url tcp://localhost:5500"` in
`/etc/lava-server/lava-master`.
This setting is used by [docker-compose](
https://git.lavasoftware.org/lava/pkg/docker-compose/).
Rest API
========
Users can now submit jobs by `POST` the job definition to the `/jobs/`
endpoint.
Django 2
========
This release is the first release to work on both Django 1.11 and Django 2.
Development
===========
Allow developer to run lava server and dispatcher services using `foremon`.
Thanks to this support, running a development version of lava is now way
simpler.
--
Rémi Duraffort
LAVA Architect
Linaro
Hi folks,
The 2019.07 tag has been pushed to master on git.lavasoftware.org.
.deb packages have been built in GitLab CI and 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:
* meson-gxl-s805x-libretech-ac (Amlogic)
* meson-gxl-s905d-p230 (Amlogic)
* meson-gxl-s905x-p212 (Amlogic)
* meson8b-ec100 (Amlogic)
* sun50i-h6-pine-h64
ox820-cloudengines-pogoplug-series-3
------------------------------------
Some ARM defconfig changes made the kernel bigger and the ox820 device
cannot boot any more. Update the ramdisk address to **0x61000000**
(was **0x60e00000**).
extra_nfsroot_args
------------------
Some device-types (`jetson-tk1`, `juno`, `qcom-qdf2400`, `rzn1d`,
`synquacer` and `tc2`) were not allowing the job submitter to set
`extra_nfsroot_args` in the job context.
Job submitters can now pass extra nfs rootfs arguments in the job
context for these devices.
context:
extra_nfsroot_args: ",wsize=65536 nfsrootdebug"
Database
========
Migrations
----------
This new version creates several database migrations:
* add `ExtendedUser.table_length` field
* add new tables: `GroupDeviceTypePermission` and `GroupDevicePermission`
* add custom permissions for Device: `view_device`, `submit_to_device`,
`admin_device`
* add custom permissions for DeviceType: `view_devicetype`,
`submit_to_devicetype`, `admin_devicetype`
* remove fields from DeviceType: `owners_only`
* remove fields from Device: `user`, `group`, `is_public`
* remove fields from TestJob: `user`, `group`, `visibility`
* delete table: `DefaultDeviceOwner`
These may incur a small amount of downtime during the upgrade process
as database migrations happen. This may take a long time if there is a
large number of records in the ``TestJob`` table.
A goal for the LAVA development team is to reduce the frequency of
database migrations to reduce this cost as much as possible. This
release also includes a data migration and adding new records in the
newly created tables so that authorization refactoring does not change
any existing user-visible behaviour.
Authorization refactoring
=========================
Due to scaling problems with the previous authentication model, the
way LAVA controls access to its most important entities (DeviceType,
Device and TestJob) has been completely revamped.
Previously, LAVA used flags like `owners_only`, `user`, `group`,
`visibility`. On large LAVA installations these were causing
significant database overhead. They have now been removed and replaced
by a new design. Two new tables have been added:
`GroupDeviceTypePermission` and `GroupDevicePermission`. The
permission model has been moved to Group based control and
administrators can control those through the Django admin interfaces
for ``DeviceType`` and ``Device`` records, or via the respective
XMLRPC calls. The data migration will convert records across from the
old auth model to the new model, keeping equivalent permissions.
The new permission model is inheritable by design so any permissions
applied to device types will also be applied to devices belonging to
the particular device type, and all permissions applied to a device
will be relevant for permissions on test jobs running on that
particular device. Further information can be found in the LAVA
documentation.
Table size
==========
The LAVA web interface displays a lot of tables. The size of the table
is configurable at instance level by the admin since LAVA
[2019.06](2019.06). There is a default table length defined in the
system.
In this release, users can now also configure the default table length
to use when logged in. This can be set by the user in their profile
page at `https://<host>/me/`.
Steve, for the LAVA team.
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
Hi folks,
The 2019.07 tag has been pushed to master on git.lavasoftware.org.
.deb packages have been built in GitLab CI and will be available 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:
* 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-sh…)
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.
--
Rémi Duraffort
LAVA Team, Linaro
Hello,
following the release of LAVA 2019.06, we released lavacli v0.9.7
This release brings only one new feature: get/set worker environment
In order to use this feature, you need LAVA >= 2019.06
Then you can:
lavacli workers env get <hostname>
lavacli workers env set <hostname> <env.yaml>
As usual, lavacli could be installed from:
* pypi (https://pypi.org/project/lavacli/)
* debian (https://tracker.debian.org/pkg/lavacli) (coming soon).
Cheers
--
Rémi Duraffort
LAVA Team, Linaro
Hi folks,
The 2019.06 tag has been pushed to master on git.lavasoftware.org.
.deb packages have been built in GitLab CI and are available 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:
* dragonboard-845c
* meson-g12b-odroid-n2 (Amlogic)
* ox820-cloudengines-pogoplug-series-3 (CloudEngines)
* stm32mp157c-dk2 (STMicroelectronics)
* sun50i-a64-bananapi-m64 (Allwinner)
* sun7i-a20-cubieboard2 (Allwinner)
* sun8i-a83t-bananapi-m3 (Allwinner)
* sun8i-r40-bananapi-m2-ultra (Allwinner)
docker
------
Add an option to start docker device as privileged. Add `{% set
docker_privileged = True %}` to the device dictionary.
qemu
----
Add support for `nios2` and `xtensa` architectures.
ssh
---
The ssh username can now be set in the device dictionary.
Boot methods
============
OpenOCD
-------
A new boot method called `openocd` has been contributed. This method,
allows to flash and boot boards using `openocd`.
An openocd job would look like:
- deploy:
to: tmpfs
images:
binary:
url: http://.../zephyr.elf
openocd_script:
url: http://.../cc3220_xds110.cfg
- boot:
method: openocd
- test:
monitors:
- name: tests
start: (tc_start\(\)|starting .*test|BOOTING ZEPHYR OS)
end: PROJECT EXECUTION SUCCESSFUL
pattern: (?P<result>(PASS|FAIL))\s-\s(?P<test_case_id>\w+)\r\n
fixupdict:
PASS: pass
FAIL: fail
For the moment, only the `cc3220SF` board supports this method.
Test shell
==========
result strings
---------------
In LAVA versions prior to 2019.01 both lower and upper case results
were accepted. This behavior was changed in 2019.01 to only accept
lower case.
In order to keep compatibility among test jobs, the upper case result
strings (`PASS`, `FAIL`, `SKIP` and `UNKNOWN`) are now valid again.
environment
-----------
A new variable, called `environment` has been added to the device
dictionaries. These can be used, for example, to describe physical
hardware connections between the DUT and interfaces on the worker or
other addressable hardware.
For ease of use, LAVA will directly export the content of the
`device_info`, `environment`, `static_info` and `storage_info`
dictionaries into the test shell environment. The dictionaries and
lists will be unrolled, for example:
{% set environment = {"RELAY_ADDRESS": "10.66.16.103", "REMOTE_SERIAL_PORT": "/dev/ttyUSB2"} %}
{% set static_info = [{"board_id": "S_NO81730000"}, {"board_id": "S_NO81730001"}] %}
{% set storage_info = [{'SATA': '/dev/disk/by-id/ata-ST500DM002-1BD142_W3T79GCW'}] %}
will become:
export RELAY_ADDRESS='10.66.16.103'
export REMOTE_SERIAL_PORT='/dev/ttyUSB2'
export LAVA_STATIC_INFO_0_board_id='S_NO81730000'
export LAVA_STATIC_INFO_1_board_id='S_NO81730001'
export LAVA_STORAGE_INFO_0_SATA='/dev/disk/by-id/ata-ST500DM002-1BD142_W3T79GCW'
REST API
========
Filtering has been activated in the REST API for 'devices',
'device-types' and 'jobs'. See the
[documentation](https://docs.lavasoftware.org/lava/data-export.html#filterin…
for the details.
Table size
==========
The LAVA web interface displays a lot of tables. The size of the table
is now configurable at instance level by the admin.
Update `settings.conf` and restart `lava-server-gunicorn`:
"DEFAULT_TABLE_LENGTH": 50,
By default, every table will display 25 elements.
lava-slave
==========
Socks proxy
-----------
When connecting with `lava-master` and `lava-logs`, `lava-slave` can
now use a socks proxy if needed.
In order to use a socks proxy, you should either:
* start lava-slave with `--socks-proxy localhost:8081`
* edit `/etc/lava-dispatcher/lava-slave` and add
`SOCKS_PROXY="--socks-proxy localhost:8081"`
The support is now complete.
Job definition schema
=====================
Job context
-----------
The schema validator is now checking the content of the `context`
dictionary for both single and multinode jobs.
A new set of keys has been added: `boot_character_delay`,
`booti_dtb_addr`, `booti_kernel_addr`, `booti_ramdisk_addr`,
`bootm_dtb_addr`, `bootm_kernel_addr`, `bootm_ramdisk_addr`,
`bootz_dtb_addr`, `bootz_kernel_addr`, `bootz_ramdisk_addr`.
Only the following keys are now allowed: * `arch`, `boot_console`,
`boot_root`, `cpu`, `extra_options`, `guestfs_driveid`,
`guestfs_interface`, `guestfs_size`, `machine`, `memory`, `model`,
`monitor`, `netdevice`, `serial`, `vga` * `booti_dtb_addr`,
`booti_kernel_addr`, `booti_ramdisk_addr`, `bootm_dtb_addr`,
`bootm_kernel_addr`, `bootm_ramdisk_addr`, `bootz_dtb_addr`,
`bootz_kernel_addr`, `bootz_ramdisk_addr` * `boot_character_delay`,
`bootloader_prompt`, `console_device`, `extra_kernel_args`,
`extra_nfsroot_args`, `kernel_loglevel`, `kernel_start_message`,
`lava_test_results_dir`, `menu_interrupt_prompt`, `mustang_menu_list`,
`test_character_delay`, `tftp_mac_address`,
`uboot_extra_error_message`, `uboot_needs_interrupt`
Jobs using keys that are not listed in this list will be rejected.
If you think that some more keys should be whitelisted, talk to us.
XML-RPC
=======
Two functions called `scheduler.workers.get_env` and
`scheduler.workers.set_env` have been introduced. These functions
allow users to get and set the environment for a given dispatcher.
The corresponding command line has been added to `lavacli` v0.9.7:
$ lavacli workers env get dispatcher01
$ lavacli workers env set dispatcher01 env.yaml
Steve, for the LAVA team
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
Hi folks,
We found a significant bug in our latest 2019.05 release, affecting
the download of large compressed log files. We have released a hotfix
update for this issue, tagged as 2019.05post1.
.deb packages have been built in GitLab CI and are available at
https://apt.lavasoftware.org/release
Docker images for amd64 and arm64 have been built in GitLab CI and
will be available shortly from
https://hub.lavasoftware.org/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
=======================
Full list of changes since 2019.04
==================================
8b309eadb Pass iterator to StreamingHttpReponse
Steve, for the LAVA team
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
Hello,
following the release of LAVA 2019.05, we released lavacli v0.9.6
This release brings some improvements:
* "jobs cancel" can now cancel multiple jobs
* "utils templates render" accepts a context and can trim the output
* add a timeout to "jobs wait" command
In order to use the new aliases introduced/fixed in LAVA 2019.05, lavacli
v0.9.6 is required.
As usual, lavacli could be installed from:
* pypi (https://pypi.org/project/lavacli/)
* debian (https://tracker.debian.org/pkg/lavacli) (coming soon).
Cheers
--
Rémi Duraffort
LAVA Team, Linaro
Hi folks,
The 2019.05 tag has been pushed to master on git.lavasoftware.org.
.deb packages have been built in GitLab CI and are available at
https://apt.lavasoftware.org/release
Docker images for amd64 and arm64 have been built in GitLab CI and
will be available shortly from
https://hub.lavasoftware.org/
and
https://hub.docker.com/u/lavasoftware
Changes in this release
=======================
Device-types
============
Aliases
-------
The device-type aliases feature has been totally redesigned. You can
now define multiple aliases for a given device-type. In a job
definition, users can use either the device-type or any of its
corresponding aliases.
New device-types
----------------
New supported devices:
* da850-lcdk (davinci)
* SoCA9 (Schneider)
frdm-k64f
---------
It is now possible to override the setting `resets_after_flash` in the
device dictionary, to support newer firmwares.
meson-gl12
----------
Fix the dtb and ramdisk addresses:
* dtb: **0x01070000** (was **0x0107f000**)
* ramdisk: **0x08000000** (was **0x04000000**)
RPi
---
Move the ramdisk load address to **0x02200000** (was **0x02100000**)
to allow more space for the kernel image and avoid them overlapping.
rzn1d
-----
Allow to use zImage.
Database
========
Migrations
----------
This new version creates several database migrations to:
* remove `TestJob.admin_notifications` field
* improve `DeviceType` aliases
* replace some CharField types with TextField to remove unnecessary
size limitations
These may incur a small amount of downtime during the upgrade process
as database migrations happen. A goal for the LAVA development team is
to reduce the frequency of database migrations to reduce this cost as
much as possible. The next **planned** set of database migrations is
in the 2019.08 release, in August.
dashboard_app
-------------
The dashboard_app (holding v1 results) has been fully removed,
including:
* migrations
* database model
* xmlrpc calls
Docker
======
multiarch
---------
Due to some limitations in the docker registry embedded in GitLab, we
are no longer building and providing multiarch docker images for every
commit. Multiarch images will still be available on [docker
hub](https://hub.docker.com/u/lavasoftware/) for every release.
lava-dispatcher
---------------
The dispatcher docker image now includes `docker-ce-cli`. This will
allow lava to control docker containers from within a lava-dispatcher
container, helping admins to participate in lavafed.
Server performances
===================
Template caching
----------------
The `USE_TEMPLATE_CACHE` setting variable has been removed. On newer
Django versions, this option is no longer useful and might even cause
problems.
Compressing job logs
--------------------
Support has been added for compressing log files on the server, using
xz (lzma) compression. Logs will be stored uncompressed as jobs are
running, but they may later be compressed by admins to reduce the
amount of space needed.
The `lava-server manage jobs compress` command
includes options to allow for management of this. Admins can use this
in cronjobs to automatically compress job logs older than 30 days, or
similar (`lava-server manage jobs compress --older-than 30d --slow`).
LAVA will automatically decompress old compressed logs on the fly if
they are ever needed again in future.
Job definition schema
=====================
Admin helper
------------
The `lava-server manage jobs validate` command can now send a mail to
the admin when an invalid job is found.
To make use of this, admins can setup a regular cronjob that will call:
```shell
lava-server manage jobs validate --mail-admins
```
Job context
-----------
The schema validator is now checking the content of the `context`
dictionary for both single and multinode jobs.
Two new allowed keys have been added: `uboot_extra_error_message` and
`uboot_needs_interrupt`
Only the following keys are now allowed:
* `arch`, `boot_console`, `boot_root`, `cpu`, `extra_options`, `guestfs_driveid`, `guestfs_interface`, `guestfs_size`, `machine`, `memory`, `model`, `monitor`, `netdevice`, `serial`, `vga`
* `bootloader_prompt`, `console_device`, `extra_kernel_args`, `extra_nfsroot_args`, `kernel_loglevel`, `kernel_start_message`, `lava_test_results_dir`, `menu_interrupt_prompt`, `mustang_menu_list`, `test_character_delay`, `tftp_mac_address`, `uboot_extra_error_message`, `uboot_needs_interrupt`
Jobs using keys that are not listed in this list will be rejected.
If you think that some more keys should be whitelisted, talk to us.
Extending job context
---------------------
Admins can extend the white list by updating `EXTRA_CONTEXT_VARIABLES`
in the settings:
```json
"EXTRA_CONTEXT_VARIABLES": ["custom_variable1", "variable_2"]
```
Don't forget to restart `lava-server-gunicorn` if you make changes
here.
lava-slave
==========
Socks proxy
-----------
When connecting with `lava-master` and `lava-logs`, `lava-slave` can
now use a socks proxy if needed.
In order to use a socks proxy, you should either:
* start lava-slave with `--socks-proxy localhost:8081`
* edit `/etc/lava-dispatcher/lava-slave` and add
`SOCKS_PROXY="--socks-proxy localhost:8081"`
Custom CSS
==========
This adds the possibility to include a custom style sheet in a LAVA
instance for applying overall branding to the GUI.
Add the link to the CSS in the `settings.conf` and restart
`lava-server-gunicorn`:
```json
"BRANDING_CSS": "https://www.example.org/css/style.css",
```
Full list of changes since 2019.04
==================================
5e4a36956 jobs compress: create the output.yaml.size file
if needed.
412b73788 device-type: add SoCA9 from Schneider
aab54ce66 Revert "Auth refactoring part 1."
396c7342f logutils: test the module functions
15bb54214 logutils: only create the index when needed
ed60e521b Add a command line helper to compress logs
e19c9a2cf Read logs from either output.yaml or output.yaml.xz
41672feee job logs: replace TestJob.output_file by logutils
functions
c3bf98bd6 job: remove unused/uneeded job_file_present variable
c5c881347 Remove the archived_job_file function
1e32ed252 LAVA branding: add possibility to include custom CSS
417c8b14b release: add a script to remove old docker images
0e08fa08e Clean up obsolete conffiles causing piuparts failures
1e9778114 Present the codeclimate data in human readable format
2fa918740 schema: the job visibility is required.
2fbc72031 Order aliases by name when rendering
1a10f4903 scheduler.jobs.validate: fix return value
e7ce9d63c schema: allow admins to extend the white list of
context variable
a615696cb lava-schema: factorize and allow to check device config
0c68b065c schema: add a device schema into lava_common
1ac122efe Add fastboot support to the meson-g12a-sei510
56583c703 debian: remove unused or redondant files
9654c526a Remove permission object support from
GroupObjectPermission methods.
8d13f2def Change API to update single object permissions.
f365005b1 Small code review changes.
444404943 Add LAVAServerError exception tree.
7c533d5c4 Remove shortened codename support.
c991c3c5c Auth refactoring part 1.
c2acdbdd8 debian: remove unused py3dist overrides
dadce92a6 doc: fix sample job schema
c505f1322 schema: add missing uboot_needs_interrupt to the context
ccfbf2aed schema: fix boot.minimal by adding reset and auto_login
b17b24e94 schema: also validate the multinode context variable
0f13bc60a Change notification CharField types to TextField instead
4be183e2d unittests.sh was renamed to dispatcher-unittests.sh.
d6b642471 Partially revert 3d0ddb402 to fix some tables issues
ff613da21 device: improve the recent test jobs table
e21f2ddbb Use .exists() instead of len(.all())
bb3ca4525 XMLRPC API: fix crash in scheduler.aliases
85fc254b7 schema: fix remaining syntax error in the sample jobs
9cccb2e3a docs: Update docs for DeviceType alias
5b6424218 scheduler: add test for alias submissions
62c0e08ec scheduler/api: fix XML-RPC API for Aliases
ec74e9ed7 scheduler: avoid device type-alias name conflict
3d0ddb402 scheduler: modify alias to be 1-many relation
a6e9c6d2f lava-slave: add an option to use a socks proxy
7a18fc022 schema: allow uboot_extra_error_message in the context
711a20131 schema: fix definition of test definition option
"lava-signal"
b0088485c doc: fix emphasis
aefc87b26 Improve the README and use markdown for Gitlab rendering
a4b350516 fix pyocd boot action method to print out version of
binary used
c045401d1 Do not use minified version of JS and CSS files
55afae484 schema: add "new_connection" boot method
ed4eeda0a doc: add missing label
851b4bc33 version.py: fix git check when using worktrees
72b9dd18c Change the 'fastboot_sequence'
383525981 user commands: use run_cmd instead of run_command
b1c84a1d6 validate: allow to report invalid jobs to admins
82aa705b8 Fix multinode jobs validation
b10bc826f Use the static template function
d48ba02c6 Make USB/DFU/UDEV timeouts into Infra Errors
643180264 debian: list every minimun versions for buster
0dd5dc1d6 lava_common: remove unused dependency on pyzmq
f1c1372ca doc: fix syntax to match schema
759740e1c device-types: rpi: allow extra space for kernel image
3bd8f0d8a Fix file permissions
8139950b1 Remove USE_TEMPLATE_CACHE option
44c5e6ca5 scheduler: update rzn1d device-type to boot zImage
3fced42f5 Fix the dtb/ramdisk addresses
750d8f298 Document the "command" action block
0447e8327 doc: replace lava-tool by lavacli whenever possible
8c73a28ed Update packaging for dashboard removal
1c6be7f71 Remove leftover from v1 dashboard
cc7e86fa7 Remove dashboard_app
c4a4c3e3b device-type: add da850-lcdk
3a16ca954 Remove admin_notifications field
1a20620be CI: do not build anymore multiarch images
796c98eb3 CI: fix tag selection
cc2bc7509 add systemd support for lava-os-build
a7c483bdb Add overriding resets_after_flash to support newer
FRDM-K64F boards
537773c9e TestJob duration: return only seconds (and not
miliseconds)
5ae7f5a1a Add a helper script for Debian release
4b2c07da7 Fix broken seealso syntax in docs
447bc9344 doc/v2/timeouts: fix http-download action name typos
Steve, for the LAVA team
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
Hi folks,
The 2019.04 tag has been pushed to master on git.lavasoftware.org.
.deb packages have been built in GitLab CI and are available 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:
* A13-OLinuXino-MICRO (Allwinner)
* AM65x-GPEVM (aka am6) (TI)
* ar9331-dpt-module (DPTechnics)
* BeagleBone Black
* dove cubebox (Marvell)
* i.MX23 (Olimex)
* i.MX27-phytec-phycard-s-rdk (PHYTEC)
* i.MX28-duckbill (EnOcean)
* i.MX53-qsrb
* i.MX6ul-pico-hobbit
* i.MX6dl-riotboard (RIoTboard)
* meson-g12a-sei510 (Amlogic)
* meson-g12a-x96-max (Amlogic)
* SoCFPGA Cyclone V SoCrates (Altera)
cubietruck
----------
The bootloader prompt for `cubietruck` has been updated from `"sun7i"`
to `"sun7i# "`. In fact, the shorter form was also matching the dtb
filename, making some job unreliable.
qemu
----
If one or more test actions are included in a qemu job, LAVA will
create a disk image and will attach it to qemu.
Some emulated devices have no bus available for attaching this image
(like cubieboard). Some emulated devices have an available bus but
qemu is unable to attach to it due to the selected architecture (like
vexpress).
For these boards, you need to set `guestfs_interface` to `None` and
add a device with `drive=lavatest` in the job `context`:
context:
extra_options:
- -device virtio-bk-device,drive=lavatest
guestfs_interface: None
rzn1
----
`rz1` has been renamed to `rzn1d` to match OpenEmbedded board name.
Boot methods
============
Barebox
-------
A new boot method called `barebox` has been contributed. This method,
allows to boot boards using the `barebox` bootloader. Currently, the
resources are deployed using `tftp`.
A brebox job would look like:
actions:
- deploy:
to: tftp
kernel:
url: http://.../zImage
nfsrootfs:
url: http://.../jessie-armhf-nfs.tar.gz
compression: gz
dtb:
url: http://.../am335x-bone.dtb
…
- boot:
method: barebox
commands: nfs
prompts:
- 'root@jessie:'
…
The following device-types support barebox:
* ar9331-dpt-module (DPTechnics)
* BeagleBone Black
* dove cubebox (Marvell)
* i.MX23 (Olimex)
* i.MX27-phytec-phycard-s-rdk (PHYTEC)
* i.MX28-duckbill (EnOcean)
* i.MX53-qsbr
* i.MX6dl-riotboard (RIoTboard)
* SoCFPGA Cyclone V SoCrates (Altera)
dfu
---
Allow to use u-boot based dfu instead of the hardware one
On some boards, the hardware dfu serial number is set to 0000000. If
the board provides two boot media (NOR and NAND for example), we can
have a recovery u-boot on one media that will be used to flash the
second media using dfu.
actions:
- deploy:
to: tmpfs
images:
sf_uboot0:
image_arg: --alt sf_uboot0 --download {sf_uboot0}
url: http://.../u-boot-ddr.itb
- boot:
namespace: dfu
method: dfu
Grub
----
When booting with grub, users can now ask to serve the filesystem
from NBD instead of ramdisk or NFS.
- boot:
method: grub
commands: nbd
Minimal
-------
By default LAVA will reset the board power when executing the minimal
boot action. Users can skip this step by adding ``reset: false``. This
can be useful when testing bootloader in interactive tests and then
booting to the OS.
- boot:
method: minimal
reset: false
prompts:
- 'root@debian:~#'
- '/ #'
kexec
-----
The `kexec` boot method has been fixed. Thanks to this support, users
can test this kernel functionality:
- boot:
method: kexec
kernel: /boot/vmlinuz-3.16.0-4-amd64
initrd: /boot/initrd.img-3.16.0-4-amd64
command: /sbin/kexec
kernel-config: /boot/config-3.16.0-4-amd64
boot_message: Starting new kernel
options:
- "--reuse-cmdline"
auto_login:
login_prompt: "login:"
username: root
REST API
========
A new endpoint has been added to list `workers` at
`/api/v0.1/workers`.
Some fields are now using human readable names instead of opaque
constants:
* device:
* health
* state
* device-type:
* health_denominator
* TestJob:
* health
* state
* visibility
* submitter
Job definition schema
=====================
Web UI
------
When submitting or resubmitting a job from the web interface, the new
schema validator will be used. Any errors found by the new schema
validator will be reported as a warning.
Admin helper
------------
A new helper has been created for admins to validate old job
definitions on their local instance:
lava-server manage jobs validate --newer-than 1d
lava-server manage jobs validate --newer-than 1d --submitter lava-health
Job context
-----------
The schema validator is now checking the content of the `context`
dictionary. Only the following keys are now allowed:
* `arch`, `boot_console`, `boot_root`, `cpu`, `extra_options`, `guestfs_driveid`, `guestfs_interface`, `guestfs_size`, `machine`, `memory`, `model`, `monitor`, `netdevice`, `serial`, `vga`
* `bootloader_prompt`, `console_device`, `extra_kernel_args`, `extra_nfsroot_args`, `kernel_loglevel`, `kernel_start_message`, `lava_test_results_dir`, `menu_interrupt_prompt`, `mustang_menu_list`, `test_character_delay`, `tftp_mac_address`
Jobs using keys that are not listed in this list will be rejected.
If you think that some more keys should be whitelisted, please send a
patch.
Docker
======
Debian slim
-----------
The `lava-server` and `lava_dispatcher` docker images are now based on
`debian:stretch-slim`. This will reduce the size of the images
slightly.
lavaserver uid
--------------
In order to prevent any future issues, the `uid` and `gid` of the
`lavaserver` user has been fixed to `200`.
If you are upgrading from a previous lava-server docker image and
keeping the data (job logs, device dictionaries, ...) you will need to
change the owner of the files and directory:
chown -R lavaserver:lavaserver /etc/lava-server/dispatcher-config
chown -R lavaserver:lavaserver /var/lib/lava-server/
Full list of changes
====================
ec8e42c5f schema: vadidate context dictionnary
2e6964c17 device-types: fix board name imx53-qsbr -> imx53-qsrb
52e55a805 Tweak the reprepro-release.sh script again
73ad6ef10 Update the home page contents
d929cc8f9 Upgrade jQuery to v3.4.0 after the last security issue
8dd24244e Revert "device-types: base: detect TFTP ERROR: File not
found"
215a9ca04 Revert "device-types: use array instead of sting
concatenation"
976541d3a Update docs, adding more references to apt.lavasoftware.org
d0e9d7279 GitHelper: when failing, print git command stdout/stderr
e5671dbf1 u-boot-dfu tests: skip if dfu-util is not available
0b660a124 lava shell helpers: fix shellcheck warnings
7f02689c2 Allow to use u-boot based dfu instead of the hardware one
f81e83f31 qemu: Add an ID to the qemu storage
e063102e2 Convert offset and limit query parameters to ints
6363d1020 results: use yaml CDumper instead of the python dumper
d259def87 Fix documentation about template caching
2dbb0e059 device-types: use array instead of sting concatenation
0b3f671bf Fix crash when validating an invalid multinode job
0b6550d6f sample jobs: improve syntax
7c38216ea Schema: remove "live" argument
7e0a8e415 Fix file permissions
562be7cc6 Remove unused allow_modify from grub-nbd sample job
6f25a8086 device-types: add socfpga-cyclone5-socrates device
660b5b126 device-types: add ar9331-dpt-module device
81fa52c07 device-types: add dove-cubox device
65dacd712 device-types: add imx6dl-riotboard device
4566a4639 device-types: add imx53-qsbr device
7b1d2d0b9 device-types: add imx27-phytec-phycard-s-rdk device
2735228e1 device-types: add imx28-duckbill device
91abf4c2c device-types: add imx23-olinuxino device
efec57256 sample_jobs: add barebox job definitions
7b8e78b3c device-types: add parameters section to barebox type
b8102f433 device-types: add helper for barebox test and use on
imx6ul-pico-hobbit
ca800a7b6 xmlrpc: do not raise if jobs.list is empty
705d0aeeb schema: improve inline test definition schema
f5e06bf7d lava-schema: print yaml syntax errors
000420042 schema: allow for auto_login in fastboot and kexec
29708cbb0 schema: allow for no compression
883e24be4 schema: enforce that every actions of a multinode use roles
e9fe783bf Show validation warnings when (re)submitting jobs in the web
ui
c3f8993fe Add NBD support to grub
07a693eaf device-types: minnowboard-common: permit to override
grub_autoboot_prompt
52c9f1ce8 device-types:: allow to change bootloader prompt at device
level
b3864a998 schema: accept zero MultiNode role count
78de67ce0 schema: accept test action parameters
5143b42f3 device-types: add sun5i-a13-olinuxino-micro
7403ddfd4 Remove all links to lavapdu and improve PDUDaemon docs
613038ccd doc: fix typo on --passwd argument
c56ab79e5 schema: add deploy.overlay module
5043f5e83 doc: make the message toward 3rd party packaging more
friendly
0140f42f3 Remove unsed argument
86a923cde Fix version/arch computation in docker debian-slim variants
79d239060 CI: use new sast template provided by gitlab
fce87ba18 cubietruck: use a longer bootloader prompt
83de037f0 Improve sql efficiency when generating lab report
4bab2f601 Improve "lava-server manage check"
714cdb587 Move back adduser call from postinst.py to
lava-server.install
668d132c6 device-types: base: detect TFTP ERROR: File not found
5bf642e3b scheduler: added AM6 device type
eb784fa69 Remove the top-level links from the docs
22f816bbb Add extra doc template code to add rel="canonical" links
95b43d160 boot minimal: allow to skip reseting the device
54f00eea7 Fix kexec boot failure
4819cb9db lava-test-raise: fix shell syntax
d718a4a9d device-type: add meson-g12a-x96-max
0f29a3e9e device-type: add meson-g12a-sei510
386c29ea0 device-type: add new meson-g12-common
affccf663 auto login: fix the prompts list after login
bcb243c65 debian: remove dependencies to unused jquery libs
eece2782b CI: skip debian specific tests if dpkg-query is not
installed
f2fdfa0f9 Improve error message
c974a8859 scheduler: rename rzn1 to rzn1d
b2cebf9a1 Only deploy the LAVA docs on a tag
a7a3f1f2f schema: allow namespace in user commands
f5b6edf73 Use enumerate whenever possible
f44347ce9 Remove "-master" (branch name) in docker tags
e09d68f19 Fix argument typo.
7cd503803 lava_scheduler_app: add barebox test
9ba1c02eb device-types: add imx6ul-pico-hobbit device
9e7a7ecd2 device-types: add base-barebox for typical barebox setup
6fda3991d dispatcher: add barebox boot action
1a6bca180 REST API: translate dictionary values to human readable form
e3b6fde17 Remove /etc/lava-dispatcher/lava-dispatcher.conf
2b0c7569e Upgrade bootstrap to v3.4.1
4cf162244 Use bootstrap minified css file
10396e6a0 release: add the script to push docker containers to docker
hub
2a7e17ab6 check: fix the check for systemd existence
bf4dc683e check: fix a crash when the uid is unknown
443a8b87b Add validate helper to manage jobs support
58eb62334 Remove unused imports
f51d9d000 rest-api: also list workers
2e7cae991 Add --host argument to pg_isready command call
b5090e4d9 debian/lava-dispatcher.dirs: remove usr/sbin
936541ff6 Fix typo in lava-modules.conf install path
Steve, for the LAVA team
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
Hello,
following the release of LAVA 2019.03, we released lavacli v0.9.5
This release brings one new command: "lavacli jobs validate"
This command send the given job definition to LAVA (version >= 2019.03).
LAVA will check the definition against the schema and report any errors.
As usual, lavacli could be installed from:
* pypi (https://pypi.org/project/lavacli/)
* debian (https://tracker.debian.org/pkg/lavacli) (coming soon).
Cheers
--
Rémi Duraffort
LAVA Team, Linaro
The 2019.03 tag has been pushed to master on git.lavasoftware.org.
Packages have been built in GitLab CI and are available at
apt.lavasoftware.org/release. Docker images for amd64 and arm64 have
been built in GitLab CI and are available from hub.lavasoftware.org
and https://hub.docker.com/u/lavasoftware .
Changes to LAVA UI configuration
================================
https://master.lavasoftware.org/static/docs/v2/advanced-installation.html#c…
Initial settings for a LAVA instance change over time as the
requirements change and dependencies improve internal security
implementations. Most instances will need some adjustment to the
apache configuration for the main LAVA UI in
/etc/apache2/sites-available/lava-server.conf and the LAVA packages do
not attempt to update this file automatically once admins have made
changes. Admins should therefore subscribe to the lava-announce
mailing list and make changes using separate configuration management.
apache2
=======
Browser caching can be improved by enabling mod_header in Apache to
allow LAVA to send appropriate cache control headers as well as mod
proxy and mod proxy_http:
$ sudo a2enmod header
$ sudo a2enmod expires
$ sudo service apache2 restart
LAVA server settings changes
============================
Django requires the allowed hosts to be explicitly set in the LAVA
settings, as a list of hostnames or IP addresses which LAVA is
allowed/expected to use. If this is wrongly configured, the UI will
raise a HTTP 500 error and you will get information in the output of:
lava-server manage check --deploy
or in
/var/log/lava-server/django.log
For example, /etc/lava-server/settings.conf for
https://lava.codehelp.co.uk/contains:
"ALLOWED_HOSTS": ["lava.codehelp.co.uk"],
See also
https://docs.djangoproject.com/en/1.11/ref/settings/#allowed-hosts
It is also important to enable ProxyPreserveHost in
/etc/apache2/sites-available/lava-server.conf
ProxyPreserveHost On
In some situations, you may also need to set USE_X_FORWARDED_HOST to
False in /etc/lava-server/settings.conf
See also
https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-USE_X_FORW…https://git.lavasoftware.org/lava/lava/merge_requests/400
python3-junit.xml
=================
python3-junit.xml >= 1.8 is required for REST API calls when running A
suitable package has now been backported to provide this functionality
for Stretch.
https://packages.debian.org/stretch-backports/python3-junit.xml
Note: there is a very similarly named package which will **not** work
(python3-junitxml). Look for the dot in the package name of the
correct package: python3-junit.xml
When installing, remember to allow stretch-backports:
$ sudo apt -t stretch-backports install python3-junit.xml
https://git.lavasoftware.org/lava/lava/merge_requests/357
Bump version of django-tables2
==============================
With 2019.01 and later, django-tables2 version 1.14 does not pick up
the customisation of the tables, so orderable icons and search forms
and pagination are missing.
It was not practical to backport django-tables2 to stretch-backports
due to complexities in the build dependencies of the package. So this
update has been made available via apt.lavasoftware.org
Stretch users will find a new version of python3-django-tables2 will be
installed alongside 2019.03.
https://git.lavasoftware.org/lava/lava/merge_requests/390
Prevent action.timeout exceeding job.timeout
============================================
This change affects the test jobs you submit to LAVA. The test job will
warn if any one action timeout exceeds the overall job timeout. LAVA is
adopting a stricter submission schema and this is the first common issue.
If you have a repository containing a number of test jobs, you can
check all of the jobs in one go by passing the path to a script in the
lava-common package.
$ sudo apt install lava-common
$ /usr/share/lava-common/lava-schema.py jobs ./*.yaml
You may want to edit the timeouts when resubmitting older test jobs.
When running /usr/share/lava-common/lava-schema.py, there may be a
range of other errors reported too. In future releases, LAVA will no
longer silently ignore unknown or obsolete YAML blocks. If there is
an error in the submission, the expanded schema will report it.
It is worthwhile running /usr/share/lava-common/lava-schema.py
against the output of all your test job submission templates. If you
use templating and CI, then you could add the check to the CI of each
change to the templating. Just ensure that the lava-common package is
upgraded to the same version as the instance to which the test jobs
would be submitted.
In a future release, this expanded schema check will be included into
lavacli, lava-server manage and as an XMLRPC call which can be used
before the submission. For now, only the action.timeout exceeding
job.timeout warning is being enabled in 2019.03.
https://git.lavasoftware.org/lava/lava/merge_requests/413
Changes in this release
=======================
60b9c653f checks: fix crash if the cmdline is not in the expected format
86cfe1ac2 Update reprepro-release.sh
6129fe7c0 tweak reprepro-release for new directory
b0cf8d779 rzn1: allow to boot using a fit image available over tftp
3e4faf6e1 Add qcs404-evb-1k-specific health check and fix a typo
9fd571b3e Fix crash in "check --deploy"
07a89fab3 device-type: Add Qualcomm's qcs404-1k and qcs404-4k
dcf3f2c6c debian: lava meta pkg: allow to use chrony instead of ntp
2d8e09126 (codehelp/master) schema: improve schema validator
8fa55d888 xmlrpc: allow to validate job definition schema
5aa407f04 Add default volumes for lava-slave-docker types
8f2a8cbe6 schema: move validate function to lava_common.schema
0b38b5805 Update copyright years across the LAVA source tree
5c17463e1 Package lava-schema.py in lava-common
a846ad088 Provide symlink for favicon
785906e1b Make timeout check non-fatal
6373b6869 lava-schema: allow to read from stdin
25812ecc7 schema: allow for any objects for test def params
861ec2fb3 Revert change to USE_X_FORWARDED_HOST
f26f61ee7 Avoid spurious boot command list warning
4915231e4 Skip analysis jobs on tags
d53814cc0 Add docs on advanced Apache and container usage
b42520584 Mention lava-lxc-mocker in docs
93828f63d device-types: add Intel upsquare
170dc7547 device-types: add pine64+
f1bbb9bb8 lava-server-gunicorn: allow to set the bind address
354077cb4 Schema: handle recovery deploy and boot methods
ae39f9004 Schema: add deploy to "download" method
7b9119bd7 CI check more sample jobs
168c4db20 Bump version of django-tables2 backport
1b0749092 Fix more sample jobs and ad schroot boot
e30c2f03d Fix typo
ea2987a08 Fix error in maintenance breadcrumb
291aa4ddb Make kernel messages wait sensitive to force_prompt
f3adeb798 Add cls.LT and cls.EXACT to models.DateTimeField
84ad3683a Check health-check YAML and schema
9299d5263 REST API: test /junit
1d5ea3cf7 Require python3-junitxml >= 1.8 for REST API calls
dc5a6fe48 templates: handle multinode vs singlenode
5f01a79c6 CI: run pylint to find common errors
00db03351 Fix some crashes found by pylint3
5a92736ad CI: test templates against the schema
3b5c9d5ef Add extra U-Boot bootloader error
2929ba8f3 Raise the codeclimate complexity threshold
d84756688 apache2: send the right cache-control headers when available
3cc42420f rzn1: do not set uboot_needs_interrupt explicitely
656666cb7 maintenance: fix crash after new state machine
00cea9df4 Device/Worker: remove deprecated method
576146730 Fix missing imports
32960bdd5 Handle duplicate listings in requires
19fdfd969 Move get_domain() to dbutils
01d354d1b img2simg and simg2img now available in a new package
bb62625f3 Fixup changes in the bandit overrides
ae25f1fe1 Update copyright for recent changes
4c33f7a54 Wait for the prompt when using shell on DUT
5662f734a code_quality: install radeo in the setup step
19bda4ac5 Support using radon to output code-climate data
489bc8416 schema: check namespace syntax
6406e1368 Improve inline test schema
0ae489101 Schema: check that jobs with secrets are not public
36d7f4ebb Check that timeouts are shorter than job timeout
fd225060e Improve schema validator
3a2fc459b Prevent action.timeout exceeding job.timeout
e6bfc3f43 Allow check --deploy inside Docker
69053fb82 Ignore DeprecatedWarnings on buster in CI
01fa79469 ci-run: use pytest-3 by default
075bf1f28 Fix crash when pre-test install failed
0c1372f9d Fix crash with older python3-tap versions
02097dd41 Fixup 4ebbc234 - put new test in correct location
feff6c914 CI do not run analyze for tags
9d4a91251 Fix documentation
2354f3899 doc: mention the minimal boot method
354f33ac2 imx8m device type restructuration.
4e1090982 base.jinja2: Allow interrupt-newline to be disabled in u-boot
958068fc6 Fix more sample job syntax
27fdc5107 device-types: add hsdk
dd4663b0a multinode: use character_delay
4ebbc234b power: use run_cmd instead of run_command run_cmd: accept
command as a string
9d9650939 Add missing pytest dependency for autopkgtest
d5bf2c248 Fix typo in f6bb9de2
b3eefdedb Fix missing change which breaks Debian CI testing
> Steve, for the LAVA team
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
Changes to LAVA UI configuration
================================
https://master.lavasoftware.org/static/docs/v2/advanced-installation.html#c…
Initial settings for a LAVA instance change over time as the
requirements change and dependencies improve internal security
implementations. Most instances will need some adjustment to the
apache configuration for the main LAVA UI in
/etc/apache2/sites-available/lava-server.conf and the LAVA packages do
not attempt to update this file automatically once admins have made
changes. Admins should therefore subscribe to the lava-announce
mailing list and make changes using separate configuration management.
apache2
=======
Browser caching can be improved by enabling mod_header in Apache to
allow LAVA to send appropriate cache control headers as well as mod
proxy and mod proxy_http:
$ sudo a2enmod header
$ sudo a2enmod expires
$ sudo service apache2 restart
LAVA server settings changes
============================
Django requires the allowed hosts to be explicitly set in the LAVA
settings, as a list of hostnames or IP addresses which LAVA is
allowed/expected to use. If this is wrongly configured, the UI will
raise a HTTP 500 error and you will get information in the output of:
lava-server manage check --deploy
or in
/var/log/lava-server/django.log
For example, /etc/lava-server/settings.conf for
https://lava.codehelp.co.uk/ contains:
"ALLOWED_HOSTS": ["lava.codehelp.co.uk"],
See also
https://docs.djangoproject.com/en/1.11/ref/settings/#allowed-hosts
It is also important to enable ProxyPreserveHost in
/etc/apache2/sites-available/lava-server.conf
ProxyPreserveHost On
In some situations, you may also need to set USE_X_FORWARDED_HOST to
False in /etc/lava-server/settings.conf
See also
https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-USE_X_FORW…https://git.lavasoftware.org/lava/lava/merge_requests/400
python3-junit.xml
=================
python3-junit.xml >= 1.8 is required for REST API calls when running A
suitable package has now been backported to provide this functionality
for Stretch.
https://packages.debian.org/stretch-backports/python3-junit.xml
Note: there is a very similarly named package which will **not** work
(python3-junitxml). Look for the full stop in the package name of the
correct package: python3-junit.xml
When installing, remember to allow stretch-backports:
$ sudo apt -t stretch-backports install python3-junit.xml
https://git.lavasoftware.org/lava/lava/merge_requests/357
Bump version of django-tables2
==============================
With 2019.01 and later, django-tables2 version 1.14 does not pick up
the customisation of the tables, so orderable icons and search forms
and pagination are missing.
It was not practical to backport django-tables2 to stretch-backports
due to complexities in the build dependencies of the package. So this
update has been made available via apt.lavasoftware.org
Stretch users will find a new version of python3-django-tables2 will be
installed alongside 2019.02.
https://git.lavasoftware.org/lava/lava/merge_requests/390
Prevent action.timeout exceeding job.timeout
============================================
This change affects the test jobs you submit to LAVA. The test job will
warn if any one action timeout exceeds the overall job timeout. LAVA is
adopting a stricter submission schema and this is the first common issue.
If you have a repository containing a number of test jobs, you can
check all of the jobs in one go by passing the path to a script in the
lava-common package.
$ sudo apt install lava-common
$ /usr/share/lava-common/lava-schema.py jobs ./*.yaml
You may want to edit the timeouts when resubmitting older test jobs.
When running /usr/share/lava-common/lava-schema.py, there may be a
range of other errors reported too. In future releases, LAVA will no
longer silently ignore unknown or obsolete YAML blocks. If there is
an error in the submission, the expanded schema will report it.
It is worthwhile running /usr/share/lava-common/lava-schema.py
against the output of all your test job submission templates. If you
use templating and CI, then you could add the check to the CI of each
change to the templating. Just ensure that the lava-common package is
upgraded to the same version as the instance to which the test jobs
would be submitted.
In the next release, this expanded schema check will be included into
lavacli, lava-server manage and as an XMLRPC call which can be used
before the submission. For now, only the action.timeout exceeding
job.timeout warning is being enabled in 2019.02.
https://git.lavasoftware.org/lava/lava/merge_requests/413
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Hello,
following the release of LAVA 2019.01, we released lavacli v0.9.4
This release brings two new commands:
* "lavacli utils templates render" to render jinja2 templates
This will help users/admins to debug jinja2 templates issues
* "lavacli jobs queue" to show the current queue for the requested
device-types
This is only available since LAVA 2019.01
As usual, lavacli could be installed from:
* pypi (https://pypi.org/project/lavacli/)
* debian (https://tracker.debian.org/pkg/lavacli)
Cheers
--
Rémi Duraffort
LAVA Team, Linaro
The 2019.01 tag has been pushed to master on git.lavasoftware.org.
Packages have been built in GitLab CI and are available at
apt.lavasoftware.org/release. Docker images for amd64 and arm64 have
been built in GitLab CI and are available from hub.lavasoftware.org
and https://hub.docker.com/u/lavasoftware
New bootloader testing and recovery support
==================================
The recovery mode support already implemented for the hikey 6220 has
been used to provide recovery mode operations for the X15 by Milosz
Wasilewski to support bootloader testing with automated recovery.
Dropped default patterns and fixup dicts
===============================
Omits the V1 compatibility constants for default pattern and fixup
dict. Patterns and fix up dictionaries are now only available in Lava
Test Definition 1.0 test shells if the test writer explicitly adds the
parse: block to the test definition. The documentation has been
updated.
Ensure lxc-templates is installed
=========================
To use lxc, the recommended lxc-templates package must be installed to
provide the template files. When installing lava-dispatcher in Docker,
it is now useful to specify the lava-lxc-mocker package as the updated
LXC packages will fail to install inside Docker.
Final black changes
================
All LAVA Software Python code in lava.git has now been formatted using
black and the GitLab CI ensures that this formatting is retained. If
you are developing code to be merged into lava.git, ensure that you
have black installed and run it as the final step before contributing
your changes upstream or the CI will fail.
REST API using django-restframework
=============================
Added REST API for LAVA, including ability to export results in JUnit and TAP13.
Non-POSIX test action
=================
Add a new test method for non-posix shells. The test writter is able
to launch any command on the DUT and is responsible for giving the
right set of patterns that match failure and success.
Add a new boot method called "bootloader"
=================================
This method allows to boot the DUT, interrupt the bootloader and jump
into the bootloader shell.
Changes in this release
==================
ec7875b05 Enhance the Docker admin documentation
ffe2c0751 Build architecture aware docker images
e0c651aae Update docs for development changes
c0eeb4b28 schema: allow for namespaces with interactive tests
aa94f3ac4 Allow to set uboot_needs_interrupt in the device dict
79fb10a12 Fix debian installer deploy method
8b6b53be0 Allow to set fastboot deploy uboot commands
3975eb4f4 doc: add documentation about x15-bl device-type
b87dc6816 scheduler: add x15-bl device type
5d8227c91 scheduler: add recovery support for base-uboot.jinja2
4ddd44ad6 Tweak the development process doc
2bbf5c6e5 Update git repository links
1a9f51494 Drop bashism in vland helper scripts
7ebb3feab Retrieve the vland version in the protocol
f2f933399 Improve docs on health check setup actions
1e596b6ff Improve server|logs|publisher command line parser
68dd8ff79 device-types: allow to set boot_character_delay in device dict
92fa46213 scheduler: randomise the device list
c0c3eb0ef lava-modules.conf should be in /etc/modprobe.d/
2412366c9 Fix sample jobs timeouts
68edafac9 CI: install minicom for mps2plus tests
f3cbdac58 Add lava-server manage command for site
cc16e4b38 mps2: fix validation and documentation
32d18fa3b device-types: add rzn1 template
7a992201c device-types: qemu: Add support for MIPS/PPC/PPC64
e114b354e qemu: Remove root_partition from sample jobs
407d857f9 Fix sample job syntax
049eb5afc sample jobs: move kernel type to the deploy action
25f37dc62 vemsd: recovery_image is mandatory
596aa3b29 Enforce realpath for which check
68b8e54b1 doc: add information about SQUAD to custom-results-handling
1282c4a25 Remove leftover from py2 to py3 conversion
dd76f0797 Add voluptuous to lava-common dependencies
8041e1012 Rework interactive test
f6bb9de2f Improve job page rendering with large jobs
e9fa46977 Improve schema validator and move to lava_common
f116ef3af Add check-devices.py to lava-dev
02e4d9e88 Fix sample jobs syntax
b4d84f82f Drop default patterns and fixup dicts
9fbcca0e4 Separate device and device-type as distinct types
fb4d5785e Action: name is a class variable
e990310e0 Remove deprecated functions since django 1.9
eb25d433e Reorder middlewares according to django default config
ebf17cbe6 Remove deprecated module
8a317b0b2 Record JobError in validate()
3bc657e7b Fix sample jobs syntax
b7eb162a1 Ensure lxc-templates is installed
a3524ce9a Expand minimal configuration for connections
ef2fa8594 Results table: decrease the number of sql queries
4df8e8464 Handle downloads using "Content-Encoding: gzip"
f37c03159 Move sample job to the right directory
37a2fe7fa Remove "connection" from job definition
d70e2623c Add checks for the connection type
5260ae1b9 doc: fix broken links
33918bcb4 Update ./ci-run for lava_common/tests change
5af8543b1 Simplify docker boot command line build
f6be3692c Update emphasis lines of literalinclude blocks
da1d472b5 Fix problems with the purge maintainer script
28afc08eb Remove add-header mentions
832fb942b Use render() shortcut
7ef4ac466 Fix bandit warnings after black formatting
d483d94a5 Make flasher deploy retriable
7f3e23ee1 Do not add yaml_line to the job definition
c76620a55 sample jobs: remove mkimage_arch
5be4be588 Move test_info to the job level
9eb721166 'nfs_url' option does not exist anymore
7c347e04e Fix the increased SAST count from formatting changes
017285ce5 Remove outdated README file
b471ee62f Unify test directory name
46f298251 fix prospector warnings
f7973476b Final black changes for lava_dispatcher
6cae9e765 CI: fix black check
816a47b9b Fix typo in check-devices error message
bc844be5c Apply black to lava_dispatcher
40e6a25f8 Apply black to lava/
93a70fcfc Update restore instructions
4ef3b776a Test repeat fix
01432ba06 Convert test_repeat to pytest
f9e782cc8 Fix repeat logic
72d563661 Update advice on restoring backups
bee7cc6da Update documentation example to use correct syntax
71276203a Fix inline example test job indent error
3d8cd9e88 Advise on upgrading python dependencies
e22dbf0c3 Fix states in maintenance.py
2cf6b51ab interactive: allow to only wait, not sending any command
bfb7cb47c Fix test stages computation when mixing test types
8bdc42ef3 Make StdoutTestCase.pipeline_reference a class method
989b21688 Search the queue by requested_device_type
32a4c821b notification: protect against potential crashes
b7254aec6 XMLRPC-API: decrease the number of sql requests
e65cfdc09 device-types: qemu: Add support for SPARC/SPARC64/MIPS64
ade4b7e0c Apply black to lava_scheduler_app
95aa92f9f Apply black to doc/
54c18a449 Apply black to share/, setup.py and version.py
c74c15d06 Simplify black listing
fd04401a9 Apply black to lava_results_app
8f100d82b Apply black to lava_server
7aa96e077 Apply black to lava_common
5e6e902fa Update documentation for new test action support
bfa253f9b Document the docker deploy
84d202b28 Device table: tag with <i> when worker is undefined.
009e21b53 doc: explain how to serve LAVA under /lava
d86d457f7 device-types: add meson-gxl-s805x-p241
8fb830b3d REST API: allow to export results in JUnit and TAP13
b50800bfc Add a new test method for non-posix shells
ce2627669 Let udev_trigger use the network from udev
172c6f22c Add a new boot method called "bootloader"
4e7248342 Add a qemu-aarch64 device-type
c715f5252 lava_results_app: fix exception when no action_metadata
229242900 Fix deprecation warnings
6cc1c7966 Set ProxyPreserveHost on.
b801a30f4 Create an out-of-tree symlink for djangorestframework
e6678963c Fix rest_framework static symlink
cac2cbb7f Allow dependencies of reprepro-master on schedules
438e23cab Enable reprepro-master
9788877eb checks: log an error when settings.conf is invalid
ad6a2c61d CI: only run deploy jobs for scheduled jobs
f4530df6b TC2 device jinja changes
349ee8175 Remove unused command migrate-lava
6690af7cf CI: skip some tests when lxc-start is not installed
cd7d9e21b Fix crash if dpkg-query does not know about a file
b9cb118ef Add docs on vemsd and mps deployments
d0fd22894 Update the docker-admin page for new links
9bac98720 REST API reduce the number of SQL requests
4bfad2969 Copy lava-lxc-mocker in the publish stage
dacd2a41c Fix lava_rest_app support in ci-run
421e5283d CI: use new sast syntax
0d75252a4 Apply black to lava_server files
b28764d28 Fix unit test exception handling
8e38d322e Add REST API for LAVA
5a55d6646 Update the release repository only on a tag
b55b1c1ba Report the version of tools
3e8f0eb5e Replace with a more pythonic way.
cef780613 Fix doc typo causing build error.
62150f062 Apply black to all migrations
7d040ca09 Optimise to reduce the compare cost.
688df87de Fix: MPS Serial Buffer
8a3d6a587 monitor: fix accepts logic
ade6320a2 Replace the expired job link with a valid one.
bfa558f30 CI build aarch64 docker image using debian 10
ef1c54427 Make navbar and userlinks seperate templates
9270725c9 Correct the path of file "commands.py"
4e7d05696 Tidy up ci-run
73d3a74a4 Ensure sample_jobs validate against the schema
0be0739ab Extend timeouts of example test jobs
b024c2c69 Skip OverlayAction if the overlay is not needed
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Hi,
In founding the LAVA Software Community Project, the team planned to
open up LAVA development more. As already announced by Neil in
September, we have already moved our infrastructure to a GitLab
instance and LAVA developers and users can collaborate there. [1]
The next step in our process is to also open our regular development
design meetings to interested developers. The LAVA design meeting is
where the team gets together to work out deep technical issues, and to
agree on future development goals and ideas. We run these as a weekly
video conference using Google Hangouts Meet [2], We now wish to
welcome other interested developers to join us there too, to help us
develop LAVA.
Summaries of the meetings will be posted regularly to the lava-devel
mailing list [3], and we encourage interested people to subscribe and
discuss LAVA development there.
[1] https://git.lavasoftware.org/
[2] https://meet.google.com/qre-rgen-zwc
[3] https://lists.lavasoftware.org/mailman/listinfo/lava-devel
Cheers,
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
We've done a little bit of advance planning and there are now three
milestones which developers will be using to schedule upcoming
releases.
https://git.lavasoftware.org/groups/lava/-/milestones
Issues and merge requests have been assigned to the relevant milestone.
All dates are approximate.
We will also be announcing (here) when the next release would include
database migrations so that admins have more notice of scheduled
downtime. When a milestone includes database migrations, other changes
which also include a database migration will be moved to that
milestone so that admins can minimise total downtime.
The next release is expected to include the changes from the 2018.12 milestone.
The 2019.02 milestone already includes database migrations.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Changes in the master branch (and daily build packages) now check the
ALLOWED_HOSTS setting for each master in your instance(s) in
/etc/lava-server/settings.conf
Please check your /etc/lava-server/settings.conf support for
ALLOWED_HOSTS in Django as this will be required to upgrade to the
next release of LAVA Software.
Remember to always restart lava-server-gunicorn after any change to
/etc/lava-server/settings.conf
See also https://master.lavasoftware.org/static/docs/v2/pipeline-debug.html#check-la…
and https://master.lavasoftware.org/static/docs/v2/pipeline-debug.html#displayi…
(new help sections on using and checking LAVA setttings.
Django docs: https://docs.djangoproject.com/en/1.11/ref/settings/#allowed-hosts
"""
This is a security measure to prevent HTTP Host header attacks, which
are possible even under many seemingly-safe web server configurations.
...
Django also allows the fully qualified domain name (FQDN) of any
entries. Some browsers include a trailing dot in the Host header which
Django strips when performing host validation.
...
When DEBUG is True and ALLOWED_HOSTS is empty, the host is validated
against ['localhost', '127.0.0.1', '[::1]'].
"""
If this setting is wrong, updated LAVA packages will fail to serve
HTTP and the /var/log/lava-server/django.log file will record messages
like:
ERROR 2018-11-26 18:12:52,091 exception Invalid HTTP_HOST header:
'lava.codehelp.co.uk'. You may need to add
'lava.codehelp.co.uk' to ALLOWED_HOSTS.
(In this case, that was exactly the correct action)
"ALLOWED_HOSTS": ["lava.codehelp.co.uk"], to
/etc/lava-server/settings.conf and restarting lava-server-gunicorn
fixed lava.codehelp.co.uk
See also https://git.lavasoftware.org/lava/lava/issues/173
When checking this change, it is useful to also set DEBUG to true as
Django will then show you all of the headers and environment
variables. Do remember to turn DEBUG back to false because these
variables are a security risk in themselves.
Another setting which might be useful, depending on your configuration:
"USE_X_FORWARDED_HOST": true,
It is safe to make this change in advance of the upgrade of LAVA but
do test on an instance which is as close as possible to the network
configuration of your production instance(s).
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Main changes in 2018.11
===================
0eb0d3ed7 Set requirements for requests to avoid CVE - as announced
previously python3-requests needs to be updated to protect against a
CVE in that package.
If installing 2018.11 on a Stretch system, ensure you have updated
python3-requests to the version from stretch-backports.
f7bbf6a8 Visibility of worker status effects on device views-
(improved in subsequent commits in this release). Indicate the status
of the worker when displaying information about the device so that it
is clear why the device is still Idle if there is a problem with the
worker.
ac0097c4 Fix 500 when rendering device dict page - if the device
dictionary is invalid.
0f7a7ec8 Prevent index out of range error and 97132e91 Extend 0f7a7ec8
to other command_output comparisons and 06203dfe Add a run_cmd helper
to Action class - the Action run_command support had become complex
and problematic. A new parsed_command has been added and a simpler
run_cmd. In time, existing use of run_command will be phased out in
preference for one of the two new commands. This should make it easier
to spot why certain dispatcher commands failed. This was triggered by
intermittent problems running simg2img and img2simg for AOSP.
4736b01d How to test and recover bootloaders in LAVA -
https://master.lavasoftware.org/static/docs/v2/bootloaders.html
ff37c802 Add docs on criteria for LAVA on other distributions -
https://master.lavasoftware.org/static/docs/v2/debian.html
Issues closed in 2018.11
===================
https://git.lavasoftware.org/lava/lava/issues?scope=all&utf8=%E2%9C%93&stat…
Full changelog
===========
ff37c802c Add docs on criteria for LAVA on other distributions
4736b01dc How to test and recover bootloaders in LAVA
2cae2b413 Fix lava-master crash when device yaml is invalid
570fb324d Allow sdist to be passed to setup.py
51b3fe6f6 Fix missing part of aarch64 stretch deployment
f9a3671c1 docker: check method
563fac8da Enable aarch64/pkg-debian-9 in the build tasks
7e71a56ea flasher: fix substitution when cmd contain whitespaces
5bb71d4a1 Package the requires.py script
d77c8d28f Add CI package script for stretch on aarch64
24eface95 docker: use the new Action.run_cmd helper
ddd986e8e Extend the base poweroff timeout.
9d49da1d4 Remove build from .gitignore
24022feb4 Fix missing return value in run step
b5c51dfa8 Force Juno to use NFS vers=3 and extend power off timeout
7ddae776c run_cmd: make spaces explicit
87f1e01e1 Capture the simg2img and img2simg output and log it
f40f0f2c5 Ensure apt is updated before trying to install
06203dfe2 Add a run_cmd helper to Action class
97132e916 Extend 0f7a7ec8 to other command_output comparisons
f0ebf8025 Do not send "\n" twice
ac0097c42 Fix 500 when rendering device dict page
57d80c2e2 Add deployment builds to snapshot directories.
9a1a6bfb1 Apply black to more files in lava_scheduler_app
c6bfbd5f8 Apply black to lava_dispatcher unit tests
0b615023d version: allow user to specify the branch to use
f7bbf6a8b Visibility of worker status effects on device views
f2d9b658e Apply black to lava_scheduler_app/api and tests.
7980d84c3 docker tag: move branch name to suffix, not prefix
0f7a7ec8f Prevent index out of range error
984164f68 Fix omission in package deployment script
d4b942b71 CI use pytest-3 instead of py.test-3
d77c7080c Fix regression in fb4a88388
504115553 Update docs on local dev builds
fb4a88388 Standardise on dots in the version string
4a1910049 Use the rollback support in requires.py
cb86cc09b Improve error message after 4c71c2ebd1
15d7a905f Include package artifacts into repositories
4c71c2ebd Provide more information in bootloader errors
abff27c8b CI: skip deploy when lavafed is running latest version
f691bc059 CI fix typo for "only.refs"
024b27694 Fix errors in docker-admin page
a937a29e4 CI: add missing requirement to pytest
08ea617a4 vland: fix crash when finalizing
987280afd Fix errors in docker-admin page
89f96b1d9 CI fix deployment script
c5de132b1 Deploy lavafed-master when scheduled
08eab0bcb Fix issues with unit test calculations
7e8a6f444 CI use the new arch specific images
7d2956e43 Sort the --names output of requires.py
0eb0d3ed7 Set requirements for requests to avoid CVE
8cd80dcb2 Build packages and docker images for AArch64
1ab6aaa9c Allow unit tests to run without /sys/class/misc/kvm
83649d77b Port 0e598e63 to the xmlrcp api
6335f73d8 Prevent crash if environment requested for non-POSIX
14b347c51 lava_results_app: convert Decimal objects to string
storing as YAML
26bf0af63 lava_results_app: add test case for YAML Decimal
object conversion
1744ea74c Change ownership of health checks and device-types
32a2a6051 Ignore gitlab-ci files when creating a release tarball
bd224fcd1 Update publish for changes in pkg/docker
2e5e60c9f Drop obsolete gitreview file
2018.11-1 has been uploaded to Debian unstable. This version should
migrate into buster, at which point an upload to stretch-backports
will be made too.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
To avoid CVE-2018-18074, LAVA has bumped the dependency on
python3-requests to 2.20.0
https://git.lavasoftware.org/lava/lava/commit/0eb0d3ed7fa122b08c7ada7d27cfa…
If you are running LAVA on Stretch, you should take advantage of the
security fix by installing python3-requests from stretch-backports.
If you are tracking the daily packages for a staging instance, those
packages now depend on 2.20.0. Installing those packages on Stretch
will require installing python3-requests from stretch-backports. This
may cause automatic upgrades to be unable to upgrade the LAVA
packages.
$ sudo apt -t stretch-backports install python3-requests
If you are running on buster, the new version is already available in
buster and will be upgraded automatically.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
The 2018.10 release has been uploaded to Debian:
https://tracker.debian.org/news/998932/accepted-lava-201810-1-source-all-am…
In due course, that is expected to migrate into buster. 2018.10 might
be the last release to be uploaded to stretch-backports in the Debian
archive because the Debian release process for Buster will be starting
in January.
We have been making a lot of changes to extend and enhance the CI
within the LAVA software upstream processes as part of the move to the
Community Project. This now allows us to support 2018.10 and
subsequent releases to make it easier for labs who don't want to
migrate immediately to the new releases.
2018.10 is also available from the LAVA repositories.
New LAVA repositories
=================
https://master.lavasoftware.org/static/docs/v2/installing_on_debian.html#la…
deb https://apt.lavasoftware.org/release stretch-backports main
deb https://apt.lavasoftware.org/release buster main
The production-repo within Linaro has also been updated at
images.validation.linaro.org - this is the same location as previous
releases.
Snapshots
========
>From 2018.10 onwards, LAVA software will be retaining snapshots of
daily builds of LAVA at https://apt.lavasoftware.org/snapshot/
organised by suite, year, month and date.
Official Docker images
=================
For the first time, LAVA is also releasing official Docker images for
amd64. These are available from lavasoftware.org and from the
lavasoftware organisation on hub.docker.comhttps://master.lavasoftware.org/static/docs/v2/docker-admin.html#administer…
lavasoftware
=========
hub.lavasoftware.org/lava/lava/lava-server:2018.10 2c9b2e36f 155.64 MiB
hub.lavasoftware.org/lava/lava/lava-dispatcher:2018.10 fab86e936 236.85 MiB
hub.docker.com
============
docker pull lavasoftware/lava-dispatcher:2018.10
https://hub.docker.com/r/lavasoftware/lava-dispatcher/tags/
docker pull lavasoftware/lava-server:2018.10
https://hub.docker.com/r/lavasoftware/lava-server/tags/
Changes in this release
==================
I've skipped changes to do with the CI process on lavasoftware.org.
24f6bc296 Support gdb/openocd for disco_l475_iot1
1d1cf4380 Fix resource cleanup when using prefix
7f9796ee1 Append the defined prefix to the udev rule files
1e60552f1 Allow a user-specified kernel failure message
8445444bb device-types: minnowboard: add initrd command to nfs_commands
7c006f458 Ensure build dir exists
0e598e63f Update package version support
0c75c37b9 Distinguish between builds on different suites
135269b50 XMLRPC: use django permissions to manage accesses
dcf5e1358 Fix inconsistent header in docker admin
21f2ddf12 Do not depend on network access for test suites
e74e35b93 docs: Improve wording in various places for new users
579b86bb3 Add docs for IoT boot methods and monitor test action
fab08cc2e docker: allow to use local images
0e0f4d352 Comment out people.l.o and snapshots.l.o urls
f429369bd Support for skipping test shell timeout
32e02b925 Add device-type for qcom QDF2400
368f13217 Help for admins using docker.
829658237 Drop sections on V1 removal
05fcc7f9a docker: allow to use local images
d24c2e756 Fix build errors in docs
d4cfad706 Import the packaging support into upstream
caf3df11e Fix pyocd requirement listing
ae66959a1 Callback add a default timeout to 5 seconds
8e556cbab Compute coverage only on master or for tags
8d928d483 Update documentation for changes in share/requires.py
536b3bab9 Advise use of allow_none in XMLRPC clients
2dc976d28 Update Debian installation instructions for new repo
ddc980704 Allow switching to a binary=any build
59ba58b9c download: Raise an Infrastructure Error on timeout
2e3338ebc Limit excessive exception messages
1f10f2996 Fix undefined variables found by prospector
93529bc64 LAVA-1231 Support multiple boots in QEMU
23f25ee7a Ensure Device.is_valid is checked in submissions
6ca13ea7a Update jobs.list for two bugs found in Linaro
5f36ec668 XMLRPC: allow_none should always be True
f077b620d base-uboot: nbd: handle uboot_set_mac
1d2f38615 Fix arch build instructions in build script.
a6e61d0f9 Update pipeline-admin section on device dicts
5d045edec Isolate dependencies for unit tests
97e55bcf4 Advise against using patterns if POSIX is available
cbdc3ca47 Migrate support links to lists.lavasoftware.org
b34022569 Do not dump python object in description.yaml
42bfd72d3 Update the shebang to python3
ede13f753 Add index entry for persistence
b037a8660 Callbacks replace urllib.request with requests
a5bfdd71e Disable sorting Jobs tables by state
59add5e70 Drop release-queue.py
ecfc5c405 Set InfrastructureError for fastboot-flash-action
8d5679606 Fix imports of JobError from the wrong file
38dc6cace Ensure base-uboot quotes fastboot and adb serial
22f64cb62 Use raw string for regexp
dd5532ee3 Apply black formatting to linaro_django_xmlrpc
819986bd9 Apply black to remaining files in share
9556abc5c Add NBD support for iPXE based DUTs
563b88a00 Keep tags with uppercase letters
74b1d8ca2 Make version string lexicographically sortable
485bca7a6 Improve 359f8278 to support all -misc variants
13fe9a5ec Fix crash when calling lava-server without args
c96946ee9 Fix BootloaderSecondaryMedia.validate() with arbitrary boot commands
9debcf425 Fix warnings during package build
6a9ad82b8 add pytest support to lava-dev
1e0de18dc Fix missing change in the doc after 9595d66e
ee97069da Update Authentication Token page to use lavacli
b52d52b5e Add lava-server manage device-tags
9ae06152c Initial blackening support.
8051f1ddf Silence SAST warnings about mark_safe for internal data.
146e143d4 Apply yaml.safe_load to unit tests
01a3b0c0b Silence SAST noise from unit test
9ac2edac8 Silence security noise from unit test use of assert
c4ad0130a Explicitly set autoescape to False for YAML.
3c359acf3 Point README at new site
b9169d75e Fix typo in the variable names for since
53e21ef20 Update jobs.py
386b9efb7 Add more output to scheduler.jobs.list
a7b7939dd Updates for the contribution guide
fdd55ba63 Improve indexing and linking for device dicts
a956159da Support building for specific suites
9a5aa7e9b Minor doc updates
33f3abf62 Update copyright of docs.
8c6761baa Add gitlab ci configuration
eefc21edc Fix build errors in manpages
5b9ef16d7 Port zmq-client example script to Python3
8cd8cee2a Fix copy/paste error in 65ba876cb5
ce3f6120d Use generator expressions when available
e6f4ef1de Use isinstance() instead of type()
4440cd746 doc: fix most broken links
60928847d Support LXC with IoT
0cc3653f9 Allow LXC for FRDM-K64F IoT device
3bb0819fb Allow the suite to be specified for requirements
dff387150 Fix call to requires.py
7ad9790a8 Move requirements away from pypi tooling
75c928fe1 Remove python2 leftover
359f82786 Add support for qemu-system-misc
65ba876cb Let LXC protocol calls use lists as in base
79312ea8a Upgrade doc examples to Stretch
6a2638fb6 Handle cancelled test jobs in get_recent_jobs
c56ab4c66 Fix logic in pending_jobs_by_device_type
af211db77 LAVA-1398 fix group handling for logrotate support.
cdf4aaec3 Support branch for requires.py
6ff5b43b4 Clarify some of the lavacli doc items
f4948855e Check for download files ending with /
0b25c71bc Port URLs to lavasoftware.org
9871e777c Fix link to api/help location.
571ff39e9 Support ZMQ dependency on lava-common
a7acfc0ae Document architecture restrictions.
393e52fda Fix vland interface code so it works with python3 too
6fc476481 Certificate directory needs to be available in common
e159a369b sample_jobs: fix bbb-initrd-nbd NBD usage
98dfbb377 Add unit test for minnowboard-turbot-E3826 GRUB template
7c01f67a7 device-types: add x86 Minnowboard Max and Turbot using GRUB
2d373d36a documentation: add note about no kernel type attribute for Depthcharge
cc432d33b device-types: define block commands in base-grub.jinja2
5e101d817 run_command: print the output when failing
f019af70d device-types: sunxi-common: support booti
8961645f0 LAVA-1014 add a prefix to tmp directories
b022cde9d Fix indent error
b885dd112 Improve documentation about dispatcher configuration
d9196acd2 LAVA-1397 - fix crash in callback data
55c52bb6d LAVA-1156 When running under pytest, fake requests
c6d61c0e4 Clarify about Debian point releases of Stretch
b051ff1b5 Add missing show_fail after e3cdf814
c4f578e46 Use syslog for lava_lxc_device_add
5f7a22074 Portablility support without using 'os'
e3cdf8140 LAVA-1384 - Add cancel button to definition pages
5693b68b1 Fix sphinx syntax in git describe example
f2f1af5d8 Update filtering of TestJob fields in export
927a28820 Fix error in imx8m change
d484031f7 Use git describe to get the version
b76fe5a1d LAVA-1295 iMX8M evk device integration.
5f3d1769e Allow user to specify the build directory
09d6a90dd LAVA-1380 Drop 'os' from functional test jobs
3af493d42 Update requirement for django-tables
8df4482f0 LAVA-1383 - allow overrides of posix constants
ba035ca72 docker: allow to bind devices
2c507744f Allow for '@' in device name
407db2b45 Revert "Raise a JobError when a cmd output is empty"
f2d4490fd admin: improve listing and update/add page
953df9325 Raise a JobError when a cmd output is empty
baf61b465 Check downloaded file size against expected
ca74a1939 Use OSError when applicable
fc083df5c Use contextlib.suppress when applicable
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Another step in the LAVA Software Community Project - the lava-users
and lava-announce mailing lists have moved from lists.linaro.org to
lists.lavasoftware.org so that these can be more easily managed within
the LAVA Software Community, outside Linaro.
The configuration is the same but subscribers may need to change their
local filtering rules.
In addition, a new mailing list has been created,
lava-devel(a)lists.lavasoftware.org which is intended for discussions on
design and development issues within LAVA. If you are working on a
merge request for LAVA, this mailing list can be used for a wider
discussion of any issues which don't fit neatly into comments on the
merge request. If you are working on your own device but have not
prepared or created a merge request, please use
lava-users(a)lists.lavasoftware.org as before.
Message headers like List-Id, List-Unsubscribe, List-Archive,
List-Post, List-Help and List-Subscribe simply switch domain from
lists.linaro.org to lists.lavasoftware.org
>From this point onwards, please only send list emails to lists.lavasoftware.orghttps://lists.lavasoftware.org/pipermail/lava-announce/https://lists.lavasoftware.org/pipermail/lava-devel/https://lists.lavasoftware.org/pipermail/lava-users/
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
(There will be a few more messages than usual on announce this month.
Apologies, but I think it's easier to avoid putting everything into one
enormous message.)
As part of the LAVA Software Community Project, there is a new IRC channel
on Freenode aimed at any discussions around LAVA which do not relate to the
use of LAVA within Linaro. The #linaro-lava channel remains open and will
remain focused on discussions of problems and issues relating to LAVA
instances operated by Linaro and other Linaro-centric topics.
Community members are invited to use the new channel to discuss anyting
related to LAVA but not involving Linaro. Questions about your own
instances, problems with new devices and general LAVA development
questions. The new channel should make it is easier to respond to questions
and discuss issues. The existing IRC guidelines apply, as does the LAVA
Software Community Project Code of Conduct.
In addition, when asking questions on #lavasoftware, please include
information on your LAVA setup - include information on the version of LAVA
you are running and, if the instance is publicly-accessible, include the
URL.
As always, complex questions about device integrations will typically
require information like the device-type template, device dictionary and
test job submission definition - you are much better to ask those questions
by subscribing to and posting to the lava-users mailing list.
https://master.lavasoftware.org/static/docs/v2/support.html#irchttps://master.lavasoftware.org/static/docs/v2/code-of-conduct.html#code-of…
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
As part of the move to the LAVA Software Community Project, we will be
moving the hosting of the lava-users and lava-announce mailing lists to the
new server in two weeks - the 16th October.
This will involve changing the URLs of the lists to:
lava-users(a)lists.lavasoftware.org
lava-announce(a)lists.lavasoftware.org
A new list will also appear: lava-devel(a)lists.linaro.org which will support
development of LAVA within the Community Project. Development discussions
relating specifically to Linaro LAVA infrastructure and devices can remain
on linaro-dev(a)lists.linaro.org
If, for any reason, you do not wish to be on the new list, feel free to
unsubscribe between now and the 16th October 2018. All subscribers and
configuration will be migrated to the new location using the configuration
of the lists at lists.linaro.org on that date.
If you decide to stay on the list(s), any filters will need to be updated
on or after the 16th October.
On the day of the migration, there may be a short time when it will not be
possible to post to the current lists. There will be an email from
lava-announce(a)lists.lavasoftware.org when the migration is complete.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Opening up LAVA development
============================
The LAVA software project has been developed in the open from its very
beginning: Free Software licensing, public discussion spread across IRC and
email, and open access to the software development repositories. The
roadmap and planning behind LAVA development has also become increasingly
open over time, with the use of publicly archived mailing lists and
anonymous access to LAVA issue tracking.
A community of users and contributors has steadily grown up around LAVA.
With the completion of the migration to the V2 codebase, the Linaro LAVA
software team is now moving to a more open development model. We invite new
and existing contributors to be directly involved in planning future
development of the LAVA software project. To this end, Linaro has created
the new LAVA Software Community Project (LSCP) to host and foster LAVA
development with more input and control available to the community. This
removes the need for contributors to register with Linaro, and provides
much more flexibility for LAVA Software development.
The existing Linaro lab in Harston, UK, will remain entirely within Linaro,
providing test infrastructure for Linaro and its members. The sole focus of
the new community project will be LAVA software itself. This will allow the
project to focus on priorities beyond just what Linaro needs, for example
easier integration of devices and new/different use cases. The Linaro
engineers working directly on LAVA software have migrated into a
newly-formed Linaro LAVA Software Team and will act as the founding
maintainers and contributors for the upstream LAVA Software Community
Project. The Linaro LAVA Software Team will still retain access to the
Linaro lab staging instance (https://staging.validation.linaro.org/) for
functional testing using devices available within the Linaro lab.
A new home - https://www.lavasoftware.org
The LAVA Software Community Project (LSCP) has a new home at
https://www.lavasoftware.org.
We have set up initial services there including:
https://www.lavasoftware.org/ - the main website
https://git.lavasoftware.org/ - a GitLab instance to which we have moved
upstream LAVA development
https://master.lavasoftware.org/ - a LAVA master service, available for
development use
Existing LAVA contributors will need to reconfigure their git checkouts
accordingly. The new GitLab instance does not share credentials with the
existing git.linaro.org service; new accounts will be needed - see the
introductory contribution guide
https://master.lavasoftware.org/static/docs/v2/contribution-intro.html and
the full https://master.lavasoftware.org/static/docs/v2/contribution.html
for more details. The former location on git.linaro.org will be archived in
due course.
New repositories exist for the nightly LAVA builds at
https://apt.lavasoftware.org/debian/ (using our existing apt signing key)
and the documentation is being updated to match. The primary location for
test images used in LAVA software functional testing will now be
https://files.lavasoftware.org/; a process to add more files to extend the
functional tests will follow soon. URLs using
http://images.validation.linaro.org/ will continue to be available for a
transitional period.
New mailing lists will also be available soon on the lavasoftware.org site.
There will be a separate announcement about this shortly; subscriptions are
not yet open on the new site.
Contributing to the LSCP
========================
The LAVA Software Community Project has published a Contribution Guide
https://master.lavasoftware.org/static/docs/v2/contribution.html; all
contributors will be expected to adhere to this when submitting issues or
merge requests. These guidelines are designed to clarify the requirements
for contributions, to make contributing more efficient for all involved.
The contribution guide also includes details of how to switch from the old
development process to the new.
We have also adopted a Code of Conduct for the LSCP (
https://www.lavasoftware.org/code-of-conduct.html). All participants in the
LAVA Software Community Project will be expected to communicate and behave
appropriately when working with us.
We request that contributors with currently unmerged Gerrit reviews on
https://review.linaro.org/#/q/status:open+lava/lava should move these
across into merge requests in the new system at
https://git.lavasoftware.org/lava/lava. We will offer help here on request,
but will not automatically migrate them ourselves.
All the outstanding LAVA JIRA stories have been converted into GitLab
issues at https://git.lavasoftware.org/lava/lava/boards. We intend to use
the GitLab workflow for easy integration between CI, issues and merge
requests. At some point in the near future, Linaro will disable the LAVA
projects on Gerrit (https://review.linaro.org/) and JIRA (
https://projects.linaro.org/).
A new way of contributing to LAVA is also under development. A federated
functional testing system for LAVA will allow multiple labs to contribute
to distributed functional testing of LAVA Software, by running specially
designed test jobs on a much wider range of hardware. More details of this
will be announced in due course.
Please ensure that you abide by the Code of Conduct and please read the
contribution guide
https://master.lavasoftware.org/static/docs/v2/contribution.html alongside
this announcement. Discussion of our new project structure is very welcome:
please post to the existing lava-users mailing list at
lava-users(a)lists.linaro.org. Please note that some details of the LSCP are
not yet finalised, so not every question may be answered at this time.
LSCP governance
================
Options for the future governance of the LAVA Software Community Project
are being prepared - more details will follow.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
To improve the functional test framework, we're looking at a mechanism
based on docker and this has had a knock-on effect on how we use git tags.
Previously, tags were made against the release branch. To get this new
support working, we've moved the 2018.7 tag from the release branch to the
master branch.
This does have one effect when using the developer build scripts:
dch: fatal error at line 1092:
New version specified (2018.4.post1-382-gf2f1af5d8-1) is less than
the current version number (2018.5.post1-2)! Use -b to force.
This is due to the tag issue. To fix, use git pull --tag:
neil@sylvester:lava (master)$ git pull --tag
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (1/1), done.
>From gitlinaro:lava/lava
t [tag update] 2018.7 -> 2018.7
Already up to date.
Developer builds will then proceed.
Note that we've changed the version syntax slightly too.
lava_2018.7-17-gf2f1af5d8-1
See
https://staging.validation.linaro.org/static/docs/v2/debian.html#local-vers…
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
This release has not been uploaded to Debian due to an ongoing transition
relating to Python3.7 - see https://tracker.debian.org/pkg/lava and
https://release.debian.org/transitions/html/python3.7.html
The release is available via the LAVA repositories.
A docker container for lava-dispatcher (only) is also available:
https://hub.docker.com/r/linaro/lava-dispatcher-production-stretch-amd64/ta…
LAVA changes
============
6978ad899 Revert "Make primary key non-editable"
a6c34e83f Output a validation error for missing commands:
839a14d07 Create but not edit objects in admin interface
d54b73918 Simplify and rationalise log permissions
0892c0929 Skip deployment_data test if simg2img not installed
34cac8588 worker: add a link to the admin page
f4c85dd27 Cosmetics
baf22688e lava-slave: cosmetics
1d660d9bd Add further fixes for table searching
5903343d4 Rationalise deployment_data for Python3
e298f5acd api: log when updating device/worker health
5572ad267 Exclude Retired devices from warning messages
d874e845c LAVA-1381 CLI to copy an existing device
0736d9d13 Add rk3328-rock64 device type
35594371c Device: set default health to HEALTH_MAINTENANCE
7974b5398 slave: allow to kill the process cleanly
664977da8 Fix notification token after 1a13b85e
2b7e5768c Prevent admins for creating some objects
6383230a6 Make primary key non-editable
f770b0455 Add docs on adding devices in offline state
faa650080 Remove lxc_cmd_prefix from Action class
c0356957b Extend .gitignore for .pytest_cache/
2e124e609 Fix crash when loader yaml description
f037069b3 Make handle_testcase local
138f35d75 Fix bzr tests
425fcaefc Address the Meta data directly
bad4d83c8 device-types: add meson-gxm-khadas-vim2
5ca3ec4f4 Fix crash after 210140b0
d5c05e3c5 dt: improve the warning when hc are disabled
0216c20cc Do not crash when description.yaml is not readable
01faa5d41 Port 41747ab2 to android lava-test-runner
7099b83a1 Add a section on metalava
779a3c826 Add coverage default configuration
ec8c147bd device-types: convert tegra124-nyan-big to Depthcharge
60c137be0 Remove unused sources
7ce3b9d1b device-types: Remove no-op block
f4c557554 Add a few more notes on best practices
9bb6ee3ce Fix crash introduced by 792b63ad
ee379d343 Validate timeout format inside test definition
fa46c7d72 Use reverse relations to break some cyclic-imports
07889e548 LAVA-419 remove google analytics
b89a51557 Allow for 'os' to be optional in deploy actions
5b539c6e2 LAVA-952 per dispatcher configuration
3244fd57f master: remove unused options
1a13b85e7 Move notifications to a specific file
ed44797dc Move django signal handlers to the right module
35ff9e2aa test: remove dependency on instance.conf
30e59f1eb Fix log reading when end < start
ede84bb8f Loosen the check on health check visibility
f38471b6e Raise JobError if commands do not exist
3a6e4895a Some pylint fixes
296ba75cc Outline how to relate a test result to source
8d7afd663 LAVA-960 - remove device-type from device config
8d7de532c Update development notes for new unit tests
8865e27cf Drop functions expecting a JSON job definition
ced34d7dd Fix Python3 support for csv in XMLRPC
3adc5434d Allow to download only some part of the logs
a0312f682 Fix visibility in pending_jobs_by_device_type
210140b0f Remove support for the old v2 format (output.txt)
09288494c Fix lava-logs crashes with invalid test cases
a76b3c14c LAVA-1370 Fix device state when removing TestJob
0e5d01ee7 Update the lava-run example in the docs
792b63ad3 LAVA-1368 provide access to the callback data
59d345080 LAVA-1350 document qemu support in buster
b667d371c LAVA-1367 - drop pretty printing of device dictionary
bbca0922f Remove post_only and use require_POST
c7ede8881 LAVA-1365 - drop call to remote JS
8ca4aae3b Fix undefined variables
92d592816 scheduler.get_pipeline_device_config: fix crash
e005377e3 adb: add missing parameter to super().run
7f00e7de7 logs: write log lines before calling TestJob.save
ef9664aad Link device hostname and device type on devicedict page.
35f251612 Fix misplaced continue, where a return was intended.
4f6ae7e78 Add sdm845-mtp fastboot template support
77fab7605 Add partition:0 to db820c device-type flash order.
eaee79db9 Dont send an os.linesep when interrupting grub
d23ee01f8 Log if udev passes a path outside /dev
f53cd7e9c Update the warning about over-simplifying integration
a5bf77f17 Remove references to python2 and use python3
e9367c747 By default, dict.get() default value is None
5704e19a3 Remove support for django before 1.10
305f019d4 Add a warning to over-simplifying the integration
b528871ca Extend test_recovery to check the -bl template
bae4d6cad Remove duplicated or unused imports
28049de48 Move debian_package_(version|arch) to lava_common
40fcc1d18 Silence known pytest warnings
804bf8715 Make return statement consistent
37a137c32 Fix exception formating
c0f800991 reduce is part of functools in python3
d3531269d Add missing super().run call
2be843f25 Remove python2 code
abb90c380 Fix pytest for lava_scheduler_app
6cae769ac remove unused function
a87ad6d51 Test lava_common.Timeout class
fd8d4a2e9 Remove export PS1 from ssh connections support
e824fd392 Add notes on dependencies needed for unit tests
b6d2bd601 Set the shell prompt in all cases after 5d7c2090
9bd270263 Allow for existing LAVA_DB_NAME containing hyphens
ca7179686 dateutil is missing from server requirements
0679aa426 LAVA-1338 Handle STARTTC, ENDTC and TESTCASE
5d7c20906 LAVA-1120 - drop export PS1 lava-test
9b7ec7120 Use yaml.safe_dump whenever possible
a475c825f Fix crash with old job definitions
087d8ad73 LAVA-1359 Fix lava-publisher shutdown
00747fbe8 Add missing requirement for guestfs in lava-dispatcher
7db4042df Update cirun to avoid sudo
ecafe79b5 LAVA-1361 Fix timeout computation for some actions
e11c8c9f9 Fix job timeout name
9b64f68fd Add example jinja2 files to released tarball.
80703dd4b LAVA-1360 - Investigate Charts Add Query autocompletion
bee1d82d3 Fix order of the log lines when validate fails
b1af0e771 LAVA-1357 - drop include: functionality
5cb96b87c Finalize: ignore exception but log the error
f8a2b520c Fix typo in lava-slave Jobs SQLITE
1cf21c2ed Remove unnecessary Python 2 imports
a1278b6df Remove "args" from Action.run()
306e25d83 Add a glossary entry for BMC
d623748e3 Move import at the begining of the module
cce095f89 Check user rights when returning dt template
d4df5f3d6 Separate the server and dispatcher requirements
15519d598 Add missing import
f5d60ba5c timing: fix parsing with some timeouts
24a1293e2 make device and heathcheck_job pages similar
69c13d3c1 Fix crash when canceling on device without worker
141aeb176 Show an error if a device does not have a worker
4e289f0e3 device-types: add sun50i-h5-libretech-all-h3-cc
9bde1032e device-types: add sun8i-h3-libretech-all-h3-cc
3872951be device-types: add sun8i-h2-plus-libretech-all-h3-cc
934de4f20 No need to test that a dir exists with os.makedirs
1411a019d Use random.SystemRandom() when applicable
c43ac7034 Use CLoader when applicable
4039281ea LAVA-1260 - using Jinja2 templating
48874353a Improve indexing of lava-target-storage
b21810690 Set out plan for functional testing
325309ba9 Fix outdated comments relating to V1 support.
e0a3aaefe Use contextlib.suppress when applicable
0bbe4d381 Check tag support for multiple devices per role
c4ebcfc97 Remove bare except
9aaa115e3 Fix build errors in docs due to removed sections.
661cda0b5 Allow ci-run just for server
0c9cacae3 Remove unicode from yaml definition
2c1b3481d Allow server unit tests to run without nfs-kernel-server
eed71633a LAVA-1354 specify the tests directories for pytest
12fa843aa Improve invalid_template check
218eb19e9 Allow for lava-server without lava-dispatcher
a2fbd0c5b Add lava-lxc-mocker version to log output.
4d02ab538 Skip wait if no kernel_start_message
a2a6715f6 Apply DRY to X15 jinja2 template
306bf6bb5 Fix lxc-create command of lava-lxc-mocker to parse options
correctly.
2965e7427 Use '-q' option whenever apt-get is called.
69a96a268 lava/lxc-mocker: lxc-attach support -v (set var)
371790242 Remove django python2 compatibility code
047912932 Remove __future__ import
f6813e535 Remove python2 specific code
ec2e64b57 Use apt-get instead of apt.
bd4d0b736 context_help is a string not a tuple
63bb7c5cc Remove dummy constructor
316268eca Only use "is" when comparing against None
75300f938 Raise an infra error when guestfs fails to start
8a9f75db2 LAVA-1305 - catch errors in vexpress mcc
a53748c34 Revert "NFS defaults: vers=3"
6ea49f7fb LAVA-1349 fix state machine when canceling and hc
830df97a0 skip some tests if rpcinfo is not available
95036757e Fix crash when env-dut.yaml is defined
50e347aca Change spawnwindowsize to spawn_maxread
74e000108 LAVA-1351 fix addldapuser user_search encoding
3cd50f3ab LAVA-1349 Cancelled health check should not repeat
a72ecbf3e LAVA-1347 allow instances to disable admin Delete
3b88c861c Drop unused setup files.
4110a04a9 Add support for just running the clean task
acd3ccf05 Fix idempotency of decompress_file
93dc46bc5 Allow adding static_devices with no children
93bb55ad8 device-type: khadas-vim: use default uboot prompt
26cd076ab device-types: meson-gx-common: interrupt w/ctrl-c
70db0802c Expand the documentation on setup commands
91d99739d NFS defaults: vers=3
ff1af7f6d Fix: Duplicated Wait for USB
7473b94bc LAVA-1342 - improve docs on character delays
60039c38c LAVA-973 - Create a packaging script for permissions and user
934fdb6b9 Fix map_scanned_results() when test status string is invalid
c0382aeab device-types: meson8b-odroidc1: interrupt with ctrl-c
731e8df49 device-types: base: allow interrupt_ctrl_list for uboot
e737ced93 Split the scheduler API Help by sections
d5ef2f9a6 LAVA-909 convert JSON submissions to YAML
7f3ce8960 LAVA-1262 - document script side effects
a37a30f7b Don't utf8 encode the log data twice
ac6245249 LAVA-1333 fix visibility check for health checks
6ec3ba863 LAVA-1305 - catch errors in vexpress mcc
94c0991d8 Only setup a database once when using pytest
8801f8d26 LAVA-1320 - Add unit test for new minus-lxc jobs
332a40862 Allow limiting the pexpect spawn_window_size
e71ed3760 LAVA-1277 Document lavacli
e504d0666 LAVA-1299 - clarify Bad and Maintenance health
41747ab2f Use /dev/kmsg for LAVA test signals, if requested
7c9d1a0f4 LAVA-836 publish events from a test shell
576aeb896 LAVA-939 Integrate cc3220SF board
b7dbb12d9 device-types: Introduce sunxi-common
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Advance notice of some changes coming in 2018.7
{% set device_type = 'foo' %} is going away
===========================================
The purpose of any item in the device dictionary or device-type template is
to provide information to lava-run to operate the test job. As far as
lava-run is concerned, the device_type is completely meaningless. Device
type is a database object, a component of scheduling and administration.
So in 2018.7, all device-type Jinja2 templates have been updated to move
this to a comment and the schema has been updated to remove the device_type
field.
If you have local Jinja2 templates which use {% set device_type = 'foo' %},
this needs to be changed to:
{# device_type = 'foo' #}
or if your template uses:
device_type: foo
This needs to be removed or commented out:
# device_type: foo
Any mention of device-type in a device dictionary will be ignored.
This also means that deploying 2018.7 will involve changes to most upstream
device-type templates. If you use an admin tool like salt, ansible, puppet
etc. then it is worth making this change ahead of time. In the Harston lab,
we create a code review against the git repo containing the device-type
templates. When the admin is ready to upgrade a particular instance, the
changes from the review are applied before the package upgrade is started.
This prevents dpkg interrrupting the upgrade with prompts about changed
configuration files whilst keeping the device-type templates under version
control.
Database configuration is now upstream
======================================
Previous releases have relied on the Debian packaging to do the work of
setting up the PostgresQL database and managing database migrations during
installation when a database already exists.
We took this upstream so that we could manage the process in Python instead
of shell, partly because the psql commands require some complex quoting
which is very difficult to read and understand in shell. The other
advantage is to have more eyes on the database setup code and to have
formal code review of changes. In due course, it may also be helpful with
the use of LAVA with docker.
Availability
============
2018.7 is likely to be available on or after 24th July 2018. At that point,
Debian will still be handling the migration to Python3.7 which has caused
issues in a range of Python packages with new keywords.
https://tracker.debian.org/pkg/lava
On request, we will not be uploading 2018.7 directly to Debian unstable
until this transition is complete. As far as we can tell at the moment,
there are no changes required within the LAVA codebase but there are a lot
of Python dependencies which are yet to be fixed. This will also delay the
arrival of 2018.7 into buster and stretch-backports in Debian.
2018.7 will be available from the LAVA repositories on
images.validation.linaro.org once the release is ready. I'll make a
separate announcement with the full list of changes at that time.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
On Fri, 6 Jul 2018 at 09:41, Yuan, ZhanghuiX <zhanghuix.yuan(a)intel.com>
wrote:
> Hi LAVA mainters,
>
>
>
> Nice to meet you.
>
> I want to add my pub key after LAVA installed container.
>
Unless you configure LXC to allow this (and that is outside the scope of
this list), there is no remote access to the container. Adding the public
key will not make it possible to SSH into the container. Hacking sessions
are not supported in the LXC.
Think of the LXC as a transparent layer on the worker. It is not a separate
virtual machine.
What are you trying to achieve?
If you want to access the rootfs of an LXC, you can do so by logging in to
the worker and using the standard LXC support.
If you want to push files from the LXC to a remote location, you can use
the publishing support:
https://staging.validation.linaro.org/static/docs/v2/publishing-artifacts.h…
This is not a LAVA constraint, this is a reality of using LXC.
> But I don’t which parameters should I need add in my job xx.yaml file.
>
> Could you give me some help and advice.
>
>
>
>
>
> >>>>>>>>>>>>>>> Some part information of my xx.yaml file:
> <<<<<<<<<<<<<<<<<<<<<<<<<<
>
>
>
> actions:
>
> - deploy:
>
> timeout:
>
> minutes: 300
>
> to: lxc
>
> os: ubuntu
>
> packages: [python, wget, unzip, python-pexpect, python-serial,
> openssh-server]
>
>
>
> - boot:
>
> prompts:
>
> - '[root(a)(.*) /]#'
>
> timeout:
>
> minutes: 300
>
> method: lxc
>
>
>
> - test:
>
> timeout:
>
> minutes: 300
>
> gefinitionsg
>
> - run:
>
> steps:
>
> lava-test-shell: echo "-------------------------------------
> debug 1 -----------------------"
>
> lava-test-shell: wget --no-proxy -q
> http://otcpkt.bj.intel.com/downloads/pubkey/sys_oak.zip
>
> lava-test-shell: mkdir -p ~/.ssh
>
> lava-test-shell: unzip sys_oak.zip -d ~/.ssh
>
> definitions:
>
> - repository: ssh://
> sys_oak@git-amr-4.devtools.intel.com:29418/pk_osi_test-source.git
>
> from: git
>
> path: <device>/<test_type>_lxc.yaml
>
> name: <test_type>-<device>
>
> params:
>
> BUILD_NUMBER: <build_number>
>
> IMAGE_URL: <image_url>
>
> PRODUCT: <build_name>
>
> IRC_USER: "sys_oak"
>
> PUB_KEY: "ssh-rsa
> AAAAB3NzaC1yc2EAAAADAQABAAABAQDCDJvT5UPE***************************
>
>
>
> >>>>>>>>>>>>>>> Some part information of my xx.yaml file:
> <<<<<<<<<<<<<<<<<<<<<<<<<<
>
>
>
>
>
>
>
>
>
>
>
> Best Regards
>
> Zhanghui Yuan
>
> OTC Production Kernel Integration Test
> _______________________________________________
> Lava-users mailing list
> Lava-users(a)lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/lava-users
>
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
After the security hotfix, a number of other security changes are being
made.
One which will affect developers running unit tests involves the
permissions of /etc/lava-server/instance.conf
Each installation of lava-server will set the permissions of this file to
0o640 and the owner to the LAVA_DB_USER configuration value (by default,
named lavaserver). This is to protect production instances as this file
contains the database password.
-rw-r----- 1 lavaserver lavaserver 181 Jun 25 08:59
/etc/lava-server/instance.conf
Developers need to ensure that the user running the unit tests is now part
of this group, e.g.
$ sudo adduser <username> lavaserver
Otherwise, a permission error will be raised when trying to create the
devel database used by the lava-server unit tests:
PermissionError: [Errno 13] Permission denied:
'/etc/lava-server/instance.conf'
See also https://review.linaro.org/#/c/26068/
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
2018.5.post1
============
During routine development, a new security scanning tool (bandit) was used
on the LAVA codebase. Three security problems were found relating to the
Job Submit UI and the loading of YAML files through XMLRPC. The problems
date back to 2013, possibly earlier, so all releases of LAVA are affected.
Fixes were developed and have now been released.
https://review.linaro.org/#/c/25917/ Remove the ability to paste
URLs in the submit page
https://review.linaro.org/25918 Use requests instead of urlopen
https://review.linaro.org/25919 Use yaml.safe_load when parsing
user data
Thanks to Remi Duraffort for identifying and fixing the issues.
Note: These changes are not trivial to backport to previous releases. It
is possible but some familiarity with the codebase will be required. We
have packed a lot of changes into the time since the end of the migration
and we are hoping to have a more stable time ahead. The LAVA software team
recommend that all instances look to upgrade to 2018.5.post1. Our apologies
for these problems.
We are NOT aware of any exploits using these issues but now that the
problems are public, it is prudent to apply the available fixes before
anything happens.
We expect to make more use of bandit and similar tools in future.
CVE's have been requested but we don't have the CVE numbers back at this
time.
The production repo now carries these changes as 2018.5.post1-1+stretch
An upload to Debian unstable will follow in due course. (The Debian
security team were notified once we had a fix.) An upload to Debian
Stretch to update 2016.12-1 is being prepared.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
This is the first full release from the combined source tree.
The expected direction of the LAVA codebase is to add more devices and the
work of device integration is and has always been difficult. Merging the
codebase removes an unnecessary hurdle in integrating new devices and
smoothes the process of ensuring that existing integrations are maintained
by generating dispatcher test files directly from the server templates.
(This has been a problem in previous releases - static device configuration
files in lava_dispatcher unit tests hid problems arising from changes to
the templates in lava_scheduler_app. The unit tests are now more
representative of real test job processing.) As a validation framework, our
own unit test and CI support is a key technical component.
lava_scheduler_app and lava_dispatcher modules will remain tightly
integrated, using ZMQ to allow for physical separation. Combining the tree
also makes it easier to update the documentation each time a new device is
integrated.
The new lava-common binary package allows lava-server to be installed
without needing lava-dispatcher - this will reduce the number of
dependencies required on instances with multiple workers where there are no
devices attached to the master. The default remains to install
lava-dispatcher alongside lava-server - use the --no-install-recommends
option, as per the updated documentation.
There are changes required in Debian for this release and those will take
some time. See https://ftp-master.debian.org/new.html and
https://ftp-master.debian.org/new/lava_2018.5-1.html (It is not necessary
for every package in that queue to be processed before the LAVA upload is
processed, some packages are held back for specific reasons.) Once the LAVA
upload clears NEW, the old lava-dispatcher and lava-server source packages
will be removed from Debian.
One key advantage of this change within Debian is that all lava packages
will migrate together - this will prevent a recurrence of the recent
problem when lava-dispatcher was delayed arriving in backports but
lava-server was accepted, causing installation failures.
Both lava-server and lava-dispatcher binary packages depend on the same
version of lava-common. When upgrading, lava-common should be added
automatically. If not, use dist-upgrade or list the packages explicitly to
let apt add the new package.
e.g.
$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
lava-common
The following packages will be upgraded:
lava-dev lava-dispatcher libprocps6 procps
Once lava-common is installed, if a master has no devices attached, admins
can choose to remove lava-dispatcher and the extra dependencies can also be
removed. *Check the list of packages to be removed on each instance* for
packages required by other tools on the master, e.g. local admin scripts
and similar.
$ sudo apt update
$ sudo apt upgrade
or to list packages explicitly:
# master with devices (may also have workers):
$ sudo apt update
$ sudo apt install lava-server lava-dispatcher
# or for workers:
$ sudo apt install lava-dispatcher
# or for master without devices:
$ sudo apt install lava-server
$ sudo apt remove lava-dispatcher
$ sudo apt-get --purge autoremove
lava changes
============
4a4bde2a1 LAVA-999 Export master and logger config
6f50e1145 LAVA-1315 add option to update existing users
ff8d9f882 Update device-types to match my lab config
809ae34ea Use InfrastructureError for uefi menu timeout
e52d83dc6 Stop the Overlay tests duplicating the base class
099f19599 LAVA-1310 separate the template unit tests
198283abb Drop Python2 xmlrpc support
13fa6bdef Fix support for scheduler.jobs.definition
a40fe8664 Fix query results export to CSV.
b18e74ca9 Create lava_common for Timeout and Exceptions
ece1a46d4 Generate device configuration from templates
e2d0f4b36 LAVA-1324 QEMU usage of KVM accelerator
59e0ab091 Extend timeouts in example test jobs
4269cc55a Merge branch 'master' into coordinator
7f49853f0 Complete fastboot sequence cannot be governed in device
dictionary.
50d69d971 Update instructions for merged codebase
e2de099f4 LAVA-1316 Instant scheduling
edd48e0b1 signals: always add health_check field
1bbaec1e2 Allow to create health-check directly
e0cddeb5e Create admin log entries when looping
2489bcbc8 Add auto-login to fastboot sequence of hi6220 device types.
13a4b5923 Drop debug line to update pipeline_reference
da933a151 Add support for optionally running using pytest-3
51c81f659 Test decompression during download streams
3d2541d00 docker: always run with --rm
1cdd275aa Fix ResetDevice comment to match what it actually does.
db2775001 Allow to sleep after the usb serial appeared
391595bcc LAVA-1309 - pre-* commands should be called with minus-lxc
d524354f7 Add an helper to list all keys of an action namespace
9bfe50d84 Expand command lists in device dictionaries
0ff09a569 LAVA-1173 - allow for matching parents of nodes
3b5f47bf7 Make device_info validate errors unique
dad039adb Allow for multiple udev rules in a single file
80ca5346a LAVA-1203 - Allow multiple callback URLs in notify action
120181cb6 ci-run should stop on first error
bed5fcb20 Allow dispatcher unit tests to generate device config
a3cc054f3 Implementation of recovery mode deploy and boot
47b184796 Print the url when validating file:// download
8d1ffad00 dispatcher: raise a TestError for invalid regexp
fb39a9da8 Factorize compatiblity code
4511d4de6 monitor: log the start message
c18752652 Fix broken unit test
84769209a Exclude Retired devices from invalid_template check
534f1a9b8 LAVA-1300 - fail if static devices cannot be found
235f17d35 Add the end time to the Recent job errors table
e18d27c5a Update templates for changes from Harston lab
fa0d9125f Update second UART example jobs
600fc7b4e ci-run: Remove some of the unused args and clean it up for jenkins
36fee805b Revert "Remove unused and obsolete requirements.txt"
2e051cb6d Remove any generated top level init.py
2060d7851 LAVA-1298 fix references to old repositories
1978274d1 Treat kernel panics as a job failure
d920b7825 Remove unused and obsolete requirements.txt
ed9039e87 LAVA-1297 - Incorporate changes to run jobs without LXC
fabd4a44f Port to python3 and fix prospector warning
e98737c55 LAVA-1286 Raise JobError if 'params' is not a dict
5af7a7f74 compression: do not use shell=True
a4e1ac09b device-types: add meson-gxbb-nanopi-k2
2e84699d8 Port classes to python3 only
6a02322a1 device-types: add meson-gxl-s905x-libretech-cc
968873081 publisher: do not duplicate logs
05d119426 Send the wait-all role reply
80a912d7e Add a ./ci-run script
02a83fed4 Fix waitall with a role support
33644d89e Port to new daemon support with systemd service
a1d9f99e3 Explicitly allow wait-all to occur before send
8b2e3feb0 Add a status check script
a4cfb1b90 LAVA-489 Python3 support
1c570a0f8 add the gitreview file for lava-coordinator
210e4b7cf bump version
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
On 24 April 2018 at 14:09, Zoran S <zoran.stojsavljevic.de(a)gmail.com> wrote:
> > Sorry, but this was only a notification of a decision already taken and
> implemented by
> > the development team. The change itself was not and is not up for
> discussion on this list.
>
> Sorry to be (brutal) honest with you and Linaro. ;-)
>
> I (sincerely) expect in The Future you/Linaro will be MUCH (much) more
> serious with some responsibilities to this list, and to your/Linaro
> Lava architecture?
>
This is a user list. It is not a development list.
I remain unconvinced that you, personally, understand the LAVA architecture
and design let alone our aims and objectives.
>
> Or... I expect out there that will be some more serious
> people/companies with some more serious testing environment. I hope
> for this to happen (competition is All Good, don't you think)! ;-)
>
> Do we have agreement here (I truly hope so)?! :-)
>
Not really.
LAVA is absolutely serious about automation validation. I disagree with all
the rest of your assumptions.
>
> Zoran Stojsavljevic
>
> On Tue, Apr 24, 2018 at 10:02 AM, Neil Williams
> <neil.williams(a)linaro.org> wrote:
> > On 24 April 2018 at 08:21, Zoran S <zoran.stojsavljevic.de(a)gmail.com>
> wrote:
> >>
> >> > Not true. The master produces the configuration which is fed to the
> >> > dispatcher - the two are very directly tied
> >> > at the level of what devices can support and how that support is used
> by
> >> > test jobs. Changes and fixes in the
> >> > device-type templates will change how the dispatcher uses the code
> >> > support to control the device.
> >>
> >> With all due respect, Sir, I would not agree/would disagree to by
> >> your/Linaro's currently presented architecture.
> >
> >
> > Sorry, but this was only a notification of a decision already taken and
> > implemented by the development team. The change itself was not and is
> not up
> > for discussion on this list.
> >
> >>
> >> On Mon, Apr 23, 2018 at 4:06 PM, Neil Williams <
> neil.williams(a)linaro.org>
> >> wrote:
> >> > On 23 April 2018 at 14:54, Zoran S <zoran.stojsavljevic.de(a)gmail.com>
> >> > wrote:
> >> >>
> >> >> > lava-server and lava-dispatcher have been merged into a single
> source
> >> >> > repository - lava
> >> >>
> >> >> If you ask me, this is the (very) questionable decision. Indeed!?
> >> >>
> >> >> lava-server is the front-end manager of the whole Lava test
> >> >> environment, while lava-dispatcher is the back-end.
> Connected/splitted
> >> >> by ZMQ protocol. And... They should be separately maintained
> >> >
> >> >
> >> > Not true. The master produces the configuration which is fed to the
> >> > dispatcher - the two are very directly tied at the level of what
> devices
> >> > can
> >> > support and how that support is used by test jobs. Changes and fixes
> in
> >> > the
> >> > device-type templates will change how the dispatcher uses the code
> >> > support
> >> > to control the device. The two have always been maintained by the same
> >> > team
> >> > and in a tightly integrated manner.
> >> >
> >> >>
> >> >> , since
> >> >> they represent (very) different things. Essentially, they do (very)
> >> >> different tasks. They are, after all, apples and oranges.
> >> >
> >> >
> >> > The bulk of the expected work from here on is Device Integrations.
> Each
> >> > new
> >> > device integration typically involves changes to the dispatcher to
> >> > support
> >> > new deployment / boot methods as well as new templates for the device
> >> > configuration. Combining the codebase allows those changes to be more
> >> > easily
> >> > verified because the output of the device configuration templates can
> be
> >> > fed
> >> > directly to the lava-dispatcher code changes in the dispatcher unit
> >> > tests.
> >> >
> >> > Previously, this has resulted in static device configuration files in
> >> > the
> >> > dispatcher unit tests and that has caused problems.
> >> >
> >> >>
> >> >>
> >> >> In other words, if you update/buy advanced/more expensive apples, you
> >> >> also force testers to update for nuthin'/buy for the loss the same
> >> >> oranges, they had before?!
> >> >
> >> >
> >> > Not true. the packages are built from a single source package. That
> does
> >> > not
> >> > mean that the binary packages need to be updated on the actual
> >> > instances.
> >> >
> >> > Up until now, lava-server has always depended on the latest version of
> >> > lava-dispatcher. That specific dependency is being removed as part of
> >> > this
> >> > change.
> >> >
> >> > Nevertheless, the principle remains that the lava-master and
> lava-slave
> >> > should be updated together so that the device configuration is in line
> >> > with
> >> > the dispatcher support. See compatibility settings in the
> documentation.
> >> >
> >> > https://lava.codehelp.co.uk/static/docs/v2/simple-admin.html#index-5
> >> >
> >> >
> >> >
> >> >>
> >> >>
> >> >> Is it the wise decision???
> >> >>
> >> >> Two cents worth lamenting/analysis,
> >> >> Zoran
> >> >> _______
> >> >>
> >> >> On Thu, Apr 19, 2018 at 3:41 PM, Neil Williams
> >> >> <neil.williams(a)linaro.org>
> >> >> wrote:
> >> >> > This is for particular note for developers as it changes the way
> that
> >> >> > reviews happen.
> >> >> >
> >> >> > If you've noticed a few reviews being abandoned, this is why.
> >> >> >
> >> >> > lava-server and lava-dispatcher have been merged into a single
> source
> >> >> > repository - lava
> >> >> >
> >> >> > lava-coordinator will follow in time, to ease the update of
> >> >> > lava-coordinator
> >> >> > to Python3.
> >> >> >
> >> >> > This will, in future, allow easier testing of device integrations
> by
> >> >> > allowing the lava_scheduler_app unit tests to be linked to the
> >> >> > lava_dispatcher unit tests and have a single review which adds both
> >> >> > sides of
> >> >> > the device support.
> >> >> >
> >> >> > There will be a lot of testing, as normal, so staging will be
> moving
> >> >> > to
> >> >> > packages built from the new source repository tree.
> >> >> >
> >> >> > The old lava-server.git and lava-dispatcher,git repositories will
> >> >> > become
> >> >> > read-only and will get no further code changes. All changes will be
> >> >> > done
> >> >> > in
> >> >> > lava.git
> >> >> >
> >> >> > https://git.linaro.org/lava/lava.git/
> >> >> >
> >> >> > The documentation will be updated over the next few days.
> >> >> >
> >> >> > --
> >> >> >
> >> >> > Neil Williams
> >> >> > =============
> >> >> > neil.williams(a)linaro.org
> >> >> > http://www.linux.codehelp.co.uk/
> >> >> >
> >> >> > _______________________________________________
> >> >> > Lava-announce mailing list
> >> >> > Lava-announce(a)lists.linaro.org
> >> >> > https://lists.linaro.org/mailman/listinfo/lava-announce
> >> >> >
> >> >> _______________________________________________
> >> >> Lava-users mailing list
> >> >> Lava-users(a)lists.linaro.org
> >> >> https://lists.linaro.org/mailman/listinfo/lava-users
> >> >
> >> >
> >> >
> >> >
> >> > --
> >> >
> >> > Neil Williams
> >> > =============
> >> > neil.williams(a)linaro.org
> >> > http://www.linux.codehelp.co.uk/
> >
> >
> >
> >
> > --
> >
> > Neil Williams
> > =============
> > neil.williams(a)linaro.org
> > http://www.linux.codehelp.co.uk/
>
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
2018.4.post2 hot fix is now available.
This is the first release built from the combined source tree but the
actual code changes are restricted to fixes for decompression of downloaded
files, specifically .zip and .xz handling.
Python3 only and Stretch only.
Now available from the LAVA repositories, production-repo.
https://staging.validation.linaro.org/static/docs/v2/installing_on_debian.h…
Changes
=======
fe70ac6ca Update version.py for repos with no tags
1f7c5b5f1 Fix typo in 86362f and add debug
11c5ab57e Do not attempt to unzip on the fly
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
On 24 April 2018 at 08:21, Zoran S <zoran.stojsavljevic.de(a)gmail.com> wrote:
> > Not true. The master produces the configuration which is fed to the
> dispatcher - the two are very directly tied
> > at the level of what devices can support and how that support is used by
> test jobs. Changes and fixes in the
> > device-type templates will change how the dispatcher uses the code
> support to control the device.
>
> With all due respect, Sir, I would not agree/would disagree to by
> your/Linaro's currently presented architecture.
Sorry, but this was only a notification of a decision already taken and
implemented by the development team. The change itself was not and is not
up for discussion on this list.
> On Mon, Apr 23, 2018 at 4:06 PM, Neil Williams <neil.williams(a)linaro.org>
> wrote:
> > On 23 April 2018 at 14:54, Zoran S <zoran.stojsavljevic.de(a)gmail.com>
> wrote:
> >>
> >> > lava-server and lava-dispatcher have been merged into a single source
> >> > repository - lava
> >>
> >> If you ask me, this is the (very) questionable decision. Indeed!?
> >>
> >> lava-server is the front-end manager of the whole Lava test
> >> environment, while lava-dispatcher is the back-end. Connected/splitted
> >> by ZMQ protocol. And... They should be separately maintained
> >
> >
> > Not true. The master produces the configuration which is fed to the
> > dispatcher - the two are very directly tied at the level of what devices
> can
> > support and how that support is used by test jobs. Changes and fixes in
> the
> > device-type templates will change how the dispatcher uses the code
> support
> > to control the device. The two have always been maintained by the same
> team
> > and in a tightly integrated manner.
> >
> >>
> >> , since
> >> they represent (very) different things. Essentially, they do (very)
> >> different tasks. They are, after all, apples and oranges.
> >
> >
> > The bulk of the expected work from here on is Device Integrations. Each
> new
> > device integration typically involves changes to the dispatcher to
> support
> > new deployment / boot methods as well as new templates for the device
> > configuration. Combining the codebase allows those changes to be more
> easily
> > verified because the output of the device configuration templates can be
> fed
> > directly to the lava-dispatcher code changes in the dispatcher unit
> tests.
> >
> > Previously, this has resulted in static device configuration files in the
> > dispatcher unit tests and that has caused problems.
> >
> >>
> >>
> >> In other words, if you update/buy advanced/more expensive apples, you
> >> also force testers to update for nuthin'/buy for the loss the same
> >> oranges, they had before?!
> >
> >
> > Not true. the packages are built from a single source package. That does
> not
> > mean that the binary packages need to be updated on the actual instances.
> >
> > Up until now, lava-server has always depended on the latest version of
> > lava-dispatcher. That specific dependency is being removed as part of
> this
> > change.
> >
> > Nevertheless, the principle remains that the lava-master and lava-slave
> > should be updated together so that the device configuration is in line
> with
> > the dispatcher support. See compatibility settings in the documentation.
> >
> > https://lava.codehelp.co.uk/static/docs/v2/simple-admin.html#index-5
> >
> >
> >
> >>
> >>
> >> Is it the wise decision???
> >>
> >> Two cents worth lamenting/analysis,
> >> Zoran
> >> _______
> >>
> >> On Thu, Apr 19, 2018 at 3:41 PM, Neil Williams <
> neil.williams(a)linaro.org>
> >> wrote:
> >> > This is for particular note for developers as it changes the way that
> >> > reviews happen.
> >> >
> >> > If you've noticed a few reviews being abandoned, this is why.
> >> >
> >> > lava-server and lava-dispatcher have been merged into a single source
> >> > repository - lava
> >> >
> >> > lava-coordinator will follow in time, to ease the update of
> >> > lava-coordinator
> >> > to Python3.
> >> >
> >> > This will, in future, allow easier testing of device integrations by
> >> > allowing the lava_scheduler_app unit tests to be linked to the
> >> > lava_dispatcher unit tests and have a single review which adds both
> >> > sides of
> >> > the device support.
> >> >
> >> > There will be a lot of testing, as normal, so staging will be moving
> to
> >> > packages built from the new source repository tree.
> >> >
> >> > The old lava-server.git and lava-dispatcher,git repositories will
> become
> >> > read-only and will get no further code changes. All changes will be
> done
> >> > in
> >> > lava.git
> >> >
> >> > https://git.linaro.org/lava/lava.git/
> >> >
> >> > The documentation will be updated over the next few days.
> >> >
> >> > --
> >> >
> >> > Neil Williams
> >> > =============
> >> > neil.williams(a)linaro.org
> >> > http://www.linux.codehelp.co.uk/
> >> >
> >> > _______________________________________________
> >> > Lava-announce mailing list
> >> > Lava-announce(a)lists.linaro.org
> >> > https://lists.linaro.org/mailman/listinfo/lava-announce
> >> >
> >> _______________________________________________
> >> Lava-users mailing list
> >> Lava-users(a)lists.linaro.org
> >> https://lists.linaro.org/mailman/listinfo/lava-users
> >
> >
> >
> >
> > --
> >
> > Neil Williams
> > =============
> > neil.williams(a)linaro.org
> > http://www.linux.codehelp.co.uk/
>
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
On 23 April 2018 at 14:54, Zoran S <zoran.stojsavljevic.de(a)gmail.com> wrote:
> > lava-server and lava-dispatcher have been merged into a single source
> repository - lava
>
> If you ask me, this is the (very) questionable decision. Indeed!?
>
> lava-server is the front-end manager of the whole Lava test
> environment, while lava-dispatcher is the back-end. Connected/splitted
> by ZMQ protocol. And... They should be separately maintained
Not true. The master produces the configuration which is fed to the
dispatcher - the two are very directly tied at the level of what devices
can support and how that support is used by test jobs. Changes and fixes in
the device-type templates will change how the dispatcher uses the code
support to control the device. The two have always been maintained by the
same team and in a tightly integrated manner.
> , since
> they represent (very) different things. Essentially, they do (very)
> different tasks. They are, after all, apples and oranges.
>
The bulk of the expected work from here on is Device Integrations. Each new
device integration typically involves changes to the dispatcher to support
new deployment / boot methods as well as new templates for the device
configuration. Combining the codebase allows those changes to be more
easily verified because the output of the device configuration templates
can be fed directly to the lava-dispatcher code changes in the dispatcher
unit tests.
Previously, this has resulted in static device configuration files in the
dispatcher unit tests and that has caused problems.
>
> In other words, if you update/buy advanced/more expensive apples, you
> also force testers to update for nuthin'/buy for the loss the same
> oranges, they had before?!
>
Not true. the packages are built from a single source package. That does
not mean that the binary packages need to be updated on the actual
instances.
Up until now, lava-server has always depended on the latest version of
lava-dispatcher. That specific dependency is being removed as part of this
change.
Nevertheless, the principle remains that the lava-master and lava-slave
should be updated together so that the device configuration is in line with
the dispatcher support. See compatibility settings in the documentation.
https://lava.codehelp.co.uk/static/docs/v2/simple-admin.html#index-5
>
> Is it the wise decision???
>
> Two cents worth lamenting/analysis,
> Zoran
> _______
>
> On Thu, Apr 19, 2018 at 3:41 PM, Neil Williams <neil.williams(a)linaro.org>
> wrote:
> > This is for particular note for developers as it changes the way that
> > reviews happen.
> >
> > If you've noticed a few reviews being abandoned, this is why.
> >
> > lava-server and lava-dispatcher have been merged into a single source
> > repository - lava
> >
> > lava-coordinator will follow in time, to ease the update of
> lava-coordinator
> > to Python3.
> >
> > This will, in future, allow easier testing of device integrations by
> > allowing the lava_scheduler_app unit tests to be linked to the
> > lava_dispatcher unit tests and have a single review which adds both
> sides of
> > the device support.
> >
> > There will be a lot of testing, as normal, so staging will be moving to
> > packages built from the new source repository tree.
> >
> > The old lava-server.git and lava-dispatcher,git repositories will become
> > read-only and will get no further code changes. All changes will be done
> in
> > lava.git
> >
> > https://git.linaro.org/lava/lava.git/
> >
> > The documentation will be updated over the next few days.
> >
> > --
> >
> > Neil Williams
> > =============
> > neil.williams(a)linaro.org
> > http://www.linux.codehelp.co.uk/
> >
> > _______________________________________________
> > Lava-announce mailing list
> > Lava-announce(a)lists.linaro.org
> > https://lists.linaro.org/mailman/listinfo/lava-announce
> >
> _______________________________________________
> Lava-users mailing list
> Lava-users(a)lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/lava-users
>
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
This is for particular note for developers as it changes the way that
reviews happen.
If you've noticed a few reviews being abandoned, this is why.
lava-server and lava-dispatcher have been merged into a single source
repository - lava
lava-coordinator will follow in time, to ease the update of
lava-coordinator to Python3.
This will, in future, allow easier testing of device integrations by
allowing the lava_scheduler_app unit tests to be linked to the
lava_dispatcher unit tests and have a single review which adds both sides
of the device support.
There will be a lot of testing, as normal, so staging will be moving to
packages built from the new source repository tree.
The old lava-server.git and lava-dispatcher,git repositories will become
read-only and will get no further code changes. All changes will be done in
lava.git
https://git.linaro.org/lava/lava.git/
The documentation will be updated over the next few days.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
The 2018.4 release has been uploaded to Debian unstable. It should also be
possible to upload to Stretch-backports in about a week from now, depending
on internal processes in Debian.
The release is also available from the LAVA repositories - production-repo
Dropping Python2
================
2018.4 is the first release exclusively using Python3. Upgrading from
releases prior to 2018.2 will bring in a range of Python3 packages. After
installation of 2018.4, a number of Python2 packages are available for
removal, if administrators desire.
See also: https://lists.linaro.org/pipermail/lava-announce/
2018-April/000050.html
lava-tool still uses Python2 - we are working on lavacli as a Python3
replacement. lavacli has also been updated to 0.8-1 in Debian.
lava-server
===========
f60a5328 callback: fix crash in python3
e627f8ec Allow skipping one unit test if kvm not enabled
0208402f job: make the link to the bottom more visible
dd26e4fb Fix default BRANDING_BUG_URL
b2cc847b Adjust bootm addresses for panda
f25548b5 Make snow u-boot prompt more precise
6a209317 Misc beaglebone black fixes
1481ac98 Add note for bug in LXC templates on Stretch
4ed6a2f5 api: fix a crash when a test case is not unique
53c57de9 Fix crash when test case metadata is empty
99c32f4d Fix crash when action_metadata is None
b286b6bd Fix missing import
b708b038 Test user_command and flasher templates
c316e516 Update more scripts to use Python3
4be0dd49 fix sphinx warning in docs
458f470e Improve "lava-server manage check" coverage
30efadeb LAVA-1274 fix javascript exception
31764a52 job: only update if failure_comment isn't empty
24fe81e6 LAVA-1276 - Search functionality broken on staging job list page
938a90d8 Update documentation for Python3 change
d4f64157 Fix deprecation warning from Jinja2 with Python3
1a5c55e8 Add hi6220-hikey-r2 device-type template
13758edc Update development notes for Python3
8f0d5a94 Pass LXC/fastboot parameters to all jobs in split_multinode_yaml
f3d7a8ac Fix API breakage from 2d37b3
2658935c Fix Python2 syntax when creating secret key.
65a30238 Fix Device.CONFIG_PATH for individual unit tests
c5fbfa51 Use suppress from contextlib
60b50af3 Remove unused shebang
c9ff6e9f Fix shebang for python3
494ae3af Fix wrong import
33c5f72f LAVA-1269 - Store checksum of job.original_definition in metadata
f8124a8c Import infrastructure_error from the right module.
60ecef88 Add failure comment and error type to test job notifications.
4e313b45 Fix logic for template check warning
ab65a859 Fix the logic in e1f44097
b0c549bb Fix unicode error in migrations
ec01c5bf Replace "!!python/unicode" in job definitions.
f4386c08 LAVA-1147 Support more than 3 priorities
c169c287 Remove exclusive flag from device dict
d7cba2d1 LAVA-1250 Allow admin to finish a TestJob
3b54f8d2 Preserve comments in job definition display
66cd46bd LAVA-1167 document the 'history' feature
8d835d78 Python3 changes needed for lava-server
73fa8d2e device-types: add sharkl2
48f63bf9 Fix missing conditions variable in custom query manager.
bdb07a21 Fix pep8 errors
70614729 Fix crash when device dict is invalid
b00fde96 Remove jessie specific code
fa0418b7 Improve the Admin query view
7d8d94de Skip refresh of archived queries
926ba5af Use the TestCase job error message as failure comment
e1f44097 Fix invalid_template check
ea3d99ca LAVA-1263 separate vexpress bootloader_prompts
0ef60b0e Add admin link to device pages for superuser
bba64496 Cleanup some doc error messages
91c03b30 Fix multinode sub job definition display.
48bb281e Job resubmission shows Internal Server Error
on incorrect resubmission.
7b2201b5 Cancel subjobs from admin cancel action
aac25876 Fix a grub error message so python can compile it into an RE
3555256f device-types: add sun8i-h2-plus-orangepi-r1
1ae6dda0 device-types: add sun8i-h2-plus-orangepi-zero
f5e95c3a Save the error when the job fails to start
1fbd68fa allow load_devicetype_template to return raw yaml
2667881c dt: alert when the template is invalid or missing
75cf05ee Move infrastructure_error into test.utils
5819a2cd Add banana pi zero device-type config
d8f605c0 Add another possible failure message to grub
e5aca37a LAVA-1129 save job full configuration before start
f54c2acf Make some after installation debug doc more visible.
4bb83a63 Fix 500 when device-type template does not exist
e1371fef juno: allow override of bootloader_prompt
b33a3165 Make the code python3 compatible after 0d1e0a07
d73687c6 LAVA-1253 - CSV export headers are incorrect
14aa6477 Force device hc for ConfigurationError and LAVABug
02011867 Use base-fastboot jinja2 template for mediatek-8173 device type.
606ad8b0 LAVA-1240 - LAVA: add test job name to email notification subject
414edc4d Add the overlay deploy method to all uboot devices
f1c8d9c7 Add the flasher configuration to all uboot devices
fec9dfac settings: simplify and allow setting any variables
f2f6844d LAVA-1247 - Results API make_custom_query not working correctly
1a27b586 Remove unused variables from instance.conf
de0834d6 settings: remove most variables from settings.conf
24646594 settings: remove appname
3f69dd81 Fix lava-server manage addldapuser --username USER
5aebdfce admin: fix view_siet link when using MOUNT_POINT
f784db06 admin: use dynamic urls instead of static ones
0d1e0a07 Fix test for extra results metadata in callback data
356ba428 Move standard ARMMP tests to stretch
227caa82 LAVA-1249 address issues with large pexpect buffers
4bdb5d17 Allow time to drain capacitance
717a3387 Up power off timeout for juno
7a1260d4 Fix bootloader prompt for juno uboot
ca334c5c job.validate does not accept any parameter anymore
fa0855de Remove v1 leftover
5287d13d Remove unused output_dir
e9fc34f0 device-types: rk3399-puma-haikou: align booti_kernel_addr
33c8579b Add imx7s-warp device-type
416fb3e5 Do not crash when re-adding the same device (or dt)
18318d27 Add admin actions to update worker health
f57d683d master|logs: automatically reload certificates
390c8e2b lava-master: fix return values
2d37b341 Remove is_pipeline
45d5767a lava-master: record error message as failure_comment
74713edb Use STATIC_URL and get_absolute_url when needed
60283360 Remove TestJob._results_link
f9a36ee1 LAVA-1180 Refactor device-type page
3456b9ea LAVA-1128 Use bulk_create to create TestCases
cfcc0fc8 Move postgresql timeout to wsgi
4c61a59c LAVA-777 lava-slave is now restartable
806ac08b job api: allow filtering by state/health
fb0b700e device-types api: allow get/set health-checks
6eadfc62 List Infrastructure, Bug and Configuration errors
lava-dispatcher
===============
4dd73b76a Fix wrong infra error when compressing with xz
50a652a54 Add missing import and fix prospector warnings
817fe007d LAVA-1234 - Man page for lava-lxc-mocker
691041a1 compress: check that the tool does exists
84df8c5d LAVA-1264 improve handling of cancellation
02590e0b LAVA-1282 Only kill lava-slave
1cbebc39 fix typo in manpage
67a19da1 Add template testing for user-command and flasher
40a9a97b Do not crash when command output is not utf-8
73cd3623 LAVA-1266 - LAVA doesn't fail jobs that fail
to flash partitions
7340ad00 BootloaderCommandOverlay fix validate logic
99526367 Log str representation of exception objects
957cc171 LAVA-1278 use external decompression for .xz
ee0921ab LAVA-648 Slave needs to check DNS
896936c1 Update modprobe.d support (Closes: #888681)
67f49224 Extend installer error prompt list
43a29e4c Ensure QEMU iso method uses configured TFTP dir
e88d3cb4 Python3 update for QEMU installer support
a05f307d Decode returned log string to utf-8.
52babb39 LAVA-1274 do not log a boolean
15ba29b9 Fix shebang for python3
4c960c49 test: fix file descriptor leaks
a6fdafd9 Remove python2 specific code
3e7891d1 Drop Python2 support
8a7d655a Revert "shell: wait for prompt between each command"
d5e15af2 Fix lava-os-build output
303b3871 Remove deprecated lava-test-run-attach usage
8cb5f120 Remove leftover from v1 in android helpers
0e304335 shell: wait for prompt between each command
b67fb420 Fix raise format
351176ab Remove stale udev rules
8d6c5ec7 Python3 fixes
e8a757df LAVA-1167 allow removal of the .git directory
54ad1fbe Remove jessie specific code
f4784431 Remove v1 signal handler
bb910afd Fixup connection.prompt_str assumption
26897c46 LAVA-1257 do not crash when STARTRUN is missing
bd6c2526 LAVA-1256 raise a JobError when url is missing
0e255c3b Raise an Infra Error when an exe is not usable
294a2322 Fix URLs referred in unittests to point to permanent location.
a1474089 LAVA-1252 do not crash when device conf is missing
5179d1de Device: factorize code
c5645bc6 Remove power_on command as it's never used
bf57d6fe Fastboot boot method should have a sequence associated with it.
eab74bae Catch errors with lava_test_results_dir early
b4ac1dbe Use the permanent location for WaRP7 unit test
a41f73ee Remove empty class functions
30b84f20 Fix format string when raising
1854a1dd Do not print pipeline description to stdout
0512e6ce Remove unused output_dir
e5043cb3 run_command: split the output at the newline char
cadd2123 Add a new deploy method called "flasher"
00437106 Use job tmp directory for the compress overlay
1158c5e7 Add a deploy method that only create the overlay
eeac3e67 docker: only mount the overlay when available
6916519d Make the helpers faster
d8b205ee Specify the exception to raise when timing out
ad106451 LAVA-1146 lava-slave removes stale resources
67b18778 LAVA-777 make lava-slave restartable
b61a58e5 Refactor lava-slave code
cdd2ef54 Adding deployment action for MPS devices
b8e7dc13 xnbd: fix killing of old xnbd-server process
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
The master branches of lava-server and lava-dispatcher have now moved to
Python3 exclusively.
This means that all developer builds will only support Python3 and that
Debian Jessie is no longer supported for LAVA software.
It is recommended to use the staging-repo as there are a lot of dependency
changes to add Python3 dependencies on machines which have not used Python3
before. apt will make the job much easier than trying to install developer
packages and then fixing the dependencies manually.
Even if you have 2018.2 installed and have Python2 and Python3 support
available, there are still some new dependencies to move the runtime
support to Python3.
The following NEW packages will be installed:
gunicorn3 python3-dateutil python3-gunicorn
The documentation has been updated:
https://staging.validation.linaro.org/static/docs/v2/installing_on_debian.h…
Once an instance has been upgraded, apt will typically warn about a range
of Python2 packages which are no longer required. These can be removed
using the command:
$ sudo apt-get --purge autoremove
Check the list of packages carefully!
One example list could be:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
python-django-auth-ldap* python-django-restricted-resource*
python-django-tables2* python-ldap* python-lzma* python-markdown*
python-netifaces* python-pyudev* python-simplejson* python-voluptuous*
0 upgraded, 0 newly installed, 10 to remove and 1 not upgraded.
After this operation, 1,855 kB disk space will be freed.
Do you want to continue? [Y/n]
apt is cautious about listing packages for autoremoval, so you may well
find Python2 packages still installed. This is normal.
This starts a new round of functional testing in preparation for the next
LAVA software release. That release will be Python3 only and it will not be
built for Jessie.
Debian uploads from here on will only be to unstable and stretch-backports.
LAVA repositories will only carry updated packages for stretch-backports.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
See
https://lists.linaro.org/pipermail/lava-announce/2018-January/000046.html
The time has come to drop regular builds for jessie-backports. If you rely
on these, you will have found that the builds of the master branch broke
for jessie-backports some time ago (whilst the team were at a conference).
So, in the absence of requests to fix the build and in the light of the
existing plan to drop Jessie support in Q2 2018 (i.e. the next production
release) there seems to be no reason to retain the build.
This also means that building from the master branch for jessie is also
broken - this is not going to be fixed.
This opens the door for testing of lava-server using Python3 exclusively,
dropping Python2 support. Depending on how that testing proceeds, the next
production release could be Python3 only.
Summary
=======
* jessie-backports support in the staging-repo has ended
* developer builds of the master branch no longer need to build on Jessie
(and are currently broken)
* there will be no further uploads of lava-server to jessie-backports or
jessie-backports-sloppy in Debian.
* support for Stretch continues unaffected
* when the next production release is made, a backport to stretch-backports
in Debian is likely to be uploaded.
* There will be no further builds for Jessie for the production-repo or
jessie-backports in Debian.
* testing of full Python3 support can now begin
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Python3
=======
2018.2 is built with Python2 and Python3 support but only Python2 remains
is available for runtime (until Jessie support is removed). This results in
the built packages for Debian unstable and stretch-backports now bringing
in Python3 versions of the existing Python2 packages like python3-django.
The unit tests are routinely run using Python2 and Python3.
The packages available from the LAVA repositories reflect the same:
jessie-backports 2018.2-1+jessie - Python2 only
stretch-backports 2018.2-1+stretch - Python2 and Python3, using Python2 at
runtime.
Bootloader support changes
==========================
25859894 Better detect errors in the bootloader - this adds support to
distinguish between a bootloader failure and a kernel failure to detect
problems when the bootloader tries to start the kernel. This has an
important effect on how some test jobs run - see Quiet Kernels below. The
parallel change (7a2b3a68 Change the flow of bootloader commands so they
are executed individually) supports detecting failures to download
artifacts as distinct from failures to execute once downloaded.
Bootloader action optimisations
===============================
To support the better error detection, several bootloader actions have been
optimised. This means that different actions may be used, changing the
names you may be using for timeouts. e.g.
https://staging.validation.linaro.org/scheduler/job/209814/definition#defli…
The timeout name was u-boot-interrupt - now it is bootloader-interrupt.
The UI shows you which actions have been assembled into the pipeline.
e.g.:
bootloader-interrupt: Wait for prompt Hit any key to stop autoboot (timeout
00:02:00)
Quiet Kernels
=============
The bootloader support changes wait for an indication that the bootloader
has completed and that the kernel has started, by watching for a
kernel_start_message. If your kernel is configured to be quiet, then each
test job using that kernel *must* clear the kernel_start_message:
context:
kernel_start_message: ''
In most cases, the test job should not use 'quiet' as this hides important
debugging information from the kernel boot process.
LXC mocker
==========
lava-dispatcher now builds a second binary package which is intended to
support the use of Docker without needing to change the test job submission
which did not use Docker. e.g. submissions to LKFT use LXC and there are
issues trying to use LXC inside Docker. To make it simpler to reproduce
test jobs when debugging regressions, the lava-lxc-mocker can be installed
in Docker instead of lxc. Commands which would then have been run in the
LXC will instead be executed inside Docker directly.
CAUTION: do not install lava-lxc-mocker *except* inside other
containerisation like Docker. When using lava-lxc-mocker, create a
dedicated Docker image which handles only one DUT so that tools like
fastboot and adb which are constrained inside the LXC do not interfere with
other test jobs and devices.
If you have been using the developer build scripts and you are using 'sudo
debi' then you will need to change to using 'sudo dpkg -i' and listing the
lava-dispatcher package instead of the .changes file.
Release cadence
===============
Now that the roadmap to remove V1 is complete, the need for monthly
releases has diminished. As part of a range of other plans aimed at making
LAVA more flexible, the monthly release cadence has been dropped. We are
looking at a range of options, including wider functional testing of the
master branch, to support releases on a rough 3 month cadence but without
the added pressure of expected release dates. This will become a lot easier
once support for Jessie is dropped and the build matrix becomes simpler.
Changes in this release:
lava-server
===========
9ef41db7 Fix missing failure comment
206e5c65 manage jobs: allow to force fail a job
42a3bc31 Save TestCases even when metadata is too large
5efb92c7 lava-logs: look for lava.job results in all cases
19937074 Use the named urls instead of static urls
e60afcbc Ensure uboot_extra_error_message is usable
843a49ed Use reverse() instead of a static url
7583bb09 device-types: add meson-gxbb-p200
40cbffc8 breadcrumb: keep the last element clickable
2d5f34d8 Update docs examples metadata
5a5548ad device-types: fix broken conditional in base-depthcharge
d663a9dc device-types: add rk3399-gru-kevin
21ac9eb2 LAVA-1230 include lava-logs in encryption docs
d57e9131 device-types: rpi3 32-bit: allow custom kernel cmdline
32312dc7 device-types: rpi3 32-bit: allow extra_kernel_args append
afa28d5a device-types: rpi-3 32-bit: fixup DT load address
0c9e227b Add missing change to the X15 template
968a00dd Fix fdt load command wrapping.
156f1e7b fix quoting of serial numbers
57610c06 lava-logs: simplify log format
5301ef66 breadcrumb: the last element should not be a link
08547de9 Fix api pages titles and breadcrumb
fc03f62b LAVA-1083 - Bug links can be managed only on list pages
35146e4c Remove distinct ON because it can't be used correctly with order
by.
85f6bd67 Test shell helper support with base-fastboot
b86981ad master: do not send START to offline workers
b6cf83f8 admin: fix group cancelation
8890d270 Drop auto-login from hikey 620 template
5642e8cd Allow cancelation in Scheduling and Scheduled too.
bbf6c5bb LAVA-1220 - Update API calls and docs for scheduler changes.
742433b0 Drop invalid boot_message for hikey 6220
441919d7 Skip kernel-start-message for dynamic connections
8f4ecdcb Add a parameter to u-boot to override interrupting
8c093e7f Reorganise fastboot for multiple OS support
abb9fa5d Adding device-type config for MPS devices
240ffeda Add rk3399-puma-haikou device type and health check
bd0c7da7 TestCase: fix crash when accessing old test cases
4e22927e Set Unknown as the default option for changing health
078b6499 api: return the right http error code
e6b3ffdd Fix doc Unexpected indentation error.
b523e20f Fix the filename in header to the actual filename.
acf537fb Improve device tables
a0a87385 LAVA-1225 catch errors when creating health checks
ea8d5a72 Do not show Idle state when device is unavailable
dd4f25bd Allow custom tftp commands for loadfdt in U-Boot
a074403a LAVA-1219 allow unicode for job.original metadata
58d23f23 Python3 branch now merged into master
717c177c fix missing quote mark in docs
dcb8bd5a LAVA-1224 support for Xilinx-ZCU102 ZYNQ
fec11287 Improve python2 and 3 support
756d2e6a migrate-job-output: fix inverted logic for dry-run
fbeaa57f Add NotificationRecipient in the admin site
135654d6 Fix online devices listing
7007fda8 Fix change in 70cb792c7 to show extra_source
025bab80 LAVA-1221 change mouse pointer whenever needed
b28e4c7b LAVA-1222 use verbose names instead of constants
a281a6a7 Extend timeout to cover when dispatcher is busy
3985a0e1 Update development docs for Python3 plans
71374e3a migrate-job-output add --slow and --dry-run
9ce62f2d LAVA-1213 - move developer builds to Python3
81fbb4c4 Charts x-axis attribute should refer to job metadata
7af37d79 LAVA-1164 relicence some lava-server files
14604fb5 LAVA-1211 Document appending to kernel command line
e8eb6ec0 Add admin actions to update device health
b16e197b LAVA-1107 fix "device-types add" documentation
18be0e5b Set device health to unknown after an infra error
54ae8263 LAVA-950 use a ROUTER socket to connect to master
54ed49c2 Fix crash in lava.scheduler.jobs.logs
7a2b3a68 Change the flow of bootloader commands so they are executed
individually
lava-dispatcher
===============
7b9c3e84 Allow some deployments to not use deployment_data
d5dc6418 ssh: fix comparison
ebbd717b Remove spurious conditional in autologin
b3e4d794 LAVA-1232 - LAVA LXC Mocker
4d445841 Fixes for X15 fastboot_uboot
fd6dbec5 actions/deploy/lxc: lxc-apt-install action add non-interactive mode
1621ea5b LAVA-1202 - multiple boot + test section using transfer_overlay
fails
84d78a08 LAVA-1229 - read-feedback: failed on DUTs without telnet or ssh
0ae6815e Ensure RetryAction has protocol support.
6b96c961 LAVA-1227 - Handle cancellation within LXC
ce1421a3 Update ZCU102 device file for bootloader changes
d53e452c Fix login support for second UART
a0104eb9 Remove unused pipeline reference file.
a9f22a9c Allow for empty values in boot methods
00addc73 Fix lookup for grubmenuselector interrupt prompt
782e69d4 Allow skipping of kernel_start_message
52ac66fa Make waiting for a bootloader prompt optional
41f7d58d Not all boot methods have parameters
8b0d03cd Remove deprecated actions in boot sequence.
a3fb0095 Reorganize for hikey 960 AOSP support
7d78da6e Fix usage of FastbootReboot
161c1660 LAVA-1167 - Improve disk usage of test overlay tarball creation
7306a5c6 download: record the http error code when failing
fd1f7013 Pass USB devices to LXC via ID_FS_LABEL
8bae0785 raise an infra error when docker is not installed
414861e1 LAVA-1138 - panic not recorded by auto-login-action
548a6bb1 LAVA-1224 - support for Xilinx ZCU102
abb9869f Unit tests for 960 AOSP support
0a2f84ce Fix man pages
b15eb55e LAVA-950 use a ROUTER socket to connect to master
7a936509 Fix logrotation by using WatchedFileHandler
8f23430b Fix prospector warnings
25859894 Better detect errors in the bootloader
324615d7 LAVA-1165 - skip reading feedback on closed connection
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Roadmap reminder
================
https://lists.linaro.org/pipermail/lava-announce/2017-September/000037.html
Installing 2018.1 will apply the changes from 2017.12 and earlier to
**permanently erase V1 test data** if this has not been done already.
(i.e. if you skipped installing 2017.11 or 2017.12, remember that 2018.1
includes the changes of 2017.11 and 2017.12.)
Removal of V1 test jobs
=======================
A few provisos with this release - there are a lot more changes to the
lava-server package than to the dispatcher because 2018.1 drops the old
lava_scheduler_daemon app and moves all scheduling into lava-master.
The new scheduler state machine involves some database migrations:
Applying
lava_scheduler_app.0032_add_state_health_to_testjob_and_device... OK
Applying lava_scheduler_app.0033_remove_old_status_fields... OK
Applying lava_scheduler_app.0034_worker_last_ping... OK
If your instance has a lot of V1 test jobs still, the migration could
timeout, so as the final part of the removal of V1, follow the guidance in
the documentation to remove V1 test jobs, if you have not already. (By "a
lot", we're thinking more than a few thousand.)
https://validation.linaro.org/static/docs/v2/v1removal.html#removing-v1-fil…
If you have millions of V1 test jobs (as validation.linaro.org had), you
will need to stagger the removal of the V1 test jobs using the --older-than
support. Talk to us if you have issues, there is an updated script which we
used on validation.linaro.org but that would need to be locally
cherry-picked from 2018.1 onto the system running 2017.12.
The removal script can be interrupted with Ctrl-C and restarted if
required. Depending on the performance of the host machine, it may take a
long time to run the removal, up to several hours in some cases.
Finally on the removal of V1 test jobs, the support removes not just the
database object but also the log file directory, so your master should find
a lot more usable fileystem space has appeared, once complete. In many
cases, the log file directory can be missing for a V1 test job but the
warning is just for information. The database object will have been removed.
Removal of unwanted dependencies
================================
$ sudo apt-get --purge autoremove
Do check the list of packages before proceeding. If there are packages
which you need for local support, make sure those packages are marked as
"manually installed" in apt by using apt-get install <package_name> (this
doesn't reinstall an existing package, it simply marks it as not a
candidate for autoremove).
It is worth running autoremove after this release has been deployed, extra
dependencies can still be a security problem and an admin burden.
Stretch
=======
2018.1 *deprecates* Debian Jessie and moves the recommendation on to Debian
Stretch as the supported OS for LAVA.
https://lists.linaro.org/pipermail/lava-announce/2018-January/000046.html
Note that when the instance is upgraded to Stretch, this will bring in a
new major version of PostgresQL and your LAVA database will need to be
*manually* migrated. Neither PostgresQL nor Debian will do this for you.
https://validation.linaro.org/static/docs/v2/debian.html#migrating-postgres…
When following this guide, remember that your versions will differ from the
guide - typically for the upgrade to Stretch, you will be migrating from
9.4 to 9.6. Take care with the commands to ensure you drop and upgrade the
correct cluster. Make sure you have a valid backup. The instance will need
to be in a *maintenance window* for the migration to occur.
Repositories
============
2018.1 has been uploaded to stretch-backports and jessie-backports for the
production-repo on images.validation.linaro.org and jessie-backports will
continue to receive updates until we get closer to the end of security
support for Jessie. See
https://lists.linaro.org/pipermail/lava-announce/2018-January/000046.html
lava-server
===========
d87ccc73 Restore Health and TestJob Reports calculations
6aa325e0 Add a reason when updating device and worker health
aaa1a959 Notifications: use email signature conventions
3f6770f4 Fix notifications and log the exception
fbe57d5f Only use get_change_message on Django > 1.10
832edcf8 fix pep8 error
ff1ef1c4 Disable high limits on ODROID-XU3
7ae61e90 Remove old sample job
4be662da LAVA-1206 - Improve docs for API chunking
6c717e49 LAVA-1207 - Add xmlrpc API call for test suite list.
d8d7ffdd Fix pep8 - E127 continuation line over-indented for visual indent.
81a2a6d1 Return state and health information as strings not numbers.
d2451a1d LAVA-1163 - Unify json library across lava-server.
d9ea9343 LAVA-1192 document use of static_info
824d9580 Deprecate Jessie in favour of Stretch
0791d8be LAVA-1198 - Make sure API covers retrieving the set of test suites
489b83da Add optional support for python3 unit tests
91782fac A sequence is required before excluding a field in table.
6be77f09 AUTHENTICATION_BACKENDS list is available in distro settings only.
938352ff Add documentation for the depthcharge boot method
f6172120 Ensure added blocks are wrapped in conditionals
7ca1a522 LogEntry: improve SQL queries
38c8c8e3 Improve LogEntry tables
e6bb9cf3 LAVA-1199 - Implement incremental result exports in XMLRPC
2945e5f7 Simplify TestJob and Device state display
2e6460bd LAVA-1197 - Document REST API chunking on test suite level.
2f7bc9ab Fix pep8 error
4f896471 LAVA-1197 - Implement incremental result exports in REST API
7a0854ac LAVA-1103 document user and group creation
4b7b353a lava-master: fix string serialization
1e9c1aa4 LAVA-1119 - users and groups for devices
4963ffa9 LAVA-1102 - add group support to manage commands
bf9dd4ec Add missing sub-command parser for device update
9a480bc0 Fix missing import for lava-master
39faeb5f fix crash when canceling a non-scheduled job
4f201dd6 master: use yaml.dump to dump a dictionary
045ed9ec schema: validate multinode
2d2963d9 Allow browsing LogEntry in the admin interface
ba37046c fix pep8 error
8c6b3c35 LAVA-1186 - Fix python3 unit test support
be8b1e5d Worker: record the last ping received
1f4157c1 lava-logs: fix issue when unbinding under python3
d64514fb Port linaro_django_xmlrpc to python3
4b04cc30 lava-server manage: make the sub command required
f49a1bd7 Port scheduler.jobs api to python3
320cb918 jobs: split the database requests in small chunks
babab5ce Prevent noise from apache2 for DocumentRoot
79cfc375 Add FIT parameters to base-depthcharge and rk3288-veyron-jaq
62dd2464 python3: port timing page
b52c84c6 Port BreadCrumb to python3
c4432f55 lava-master: sleep a bit when db connection drop
6b71a7e0 Port lava-master to python3
7f0a2ae5 Improve support for python3
e2182b3c Port lava-logs to python3
cc05ce30 All images that accepts compression will also accept archive.
2bb99530 Port lava daemons common functions to python3
1e84fdc9 Remove deprecated settings
c530a82e remove restrictions on worker health transitions
f66b7f6b workers.show now returns the list of devices
36239079 Print LogEntry messages on the admin main page
02f83e49 Test the Device and TestJob state machine
2d427a84 Remove unused job json functions.
70cb792c LAVA-963 - Support python3 -Wall unit tests
34d52727 Add base-depthcharge and rk3288-veyron-jaq device types
60f85e3e Derive protocol elements from sample jobs.
012034ef Update app_index.html from last django version
849aaa6c manage jobs rm: try to be nice by sleeping a bit
57a2356d Allow for instant canceling
bc754b3f Fix udecode crash when receiving unicode strings
6aad013a Generate an event when a job is submitted
ed9546fc master: improve scheduling regularity
698817ae Fix fastboot boot sequence for hi960-hikey device type.
107cea4b Fix 500: remove_broken_string has been removed
7c95d706 Extend base-fastboot template for fastboot device types.
d779a194 Python 3 support for cStringIO.
65e769d7 Update example test job with pre command
2467411b LAVA-1170 - Unicode literals port
3bf73425 Provide and Document the storage_info support.
270c90a4 Document the state machine and scheduler
87af6a56 LAVA-1169 - Support xmlrpc.client imports in python3
e24865f3 Update lxc fedora example
14792136 No need to save the object returned by get_or_create
6114d0f9 Rewrite from scratch the job scheduler
9da8d83f Fix broken line detection
af632f12 Add a test character delay to rpi3
a5163e61 LAVA-962 - Port lava-server to python3 exclusively - urllib
b7e7ec2a LAVA-1085 - First time 'run query' click does not
enable 'Results' button
a47c170e LAVA-1084 - Clicking on 'live query' tooltip will submit request
e50c2d03 LAVA-1082 - Results action link points to the same page
6705ec87 Refresh the setting files
e4b39c38 Store the lava_server static file in the right dir
lava-dispatcher
===============
b0de4b84 Enabling energy probe data to be passed to LAVA test shell
dd349a77 Use BaseException only when needed
c1a0cd99 lava-slave: when canceling, wait for the job
f00a7315 Port multinode to python3
f937a861 docker deploy: fix python3 port
11e3571d Generate the FIT image for Depthcharge
d46f10c4 Update unit test sample file for images.v.l.o mirror.
b4536e09 Include child devices of matched pyudev devices
eb04f6fd Remove V1-only test shell helper scripts
9f96a0c5 utils/udev.py: lxc_udev_rule only use logging-url arg
when is not None
781312b5 devices/db410c-01.yaml: Add cdt after aboot in flash order
9e809927 LAVA-1172 add support for lava-target-storage
53cfc7db Add support for the depthcharge boot method
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
As announced in June 2017, Python2 is end of life.
https://lists.linaro.org/pipermail/lava-announce/2017-June/000032.html
However, the outline of the timeframe needs a few changes as Debian Jessie
will lose security support around June this year and all LAVA instances
will need to be running Stretch before that happens. It has proved to be
impractical to support LAVA using Python3 on Debian Jessie and the
completion of the migration has meant that lava-server is ready for Python3
ahead of schedule.
Therefore, the pending 2018.1 release will **deprecate Jessie** and move
the recommended installation of LAVA to Debian Stretch.
The 2018.2 release of LAVA will add Python3 support to support developers
and contributors using Python3.
This means that the 2018.2 LAVA packages will contain python code in both
the existing Python2 directories: /usr/lib/python2.7/dist-packages/ as well
as the Python3 directories: /usr/lib/python3/dist-packages/ and will
therefore bring in both Python2 dependencies *and* Python3 builds of those
same dependencies.
Installing 2018.2 will therefore bring in python3-django and a bunch of
other Python3 packages, enough to run all the unit tests successfully on
Debian Stretch using Python3, using stretch-backports.
These are not yet used for runtime operations in LAVA, only for development
and testing.
A future release of LAVA will switch to using Python3 at runtime, dropping
support for Python2 at the same time which will also drop support for
Debian Jessie. This will happen *before* Jessie loses security support. As
Stretch will be the minimum requirement for installation, this version
would also move to requiring django 1.11 instead of 1.8 from Jessie.
This creates a window for all LAVA instances to upgrade to Stretch using
Python2 ahead of the separate move to Python3.
To update the summary proposed in June 2017:
Summary
=======
June 17th, 2017 - Debian 9 Stretch release
November 2017 - removal of V1 codebase
January 2018 - migration of Cambridge lab to Debian Stretch instead of Jessie
January 2018 - testing with django 1.11 LTS
2018.1 - testing with python3
2018.2 - add python3 support
Q2 2018 - Release with python3 support, end of support for
jessie-backports and drop python2.7 support. Move to minimum django
version of 1.11
April 2019 - release of django 2.2LTS
Actions
=======
*ALL* LAVA instances should migrate to Debian Stretch support as soon as
practical but certainly in the next three months.
All development related to LAVA must support Python3 as of the release of
2018.1.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
This release has been uploaded to Debian and the LAVA repositories. The
release fixes a security issue with private test jobs. 2017.12 added
support for the REST API to access test job definitions. This change caused
a problem where test jobs in which visibility had been set to personal or
group were correctly displayed in job tables but the job definitions were
accessible via direct URLs.
This hotfix resolves this problem in lava-server.
There was also a problem with the command line support for adding workers,
this has also been fixed in this hotfix release.
lava-server
===========
2e00544f LAVA-1168 - LAVA job visibility bug
341f5dfa LAVA-1171 - Show 403 instead of 404
31b7b2a9 Fix "lava-server manage workers add"
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Installing 2017.12 and later will PERMANENTLY DELETE ALL V1 TEST DATA!
As per the announced roadmap, the LAVA software team are glad to announce
the release of 2017.12 which marks the completion of the migration to V2
and the death of V1.
https://lists.linaro.org/pipermail/lava-announce/2017-September/000037.htmlhttps://staging.validation.linaro.org/static/docs/v2/v1removal.html#v1-remo…
Upgrades normally try to avoid removal of data but this upgrade
deliberately drops the V1 data tables, permanently. Whilst this procedure
has been tested, there is no guarantee that all instances will manage the
removal of the V1 test data cleanly. It is strongly recommended that all
instances have a usable backup before proceeding.
DO NOT INTERRUPT this upgrade. If anything goes wrong with the upgrade,
STOP IMMEDIATELY and refer to
https://staging.validation.linaro.org/static/docs/v2/v1removal.html#v1-remo…,
then contact us.
At all costs, avoid running commands which activate or execute any further
migration operation, especially lava-server manage migrate and lava-server
manage makemigrations. Remember that removing, purging or reinstalling the
lava-server package without fixing the database will not fix anything as it
will attempt to run more migrations. Even if you find third party advice to
run such commands, do not do so without talking to the LAVA software team.
It remains possible to escalate a failed upgrade into a complete data loss
of V1 and V2 test data by trying to fix a broken system. In the event of a
failed upgrade, the LAVA software team may advise you to restore from
backup and then determine if there are additional steps which can be taken
to allow the upgrade to complete, instead of attempting to fix the breakage
directly. Without a backup, your only option may be to start again with a
completely fresh installation with no previous test jobs, no users and no
configured devices.
Moving to systemd
=================
https://lists.linaro.org/pipermail/lava-announce/2017-November/000041.html
2017.12 also completes the move to reliance on systemd only as PID 1 for
lava-server and lava-dispatcher.
Next stages
===========
Python3
-------
The next large change is the move to Python3. lava-dispatcher continually
passes the unit tests using Python3. With the removal of the V1 codebase,
work can now start on moving lava-server to using Python3 ahead of the move
to Django2 which drops support for Python2.
https://lists.linaro.org/pipermail/lava-announce/2017-June/000032.html
Stretch
-------
In the new year, the Linaro lab is due to move all machines to Debian 9
Stretch. At some point after that, the LAVA software team will drop support
for Debian 8 Jessie.
lava-server
===========
1aeb97ee Default extra_cpu_reset_message cannot be empty.
bd529d6c LAVA-1127 - Extend bootloader reset messages
1c510f12 Fix a data race between lava-logs and lava-master
41c63693 fix pep8 error in pylint comment
aea79d3d Fix authorization for testsuite and testcase views.
3587c07e LAVA-1151 - REST API for individual test case results
23912624 LAVA-1127 - Extend bootloader reset messages
0f523875 Add docs on configuring the services.
971c6bd8 lava-logs: allow to set master_socket and socket
f59e1ab1 LAVA-1123 Add check on active daemons.
da2751b6 Make sure refreshing query works when a migration removes a field.
3fb3272c Handle MultiNode sub_id with the REST API support
06b8797e LAVA-1104 document namespaces
a8e20ece Update device dictionary handling
12597e12 Fixup documentation examples
3682a7f5 device-types: add dra7-evm
c83894fe Fix timeout in query refresh/create because of 'distinct all'
issue.
2498634b fix logging when lava-logs is going offline
549bab84 Send a signal when the worker state/health change
21d68083 Worker: improve main page and make updates atomic
9b6c3365 Worker: make state read only in the admin
fe39f6c3 Fix breadcrumb for devices, jobs and workers
f6ca007d LAVA-1132 document lava-test-raise
d77fec2f Remove unused template tag "linenumbers"
c62734ac LAVA-1125 - Separate results download link for a summary of the
test job
eaeefc82 LAVA-1047 health check issues
c9105768 Fix a typo in code comment.
64bb15c3 Modify apply-overlay and sparse parameter doc in fastboot deploy
action.
b362332f Fix web link to sparse_format.h in doc.
52520b58 Remove unused imports
7c0c1c6c Add a section of required config for UBoot
481c15ec LAVA-986 Poplar support using U-Boot TFTP
731d0419 Add Worker state and health
169bcb0b Fix typo and update URLs in example artifact conversion job in doc.
4a341866 Update various Debian references
8990fd7b Port template to python3
983bc763 Fix Report a bug and Support links.
9b688776 Take CUSTOM_DOCS into account for Help link.
c0cdd0eb Try to create a generator for yaml dumping
974b3a16 Fix help link on index page.
8d344d65 Point to LAVA docs directly without a dropdown for Help.
c7333bf0 Tweak v1 removal page for latest changes
ad8f556d Remove unused functions and dependencies
d6ea4293 Re-organize deploy action doc.
ee2b4dce Remove unused js lib jquery.formset.js.
6e8c08e4 Purge .pyc files on each unit test run.
8c1cc57e LAVA-737 make lava-master the job scheduler
94c1df3d master and logs: always close zmq sockets
e6e5e9da Fix a crash when parsing job description
84172121 Fix a crash when parsing job description
f5b7f16f LAVA-1124 - Adopt StreamingHttpResponse for large downloads
15060b06 Add a YAML syntax checker for static device configs
c98655fd Prevent MultipleObjectsReturned for jobs with many related TestData
2748e682 LAVA-1122 - skip retired devices in deploy check
db2aed27 LAVA-1126 - RESTAPI support for scheduler downloads
f721b3f1 master: improve logging
94a4adf8 Add a simple example for multi-uart test using BBB
c014613c master: schedule jobs only if lava-logs is pinging
7c4570b5 Remove unused file
4aeb14bb Remove daemonise helper
09b1c82c Document the group visibility setting.
e3bbbc5e Remove init.d scripts and use systemd directly
e12b6722 Fix chart query remove link.
09bdae2a Remove obsolete doc regarding test case dependencies.
edddbf9e master: job_status is not sent anymore by slaves
252e2c7a Send the ping interval to the slave.
17ba6914 Rename dispatcher-master to lava-master
2a07e4ea Mark a job as RUNNING only when not already done
7b1cd8c3 lava-master: improve behavior with duplicated END
39e78200 Factorize lava daemon functions
1def9370 jobs: allow to remove only v1 jobs
debec5da Remove unused models and fields
0583c4e2 Add hip07-d05 device type based on d03
3019e41b Move log handling into a separate process
05dbbb7f LAVA-1063 and LAVA-1064 - Drop dashboard app.
42bfd0e5 dispatcher-master: prevent growing message queue
611aaa13 Document the process of V1 test data removal
lava-dispatcher
===============
1f13d442 Fix bug in calculating flash commands order in fastboot deploy.
0b1f8fae LAVA-1155 - Create overlay as part of download deploy action
c20269b9 Prevent crash if logfile is None in shell.
b5244836 ensure lava-test-raise is available for packaging
d3f70511 Fix function signature
0fbaa24f Drop misleading warning message
085a8d49 LAVA-1105 Disconnect from connections cleanly.
32c6f7f4 LAVA-1132 - add an API for abort a test
b5ebe130 LAVA-1127 - Extend bootloader reset messages.
4b140ed4 LAVA-1142 fix VLANd overlay support
bc7fdee8 ApplyOverlayImage init does not take any parameter
d0ff1380 Use lazy logging
334ccaab Never return/break/continue in finally block
9e61e84d LAVA-1130 - Drop unimplemented CustomisationAction
4772dd57 raise an infra error when dockerd is not running
74871923 Indicated when helpers come from the distro
ae5cdce3 slave: "lava-logs" is a reserved hostname
e5713118 Use systemd for slave startup
7ebeb578 slave: do not send status along END message
054fcf9b lava-slave: make ping time configurable
10ab9909 lava-slave: improving logging
6a7bf9d5 Fix wrong duration when timing out at action start
3013b1fa guestfs: change RuntimError into JobError
0fd8a0d0 deploy/fastboot.py: Add sparse parameter to apply-overlay
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
https://lists.linaro.org/pipermail/lava-announce/2017-September/000037.html
Now that the migration to V2 is in the final stages, the LAVA software team
is looking at how the next stages of development will be managed. (The
remaining large items are a clean up of the scheduler and porting
lava-dispatcher and lava-server to python3.)
We'll be retiring bugzilla and moving to using lava-users mailing list for
issue reporting. Members of the LAVA software team will then file tickets
to cover any work involved in fixes discussed on the list. The ticket
itself won't be visible without a Linaro login but there will be an
associated LAVA story which is visible anonymously. The team member
creating the ticket and the linked story will be responsible for updating
the lava-users mailing list with progress and feeding back any comments.
This allows us to collate multiple enquiries into one ticket or create
multiple stories out of one discussion whilst allowing us to properly
prioritise the work.
If you have a Linaro login, you can create tickets in the normal way:
https://projects.linaro.org/servicedesk/customer/portal/1
There is also a public Dashboard:
https://projects.linaro.org/secure/Dashboard.jspa?selectPageId=11603
The dashboard has a dedicated section for tickets and stories which
originated on the lava-users mailing list. The dashboard also gives an
indication of when the next release is due.
The workflow looks like this:
Ticket created Linked LAVA story created.
When work starts, the LAVA story goes into In Progress.
If the work has to wait for other work to be completed, the story and
ticket may be put into Blocked.
When a review is uploaded to review.linaro.org, the LAVA story goes into
Review.
When the review is merged, the LAVA story goes into Resolved with a
FixVersion of the next LAVA production release, e.g. 2017.12 or 2018.1.
Also, the ticket goes into InProgress.
When the release is made, the LAVA story goes to Done and the ticket goes
to Awaiting Acceptance. If no problems arise, the ticket is then Closed.
The LAVA story will be mentioned in the commit message of the associated
review and will therefore show up in the packaged changelog and git history.
There will still be reviews uploaded which are not directly linked to a
LAVA story or ticket but for work which needs to be scheduled, planned or
prioritised, a ticket and story will be created.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
LAVA requires a range of singleton daemon processes to schedule, organise,
publish and log the test job operations. 2017.12 will be retiring the
lava-server daemon and the /var/log/lava-server/lava-scheduler.log, moving
those operations into the lava-master daemon and the
/var/log/lava-server/lava-master.log. This is one of the steps in the
removal of V1.
This leads a substantial change to how admins approach an instance running
2017.12 or later.
When jobs don't appear to be running for some reason, the default action is
to check /var/log/lava-server/lava-scheduler.log - once the instance is
running 2017.12 or later, admins need to remember that it is correct for:
* /var/log/lava-server/lava-scheduler.log to be empty
* the status of the lava-server daemon to be active (exited)
* the lava-server service to not restart
At some point after 2017.12 has been running, admins can choose to archive
or purge /var/log/lava-server/lava-scheduler.log* and / or disable the
lava-server service using systemctl.
The scheduler from 2017.12 onwards will consist of:
* /var/log/lava-server/lava-master.log
* /var/log/lava-server/lava-logs.log
* the status of the lava-master daemon will be active (running)
* the lava-master service will restart when admins request it.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
LAVA, until now, has packaged SysVinit files to manage the various daemons
but there have been longstanding problems with log rotation and the need to
carry redundant code to manage the daemonize process for python scripts.
This has allowed instances to support both SysVinit and systemd because
systemd automatically converts the SysVinit files to systemd service files.
Now that V1 has been removed, it has become possible and advantageous to
drop SysVinit support and move to only systemd support. This is expected to
mean that lava-dispatcher (and therefore lava-server) will depend on
systemd-sysv, i.e. systemd needs to be the init system to be able to start
the daemons upon which LAVA relies.
A default install of Debian Jessie and Stretch already defaults to using
systemd as the init system, so this does not necessarily involve any
changes.
If there are questions or issues with this, please reply to the lava-users
mailing list.
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
See
https://lists.linaro.org/pipermail/lava-announce/2017-September/000037.html
2017.11 is the second release on the roadmap to the removal of V1. This is
the single largest change ever made to the LAVA packages.
* All dashboard URLs are permanently disabled in lava-server.
* All devices which were not enabled for V2 are now hidden and unusable.
* All V1 code has been removed from lava-dispatcher.
* All V1 documentation has been removed from lava-server-doc.
2017.11 disables all access to any V1 test data - including V1 only
devices. The data itself remains in the database but is not accessible via
any API.
If you have chosen to keep an archive of V1 test data and have not yet done
so, you should do this before installing this upgrade. At the very least,
you **must** have a backup of your postgresql database **before** you
upgraded to 2017.11 in order to make a V1 test data archive later.
2017.11 requires that **all** workers and each associated master are
upgraded to 2017.11 for test jobs to continue running. This is because
there have been very large changes to the directories and file layout
within both lava-server and lava-dispatcher associated with the removal of
the V1 components.
The LAVA software team have been checking ahead for the final stage of the
roadmap and plans are on track, as described.
http:// and https:// changes in django
======================================
A reminder, if you are accessing an instance using http:// (whether
localhost or not), then the changes described in the documentation **must**
be applied for the instance to operate correctly. This is a security change
in Django, not a change in LAVA.
https://staging.validation.linaro.org/static/docs/v2/pipeline-debug.html#us…
Symptoms include HTTP500 errors but can also include the inability to login
to an instance using LDAP or local django accounts, depending on your local
apache configuration.
Changes in 2017.11
==================
Changes in the 2017.11 release are described below, including the short git
commit hash. Use the git commit hash to go directly to that commit using a
URL like https://git.linaro.org/lava/lava-server.git/commit/?id=b19b9648a
for lava-server or
https://git.linaro.org/lava/lava-dispatcher.git/commit/?id=1451e3a4 for
lava-dispatcher.
Where the changelog message includes a story id like LAVA-552, that id can
be added to the base URL: https://projects.linaro.org/browse/ to find out
more about the change itself. e.g.
https://projects.linaro.org/browse/LAVA-552
All LAVA stories are publicly available without requiring a login.
2017.11 also includes large changes to the packaging of both lava-server
and lava-dispatcher. The prompts formerly used to configure a V1 remote
worker have been removed. Packaging is maintained at
https://github.com/Linaro/pkg-lava-server and
https://github.com/Linaro/pkg-lava-dispatcher
Packages for 2017.11 have been uploaded to Debian unstable and also the
LAVA repositories (for jessie-backports and stretch-backports).
lava-server
===========
a799fc6c Fix links back to the main instance
5b9656b6 Fix broken plural in header
b21f8c8f Fix crash in job_section_log
c9526f01 Document the LOG_SIZE_LIMIT setting in settings.conf
63b57c94 Remove lava-mount-masterfs
75b403f4 Remove add_device script
8ddea823 Add description about the disc space requirement
for pg_upgradecluster.
5c9dceb2 Remove TemporaryDevice imports
9b21ea48 Removed unused Worker functions
2accb4c3 Matching change to templates for directory change
1d384c4a Update docs regarding device-dictionary lava-server manage
command.
32472fac Port 77fd10e2 to scheduler.devices.get_dictionary
114bbfa5 LAVA-1093 - Add a management command to drop all materialized
views
8bc9d83a Update dashboard XML-RPC API help for api_version
bb090e96 LAVA-552 - add system.api_version support
77fd10e2 LAVA-1092 support passing a context to device_config
de7ad3aa Remove dashboard_app views and static files.
4bc68531 Remove templates from dashboard_app.
1a618c27 Remove unused functions
d50deca7 api: limit the number of jobs returned
59880e14 Fix HTTP 500 on devicetype health history
a39fecf5 Remove unused resources (css, js and images)
a32ac3b6 Rename base-bootstrap and content-bootstrap
7c108de1 job: print lava.job result in case of failure
b51c419f Remove old templates
a9139c1f Use bootstrap template
7915f18f Remove unused resources
7331901a scheduler.api.jobs.show: add failure_comment
71233bff Fix print syntax for python3 compatibility
936d5eca Remove unused tags
4ebb2a39 Remove unused sources
21a7eb18 Save more sql queries by caching values
4d0d867e Remove non pipeline jobs support
a6648dbd Retain docs on disabling V1 workers
8eac0d74 Revert "LAVA-950 set the master identity"
68573b1a Remove V1 dependencies
a8151559 timing: handle new start/end line format
26cc3ad0 Remove unnecessary js lib beautify.
c44009fa Simplify job view
e1da85d4 Fix loading of description.yaml
7b41f7ef Add documentation for secondary media writer parameters
1b4d3dd5 LAVA-1081 migrate instance name to settings
f3dc1987 Fix up typos from earlier changes
faa24f59 LAVA-1079 - remove HIDE_V1 and HIDE_V2 doc options
942b84c3 Remove unused functions and imports
e61a4831 LAVA-1056 Drop V1 documentation
126dce0c Fix crash introduced by 42451c9cc
f0b28214 Remove v1 codebase
31bb1bf0 Fix notification exception when query is used for data
comparison.
a6cff700 Remove last references to lava_dispatcher v1
043690d9 Remove references to lava_dispatcher v1
4c9e493c Remove dashboard_app traces from rest of the codebase.
c371b8ca drop link to removed page
1b1b638e LAVA-876 - Return empty data stubs for dashboard API calls.
919c10c2 Remove links to dashboard_app in the scheduler_app
1483e9fb Remove leftover from job wizard
f7a1c976 docker: allow passing extra options
42451c9c Use all_jobs_with_custom_sort when applicable
cc4ffd64 Fix broken links in example test job
0ca5d75c Drop the migration status page.
b37fe944 Add a device-type config for the rpi-3b in armv7 32bit mode
9e904a18 Revert "LAVA-876 - Remove access to Dashboard"
f07e0950 Fix warning regarding naive datetime
e8348425 Remove more references to dashboard_app
103a44be LAVA-876 - Remove access to Dashboard
d33c9c98 LAVA-876 - Remove access to Dashboard
b6fc46aa Revert "LAVA-1038 add a settings to archive the instance"
f75a333d Do not run dashboard test anymore
d9163445 Remove references to v1 jobs
addb61d9 bug 3268: fix lava-master crash with invalid logs
febf91b1 Improve advice on api/help
ac8b7df3 fix pep8 error
64025cf3 LAVA-1072 test all template connection syntax
10d5fbe1 Adjust U-Boot load addresses for tegra124 devices
to allow bigger kernels
f30ef936 LAVA-1065 - Remove dashboard_app urls server wide.
096a2f1c LAVA-1049 - Allow for .yml as well as .yaml for healthchecks
918f0bc7 Fix logic so addldapuser and mergeldapuser work for
all LDAP configs
36fcb3c2 Documentation changes for multiple uarts
b1de8acf Update instructions for migrating postgres
0ff08373 LAVA-1053 Results limit does not work for queries
f9e64aa1 Fix SQL request storm when listing jobs
2d9c4757 No need to save after get_or_create or Create()
8988cb36 LAVA-896 fix level in result export
219fa3dd LAVA-1073 - support for a second UART on a device
c934bbbe master: fix database reconnection
4f0e0e62 LAVA-950 set the master identity
316d77fb Expand the device integration guidance.
lava-dispatcher
===============
d91a5b99 Revert "Stop parsing kernel messages when the end of a
panic has been found"
1451e3a4 LAVA-1098 unassigned variable in read_feedback
437d57ba Rationalise the devices directory structure
bdffb3bf Add power control to pyocd
d9553680 Add feedback check to test shell
06588ddf Receive the udev device directly from the udev rule
d811b2a8 Fix license
65d6c6a6 Move arduino101 dfu example urls to images.v.l.o
61cff41c Only log when feedback content was found
0ba35392 Move juno removable URLs to images.validation.linaro.org
cb983d97 Cleanup after pytest runs
997265c2 LAVA-1086 add handler to listen to feedback
29a60e38 Add ConfigObj dependency for TFTP check
70bd3fab Fix prospector warnings
6edb8ef9 Fix missing import and other pylint issues
6f7f5f05 Remove lava-lxc-device-* scripts which are unused.
578b054b Use py.test
65c03eca docker: allow passing extra options
7b7d920a device-info should be yaml
ef8f7d4c Remove deprecated function
165e14f8 Fix linger period: set it to 10s instead of 5ms
49c500ac Fix double crash when the process crash early
7dbdc2b6 Add test case for secondary deployment writer tool parameters
969459c6 LAVA-1069 - migrate dispatcher device configs
9e8e5258 Use optargs to extend ci-run for python3
e1c1561b Fix python3 breakage in unit test
69277753 Read feedback when finalising connections
0fb44088 LAVA-1067 Refactor fastboot flash operations
9ac71872 Add missing import
94430958 Ensure finalize always finalises protocols
9d712364 Add option to not uniquify secondary image download paths
cdfd5909 Fix master cert handling for lava-run and lxc helper
73548f7a Rename dd params to tool for removable media
1802c3e8 Handle master and slave certs as filenames only
ed306477 Do not rely on SysV runlevel to ensure container is ready.
75b47c6a Remove loop mounts via guestfs, while applying
overlay to sparse image.
cd1152e3 Support archlinux and slackware rootfs
6fc024a5 Remove deprecated modules
ddf5d2fc Remove v1 code
5561be23 LAVA-1074 - second UART support
758a41a6 Allow configurable writes for secondary storage deployment
fb75db4a Add flag to disable uniquifying the download paths
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
Disabling V1 test job submissions
=================================
**IMPORTANT** 2017.10 starts the roadmap to the removal of V1 by DISABLING
all V1 test job submissions.
Queued V1 test jobs will continue to run but once 2017.10 is installed, all
attempts to submit a V1 test job will be rejected. This includes health
checks for devices which do not yet have a V2 health check. (So those
devices would go offline - remove the health check job from the database
entry of the device-type to get the device back online if there are queued
jobs.)
Before installing this upgrade, check the Migration Status page on the
particular instance. e.g.
https://staging.validation.linaro.org/scheduler/migration
Notification on installation
============================
By default, installing 2017.10 will raise a notice, reminding you of this
change:
The 2017.10 release **disables ALL V1 test job submissions**. Queued
test jobs will continue to run but if you proceed, only V2 submissions
will be accepted by this instance.
.
If you want to create an archive of the existing V1 test data, install
this version but do not allow further upgrades of LAVA packages.
.
See
https://lists.linaro.org/pipermail/lava-announce/2017-September/000037.html
If you are deploying this change using configuration management, you may
need to define this environment variable to allow the installation to
proceed:
APT_LISTCHANGES_FRONTEND=none
Window for creating a V1 archive
================================
Once installed, admins can choose to wait until all queued V1 test jobs
have finished and then use a backup of the postgres database to create a
read-only V1 archive. Install 2017.10 on the archive instance and then
restore the backup database. All dashboard objects in 2017.10 are
read-only. Admins will need to ensure that all devices on the archive
instance match those on the original instance and then change all devices
to Retired status in the django admin interface.
See also
https://staging.validation.linaro.org/static/docs/v2/pipeline-server.html#s…
Archive repository support
==========================
2017.10 will be preserved in a dedicated LAVA repository in case an archive
has to be reconstructed from a database backup after 2017.11 is released.
http://images.validation.linaro.org/v1-archive-repo/
lava-server
===========
03fec0ea Fix out of date stretch reference
2c8a88d8 Include non https in title for security defaults configuration doc.
56185add Mark required parameters in left over deploy action reference.
b1de8acf Update instructions for migrating postgres
2b845967 Fix issues in the documentation build.
f9e64aa1 Fix SQL request storm when listing jobs
95b12c01 Fix missing import
0a63c2f3 Adjust U-Boot load addresses for imx6q-sabrelite to allow bigger
kernels
3a4cddf4 LAVA-341 Unicode issues in tables and queries
5bff2fd5 Mark required parameters in deploy action using an asterisk.
00b5044a LAVA-1035 Force all Dashboard objects into read-only mode for users
7a006f64 Change load addresses for Jetson TK1 to allow bigger kci kernels
ca5e6834 Update commands for eMMC boot of OE on X15
0d17e797 Add docker device-type configuration
f0c2107c Remove doc references to lava-lxc-device-* commands.
715c6309 LAVA-771 - Support dragonboard-820c with lxc
7a4adb03 Fix the hierarchy of md5sum and sha256sum in nbdroot index.
576661f4 Make clear when to use lxc://
7c68e21b Document download deploy and explain about lxc:// url scheme.
8f4d7419 Rewrite fastboot deploy action reference doc.
11f5c222 archive: do not allow to force hc
9536450d logger: drop level and action name
771d0d93 Fix a typo in deploy to name.
0a2404fa Update command requires an alias argument
e7a704a1 Add V1 EOL summary to the index page for all docs
cdaa6376 LAVA-1003 do not lose logging messages
f09b6beb LAVA-1045 - document the archive setting
483fb1a7 LAVA-1038 add a settings to archive the instance
866afbf4 migration: v1 health-check are not used anymore
896db15b LAVA-1033 remove v1 job wizard
2eac055b LAVA-1043 fix handling of large log files
aef7d7b8 Add device-type disco-l475-iot1
399b9dbc Use the CDumper to export results
c9dc6a14 LAVA-1032 reject v1 submission at api level
65394986 Drop lookups to ActionData from testcase export
80d1a9fa Add support for the NextThing CHIP Pro
21c8fc52 Only write logs to output.yaml
01df9ce0 Improve job listing by fetching more data
436c220e Decrease SQL queries when listing test results
445b9c66 Add support for reading django settings for limiting LDAP group
access
a33b9c9f Only set the job status if lava-run crashed
581b616f Fix boot action doc for fastboot and lxc boot methods.
08393dbb Use new logging API
33a73bb3 device-types: panda: handle bigger kernels
746fe4c9 Allow to override prompt in device configuration
5932f9d1 LAVA-1048 Extend X15 to typical U-Boot support
affaa35d Fix error message in daemonise.py
e24db160 Fix lambda syntax
8fb16105 v2: Do not fall back to db for health-checks
bceecc64 Do not submit new health checks for v1 only device
lava-dispatcher
===============
1b129396 Remove unnecessary calls to get_udev_devices.
55cc9a0d Replace LxcAddDeviceAction with LxcCreateUdevRuleAction.
9cf899df Include vendor and product id if available, while writing udev
rule.
5eea8b61 Add missing requirement for magic binding
75b47c6a Remove loop mounts via guestfs, while applying overlay to sparse
image.
1f285ecf Ensure the image is Android sparse image before acting on it.
44b8436a Add missing dependency on pytz
b953a562 Append to the udev rules and avoid overwriting.
44380b3e Add a new device type: docker
336719bf Fix broken link in hikey960 unit test.
1703dc94 Remove unused signals after introduction of udev based device
addition.
7f2f049e Always don't assume a ZMQ handler for logging.
9fa3995e Fix a typo in log message.
9cab91d0 LAVA-1046 allow to send logs from lxc udev scripts
37c7e863 log: allow to add a linger when closing socket
dd4f6b09 LAVA-1040 - Initial boot only support for artifact conversion in
LXC
7ed0674c logger: remove level and action name
70fb64c4 lava-run: output_dir should be an absolute path
8f31f584 Always revert directory changes
40ca2c11 Add a timezone aware log message at job start
79325b7b Ensure a retry sets a failed result
b8527df2 Debug log message to know image files are copied to LXC.
3665e840 Allow fastboot calls to fail and return the log
7de0f887 Fix bug #3007 - Unable to reboot target between tests on
hikey-hi6220
dc5e5b18 Send a bad status only when lava-run crashed
18607373 Write description.yaml when all logs where sent to lava-master
e185d967 Move most exception handling to lava-run
57829892 Move signal handling to lava-run
d9d39463 Provide useful output when no classes accept an action
1c45a4ad Setup logging as early as possible
af4401f0 LAVA-1048 extend X15 support for U-Boot
12711359 Raise an error instead of setting self.errors in run()
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/
The 2017.9 release is now available from the lava-repositories.
To support Stretch, the package available from the lava-repositories
now has a version suffix matching the suite for which the binaries
were built. So instances using jessie-backports will see
2017.9-1+jessie and instances using stretch-backports will see
2017.9-1+stretch when using the lava repositories.
https://validation.linaro.org/static/docs/v2/installing_on_debian.html#lava…
lava-server | 2017.9-1+jessie | jessie-backports
lava-dispatcher | 2017.9-1+jessie | jessie-backports
lava-server | 2017.9-1+stretch | stretch-backports
lava-dispatcher | 2017.9-1+stretch | stretch-backports
Additional packages from jessie-backports
=========================================
$ sudo apt -t jessie-backports install python-pexpect
python-setproctitle python-ptyprocess
Make sure these packages are updated from jessie-backports before
installing 2017.9. Versions in stretch are already sufficient.
jessie-backports "sloppy"
=========================
This release has been uploaded to Debian unstable. After a period of
time, an upload will be made into jessie-backports-sloppy which is the
place for backports from buster to the previous stable release. An
upload to stretch-backports will be made at the same time.
To install the new release from jessie-backports-sloppy, a suitable
apt source will need to be added - LAVA still needs some packages from
jessie-backports. e.g. to use the bytemark Debian mirror, add this
line:
deb http://mirror.bytemark.co.uk/debian jessie-backports-sloppy main
Jessie continues to be the preferred release for LAVA but we are
planning to move to Stretch in October. We don't anticipate any
problems with lava-server or lava-dispatcher on Stretch as this has
been tested frequently.
Django changes for localhost
============================
Django upstream have changed some of the security defaults and this
has an effect when using http://localhost - 2017.9 contains
documentation on which settings are required to get localhost working
again.
https://staging.validation.linaro.org/static/docs/v2/pipeline-debug.html#ch…
Reminder about the migration status page
========================================
During the time 2017.9 is installed, all instances need to get to a
similar state of device migration as staging has currently:
https://staging.validation.linaro.org/scheduler/migration
* All active devices migrated to V2 support.
* All active V2 devices exclusive to V2.
* All active devices have migrated to V2 healthchecks
* All active devices have healthchecks enabled.
The important phrase here is 'active'. Health checks can be disabled
for a complete device-type in the django admin interface for that
type, that does not affect completion of the migration status. Retired
devices are not counted at all.
During the changes to remove V1, various of the checks which are done
for the migration status page may also be required to be able to start
or complete the next stage of the removal of V1 - including checks
which could block the installation of a future release if not
completed in time. More details on this will be announced as and when
the checks are created, based on the testing done during development.
The roadmap to remove V1 begins now
===================================
https://lists.linaro.org/pipermail/lava-announce/2017-September/000037.html
**2017.9 is the LAST release which will allow V1 test jobs to be
submitted and executed.**
As of 2017.10, V1 test job submissions will be DISABLED and the
process continues to the removal of access to V1 data in 2017.11 and
the removal of V1 test data in 2017.12.
This means that if an instance is running V1 test jobs after the
2017.10 release, the only support available will be how to migrate to
V2.
lava-dispatcher
===============
255e1dc2 Allow to use lava-run from the command line
5e3e4df8 parser: fix exception with unknown action
b167715b Fix exception message
75ef463a Add transfer_overlay support to fastboot
4fcdbb0c LAVA-1020 - Allow branch to be specified for git
d067a6e4 Remove FIXME about unused feature test-case-deps.
93947b9d Fix job tmp_dir NoneType error.
cf0095ca Extend NBD unit tests for template update
ca72b0cc Honour reboot to bootloader irrespective of power state existence.
b210b297 LAVA-1009 - Improve cleanup of temp files and containers
70fb8c09 Add debug log at the right place for lxc-destroy command execution.
51938bf5 Stop executing shell commands twice.
60c39bae Create device-info-file consumed by udev rules in job's tmp_dir.
46a9789d LAVA-1012 - Handle udev paths outside /dev/bus/usb
c6e06463 LAVA-998 - Default to shallow clones in overlay
b9cc1da8 LAVA-1001 - raise TestError on invalid signal call
4a8241e1 Use check_output instead of Popen from subprocess module.
7024de4c Move to permanent URLs for better unit test support
4f32f4e2 Fix reference to smoke test
927bb33a LAVA-1011 - Check for ENOSPACE after adding overlay to sparse image
47608877 Add udev rule file contents to debug message.
15d8adea Add more debug messages for udev rules addition on the fly.
1b2c9252 Ensure auto-login-action can execute protocols
44755d5a CTT-441 - lava-lxc-device-* don't work properly
d55526c4 Add option to enable IPv6 connections
07839bdf Raise a JobError when lava_test_results_dir is undefined
3f9c87f5 Remove uneeded test
003990f7 Add setproctitle as a python installation requirement to setup.py
d04dcf58 Fix prospector warnings
c2601cbe Extend pipeline_reference readme
115d84ad Create a clean script to replace lava-dispatch for v2 jobs
80bfa16e device: remove 'hostname' and 'target'
b663e427 Do not crash when cleanup raises and exception
fcbff4a6 Hikey 960 support for OE and AOSP
bab3c6f1 Replace kernel.txt with a normal boot and add kernel-panic.txt
c61c67bc Fix value of self.results['success'] in pipeline boot action
6939c5ea Add pre-power command support to LXC protocol
98ede789 LAVA-996 - preserve empty parameters in the overlay
9d33ced5 Use encoding to pexpect.spawn for python3 support
ce2dbd83 Stop parsing kernel messages when the end of a panic has been found
b4ae5b4d lava-slave: Pretty print the configuration
cf22ed83 Extend secondary media to mustang
3e746b47 Add network block device boot support
lava-server
===========
6d1ff5c5 Improve the docs on lava-test-reference and metadata
2f11898f LAVA-997 - Invalidate primary connections setup when power is
configured.
ccfb3961 b2260: allow to set bootloader_prompt in device config
4a1b8f5f Prevent mistaken fixup of device reservation
5093f40c LAVA-1022 - V2 support for IFC6410
1f18eada LAVA-1021 - Document specifying branch for git
36513ec3 Change default source code URL after systems change
da49e558 Remove doc for unimplemented feature test-case-deps.
61dfd204 Document settings to enable authentication in http://localhost
5cbf5b11 Allow vcs checks to skip monitor test actions
b85baa75 NBD kernel bootarg fixups
c089adb7 Add failure comment message via async update on the job detail page.
5ca25620 Improve V1 doc build for Debian reproducibility
dccd1588 LAVA-998 - Default to shallow clones in overlay
250f27dd Fix warning of linaro.img not found.
938b3da1 Fix typos and warnings in deploy to nbd doc.
90c9ed74 LAVA-1013 improve performance of result export
0af80d19 LAVA-1008 Group visibility check
080dd10d LAVA-1007 Prevent NoneType crash in job duration
b2d90962 Fix typos in manage users which talk about devices
07e5fa19 Fix reference to smoke test
59340f70 Expand advice on good commit messages.
cfae2faa Skip some dashboard tests if django is too new
68b24fcc Revert "Move action fields templates to table files."
c9f65507 Add log file argument to dispatcher-master command.
dabaf74c LAVA-1002 - fix group label editing in query details page.
7398abd4 CTT-441 - lava-lxc-device-* don't work properly
f1cb7faf Decrease the number of SQL queries to list the groups
984f3b02 doc: fix example of zmq_client usage
f864696d Documentation build error tweaks
9aeff523 XMLRPC authentication: fix wrong logic
93572067 Basic integration advice for U-Boot devices
5b2d39d7 Support PyOCD for KW41Z and remove CMSIS boot method
3f8c8a93 Fix a typo in persistent container configuration doc.
d334642c Rename xmlrpc module to api
9f947433 Add ssh deployment support for secondary connections.
ce9f0da6 Document how to combine LXC and MultiNode
e2be8567 Allow documentation to be built with python3
cc6e9696 Add notes on writing new unit tests
c40ac0da Document option for device_type qemu to choose host audio handling
97eac4b6 Update lava-self documentation for change in output
7e0f6eca Fix PipelineDevice usage after last dispatcher commit
37d4eba4 Fix a typo - repeated usb_vendor_id parameter in device_info example.
d4a80fc1 Improve the validation message when a role is not found in every
1a5aec5f Add a seealso for fresh installs of lava-tool
4707ff98 Check that the Debian package has been installed
72d30834 Mention cookie specific options for reverse proxy
716424a3 api: fix scheduler.jobs.submit's docstring
6dc1a966 Add sudo for the apache config copy command in V2 worker setup doc.
ae39d57b Add docs on calling protocols from actions
a49cc9c6 Expand the device integration guidance.
1fd5e964 Add Integration Stories for supported devices
620dcbf1 Move smoke-tests into functional test repository
ad2f57df device-type: update at91-sama5d4_xplained addresses
b6734844 device-type: update at91-sama5d2_xplained addresses
c4ead793 device-type: update sama53d addresses
1204f81c Skip links to secondary connections device-types
8b9068a3 Add Metadata output to verbose notifications.
2da8c076 LAVA-357 - Allow override of the nfsvers in base_nfs_root_args
5926b9a8 Catch TemplateError in notifications
98b3da07 Initial improvements for the Queries and Charts docs
092f56a5 device-type: update armada-xp-linksys-mamba addresses
0fdf33a8 device-type: update armada-388-gp addresses
5af8f640 device-type: update armada-370-db addresses
9f4c975f XMLRPC: self.user return an AnonymousUser instead of None
d7b34e2d Add an helper command to switch to a dev setup
9bedff1e Add option to enable listening on IPv6
8ff7c4f1 Extend secondary media docs
f132af4e Add support for secondary media for mustang
1fecd500 Integration of Hikey 960
b27f60c4 LAVA xnbd protocol support and documentation for nbd boot
--
Neil Williams
=============
neil.williams(a)linaro.org
http://www.linux.codehelp.co.uk/