Announcement
https://discourse.ubuntu.com/t/lxd-6-4-has-been-released/61433
What's Changed
- github: Wait for microovn to be ready before bootstrapping the cluster by @simondeziel in #15174
- tests/suites/network.sh: Add test for fetching bridge info by @ghadi-rahme in #15170
- Storage: Newtype for Database Volume/Content types by @MggMuggins in #14885
- Rename
StoragePoolVolume{Content}Type
Name
methods toString
by @MggMuggins in #15175 - lxc/file: Use the file extension of the edited file for the temp file (from Incus) by @simondeziel in #15161
- VM: Fix QMP arguments typing to support QEMU 9.2 (from Incus) by @nmezhenskyi in #15154
- build(deps): bump tags.cncf.io/container-device-interface/specs-go from 0.8.0 to 1.0.0 by @dependabot in #15143
- Storage: Reference counts for LVM LV activation by @MggMuggins in #15162
- docs: add oidc configuration with ory hydra by @edlerd in #15126
- Prevent cluster groups from being deleted when referenced by a projects' configuration by @markylaing in #15119
- lxd/bgp: Rework start/stop logic (from Incus) by @nmezhenskyi in #15173
- deps: switch to github.com/moby/sys/capability by @kolyshkin in #15091
- Require GHA pinning by @simondeziel in #15197
- doc: Untrusted TLS identity post endpoint description by @markylaing in #15200
- gomod: Update deps by @tomponline in #15194
- lxd: BGP fixes (from Incus) by @nmezhenskyi in #15205
- github: fix regex allow list for local actions by @simondeziel in #15204
- lxd: Prevent deleting non-empty project by @nmezhenskyi in #15198
- cloud-init: Allow
none
forcloud-init.ssh-keys.*
by @hamistao in #15207 - lxd/storage/drivers/pure: Unmap volume when connection is freshly created by @MusicDin in #15211
- Network: Fix bridge fan mode by adding "/" back into
fanAddress()
output by @simondeziel in #15213 - docs: add oidc configuration with keycloak by @edlerd in #15176
- Do not use Go toolchain directive by @simondeziel in #15217
- lxd/network/common: Handle missing BGP peer (from Incus) by @nmezhenskyi in #15220
- build(deps): bump actions/cache from 4.2.2 to 4.2.3 by @dependabot in #15230
- build(deps): bump actions/upload-artifact from 4.6.1 to 4.6.2 by @dependabot in #15233
- build(deps): bump github.com/miekg/dns from 1.1.63 to 1.1.64 by @dependabot in #15235
- build(deps): bump actions/download-artifact from 4.1.9 to 4.2.1 by @dependabot in #15232
- build(deps): bump github/codeql-action from 3.28.11 to 3.28.12 by @dependabot in #15231
- github: Update
golangci-lint
and migrate config to new format by @kadinsayani in #15249 - build(deps): bump actions/setup-go from 5.3.0 to 5.4.0 by @dependabot in #15229
- github: add issue form and template configuration by @minaelee in #15253
- Container: BPF token support by @mihalicyn in #15009
- Storage: Fix persisting Ceph RBD config by @roosterfish in #15214
- Firewall: Fix regression in nftables port range rules by @tomponline in #15255
- doc: hard-code additional link titles by @minaelee in #15227
- doc: minor revisions to keycloak docs by @minaelee in #15216
- client/connection: use LegacyCurvesOnly for simplestreams connections by @simondeziel in #15250
- doc: add localhost:8080 to linkcheck_ignore by @minaelee in #15262
- github: add feature request issue form by @minaelee in #15260
- lint: Fix new warnings from switching to
golangci-lint
v2 by @roosterfish in #15258 - meta/instance-types: drop now unused instance types by @simondeziel in #15264
- Small adjustments on top of BPF Token support PR by @mihalicyn in #15263
- create admin group with server admin permission on install by @edlerd in #15215
- doc: show annotations in microcloud docs integration by @minaelee in #15266
- Prepare for
ubuntu-24.04
runners by @simondeziel in #15268 - feat(doc): add steps to verify lxd host support for vms by @pamudithaA in #15228
- Lower log level of error messages when checking disk usage fails by @simondeziel in #15269
- update: [WD-18946] storage-pool-docs-update by @Kxiru in #15206
- lxd: Fix target profile on snapshot copy by @skozina in #15155
- doc: Fix swagger definition for
POST /1.0/auth/identities/tls
by @markylaing in #15270 - Storage: Fix import of iso images smaller than 512B on ceph by @skozina in #15251
- VM: Use full device name in qemu's
device_id
by @hamistao in #15225 - gomod: Update dependencies by @tomponline in #15291
- Pre- instance-placement fixes by @markylaing in #15292
- github: Update issue template forms by @minaelee in #15296
- build(deps): bump github/codeql-action from 3.28.12 to 3.28.13 by @dependabot in #15283
- doc: add google analytics consent cookie banner by @minaelee in #15297
- LVM: Fix ref count inconsistency by @hamistao in #15219
- docs: add scripted grafana setup WD-20339 by @edlerd in #15209
- Device: Update GPU CDI support for Ubuntu Core: add mesa-2404 contents to config search paths by @mihalicyn in #15301
- lxd: Make the LXD shutdown sequence more concurrent to avoid long-running operations blocking unrelated instances shutdown by @gabrielmougard in #15016
- VM: Fix NUMA node binding when using CPU count without pinning by @gabrielmougard in #15272
- lxd: Logging improvements for
instancesShutdown
by @tomponline in #15303 - forkproxy: proxy device early disconnect fix by @kadinsayani in #15178
- Apply instance profiles to snapshots with --profile as well by @skozina in #15271
- lxd/storage/drivers/zfs: suggest
zfs.external
if in snap and ZFS tools are missing by @simondeziel in #15293 - test/suites/backup: On cephfs add sync calls after
file push
by @skozina in #15308 - lxd/instance: Don't enforce device/config validation on snapshots (from Incus) by @skozina in #15299
- Network: Improve network priority during network startup by @nmezhenskyi in #15312
- Makefile: add
update-godeps
target by @simondeziel in #15309 - github: enable code coverage for client tests by @simondeziel in #15316
- Cluster: Support downgrades within point releases of an LXD LTS series by @tomponline in #15314
- doc: Force white background for swagger API (from Incus) by @minaelee in #15320
- VM: Fix regression when hotplugging qemu virtio-blk drives in addDriveConfig by @tomponline in #15323
- Resources: Add device's filesystem UUID if present by @roosterfish in #15310
- build(deps): bump golang.org/x/sys from 0.31.0 to 0.32.0 by @dependabot in #15344
- build(deps): bump github/codeql-action from 3.28.13 to 3.28.14 by @dependabot in #15343
- build(deps): bump tiobe/tics-github-action from 3.3.0 to 3.4.0 by @dependabot in #15339
- build(deps): bump actions/dependency-review-action from 4.5.0 to 4.6.0 by @dependabot in #15340
- Cluster: Update comments in checkClusterIsUpgradable by @tomponline in #15322
- build(deps): bump github.com/mattn/go-sqlite3 from 1.14.24 to 1.14.27 by @dependabot in #15342
- build(deps): bump golang.org/x/text from 0.23.0 to 0.24.0 by @dependabot in #15338
- Block: Fix
DiskFSUUID
for pristine disks by @roosterfish in #15346 - github: fix client code coverage by @simondeziel in #15348
- build(deps): bump golang.org/x/crypto from 0.36.0 to 0.37.0 by @dependabot in #15336
- build(deps): bump golang.org/x/oauth2 from 0.28.0 to 0.29.0 by @dependabot in #15335
- Device: Fix disk attachment of ceph instance volumes in default project by @tomponline in #15350
- Makefile: bump golangci-lint version to 2.0.2 by @simondeziel in #15354
- github: don't hardcode the runner home in GOCOVERDIR by @simondeziel in #15353
- Fix Loki logger connection regression by @kadinsayani in #15203
- github: set artifact retention days by @simondeziel in #15356
- Ubuntu Pro: Revert "lxd/ubuntu-pro: Change Ubuntu Pro directory." by @markylaing in #15357
- storage: Pre-multi volume snapshots by @hamistao in #15352
- doc: clarify wording about volatile key manipulation by @minaelee in #15363
- Makefile: Add auto-commit for
make update-auth
by @kadinsayani in #15361 - Refactor cluster client functions by @kadinsayani in #15360
- Storage: Fix missing mount reference counting when attaching ceph VM root volume to another VM by @tomponline in #15364
- test/includes/storage: unset
core.storage_buckets_address
indelete_object_storage_pool()
by @simondeziel in #15365 - build(deps): bump github.com/miekg/dns from 1.1.64 to 1.1.65 by @dependabot in #15389
- build(deps): bump github.com/openfga/openfga from 1.8.8 to 1.8.9 by @dependabot in #15386
- build(deps): bump golang.org/x/tools from 0.31.0 to 0.32.0 by @dependabot in #15388
- build(deps): bump github/codeql-action from 3.28.14 to 3.28.15 by @dependabot in #15377
- build(deps): bump actions/setup-node from 4.3.0 to 4.4.0 by @dependabot in #15378
- gomod: Update dependencies by @tomponline in #15393
- lxd: Linter fixes by @tomponline in #15397
- Auth: Filter cluster group used by URLs by @markylaing in #15396
- Doc: Better DNS persistence solution for systemd by @kkovacs in #14589
- Doc: [WD-20812] Manage storage volumes by @Kxiru in #15304
- doc: use external file to store redirects by @minaelee in #15401
- VM: Add link to qemu commit related to disk serial length by @tomponline in #15404
- Fix: Return cluster members in non-recursive mode by @roosterfish in #15403
- Doc: Ignore link checking of https://www.schlachter.tech/solutions/pongo2-template-engine/ by @tomponline in #15406
- github: rework how GOCOVERDIR is handled by @simondeziel in #15407
- lxd: Fix various linter issues by @MusicDin in #15410
- Switch some workflows to 24.04 runners by @simondeziel in #15415
- test/suites/basic: Minor tweaks by @simondeziel in #15414
- github: fix GOCOVERAGE boolean values by @simondeziel in #15412
- test/suites: chmod the lxddir in spawn_lxd() by @simondeziel in #15419
- Doc: [WD-18945] Add docs for create a network by @Kxiru in #15391
- doc/cloud-init: Update network example to v2 (from Incus) by @minaelee in #15422
- Change Cloud Init "user" to "users" (from Incus) by @minaelee in #15421
- build(deps): bump github.com/mattn/go-sqlite3 from 1.14.27 to 1.14.28 by @dependabot in #15425
- build(deps): bump github.com/go-acme/lego/v4 from 4.22.2 to 4.23.1 by @dependabot in #15426
- doc: improve network ACLs docs by @minaelee in #15362
- Network: Improve network validation by @nmezhenskyi in #15305
- Storage: Improve volume metadata by @roosterfish in #15129
- Refactor devlxd API by @MusicDin in #15317
- Storage: Metdata improvement followups by @roosterfish in #15430
- Linter fixes by @simondeziel in #15416
- doc: update broken maas anchor link by @minaelee in #15432
- Replace http string literals with
http
package constants by @kadinsayani in #15433 - storage: Instance and custom volume snapshot consistency by @hamistao in #15359
- Instance: Run CPU scheduler after DB changes made (from Incus) by @tomponline in #15398
- Add all projects support for storage buckets (from Incus) by @kadinsayani in #15390
- devlxd: Enable access to GET devlxd/1.0 (regression) by @MusicDin in #15435
- Add all projects support for network ACLs (from Incus) by @kadinsayani in #15369
- github: workaround LP 504 error with PPAs by @simondeziel in #15441
- Followup on
fmt.Sprint()
andfmt.Sprintf()
replacement by @simondeziel in #15437 - lxd: Improve clustering start up checks by @tomponline in #15440
- VM: Use fresh state in
expireLogsTask
by @kadinsayani in #15445 - lxd: Use
api.NewURL()
to constructnetwork-acl
result urls by @kadinsayani in #15442 - lxd: Pass
d.State
func to task functions launched by daemon by @kadinsayani in #15446 - lxd/db: Replace use of
queryScan
withquery.Scan
by @kadinsayani in #15444 - Add all projects support for networks (from Incus) by @kadinsayani in #15392
- api: On file push to containers, only change uid/gid if it fits within uidmap range by @skozina in #15400
- Random assorted tweaks by @simondeziel in #15443
- lxd: When shutting down by request ensure non-error exit status by @tomponline in #15447
- lxd/device: Only remove GPU CDI device files for device being started by @kadinsayani in #15451
- github: actions/install-lxd-runtimedeps only install
yq
if not there already by @simondeziel in #15452 - Tweak package/command dependencies by @simondeziel in #15453
- api: Improve logging on file push by @skozina in #15448
- Improve parsing of USB vendor, product, class and subclass IDs by @simondeziel in #15454
- lxd: Allow shutdown during cluster database initialisation by @tomponline in #15436
- lxc/config: Make the images remote static by @markylaing in #15456
- lxc/config: Allow overriding connection arguments by @markylaing in #15455
- build(deps): bump github.com/minio/minio-go/v7 from 7.0.90 to 7.0.91 by @dependabot in #15457
- build(deps): bump github.com/NVIDIA/nvidia-container-toolkit from 1.17.5 to 1.17.6 by @dependabot in #15459
- build(deps): bump actions/download-artifact from 4.2.1 to 4.3.0 by @dependabot in #15465
- build(deps): bump github/codeql-action from 3.28.15 to 3.28.16 by @dependabot in #15464
- doc: Move contributing out of "Getting Started" by @MggMuggins in #15450
- lxc/completions: Generalise completions for top level API resources by @markylaing in #15458
- lxd: No need to call /1.0 repeatedly in waitready by @tomponline in #15468
- lxc/completion: Use filters when completing remotes by @markylaing in #15467
- lxc: Refactor file completion by @markylaing in #15476
- Update Go modules by @simondeziel in #15474
- lxc: Image alias/fingerprint completion by @markylaing in #15471
- lxc: Refactor snapshot completions by @markylaing in #15473
- lxc/completion: Use
strings.HasPrefix
overstrings.Contains
by @markylaing in #15481 - lxc: Config option completion by @markylaing in #15470
- lxc/completion: use
strings.HasPrefix()
to check for default remote name by @simondeziel in #15483 - Cluster: Add
skip
mode tolxc cluster restore
command by @gabrielmougard in #15267 - Storage: Fix snapshot expiry by @roosterfish in #15486
- Storage: Skip GPT alt‐header move on non-GPT disks (handle
sgdisk
exits 2 & 3) by @kadinsayani in #15487 - lxd: Make d.gateway.Cluster available even if OpenCluster returns with PreconditionFailed by @tomponline in #15485
- lxd: Rework waitready to use contexts and server-side timeout support by @tomponline in #15495
- lxd: Generate server-side initiated web socket pings for remote console connections by @tomponline in #15491
- Storage: Improve error message wording in
CreateInstanceFromConversion
by @kadinsayani in #15496 - lxd: Use proper status for error by @hamistao in #15490
- Use nil payload on websocket.PingMessage by @simondeziel in #15498
- doc: update admonitions for microcloud integrated docs by @minaelee in #15499
- Document
core.debug_address
by @MggMuggins in #15494 - lxd: Use uint64 for waitready timeout flag for consistency with server side by @tomponline in #15501
- lxd: Retry improvements (from Incus) by @tomponline in #15472
- Switch to Go 1.24 and update Go modules by @simondeziel in #15497
- lxd/db/migration: use
%q
specifier to quoteentity
by @simondeziel in #15503 - github: Add KEV matching to security alerts by @hamistao in #15500
- golangci-lint: enable testifylint by @simondeziel in #15504
- lxc/cluster: Improve error message when evacuating offline member by @nmezhenskyi in #15505
- doc/idmap: Clarify subuid/subgid configuration (from Incus) by @minaelee in #15423
- Stop generating
fmt.Errorf
calls without format directives inlxd-generate
by @markylaing in #15507 - lxc: Add missing completions for top level commands by @markylaing in #15477
- lxd/auth/oidc: Use hkdf from stdlib by @markylaing in #15509
- lxd/response/swagger: annotate individual strucs for nolint:unused by @simondeziel in #15508
- Replace
fmt.Errorf()
byerrors.new()
by @simondeziel in #15502 - lxd/response/swagger: silence noise from
unused
linter by @simondeziel in #15514 - Fan tests by @simondeziel in #15488
- Misc improvements by @simondeziel in #15513
- Add
perfsprint
linter by @simondeziel in #15512 - build(deps): bump github/codeql-action from 3.28.16 to 3.28.17 by @dependabot in #15519
- Storage: Fix nested transaction in
storagePoolVolumeUpdateUsers
by @roosterfish in #15526 - Storage: Update instance backup file when root vol pool gets updated by @roosterfish in #15527
- Storage: Fix snapshot expiry date test regression by @roosterfish in #15528
- lxd/device: Skip address conflict validation for instance NIC rename by @kadinsayani in #15510
- github: Update repo of lp-snap-build by @tomponline in #15530
- Cluster: Add cluster target response forwarding to storage volume snapshot
GET
handler by @kadinsayani in #15536 - Update absolute docs links by @minaelee in #15538
- doc/howto/snap: update snap store proxy to enterprise store by @minaelee in #15540
- doc: use double instead of single quotes around relatedlinks by @minaelee in #15539
- shared/cancel: Reworks Canceller to not embed Context by @tomponline in #15535
- Auth: Maintain permissions on instance move by @markylaing in #15534
- Doc: Update storage volumes > Create an instance by @Kxiru in #15469
- CLI: Improve error messages by @kadinsayani in #15544
- doc: add info about snaps and user idmaps by @minaelee in #15547
- Remove
lxc-to-lxd
by @simondeziel in #15545 - Database: Adds image.ToAPI() and uses it by @tomponline in #15548
- Improve migration API error handling (from Incus) by @kadinsayani in #15537
- lxd/db/cluster/images: Only populate update image source if found by @tomponline in #15555
- lxd/device/nic/bridged: Handle invalid configuration (from Incus) by @kadinsayani in #15553
- build(deps): bump actions/setup-go from 5.4.0 to 5.5.0 by @dependabot in #15556
- build(deps): bump actions/dependency-review-action from 4.6.0 to 4.7.0 by @dependabot in #15557
- build(deps): bump golang.org/x/tools from 0.32.0 to 0.33.0 by @dependabot in #15563
- build(deps): bump github.com/miekg/dns from 1.1.65 to 1.1.66 by @dependabot in #15565
- build(deps): bump github.com/osrg/gobgp/v3 from 3.36.0 to 3.37.0 by @dependabot in #15567
- build(deps): bump github.com/vishvananda/netlink from 1.3.0 to 1.3.1 by @dependabot in #15566
- Minor fixes by @simondeziel in #15578
- github: improve efficiency of lxc/lxd-agent bin size checks by @simondeziel in #15577
- doc: reword move instances to migrate by @minaelee in #15575
- github: only check lxc/lxd-agent bin sizes of not built for coverage by @simondeziel in #15579
- Prevent server certificate deletion by @markylaing in #15583
- Avoid integer overflows by @simondeziel in #15581
- staticcheck.conf: add dedicated config to ignore ST1005 by @simondeziel in #15580
- tests: Switch clustering test subnet (from Incus) by @simondeziel in #15592
- tests: Fix
command not found
error by @kadinsayani in #15593 - Storage: Add target request forwarding to
storagePoolVolumeTypeCustomBackupsGet
and consolidate functions into one database transaction instoragePoolVolumeTypeCustomBackupsPost
by @kadinsayani in #15576 - Build
liblxc
as part ofmake deps
by @simondeziel in #15541 - gomod: Update dependencies by @tomponline in #15598
- build(deps): bump github/codeql-action from 3.28.17 to 3.28.18 by @dependabot in #15614
- build(deps): bump actions/dependency-review-action from 4.7.0 to 4.7.1 by @dependabot in #15615
- build(deps): bump github.com/minio/minio-go/v7 from 7.0.91 to 7.0.92 by @dependabot in #15600
- doc: add info about Ubuntu Pro for instances by @minaelee in #15620
- test: Use
yq
raw output by @tomponline in #15624 - storage: Fix typo in cephobject bucket name prefix error by @MusicDin in #15623
- util/http: Improve etag error message to guide towards a solution by @edlerd in #15585
- github: ask codeql to check actions themselves by @simondeziel in #15626
- Improve CI setup for
liblxc
support by @simondeziel in #15632 - Add
make env
target by @simondeziel in #15631 - Improve usability of
LXD_INSPECT=1
by @simondeziel in #15630 - docs: add troubleshooting guide for gpu pass-through issue by @minaelee in #15629
- Revert "Storage: Update instance backup file when root vol pool gets updated" by @roosterfish in #15627
- test/main: catch errors in pipelines by @simondeziel in #15594
- Use
net.JoinHostPort()
instead offmt.Sprintf("%s:%d", host, port)
by @simondeziel in #15628 - Daemon: Extend
waitready
with networks and storage pools by @roosterfish in #15543 - test/suites/network_acl: verify firewall rules by @simondeziel in #15636
- Improve
LXD_INSPECT=1
sessions by @simondeziel in #15635 - Replace
ValueInSlice
withslices.Contains
by @kadinsayani in #15584 - Documentation: Update Storage docs - Move or Copy a Volume [WD-21424] by @Kxiru in #15551
- Micro-optimisations (follow-up to #15584) by @kadinsayani in #15589
- Network: Improve checking parent interface in use for physical networks by @nmezhenskyi in #15489
- lxd/seccomp: allow unprivileged whiteout creation by @mihalicyn in #15634
- storage: Ensure storage bucket config is applied during bucket activation by @MusicDin in #15590
- test/suites/clustering: check network statuses with full line patterns by @simondeziel in #15637
- Build tweaks by @simondeziel in #15641
- Test: Add timeout to
ceph status
command by @roosterfish in #15645 - Add
musttag
linter now to catch newly missed tags by @simondeziel in #15649 - API: Add missing 'version' struct tag by @roosterfish in #15647
- Storage: Fix volume rename DB record update order by @roosterfish in #15646
- Makefile: use
git rev-parse HEAD
to get current commit hash by @simondeziel in #15652 - gomod: Update dependencies by @simondeziel in #15656
- Daily caching of external assets by @simondeziel in #15655
- API: Add missing struct tags (musttag) by @roosterfish in #15657
- Enable some optional shellchecks checks. by @simondeziel in #15662
- idmap: Add missing struct tags (musttag) by @roosterfish in #15666
- Update install docs to split between build and runtime/test depencies by @simondeziel in #15665
- API: Revert linter fixes and use legacy tags instead by @roosterfish in #15670
- Documentation: Update Network docs - Configure networks [WD-22189] by @Kxiru in #15638
- Makefile: add
make tics
target by @simondeziel in #15671
New Contributors
- @kolyshkin made their first contribution in #15091
- @pamudithaA made their first contribution in #15228
- @Kxiru made their first contribution in #15206
- @skozina made their first contribution in #15155
- @kkovacs made their first contribution in #14589
Full Changelog: lxd-6.3...lxd-6.4