Weekly status for the week of the 10th October to the 16th October.
Introduction
This past week has seen the last two LXD roadmap items get merged; ACME support and internal server metrics, as well as a push to reduce our outstanding issues list.
Additionally @stgraber has added a video describing how the LXD team does its feature and day-to-day development:
LXD
New features:
- Added ACME automated TLS server certificate deploymeny support, see [LXD] ACME support for server certificate for more details.
- Added LXD internal server metrics to the metrics exporter API. See Linux Containers - LXD - Has been moved to Canonical for more information.
Improvements:
- Improved
lxc exec
reliability by adding TCP and websocket keepalives on both client and server sides oflxc exec
connections. This is to try and prevent intermediate proxies with read timeouts from causing a disconnection if the session is idle (as the control channel itself is idle most of the time). Also added TCP level send timeouts to help detect when there are communication problems that would normally prevent the TCP keepalives from disconnecting the session. - Removed some user facing mentions of “node” during
lxd init
- we prefer to use the term “cluster member” when referring to clustering or “server” when referring to an standalone LXD server. - Improved exit status and error output of
lxc exec
command when trying to run a command that doesn’t exist or isn’t executable. Thelxc exec
command now displays the error to STDERR if the command cannot be found or cannot be executed, while also returning the correct exit status codes (127 and 126 respectively). This has been fixed for both containers (depends on liblxc change) and virtual machines. - Reduce the temporary disk space needed on the client machine when importing an image by streaming the resulting image file to the LXD server rather than creating a potentially large temporary file.
Bug fixes:
- Fixed issue with intermittent incorrect sorting of snapshot ordering when multiple snapshots with identical creation date times.
- Fixed regression in LXD client’s user agent string generation.
- Fixed
lxc file pull
to STDOUT if the target was a symlink. - Fixed filtering in
lxc list
when using YAML output format. - Fixed an issue with concurrently starting and instance and deleting it by adding a delete operation lock that waits for the start operation to finish.
- Fixed an issue that prevented an instance being started when it used a
bridged
NIC with avlan
set when the parent bridge did not have a default VLAN PVID set. Previously LXD tried to remove the default PVID on the instance NIC, but because it was not added by the parent bridge the removal failed preventing the instance from starting. LXD now detects if the parent bridge has a default PVID and if not does not attempt a removal.
LXC
Bug fixes:
- Return exit status 126 from
lxc-attach
when command’s execvp returnsEACCES
error.
LXD Charm
New features:
- Add Loki support through logging relation.
YouTube videos
The LXD team is running a YouTube channel with live streams covering LXD releases and weekly videos on different aspects of LXD. You may want to give it a watch and/or subscribe for more content in the coming weeks.
https://www.youtube.com/lxd-videos
Contribute to LXD
Ever wanted to contribute to LXD but not sure where to start?
We’ve recently gone through some effort to properly tag issues suitable for new contributors on Github: Easy issues for new contributors
Upcoming events
- Nothing planned currently.
Ongoing projects
The list below is feature or refactoring work which will span several weeks/months and can’t be tied directly to a single Github issue or pull request.
- Stable release work for LXC, LXCFS and LXD
- Dqlite disk-only operation mode
Upstream changes
The items listed below are highlights of the work which happened upstream over the past week and which will be included in the next release.
LXD
- Add ACME support for server certificate
- LXD: Use consistent “member” terminology when using
tx.GetNodes()
- Add internal metrics
- Instance: Add Delete operation lock
- Client: Updates CreateImage to stream files from disk to server
- Instance: Sort snapshots by ID if creation datetime matches
- Instance: Add TCP keepalives/timeouts, and websocket level keepalives to exec channels
- doc/storage: add video links
- Device: Fix bridge NIC start failures when using
vlan
when parent bridge has no default PVID - doc/authentication: add http-{301,403} backends to HAProxy example
- shared/version: Fix regression in useragent string
- Add warning if cluster certificate update fails
- lxc: Fix symlink following in cmdFilePull
- Tweak server configuration list overview
- api: Add internal_metrics API extension
- .sphinx: Add
goroutines
anduptime
to wordlist - lxd/main/interactive: Remove user facing “node” references
- Instance: Improve exit status and error handling in exec
- lxc: Fix filtering in
lxc list
when using YAML output format - doc/api-extensions:
/1.0
doesn’t accept a trailing “/”
LXC
- lxc/attach: Detect EACCES from execvp and convert to 126 exit status
- build: add libsystemd to oss fuzz dependencies
LXCFS
- Nothing to report this week
Distrobuilder
- Nothing to report this week
Dqlite (RAFT library)
Dqlite (database)
Dqlite (Go bindings)
- Nothing to report this week
LXD Charm
Distribution work
This section is used to track the work done in downstream Linux distributions to ship the latest LXC, LXD and LXCFS as well as work to get various software to work properly inside containers.
Ubuntu
- Nothing to report this week
Snap
- Nothing to report this week