Weekly status for the week of the 12th to the 18th of June 2017.
Introduction
This week was pretty busy with a large number of fixes and refactoring happy within LXC and LXD.
CI has also been a focus this week, with automated testing being added for LXD on a variety of distributions and improved testing of LXC.
On the feature development side of things, two of our larger projects are now at the final code review stage with pull requests open. Those should be reviewed and merge over the next week or so, letting us move on to something else.
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.
- Port of the LXD client tool to the new client library
- External authentication support for LXD servers
- Ceph as a LXD storage backend
- LXD background operation cancellation
- Making the LXD snap production ready
- Preparation for LXC 2.1
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
- Implemented automated testing for the LXD snap for all supported channels and distributions.
- Improved the creation of necessary ZFS datasets in storage pool.
- Make rsync calls handle sparse files during container storage copy.
- Ensure correct ordering of network configuration keys in LXD for liblxc.
- Fixed handling of btrfs pools using an existing btrfs path as their source.
- Added support for container copies in the new library.
- Improved handling of EBUSY on ZFS.
- Add configurable columns to “lxc image list”.
- Make sure to always unfreeze the container (even on error).
LXC
- Implemented a new wait function in the container command API
This should allows us to add additional stability since we can get rid of using an external binary to wait on various container states and allows us to spawn less processes. - Fixed testsuite slowdown due to bad test environment (went from 70+ min down to 10).
- Implemented a new network configuration parser
This is part of a major configuration parser rework that we have been conducting over the past few weeks.
We now consider specifying multiple networks without indices as deprecated and print an appropriate warning.
Until LXC 3.0 it is still possible to specify multiple networks vialxc.network.type
such that each new entry oflxc.network.type
starts a new network configuration. However, users should update their container configurations to use index based network configuration vialxc.network.[i].*
which is order independent and has a much clearer internal interface that allows sanely setting, getting, and clearing all configuration keys. - Reworked parts of our low-level logging routines
- lxc_log_init has now been added to the public API.
- The Alpine Linux template now works on ppc64le.
LXCFS
- Fixed btime calculation
- Fixed the testsuite for recent systemd/cgroupv2
- Ended up removing the btime virtualization feature due to it negatively affecting “ps”.
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
- LXCFS was updated in Ubuntu to cherry-pick the btime and test fixes.
- LXD was updated in Ubuntu to cherry-pick the btrfs bind-mount fix.
Snap
- An update was pushed to fix a failure to start on distributions that aren’t Debian based.
- The recipe was updated to include the same bugfix cherry-picks for LXC, LXCFS and LXD as we have in the Ubuntu packages.
Articles
- Published a blog post on LXD idmap handling.