Announcement
https://discuss.linuxcontainers.org/t/lxd-4-21-has-been-released/12860
What's Changed
- DB: Support go-dqlite v1.10.1 NULLable fields using sql.NullTime by @tomponline in #9485
- Cluster: Fix self-removal of non-leader member from cluster by @tomponline in #9483
- API: Prevent update of cluster.https_address in doApi10Update by @tomponline in #9487
- Operations: Don't duplicate local operations in operationsGet when running in single member cluster by @tomponline in #9486
- Cluster: Join leader address validation improvements by @tomponline in #9488
- Doc: fix typo for hardware offload by @hnakamur in #9490
- Doc: fix remove non-existent anchor in link to network-peers.md by @hnakamur in #9491
- lxd/instances: Use correct project in live migration by @stgraber in #9502
- DB: Fix upgrade from LXD 2.0/3.0 when using go-dqlite v1.10.1 NULLable fields by @tomponline in #9500
- lxd/device: Clean up mdev vGPU on failure by @monstermunchkin in #9501
- Network: Add support for OVN PTMU discovery for external ingress traffic by @tomponline in #9503
- VM: fix usb pass-through with more than one device by @zyga in #9497
- Switch to original go-udev by @stgraber in #9505
- doc: Elaborate on pongo2 date-time syntax for snapshots by @RKBethke in #9493
- lxc/list: Changed units to be IEC consistent by @RKBethke in #9494
- Switch to go-httprequest by @stgraber in #9507
- DB: Always defer close until after statement has returned to avoid panicking on error by @tomponline in #9514
- Default profile units by @simondeziel in #9513
- Migrate: Only use pointers to migration.MigrationControl to avoid shallow copies by @tomponline in #9512
- Storage: Disk mounting cleanup and improvements by @tomponline in #9510
- Stricter regexps by @simondeziel in #9517
- Container: Fix liblxc handle leak in renderState by @tomponline in #9520
- Device: Switch VM disk devices to use opened file descriptors for passing disk sources to QEMU by @tomponline in #9521
- Warning entry for missing instance driver by @presztak in #9522
- lxd/network/ovn: Support SSL by @stgraber in #9524
- Network: Separate IP neighbour and neighbour proxy management functions by @tomponline in #9527
- Support trust certificate self renewal by @monstermunchkin in #9474
- NIC: Reworks routed NIC to not depend on liblxc's router NIC type by @tomponline in #9528
- NIC: Adds routed NIC support for VMs by @tomponline in #9529
- doc: Fix misspelling in server.md by @cavcrosby in #9530
- Device: Switch to using string slice for mount option handling by @tomponline in #9532
- Project: Adds restricted.devices.disk.paths setting by @tomponline in #9496
- Support for moving instances and custom volumes between projects by @presztak in #9509
- tests: Split cluster and standalone by @stgraber in #9537
- lxd: add forkusernsexec() by @brauner in #9536
- Project: Separate checking if a project can support snapshots from the project DB lookup by @tomponline in #9539
- VM: Use socket file descriptors for virtfs-proxy-helper and virtiofsd by @tomponline in #9538
- VM: Close unnecessary file handles for VM disk proxy processes by @tomponline in #9540
- forkusernsexec: close file descriptors before exec by @brauner in #9541
- forkusernsexec: fixes by @brauner in #9550
- util_linux: ensure that O_NOCTTY is raised when opening terminals by @brauner in #9544
- Move to cron/v3 by @stgraber in #9551
- Project: Validation cleanup by @tomponline in #9549
- Support for lxc storage volume {copy,move} --target and --destination-target flag by @RKBethke in #9534
- Allow passing context to DownloadFileHash by @monstermunchkin in #9559
- VM: Add raw.idmap support for running disk device proxy processes in user namespace by @tomponline in #9543
- Simple doc fixes by @ru-fu in #9562
- VM: Move readonly config mount out of config directory and into devices directory by @tomponline in #9565
- Network: Ensures OVN networks only consider only compatible networks for use as uplink by @tomponline in #9567
- Instance: Improve and unify stop and shutdown error handling by @tomponline in #9563
- Instance: Reset operation lock timeout when unmounting instance and increase ZFS unmount wait by @tomponline in #9564
- First class cloud-init support by @monstermunchkin in #9515
- forkusernsexec: use unix.Stderr as standard --keep-fd-up-to value by @brauner in #9569
- Network: OVN instance peer route bug fix by @tomponline in #9570
- doc: Initial sphinx build by @stgraber in #9568
- lxd/device/disk: Support snap packages when opening restricted disk paths by @tomponline in #9571
- Generator: Accept sql.NullTime as a valid type in the generator by @masnax in #9572
- doc: Fix typo in ToC entry by @stgraber in #9573
- NIC: Routed test tweaks by @tomponline in #9574
- shared/termios: manually copy termios settings between Go and C by @brauner in #9581
- shared/termios: actually copy the values not the index by @brauner in #9582
- Shared: Revert recent termios fixes by @tomponline in #9586
- Shared: Remove requirement on cgo when setting raw mode by @tomponline in #9589
- doc: add a cheat sheet for documentation by @ru-fu in #9585
- Instance: Use exitErr.ExitCode function for containers by @tomponline in #9598
- Increases recommended subuid and subgid ranges in machine setup. by @markylaing in #9601
- lxc/exec: Always connect control websocket by @tomponline in #9595
- Instance: Add more exec tests by @tomponline in #9591
- Instance: Detect disconnect of non-interactive exec stdout websocket and kill command by @tomponline in #9594
- Instance: Rework VM exec to always expect control connection for websocket sessions by @tomponline in #9597
- doc: clean up the content on the index page of the documentation by @ru-fu in #9587
- doc: css: temporary fixes for theme issues by @ru-fu in #9603
- Instance: Fix VM exec pts leak by @tomponline in #9599
- Instance: Adds ExitStatus() to properly extract exit status when a command is signaled from interactive session by @tomponline in #9602
- Replace bionic with focal by @simondeziel in #9605
- doc: add redirect to index.html by @ru-fu in #9606
- Shared: Some minor tweaks by @tomponline in #9607
- doc: Update Ceph docs with details for erasure coded pools by @AlexandarY in #9604
- Instance: Adds non-websocket exec tests by @tomponline in #9613
- lxd: log basic idmapped mount support by @brauner in #9612
- lxd/device: Improves error message for custom storage volumes when shift is true. by @markylaing in #9611
- lxd/device: Fix golint by @stgraber in #9615
- Generator: Refactor handling of reference tables. by @masnax in #9364
- Add
network.nat
property to zones by @stgraber in #9616 - Instance: Make VM WaitForWS for lxd-agent exec explicit by @tomponline in #9619
- Instance: Clear up OVS integration bridge port earlier in stop sequence for OVN NICs by @tomponline in #9621
- Added link for installing.md by @dillonsamra9 in #9624
- Add cluster member role to indicate the leader by @presztak in #9609
- Storage: Enable nodatacow on BTRFS subvolume for block volumes by @tomponline in #9627
- Storage: Improve logging during backup unpack by @tomponline in #9629
- Storage: Add warning to docs about using VMs on BTRFS storage pools by @tomponline in #9635
- doc/storage: fix 2 typos by @simondeziel in #9637
- Added --sub-command flag by @dillonsamra9 in #9634
- Events: Switch events websocket heartbeat to counter rather than using absolute deadline times by @tomponline in #9632
- Storage: Restore VM filesystem size.state quota on backup restore by @tomponline in #9628
- Project: Account for disk size.state when checking project limits.disk setting by @tomponline in #9631
- lxd/storage: Switch to deviceConfig.DefaultVMBlockFilesystemSize by @monstermunchkin in #9638
- Add swagger to doc by @ru-fu in #9636
- doc: Clarify btrfs resize documentation by @archevan in #9640
- Ability to retrieve instances for all projects through API by @presztak in #9590
- Optimise proxy device driver nat rules by @markylaing in #9633
- lxc/copy: Replaces profiles when -p is set. by @markylaing in #9648
- Cleanup ucred handling, fix cluster permission and more reliable tests by @stgraber in #9644
- doc: fix link to rest-api.yaml by @ru-fu in #9646
- doc/api-extensions.md: fixed typo in gpu_mig section by @dillonsamra9 in #9652
- doc: Reformatted Storage Documentation to Organize Keys by Storage Type by @jeff2814 in #9626
- Cluster server grouping by @monstermunchkin in #9583
- GetNonPendingNetworkIDs Project Aware by @C-Stout in #9653
- lxd/storage: Enable LO_FLAGS_DIRECT_IO by default for loop devices by @archevan in #9643
- Cluster: Include endpoint address in dqlite connect errors by @tomponline in #9655
- test: Give exec chance to finish before capturing output by @tomponline in #9654
- Record net.Conn in request context by @markylaing in #9658
- Cluster: Heartbeat ordering by @tomponline in #9649
- Add ipv{n}.routes setting for routed NIC type by @hQavi in #9645
- Use all-projects parameter in events api by @markylaing in #9657
- lxd/device/nic/bridged: Allow ipv{n} filtering when ip is set to none by @hQavi in #9641
- Cluster: Make event listener refresh event driven by @tomponline in #9656
- lxd/storage: Add a
ceph.rbd.du
storage option to disable the use ofrbd du
by @liamnickell in #9659 - doc/cluster: Clarify join question handling by @stgraber in #9660
New Contributors
- @zyga made their first contribution in #9497
- @RKBethke made their first contribution in #9493
- @cavcrosby made their first contribution in #9530
- @markylaing made their first contribution in #9601
- @AlexandarY made their first contribution in #9604
- @dillonsamra9 made their first contribution in #9624
- @archevan made their first contribution in #9640
- @jeff2814 made their first contribution in #9626
- @C-Stout made their first contribution in #9653
- @hQavi made their first contribution in #9645
- @liamnickell made their first contribution in #9659
Full Changelog: lxd-4.20...lxd-4.21