Announcement
- Announcement: https://discourse.ubuntu.com/t/lxd-6-9-has-been-released/84211
- Release notes: https://canonical.com/lxd/docs/latest/reference/release-notes/release-notes-6.9/
What's Changed
- storage: Fix typo in metadata configuration by @MusicDin in #18173
- storage/connectors: Perform iSCSI non-persistent discovery by @MusicDin in #18164
- storage/connector: Delete iSCSI device using write-only permission by @MusicDin in #18176
- github: tweak
tests/clusterto start with candidate channel by @simondeziel in #18182 - Server: Fix local config being wiped out by reverter by @tomponline in #18180
- Minor fixes by @simondeziel in #18184
- github: install
pylintin TiCS job by @simondeziel in #18185 - Replicator and cluster link fixes for 6.8 release by @kadinsayani in #18175
- Add helper for compressing JSON responses by @nmezhenskyi in #18125
- Network: Dynamic OVN address updates by @roosterfish in #18156
- Fix operation entity URLs for storage volumes/backups/snapshots by @markylaing in #18167
- build(deps): bump the gomod group with 2 updates by @dependabot[bot] in #18188
- build(deps): bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #18190
- github:
actions/download-miniohas no more use for current LXD by @simondeziel in #18174 - Identity API fixes by @markylaing in #18177
- Adjust ZFS promote tests to better represent our use case by @jonathan-conder in #17952
- lxd/events: Add foundation for security event emission and routing by @tugbataluy in #18027
- doc: append version number in RTD version switcher flyout menu by @minaelee in #18202
- CLI: Fix bad rendering on error during import by @roosterfish in #18206
- doc: add custom search ranking, demote manpages by @minaelee in #18209
- build(deps): bump gitpython from 3.1.46 to 3.1.47 in /doc by @dependabot[bot] in #18208
- lxd/security: Emit authn security events at authentication boundary points by @tugbataluy in #18144
- lxd/storage/drivers/utils_ceph: use legacy CephFS mount syntax on kernel < 5.17 by @simondeziel in #18192
- lxd/events: lxd: Add authorization security event emission (authz_fail and authz_admin) by @tugbataluy in #18159
- Drop support for image import from client-specified URL by @nmezhenskyi in #18210
- Prepare for
core26by @simondeziel in #18216 - doc: fix give feedback button by @minaelee in #18213
- github: use
actions/lp-snap-buildfromcanonical/lxd-pkg-snapby @simondeziel in #18215 - build(deps): bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #18233
- Improve triage workflow by @simondeziel in #18235
- doc: Improve metadata descriptions by @MusicDin in #18231
- doc: implement fallback for intersphinx inventories when remote is down by @minaelee in #18220
- build(deps): bump github.com/go-acme/lego/v4 from 4.34.0 to 4.35.2 in the gomod group by @dependabot[bot] in #18229
- shared/network: implement Happy Eyeballs via Go's built-in dialer by @mbeijen in #18234
- Import: Validate struct slices and config by @roosterfish in #18225
- doc: Add known issues for replicators in LXD 6.8 by @tomponline in #18238
- Backup: Perform defensive check against config by @roosterfish in #18241
- doc: update cloud-init-objects.inv and fix Makefile by @minaelee in #18246
- lxd/instance/drivers: Fix backup file error handling for refresh by @kadinsayani in #18242
- Bound YAML decoding to 1MiB by @tomponline in #18243
- Fixes from Incus by @tomponline in #18219
- storage: Add PowerStore driver by @MusicDin in #18172
- storage/powerstore: Fix header population by @MusicDin in #18250
- Set operation project on auto-created metadata entity URLs by @markylaing in #18245
- lxd/db/cluster: Apply identity certificate trigger similar to other triggers by @markylaing in #18244
- dbgen: Support composite primary keys by @markylaing in #18237
- lxd: Improvements to YAML validation by @tomponline in #18217
- lxd/instance/drivers: Fix race condition in Rename by @tugbataluy in #18254
- lxd/loki: Forward security events to Loki as OWASP audit log entries by @tugbataluy in #18251
- storage: Smaller fixes on PowerStore by @MusicDin in #18259
- lxd/instance: add riscv64 QEMU definitions by @xypron in #15892
- Use
shared.ParseCertinstead of directx509.ParseCertificateby @simondeziel in #18260 - Dbgen multi key followup by @markylaing in #18258
- Move
ioprogress.ProgressReporterto end of arg list forinstance.Startby @markylaing in #18264 - Network: Clearly separate OVN nic add and start by @roosterfish in #18257
- Misc quality improvements by @simondeziel in #18261
- lxd: Add missing storage and network operation metadata by @MusicDin in #18263
- Misc quality fixes by @simondeziel in #18268
- GitHub: Add right permissions for
schema.goby @roosterfish in #18275 - lxd/storage: Refactor EnsureImage interface by @tugbataluy in #18266
- doc: Remove unnecessary dots in Keycloak howto examples by @MusicDin in #18273
- doc: implement sphinx-llm to generate llms.txt by @minaelee in #18272
- build(deps): bump gitpython from 3.1.47 to 3.1.49 in /doc by @dependabot[bot] in #18267
- build(deps): bump the gomod group with 4 updates by @dependabot[bot] in #18276
- build(deps): bump github/codeql-action from 4.35.2 to 4.35.3 in the actions group across 1 directory by @dependabot[bot] in #18282
- lxd/storage: Address review comments from #18266 by @tugbataluy in #18283
- build(deps): bump gitpython from 3.1.49 to 3.1.50 in /doc by @dependabot[bot] in #18286
- lxd/storage: Use merged node config for local pool creation and correct storage pool config comment by @kadinsayani with @Copilot in #18270
- build(deps): bump the actions group across 1 directory with 4 updates by @dependabot[bot] in #18298
- build(deps): bump the gomod group with 5 updates by @dependabot[bot] in #18293
- Instance: Improve snapshot config validation during import by @tomponline in #18301
- test: Add regression tests for nullable BackupConfig fields by @tugbataluy in #18236
- Minor tweaks by @tomponline in #18302
- lxd/metrics: Include
slab_reclaimableinMemAvailableby @crishoj in #18289 - client/lxd/instances: Switch ExecInstance to use concurrent connections by @tomponline in #18299
- lxd/events: Add security sys user events by @tugbataluy in #18211
- lxd/db/dbgen: Fix govet "inline" error by @markylaing in #18306
- build(deps): bump github.com/golangci/golangci-lint/v2 from 2.11.4 to 2.12.2 in /tools in the gomod group across 1 directory by @dependabot[bot] in #18280
- go: run
go mod tidynow thatgolang.org/x/expis no longer a direct dep by @simondeziel in #18307 - Ensure
make update-schemacan write to all needed files by @kadinsayani in #18308 - Add security events documentation by @tugbataluy in #18262
- doc: remove unnecessary myst cheat sheet by @elijahgreenstein in #18310
- lxc/image: fix architecture filter to match displayed values by @yogarajalakshmi-s in #18292
- Remove
actions/require-gha-pinning(replaced byzizmor) by @simondeziel in #18314 - doc: Update PowerStore driver reference and metadata configuration descriptions by @elijahgreenstein in #18316
- lxd/storage/backend/lxd: Validate snapshot.ExpiresAt is non-nil by @tomponline in #18320
- Tests workflow improvements by @simondeziel in #18315
- doc: update PureStorage, HPE Alletra references by @elijahgreenstein in #18327
- Cluster: Don't use the proxy for internal connections (from Incus) by @nmezhenskyi in #18338
- lxd/daemon: stop exporting
LVM_SUPPRESS_FD_WARNINGS=1by @simondeziel in #18335 - build(deps): bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #18336
- Replicator fixes by @kadinsayani in #18207
- go: Update Go minimum version to 1.26.3 by @simondeziel in #18326
- Warn if a pool is unavailable but has not patch to apply by @simondeziel in #18334
- Remove broken links and use more direct ones by @simondeziel in #18328
- shared/validate: reject descending IPv4 and IPv6 ranges by @immanuwell in #18331
- github: Simplify cluster test invocation for cross-track upgrades by @gajeshbhat in #18287
- doc: update links following removal of MyST cheat sheet by @elijahgreenstein in #18325
- test/lint/golangci: use official URL to install tool by @simondeziel in #18323
- Improve
GetCPUand add tests for various/proc/cpuinfoformat by @simondeziel in #18321 - lxd/storage/drivers: Fix LVM thin-pool usage calculation by @thealpha93 in #18311
- Storage: Freeze instance before multi-volume snapshot by @tomponline in #18340
- Cluster connect use context by @tomponline in #18329
- test/includes: Move clustering_image_proxy_bypass to test_group_cluster by @nmezhenskyi in #18341
- [minor] Address multiple linter warnings by @simondeziel in #18324
- Check for
scan.Err()by @simondeziel in #18349 - Remove dead
shared/networkcode by @simondeziel in #18352 - Remove dead
lxd/util/netcode by @simondeziel in #18348 - lxd/db/cluster: Migrate nodes_cluster_groups to dbgen by @kadinsayani in #18339
- Add developer guidance comments and tests for entity types by @kadinsayani in #18342
- dbgen: Use a comment instead of the tag for specifying primary key by @markylaing in #18343
- dbgen: Fix comments by @markylaing in #18357
- riscv64: disable ACPI for RISC-V virtual machines by @xypron in #18318
- lxd-agent/metrics: check for scan.Err() by @immanuwell in #18363
- lxd/storage/drivers: Fix LVM thin-pool usage calculation accuracy by @thealpha93 in #18360
- Events: Fix hung goroutine on ReadJSON by @tomponline in #18359
- Improve events websocket disconnection logic in the client by @markylaing in #18365
- driver_qemu: don't use romfile for non-x86 architectures by @xypron in #18372
- Replicator tests speedup by @simondeziel in #18380
- [minor] Extend DNS tests by @simondeziel in #18376
- Faster initial waitready by @simondeziel in #18377
- [minor] Faster
make distfor CI by @simondeziel in #18383 - Apply new code quality suggestions by @simondeziel in #18369
- Makefile improvements by @simondeziel in #18374
- Generalised configuration by @markylaing in #18247
- Fix listing images with
--all-projectsflag by @nmezhenskyi in #18371 - Address code quality feedback by @simondeziel in #18355
- Migrate operations to dbgen by @markylaing in #18356
- Cluster: Don't use the proxy for cluster join requests by @nmezhenskyi in #18354
- build(deps): bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #18388
- build(deps): bump the gomod group with 6 updates by @dependabot[bot] in #18385
- storage: Address possible iSCSI race conditions by @MusicDin in #18332
- lxd/instance/drivers/driver/qemu: missing secure boot firmware message by @xypron in #18375
- Update
operationsGetByTypeby @markylaing in #18358 - Remove requestor auditor and split requestor into two types by @markylaing in #17813
- Switch to http.ServeMux by @tomponline in #18309
- Improve logging for crash consistent multi-volume snapshotting by @tugbataluy in #18381
- lxd/images: Follow up comment tweaks by @tomponline in #18399
- OIDC device client by @markylaing in #18300
- Feature: Optimize ZFS instance creation with image variants by @tugbataluy in #17630
- Code quality and modernize fixes by @simondeziel in #18393
- String builder improvements by @simondeziel in #18351
- storage: Rename NVMe/TCP driver mode by @MusicDin in #18367
- lxd/db/cluster: Migrate instance_profiles to dbgen by @kadinsayani in #18353
- doc: Snap commit-tracking guide by @MggMuggins in #18271
- Drop dead code by @simondeziel in #18373
- lxd/api/cluster/certificate: Don't use request context in updateClusterCertificate by @tomponline in #18404
- Remove dead migration code by @simondeziel in #18347
- Refactor replication and project state handling by @kadinsayani in #18312
- Minor quality by @simondeziel in #18406
- Core changes by @simondeziel in #18405
- Code quality improvements by @simondeziel in #18366
- lxd/device/cdi/spec: support
mesa-2604(preferred) andmesa-2404(fallback) by @simondeziel in #18407 - lxd/db/cluster: Migrate identity_provider_groups to dbgen by @kadinsayani in #18392
- Storage: Add missing parent UUIDs by @roosterfish in #18410
- Add
AGENTS.mdby @kadinsayani in #18417 - Address some TiCS abstract issues by @simondeziel in #18400
- build(deps): bump mxschmitt/action-tmate from 3.23 to 3.24 in the actions group across 1 directory by @dependabot[bot] in #18414
- build(deps): bump the gomod group with 2 updates by @dependabot[bot] in #18411
- doc: update conf.py and add js for URL migration by @elijahgreenstein in #18394
- Re-enable some snap-based tests by @simondeziel in #18419
- go: Update Go minimum version to 1.26.4 by @simondeziel in #18415
- storage: Add FC connector and PowerStore FC support by @MusicDin in #18333
- Storage: Add PowerFlex 5 support by @roosterfish in #18391
- Improve
lxd initwarnings by @nmezhenskyi in #18422 - Minor code quality improvements (20260605) by @simondeziel in #18408
- workshop: add initial definition by @morphis in #18368
- Improve file path quoting by @simondeziel in #18427
- Add
used_byfield to cluster link API and update handlers by @kadinsayani in #18421 - test/suites/lxd_user:
core26snaps have stricter rules around user sessions by @simondeziel in #18433 - doc/api-extensions: backfill anchors and add static-analysis check by @kadinsayani in #18431
- doc: update RTD project and restore "edit this page" button by @elijahgreenstein in #18435
- Storage: PowerFlex 5 follow ups and PowerStore version fix by @roosterfish in #18425
- docs: Add PowerStore examples and missing reference in list of storage drivers by @MusicDin in #18434
- lxd/storage/drivers: check for scanner.Err() in volume listing functions by @immanuwell in #18370
- Storage: Indicate use of
emptyParentUUIDin PowerFlex by @roosterfish in #18439 - Alt repo by @simondeziel in #18443
- lxd/api_replicators: Prevent duplicate replicators targeting same cluster link by @kadinsayani in #18442
- doc: direct users to information related to cryptography by @elijahgreenstein in #18445
- doc/howto/cluster_vip: fix link to keepalived.org documentation by @simondeziel in #18454
- build(deps): bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #18452
- Network: Add load balancer pools by @roosterfish in #18179
- Auth: Retry OIDC verifier initialization on start up by @markylaing in #18284
- lxd/apparmor/qemu: allow reading OpenSSL config by @simondeziel in #18461
- Fix zfs storage leak after shutdown due to lingering forkfile daemon … by @yinbin-dev in #18446
- storage: Make
powerstore.moderequired by @MusicDin in #18464 - doc: update guide to hardening security for LXD by @elijahgreenstein in #18462
- Work with modern LVM by @simondeziel in #18463
- gomod: Update deps by @tomponline in #18467
- lxd/storage/drivers/ceph_volumes: mounting snapshot read-only by @simondeziel in #18469
- Use
shared.ExitStatus()helper when ignoring LVM errors by @simondeziel in #18466 - lxd: Add missing content types for storage volume POST by @markylaing in #18457
- doc/reference: LXD 6.9 release notes by @tomponline in #18465
- test/suites/lxd_user: allow more time for slow runners by @simondeziel in #18471
- Remove
RenderSliceby @markylaing in #18401 - doc: add cross references for logging, events by @elijahgreenstein in #18444
- Rebalance raft roles during cluster member evacuation by @kadinsayani in #17911
- doc/reference: Update 6.9 release notes with updated deps by @tomponline in #18472
- Require Apparmor for CI by @simondeziel in #18473
- github: GHA runners no longer have ephemeral disks by @simondeziel in #18474
- lxd/instance_console: Remove redundant (and unsafe) write (from Incus) by @MggMuggins in #18477
- test/suites/clustering: derive the size of the large cluster based on core count by @simondeziel in #18479
- test/suites/security: use helper to wait on events showing up in logs by @simondeziel in #18476
- doc/reference: Updated zfs versions in 6.9 release notes by @tomponline in #18481
- doc/reference: Updated zfs 2.4 version in 6.9 release notes by @simondeziel in #18483
- Merge snap packaging from lxd-pkg-snap/latest-edge by @tomponline in #18482
- doc: add ui section to 6.9 release notes by @edlerd in #18484
- Reinstate snap build via Launchpad by @tomponline in #18489
- github: Fix launchpad push invocation by @tomponline in #18492
- Launchpad push fixes by @tomponline in #18493
- Network: Load balancer pool followup by @roosterfish in #18487
- lxd/storage/block: Exit gracefully when blkid is denied under snap confinement by @skatsaounis in #18491
- lxd-private integration by @tomponline in #18495
- snap/qemu: bump to 10.2.1+ds-1ubuntu3.1 by @simondeziel in #18494
- build(deps): bump github.com/openfga/openfga from 1.17.1 to 1.18.0 by @dependabot[bot] in #18490
- github: Remove unnecessary git fetch launchpad call by @tomponline in #18496
- snap: pin
gpu-2604commit by @simondeziel in #18499 - github: Reinstate conditional checks on triggering launchpad snap build by @tomponline in #18498
- github: Enable git bitmap on LP trigger step by @tomponline in #18503
- doc/reference: Update 6.9 release notes with known issues by @nmezhenskyi in #18505
- doc: add impact of EDK2 update for TPM-bound disk encryption to 6.8 release notes by @simondeziel in #18504
- Release LXD 6.9 by @tomponline in #18500
New Contributors
- @mbeijen made their first contribution in #18234
- @crishoj made their first contribution in #18289
- @yogarajalakshmi-s made their first contribution in #18292
- @immanuwell made their first contribution in #18331
- @thealpha93 made their first contribution in #18311
- @yinbin-dev made their first contribution in #18446
Full Changelog: lxd-6.8...lxd-6.9