Introduction
The LXD team would like to announce the release of LXD 5.0.3!
Thank you to everyone who contributed to this release!
This is the third bugfix release for LXD 5.0 which is supported until June 2027.
License remains Apache-2.0
The LXD 5.0 LTS series (including LXD 5.0.3) remains licensed out as Apache-2.0.
Only LXD 5.20 and later are licensed out as AGPL-3.0-only.
The LXD client SDKs are licensed out as Apache-2.0 for all LXD versions.
New release signing key
Due to the move of LXD under the Canonical organisation this LTS series of LXD will now be signed by Thomas Parrott, using this key .
Bugfixes and improvements
This release includes a years worth of bugfixes and minor improvements from the development branch.
Some of the highlights include:
LXD UI support
The LXD UI is now bundled in the snap package.
It can be enabled using:
sudo snap set lxd ui.enable=true
sudo systemctl reload snap.lxd.daemon
Please see https://documentation.ubuntu.com/lxd/en/latest/howto/access_ui/ for more details.
Storage device wiping during pool creation
Adds support for a source.wipe
boolean on the storage pool, indicating that LXD should wipe partition headers off the requested disk rather than potentially fail due to pre-existing file systems.
ZFS block backed filesystem volumes
Adds support for using ZFS block backed filesystem volumes allowing the use of different file systems on top of ZFS.
This adds the following new configuration options for ZFS storage pools:
volume.zfs.block_mode
volume.block.mount_options
volume.block.filesystem
These can also be specified on a per-volume basis by dropping the volume.
prefix.
Storage pool loop file resize
Allows growing loop file backed storage pools by changing the size
setting of the pool.
VM instance generation ID support
Adds support for instance generation ID. The VM or container generation ID will change whenever the instanceâs place in time moves backwards. As of now, the generation ID is only exposed through to VM type instances. This allows for the VM guest OS to reinitialize any state it needs to avoid duplicating potential state that has already occurred:
Adds instance automatically populated configuration option volatile.uuid.generation
.
VM disk I/O cache settings
Introduces a new io.cache
property to disk
devices which can be used to override the VM caching behavior. The accepted values are: none, writeback or unsafe.
VM live migration
This adds support for performing VM QEMU to QEMU live migration for both shared storage (clustered Ceph) and local storage pools.
This requires setting migration.stateful=true
on the VM to enable live migration, and to set an appropriate size.state
value on the instanceâs root disk device.
Container NUMA CPU placement
Adds the possibility to place a set of CPUs in a desired set of NUMA nodes.
This adds the following new configuration key:
limits.cpu.nodes
: comma-separated list of NUMA node IDs or NUMA node ID ranges to place the CPUs (chosen with a dynamic value oflimits.cpu
) in.
Network allocations
Adds the ability to list a LXD deploymentâs network allocations.
Through the lxc network list-allocations
command and the --project <PROJECT> | --all-projects
flags, you can list all the used IP addresses, hardware addresses (for instances), resource URIs and whether it uses NAT for each instance
, network
, and network forward
.
E.g.
lxc network list-allocations
+----------------------+---------------------------+---------+------+------------------+
| USED BY | ADDRESS | TYPE | NAT | HARDWARE ADDRESS |
+----------------------+---------------------------+---------+------+------------------+
| /1.0/networks/lxdbr0 | 10.4.148.1/24 | network | true | |
+----------------------+---------------------------+---------+------+------------------+
| /1.0/networks/lxdbr0 | fd42:8bbb:4904:c499::1/64 | network | true | |
+----------------------+---------------------------+---------+------+------------------+
Storage volume snapshot copying to remote targets
Adds support for copying storage volume snapshots to remotes as new volumes.
E.g.
lxc storage volume create default foo
lxc storage volume snapshot default foo snap0
lxc storage volume copy default/foo/snap0 myremote:default/foosnap0
Storage volume copied successfully!
List operations from all projects
Adds the --all-projects
flag (and supporting API extension) to the lxc operation list
command.
Per-NIC device priority with cgroup1 and cgroup2 support
Introduces a new per-NIC limits.priority
option that works with both cgroup1 and cgroup2 unlike the deprecated limits.network.priority
instance setting, which only worked with cgroup1.
Instance move improvements
Provides the ability to use flags --profile
, --no-profile
, --device
, and --config
when moving an instance between projects and/or storage pools.
As usual, all of those are considered to be minor usability improvements or relevant to LXDâs security. Major features such as those requiring data migration or database changes are never backported as part of an LTS point release.
Complete changelog
Here is a complete list of all changes in this release:
Full commit list
- lxd/instances_post: Fix copying profiles during instance copy
- lxc/migrate: Make live migration error message more helpful
- test: Fix race against snapshot prune task in test_storage_volume_snapshots
- lxd/db/storage/pools: Adds GetStoragePools in the style of GetNetworkForwards
- lxd/db/storage/pools: Update GetStoragePoolInAnyState and GetStoragePool to use GetStoragePools
- lxd/cluster/resolve: Update ResolveTarget to avoid starting transaction if target is local server
- lxd/state/state: Adds StartTime to State
- lxd/response: Updates forwardedResponseToNode and forwardedResponseIfTargetIsRemote to accept state
- lxd/api/1.0: forwardedResponseIfTargetIsRemote usage
- lxd/api/metrics: forwardedResponseIfTargetIsRemote usage
- lxd/api/cluster: clusterNodeStatePost usage of forwardedResponseToNode
- lxd/network/forwards: forwardedResponseIfTargetIsRemote usage
- lxd/network/peer: forwardedResponseIfTargetIsRemote usage
- lxd/networks: forwardedResponseIfTargetIsRemote usage
- lxd/resources: forwardedResponseIfTargetIsRemote usage
- lxd/storage/pools: forwardedResponseIfTargetIsRemote usage
- lxd/storage/volumes: forwardedResponseIfTargetIsRemote usage
- lxd/storage/volumes/backup: forwardedResponseIfTargetIsRemote usage
- lxd/storage/volumes/snapshots: forwardedResponseIfTargetIsRemote usage
- lxd/api/1.0: Reduce calls to d.State()
- lxd/api/cluster: Reduce calls to d.State()
- lxd/api/internal: Reduce calls to d.State()
- lxd/api/internal/recover: Reduce calls to d.State()
- lxd/api/metrics: Reduce calls to d.State()
- lxd/api/project: Reduce calls to d.State()
- lxd/api/vsock: Reduce calls to d.State()
- lxd/backup: Reduce calls to d.State()
- lxd/certificates: Reduce calls to d.State()
- lxd/daemon: Adds StartTime to State
- lxd/daemon: Reduce calls to d.State()
- lxd/daemon/images: Decouple imageOperationLock and ImageDownload from daemon
- lxd/devlxd: Assign d.State() to own variable
- lxd/events: Assign d.State() to own variable
- lxd: Update image functions to accept state.State rather than Daemon
- lxd/network/forwards: Reduce calls to d.State()
- lxd/network/peer: Reduce calls to d.State()
- lxd/networks: Reduce calls to d.State()
- lxd/resources: Reduce calls to d.State()
- lxd/storage/pools: Reduce calls to d.State()
- lxd/storage/volume: Reduce calls to d.State()
- lxd/storage/volumes/backups: Reduce calls to d.State()
- lxd/storage/volumes/snapshot: Reduce calls to d.State()
- lxd: liblxc.HasAPIExtension usage
- lxd/instance/drivers/driver/lxc: Simplify Shutdown timeout handling
- shared/api: Adds StoragePoolState, ClusterMemberSysInfo and ClusterMemberState struct types
- lxd/db/storage/pools: Exports StoragePoolCreated and StoragePoolPending constants
- lxd/db: Storage pool state constant usage
- lxd/storage/pool/load: Adds LoadByRecord and updates LoadByName to use it
- client: Adds GetClusterMemberState function
- doc/rest-api: Refresh swagger YAML
- lxd/db/images: Use explicit type for each argument in getNodesByImageFingerprint
- lxd/db/instances: Remove use of c.GetNodeOfflineThreshold in GetProjectAndInstanceNamesByNodeAddress
- lxd/instances/get: tx.GetProjectAndInstanceNamesByNodeAddress usage
- lxd/operations: Remove use of tx.GetNodeOfflineThreshold
- lxd/instances/get: Pass request context to transaction in doInstancesGet
- lxd/instances/get: Donât pass daemon to doInstancesGet
- lxd/api: Auto-forward to the UI if accessed from browser
- lxd/api: Handle UI sub-paths
- doc/clustering: add link to YouTube video about cluster groups
- Add mipsle and mips64le architecture aliases
- lxd/instance/drivers/driver/lxc: Comment typo and spacing
- shared/util: Update RunCommandCLocale to pass LANGUAGE=en env var
- test: Make unix device checks less flaky
- lxd/api/cluster: Adds evacuateHostShutdownDefaultTimeout constant
- lxd/api/cluster: Adds instance already stopped detection to restoreClusterMember
- lxd/instance/drivers/driver/lxc: Switch log level to warn in networkState
- lxd/instance/operationlock: Add support for never expiring timeouts
- lxd/instance/drivers/driver/common: Adds more debug logging to onStopOperationSetup
- lxd/instance/drivers/driver/lxc: Donât wait in liblxc for container to stop in Shutdown
- lxd/instance/drivers/driver/lxc: Extend operation lock in onStopNS and onStop
- lxd/instance/drivers/driver/lxc: Donât report intermediate state during ongoing operations
- lxd/instance/drivers/driver/qemu: Avoid extra go routine to keep operationlock alive in Shutdown
- lxd/instance/drivers/driver/qemu: Use constants in statusCode
- lxc/action: Clarify --timeout and --force flags to lxc stop command
- i18n: Update translation templates
- drivers: Unify allowed filesystems variable
- lxd/migration: Remove leftover stats definitions
- lxd/instance/drivers/driver/qemu: Add QEMUDefaultCPUCores and export QEMUDefaultMemSize constants
- lxd/storage: Exports DefaultBlockSize constant
- lxd/api/cluster: Consistent import of github.com/lxc/lxd/lxd/instance/drivers
- shared/api/scriptlet: Adds InstanceResources type
- lxd/api/cluster: Improve errors in evacuateClusterMember
- lxd/api/cluster: Restructure evacuateClusterMember to accomodate future instance placement scriptlet integration
- doc: Rename clustering-assignment to clustering-instance-placement
- lxd/instance/drivers: Add location to instance creation event.
- lxd/ip/link: Adds SetAllMulticast function
- lxd/device/nic/macvlan: Enable all multicast processing on VM macvtap host interface
- lxd/storage: Add location to local volume creation event.
- lxd/storage/filesystem: Moves ResolveMountOptions to filesystem package
- lxd/storage/drivers: filesystem.ResolveMountOptions usage
- lxd/storage/drivers/utils: Removes unused resolveMountOptions function
- lxd/device/disk: Fix incorrect splitting of raw.mount.options in createDevice
- lxd/device/device/utils/disk: Removes readonly argument from DiskMount
- lxd/device/device/utils/unix: DiskMount usage
- lxd/instance/drivers/driver/qemu: device.DiskMount usage in Start
- lxd/device/disk: DiskMount usage in createDevice
- doc/images: move out unrelated docs
- client: add TransportWrapper to ConnectionArgs
- test: Update disk device tests to check for mount flag support in raw.mount.options
- client: fix cast to http.Transport when using TransportWrapper
- doc/server: bring back doc for
net.core.bpf_jit_limit
- doc/images: draft new structure for the images section
- doc/images: move content
- doc/metrics: greatly simplify the clusterâs scrape_configs
- lxd/db/node: s/containers/instances/
- lxd/db/node/test: s/containers/instances/
- lxd/db/node/test: s/container/instance/ in comments
- lxd/backup : update the error message when âbackup/index.yamlâ canât be found
- drivers: Add source indicator to Volume
- storage: Add hasSource option to VolumeDBCreate
- storage: Update VolumeDBCreate usage
- lxd/storage/drivers/driver/btrfs/utils: Only check for minimum number of columns in
btrfs qgroup show
command - doc/storage: explain how optimized instance transfer works
- doc/api: add related link to blog post about the LXD API
- doc/index: give a better introduction to the online demo
- doc/architectures: clean up architecture reference
- lxd: allow IdmappedStorage() to detect filesystems
- shared/api/scriptlet/instance: Adds InstancePlacement type and reason constants
- lxd/api/cluster: Avoid calling inst.Project() multiple times
- lxd/cluster/gateway: Removes unimplemented Snapshot function
- lxd/api/internal: Avoid calling d.gateway.Snapshot in internalRAFTSnapshot
- doc: use âentityâ instead of âobjectâ to avoid confusion
- doc: use âdirectoryâ instead of âfolderâ for consistency reasons
- drivers: Add Volume.Clone function
- storage: Use Volume.Clone() in Pool.GetVolume()
- doc/images: Clean up âAbout imagesâ
- lxd: hotplug mounts
- Makefile: Immediately fail on lint errors
- lxd: User friendly error for missing volume.
- backend_lxd: Pass config when creating instance from backup
- backend_lxd: Pass config when renaming instances and custom volumes
- volume: Update IsBlockBacked
- backend_lxd: Check vol.IsBlockBacked
- lvm: Fix logging
- ceph: Set mountFilesystemProbe to true in ListVolumes
- lvm: Set mountFilesystemProbe to true in ListVolumes
- storage: Drop call to Volume.SetMountFilesystemProbe
- doc/images: Clean up âHow to use remote imagesâ
- doc/images: Clean up âRemote image serversâ
- client: Allow empty target if storage location is ânoneâ.
- lxc/storage_volume: Fixes --destination-server flag when copying between remotes.
- i18n: Updates translations.
- lxd/apparmor: fix AppArmor forkproxy profile
- lxd/db: Remove needless semi-colons in queries
- lxd/instance/drivers/driver/lxc: s/container/instance/
- backend_lxd: Handle zvols in EnsureImage
- zfs: Support block mode
- test: Add zfs storage tests
- lxc/migration: Update protobuf with zfs zvol support
- lxd/migration: Add HeaderZvols feature
- migration,storage: Check zvol support
- lxd/api/1.0: Improve errors
- lxd/db/images: Removes unused GetExpiredImagesInProject function
- lxd/images: Reworks pruneExpiredImages to not remove image files/volumes until image is expired in all projects
- lxd/instance/drivers/driver/lxc: Remove erroneous empty log error
- device/disk: Donât use RBD for FS custom volumes
- cgroup: properly set soft mem limit for cgroup-v2
- test: Updates image expiry tests to check for proper project handling
- instance: differentiate msg for creation/deletion of snapshots
- lxd/storage/backend/lxd: Fixed incorrect logic in EnsureImage that was breaking BTRFS tests
- lxd/storage/backend/lxd: Improve log message in EnsureImage
- lxd/storage/backend/lxd: Donât update image volumeâs description to poolâs description in EnsureImage
- btrfs: Restructure optimized refresh
- btrfs: Set parent correctly for optimized refresh
- test: basic: skip seccomp tests if we are under seccomp filter
- doc/images: Clean up âManage imagesâ
- doc/images: Clean up âCreate imagesâ
- doc/images: Clean up âCopy and import imagesâ
- doc/images: Clean up âAssociate profilesâ section
- doc/images: Clean up âImage formatâ
- ceph: Check ceph config file for key
- lxd/apparmor: Add microceph to ceph paths
- lxd/main_init_interactive: Remove trust passwords
- lxd/db/network/forwards: Updates GetProjectNetworkForwardListenAddressesByUplink to handle forwards defined on uplink network itself
- lxd/network/driver/bridge: Updates getExternalSubnetInUse to use common getExternalSubnetInUse function
- lxd/network/driver/ovn: Updates getExternalSubnetInUse to use n.common.getExternalSubnetInUse
- lxd/network/driver/common: Adds shared getExternalSubnetInUse function
- lxd/network/driver/ovn: Clarify address conflict errors
- lxd/network: Update for stable-5.0
- lxd/storage/drivers/generic/vfs: Improve logging in genericVFSCreateVolumeFromMigration
- lxd/migrate/instance: Improve migrationSourceWs errors
- lxd/migrate/instance: Improve migrationSink errors and logging
- lxd/migrate/storage/volumes: Improve migrationSink errors
- lxd/operations: Improves operationWebsocketGet error
- lxd/instance/snapshot: Fix wrapping and quoting of errors in snapshotPost
- lxd/migrate: Improve errors in {migrationSourceWs,migrationSink}.Connect
- lxd/migrate/instance: Clean up operation on failure
- lxd/main/forkmigrate: Improve error in cmdForkmigrate
- lxd/instance/drivers/driver/common: Allow onStopOperationSetup to inherit Start operation
- lxd/instance/drivers/driver/common: Adds validateStartup function
- lxd/instance/drivers/driver/qemu: Call d.common.validateStartup from validateStartup
- lxd/instance/drivers: d.validateStartup usage
- lxd/instance: Removes unused SaveConfigFile functions
- lxd/migrate/instance: Update checkForPreDumpSupport to not depend on liblxc
- lxd/instance/instance/interface: Adds operation lock to CriuMigrationArgs
- lxd/instance/drivers/driver/lxc: Adds reverter to initLXC
- lxd/instance/drivers/driver/lxc: Call d.UpdateBackupFile from startCommon
- lxd/instance/drivers/driver/lxc: Comment endings
- lxd/instance/drivers/driver/lxc: Simplify ctx var creation in Start
- lxd/instance/drivers/driver/lxc: Rework the way Start calls Migrate when doing stateful start
- lxd/instance/drivers/driver/lxc: Rework Stop to fix stateful stop
- lxd/instance/drivers/driver/lxc: Rework Snapshot to fix stateful snapshots
- lxd/instance/drivers/driver/lxc: Cleanup Restore
- lxd/instance/drivers/driver/lxc: Removes unused liblxc.MIGRATE_FEATURE_CHECK check
- lxd/instance/drivers/driver/lxc: Remove UpdateBackupFile call from Migrate when restoring stateful checkpoint
- lxd/instance/drivers/driver/lxc: Fix liblxc initialisation in Migrate
- client: Donât indicate live migration when copying snapshots in CopyInstanceSnapshot
- test: Update CRIU tests
- lxd/instance: Improve stateful copy error message
- Move C and therefore CGO out of shared package
- doc: fix in documentation for
physical
NIC with thenetwork
option - doc: add a page about troubleshooting failing instances
- doc/devices/disk: add video link and clarify content
- doc/devices/unix-*: add link to YouTube video
- doc/devices/unix-*: add title for YouTube video
- Move socket to linux
- doc/storage: Document zfs.block_mode
- lxd/instance/drivers/driver/lxc: Prevent panic in cgroup if liblxc not initialized
- lxd/instance/drivers/driver/lxc: Adds is running check to Metrics
- lxd/api/metrics: Detect and ignore ErrInstanceIsStopped error from inst.Metrics()
- lxd/instance/drivers/driver/lxc: Only intialise cgroup reader/writer when needed
- lxc/query: Also handle json UnmarshalTypeError
- lxc/query: Validate actions
- i18n: Update translation templates
- lxd/device/nic/ipvlan: Configure host-side routes and neighbour proxy entries with LXD
- lxd/instances: Fix incorrect alias path in instanceSFTPCmd
- lxd/instances/get: Correct comment terminology and endings
- lxd/instances/get: Use if/else if for clarity
- lxd/instances/get: Lose unnecessary recursionStr var
- lxd/instances/get: Fix filtering in non-recursive mode
- lxd/instance/filter: Removes unused function Filter
- doc/storage: add link to ZFS block mode spec
- doc/projects: add link to projects tutorial
- lxd/db/instances: Add Instance type and rework GetProjectAndInstanceNamesByNodeAddress into GetInstancesByMemberAddress to return them
- lxd/db/instances: Remove unused GetProjectInstanceToNodeMap function
- lxd/instances/get: Reworks doInstancesGet to use tx.GetInstancesByMemberAddress
- lxd/instances: Update instanceLoadNodeProjectAll to accept a context
- lxd/instances/get: Limit the scope of localInstancesByID
- lxd/instances/get: Keep recursion and clauses logic together in doInstancesGet
- lxd/instances/get: Sort the result by project and then name in doInstancesGet
- lxd/instances/get: Simplify non-recursive URL output in doInstancesGet
- lxd/storage/backend/lxd: Pass volume config into SetVolumeQuota in SetInstanceQuota
- lxd/storage/drivers/driver/ceph/volumes: Log volume name during mount
- lxd/storage/drivers/driver/lvm/volumes: Log volume name during mount
- lxd/storage/drivers/zfs: donât force atime to on
- lxd/storage/drivers/driver/zfs/volumes: Adds activateVolume and deactiveVolume functions
- lxd/storage/drivers/driver/zfs/volumes: Improve mount and unmount logging consistency
- lxc/storage/drivers/driver/zfs/volumes: Only call InUse once during SetVolumeQuota
- lxd/storage/drivers/driver/zfs/volumes: Fix block mode filesystem volume resize in SetVolumeQuota
- test: Update zfs block mode tests
- lxd-agent: Retry getting vsock client
- test: test overlapping addresses between proxy device and network forward
- instance: Check that there is no collisions between
proxy
device and a network fwd listenAddr - refactor: create
ProxyParseAddr
as part of thenetwork
pkg - refactor: update
ProxyParseAddr
references - refactor: remove old
ProxyParseAddr
func indevice
pkg - doc/debugging: remove information about
lxd --debug
- doc/troubleshooting: move example for instance troubleshooting
- lxd/ip/link: Add support for applying Link setings atomically at Add time
- lxd-agent/network: ip.Link usage in reconfigureNetworkInterfaces
- lxd/device/device/utils/network: ip.Link usage in NetworkSetDevMTU
- lxd/device/device/utils/network: ip.Link usage in networkSRIOVSetupContainerVFNIC
- lxd/device/infiniband/physical: ip.Link usage in Start
- lxd/device/infiniband/sriov: ip.Link usage in startContainer
- lxd/device/nic/macvlan: ip.Link usage in Start
- lxd/device/nic/physical: ip.Link usage in Start
- lxd/network/driver/bridge: ip.Link usage for setting MTU
- lxd/network/driver/physical: ip.Link usage for setting MTU
- lxd/ip/link/veth: Restructure Veth type to replace PeerName with Peer Link field
- lxd/network/driver/ovn: ip.Link usage for setting MTU
- lxd/network/driver/ovn: ip.Veth Peer usage
- lxd/device/device/utils/network: Reworks networkCreateVethPair to use ip.Veth settings
- lxd/device/nic/macvlan: Update macvlan to apply settings to host interface atomically
- lxd/network/openvswitch/ovs: Update BridgeAdd to accept MAC and MTU settings
- lxd/network/driver/ovn: ovs.BridgeAdd usage
- lxd/network/driver/bridge: Create and apply bridge interface settings atomically
- lxd: Indent swagger docs to indicate preformatted blocks.
- lxd/sys: Updates comments to ensure they are properly gofmtâd.
- lxd/storage: Updates comments to ensure they are properly gofmtâd.
- lxd/storage/drivers: Updates comments to ensure they are properly gofmtâd.
- lxd/node: Updates comments to ensure they are properly gofmtâd.
- lxd/firewall/drivers: Updates comments to ensure they are properly gofmtâd.
- lxd/endpoints: Updates comments to ensure they are properly gofmtâd.
- lxd/db/schema: Updates comments to ensure they are properly gofmtâd.
- lxd/db/operationtype: Updates comments to ensure they are properly gofmtâd.
- lxd/db: Updates comments to ensure they are properly gofmtâd.
- lxd/device: link.SetAddress usage
- lxd/network/driver/bridge: bridge.SetAddress usage
- lxd/storage/backend/lxd: No need to activate VMâs block volume in UpdateInstanceBackupFile
- lxd/device/none: Allow hot plugging for VMs
- lxd/instance/drivers/driver/qemu: Donât collect metrics unless VM is running
- client/lxd: Handle error responses from LXD in rawWebsocket
- lxd-agent/server: Correct error handling in createCmd
- lxd/daemon: Correct error handling in createCmd
- lxd/storage/drivers: Match ceph keyring lookup logic
- lxd/storage/zfs: Donât force the zpool creation
- api: storage_pool_source_wipe
- lxd/storage: Add support for source.wipe
- doc: add sphinx-copybutton extension
- doc: fix documentation warnings
- doc/cloud-init: move content around
- doc/cloud-init: add information from Advanced Guide on website
- instance: add support for VM generation ID
- test: test if the instance UUID is different after restoring its snapshot
- zfs: Regenerate UUID on optimized migration
- api: Add zfs_block_mode API extension
- lxd/main_interactive: Tweak LVM thin pool error
- doc/faq: provide the path to the client.crt for snap users too
- doc/authentication: provide the path to the client config for snap users too
- doc/debugging: mention path for snap users
- doc: use RFC5737 (reserved for doc) IPv4 instead of RFC1918
- doc/cloud-init: clean up existing documentation
- doc/faq: add a section explaining where lxc stores its config
- lxd/storage/zfs: Also pass -f to zpool create on source.wipe=true
- lxd/storage/drivers/zfs: remove redundant ZFS version detection
- lxd/storage/drivers/driver/lvm: Improve error in Create
- lxd/storage/drivers/driver/common: Adds filesystemFreeze function
- lxd/storage/drivers/driver/ceph/volumes: Updates CreateVolumeSnapshot to use filesystemFreeze
- lxd/storage/drivers/zfs/volumes: Freeze source filesystem volume when taking temporary snapshot in CreateVolumeFromCopy
- lxd: tweak do_move_forkmount()
- doc/installing: add link to side-loading tutorial
- doc/lxd.benchmark: fix instructions for delete command
- test: Use per-instance storage pool VG for clustering tests
- doc/devices/tpm: add video link and general explanation
- GitHub actions: cancel running tests
- shared/network: Comments
- lxd/apparmor: Donât use deprecated io/ioutil
- lxd/instance/drivers/driver/lxc: Use internal migrate function
- lxd/instance/instance/interface: Split Migrate into MigrateSend and MigrateReceive
- lxd/instance/drivers/driver/qemu: Implement MigrateSend and MigrateReceive
- lxd/instance/drivers/driver/lxc: Implement MigrateSend and MigrateReceive
- lxd/migrate/instance: Use MigrateSend and MigrateReceive
- lxd/apparmor: fix AppArmor instance_qemu profile
- lxd/instance/instance/interface: Update MigrateSend to accept MigrateSendArgs
- lxd/instance/instance/utils: Move SnapshotToProtobuf into instance package
- lxd/instance/drivers/driver/lxc: Move container migration send logic into lxc driver
- lxd/instance/drivers/driver/qemu: Move VM migration send logic into qemu driver
- lxd/migrate/instance: Removes container migration logic from migrationSourceWs
- shared/network: Make sure subsequent reads after close block until next message in WebsocketIO
- lxd/instance/drivers/driver/qemu: Fix stateful error message in Snapshot
- lxd/instance/instance/utils: Adds SnapshotProtobufToInstanceArgs function
- lxd/migration/utils: Adds ControlResponse type
- lxd/migrate: migration.ControlResponse usage
- lxd/migrate/storage/volumes: migration.ControlResponse usage
- lxd/migrate: Removes unused migrationControlResponse type
- lxd/storage/migration: Removes unused snapshotProtobufToInstanceArgs
- lxd/instance/instance/interface: Update MigrateReceive to accept MigrateReceiveArgs
- lxd/instance/drivers/driver/lxc: Move container migration receive logic into lxc driver
- lxd/instance/drivers/driver/qemu: Adds start function
- lxd/instance/drivers/driver/qemu: Move VM migration receive logic into qemu driver
- lxd/storage: Removes unused resetContainerDiskIdmap function
- lxd/migrate/instance: Removes instance type specific migration receive logic from migrationSink
- lxd/instances/post: Persist operation for duration of createFromMigration
- lxd/device/disk: Use explicit args and pass charset to mkisofs in generateVMConfigDrive
- doc: enable an extension for terminal output
- test: Shorten boot.host_shutdown_timeout in clustering_evacuation tests
- Revert âinstance: add support for VM generation IDâ
- test: UUID should remain the same after back/snap restore
- test: UUID should be the same after instance move to other server
- lxd/migrate: Add send timeout to send function
- lxd/migrate/instance: Add error sending synchronisation in migrationSourceWs.Do
- lxd/instance/drivers/driver/qemu: Improve migration protocol error handling in MigrateReceive
- lxd/instance/drivers/driver/lxc: Improve migration protocol error handling in MigrateReceive
- lxd/migrate/instance: Removes control socket error response from migrationSink.Do
- lxd/instance/qemu: Fix SMP on s390x
- instance: Add
volatile.uuid.generation
to VM instance config - lxd/devices: Updates deviceTaskBalance to check the containerâs InitPID as running indicator
- test: check generation UUID with snap/backup restore
- lxd/instances/get: Fix clustered instances list
- doc: Add
volatile.uuid.generation
andinstance_generation_id
extension to doc - lxd/shared/version: Add the
instance_generation_id
API extension - zfs: Ensure snapdev=visible is set correctly
- zfs: Add private mountVolumeSnapshot function
- zfs: Add ânoloadâ mount option for ext4 mounts
- zfs: Always mount volume snapshots read-only
- zfs: Use mountVolumeSnapshot in readonlySnapshot
- zfs: Regenerate UUID on volume restore
- test: Test different filesystems for zfs block mode
- zfs: Properly clean up clone
- lxd/migrate: Unexport migrationSinkArgs
- lxd/instances/post: migrationSinkArgs usage
- lxd/migrate/instance: Add live field to logging
- lxd/instance/drivers: Clarify logging of control response sending
- lxd/migrate: Adds 30s send timeout to disconnect
- doc/devices/usb: add link to video and some explanation
- doc/images: link to Discourse post on LXD image servers
- lxd/instance/instance/interface: Adds Disconnect function to MigrateArgs
- lxd/migrate/instance: Setup Disconnect function
- lxd/instance/drivers: Disconnect all sockets on MigrateReceieve error
- lxd/instances/post: Fix incorrect redirection logic in instancesPost
- lxd/instance/drivers: Update comments for accuracy
- lxd/instances/post: Update comment for accuracy
- lxd/instance/instance/interface: Rename DataConn and LiveConn to FilesystemConn and StateConn
- lxd: Replace criuConn and dataConn references with stateConn and filesystemConn
- shared/api/migration: Define the migration secret names used in the migration protocol
- client: api.SecretName* usage
- lxc-to-lxd/utils: api.SecretName* usage
- lxd-agent/exec: api.SecretName* usage
- lxd-migrate/utils: api.SecretName* usage
- lxd: api.SecretName* usage
- lxd/instance/drivers/driver/lxc: Use correct constant CRIUType_NONE in comment
- lxd/migrate: Fix panic in migrationFields.send
- lxd/instance/drivers/driver/lxc: Reworks MigrateSend to use errgroup and separate control monitor routine
- lxd/instance/drivers/driver/qemu: Reworks MigrateSend to use errgroup separate control monitor routine
- lxd/instance/drivers/driver/lxc: Rework MigrateReceive to use errgroup
- lxd/instance/drivers/driver/qemu: Rework MigrateReceive to use errgroup
- lxd/migrate/instance: Removes end control message exchange in migrationSourceWs.Do
- lxd/instance/qemu: Default to writeback for RBD
- shared/simplestream: Donât write zero length cache files in cachedDownload
- doc: enable the extension for config options
- doc: add a cheat sheet for config options
- lxd/storage/drivers/driver/zfs/volumes: Add cleanup in createVolumeFromMigrationOptimized
- lxd/instance/drivers/driver/lxc: Fix possible panic on error in MigrateSend
- lxd/storage/backend/lxd: Allow migrating running VMs stateless using rsync+dd when specifying --allow-inconsistent mode
- lxd/instance/instance/utils: Return error when failing to delete instance snapshot in DeleteSnapshots
- lxd/migrate/storage/volumes: Fix incorrect error message in newStorageMigrationSource
- zfs: Ensure source FS is synced before migrating
- lxd/db/instances: Updates UpdateInstanceNode to accept poolID
- lxd/instance/instance/interface: Adds ClusterSameNameMove hint field to MigrateReceiveArgs
- lxd/instance/post: Update internalClusterInstanceMovedPost to support deleting local instance volumes
- lxd/instance/post: Reworks instancePostClusteringMigrate to use full migration protocol
- lxd/instance/post: tx.UpdateInstanceNode usage
- lxd/instance/post: instancePostClusteringMigrate usage
- lxd/migrate: Adds cluster move hint to migration sink
- lxd/instances/post: Update createFromMigration to use cluster notification as instance move hint
- lxd/storage/backend/lxd: Update DeleteInstance to only check for existing snapshot volume DB records
- lxd/instance/drivers/driver/lxc: Update MigrateReceive to support cluster moves
- lxd/instance/drivers/driver/qemu: Update MigrateReceive to support cluster moves
- lxd/instance/post: instancePostClusteringMigrate
- test: Update clustering containers tests to check for live migration support
- lxd/migrate: Improve error messages
- lxd/migrate: Prevent reconnect attempts in migrationSourceWs.Connect and migrationSink.Connect
- lxd/migrate: Prevent panics if allConnected is closed multiple times by using a Canceller
- lxd/instance/drivers/driver/qemu: Improve operation cleanup and error reporting
- lxd/instance/drivers/qmp/command: Differentiate errors
- lxd/network: disable dnsmasq negative query cache
- Documentation: fixed typo
- storage: Correctly set VolumeOnly in VolumeSourceArgs
- storage, migration: Add snapshots argument to MigrationTypes
- btrfs: Use rsync when refreshing volume only
- zfs: Use rsync when refreshing volume only
- doc: Update optimized volume transfer
- lxd/instance/qemu: vmgenid isnât supported on aarch64
- doc: Add source.wipe
- lxd/storage/drivers/driver/ceph/volumes: Donât fail CreateVolumeSnapshot when freezing filesystem not possible
- lxd/instance/post: Stop instance before moving statelessly between cluster members
- doc: Update network zones howto with multiple forward zones info
- Parameterize
dig
and explain origin of the port - doc: add terminal output where suitable
- gomod: Update dependencies
- lxd/ip/link: Update SetAddress to take net.HardwareAddr
- lxd/device/network: Fix build
- client/connection: Add URL to debug logging in ConnectLXDWithContext
- lxd/instance/post: Reworks instancePostClusteringMigrate to avoid self-connecting to the source memberâs API
- lxd/instance/post: Removes delete action from internalClusterInstanceMovedPost
- lxd/migrate: Add clusterSameNameMove field to migrationSourceWs
- lxd/migrate/instance: Adds clusterSameNameMove to newMigrationSource
- lxd: newMigrationSource usage
- lxd/instance/post: Pass cluster same name move hint to newMigrationSource in instancePostClusteringMigrate
- lxd/instance/instance/interface: Moves ClusterSameNameMove from MigrateReceiveArgs to MigrateArgs
- lxd/migrate/instance: MigrationArgs usage in migrationSink.Do
- lxd/migrate/instance: Set ClusterSameNameMove in migrationSourceWs.Do
- lxd/instance/qemu: struct/insert func for vmgenid description in
qemu.conf
- lxd/instance/qemu: add VM Generation ID to QEMU config
- lxd/instance/drivers/driver/qemu: Fix VM start with vmgenid
- doc/devices/pci: add link to YouTube video
- lxd/db/generate/db/method: Use tx.ExecContext over tx.Exec
- lxd/db/cluster: Update generated code
- lxd-user: Use per-user bridge
- doc: Fix stable-5.0 build
- lxd/device/device/utils/network: Fix networkCreateVethPair backport
- doc/rest-api: Refresh swagger YAML
- doc: move .sphinx directory and conf.py file
- doc: add a .readthedocs.yaml file
- doc: move requirement setup from the Makefile to conf.py
- doc: hide the version selector on RTD
- doc: fix styling of version box on RTD
- doc: fix broken link
- doc/howto/network_ovn_setup: Fix link to netplan docs again
- doc: add a 404 page
- doc: update header
- doc: update links
- SECURITY.md: update security policy
- doc: update header for mobile compatibility
- README: Update links to new locations
- doc: Update links to new locations
- code of conduct: update email address
- doc: fix broken links
- doc/cloud-init: fix link to cloud-init docs
- doc: fixes to make the build work
- README: change the branch for the GitHub badges
- Makefile: Update translation bugs email address.
- lxd: Update swagger email and repository.
- gomod: Renames go module.
- client: Updates lxd imports.
- fuidshift: Updates lxd imports.
- lxc: Updates lxd imports.
- lxc-to-lxd: Updates lxd imports.
- lxd-agent: Updates lxd imports.
- lxd: Updates lxd imports.
- lxd-benchmark: Updates lxd imports.
- lxd-migrate: Updates lxd imports.
- lxd-user: Updates lxd imports.
- shared: Updates lxd imports.
- test/suites: Update issue link.
- test: Update allowed client import list.
- lint: Update linter settings for new module name.
- i18n: Updates translations.
- doc: Update swagger doc.
- github: Sync test workflows from main branch
- gomod: Updates to fix static analysis
- github: Add support for triggering snap 5.0-edge build in launchpad
- test: Busyboxâs nc command blocks on stdin once connected so close stdin
- test: Add debug output for clustering events
- test: Set tmpfs size explicitly to ensure space for 5GiB pool
- test: Cleanly shutdown lxd before cleaning up in test_database_no_disk_space
- test: Switch to line buffering for clustering_events monitor collection
- test: BTRFS nospace_cache usage was failing to mount on 5.19.0-43-generic
- test: Use smaller storage volumes for quota tests
- test/*: use a power of 2 units for memory/storage
- test: Use smaller pools and volumes in GIB and MiB respectively
- lxd/instance_instance_types: the memory part is in GiB
- lxc/image: use MiB instead of MB as we divide by 1024 (!= 1000)
- lxc/launch: use aws:t2.micro as t1.micro is no longer available
- lxd/archive: DeviceTotalMemory() uses /proc/meminfo which uses kB as a power of 2
- lxd/storage/drivers/utils: fix comment to reflect how much is actually copied
- lxd/api/internal/test: Use [GM]iB instead of [GM]B units
- lxd/storage/drivers/volume: Use [GM]iB instead of [GM]B units
- doc/howto/instances_create: the memory part in the instance type is in GiB
- test/suites/storage_driver_cephfs: we no longer test on 4.x kernels
- test/suites/projects: tune disk limits to be slightly above the required size
- test/suites/projects: fix typos
- test/suites/projects: use
|| false
for expected failures - test/suites/container_devices_disk: rbdâs --size only support M/G/T suffixes
- i18n: Update translation templates
- lxd/instance:
checkFeatures
returns amap[string]any
instead of[]string
- lxd/migrate: Setup timeouts in migrationSink.Connect
- shared/network: Add read lock to WebsocketIO
- shared/network: Use WriteMessage optimized method in WebsocketIO.Write
- lxd/storage/drivers: Removes use of cmd.StdoutPipe when piping stdout to websocket
- client/lxd: Log warning when failing to call tcp.SetTimeouts
- lxd: Log warning when failing to call tcp.SetTimeouts
- lxd: auto snap create and pruning are in the same task
- lxd: chan mgmt improvement for goroutines created by
autoCreateInstSnap
and early return if cancelled ctx - lxd/instance/qemu: Defer call to remove file descriptors after QEMU process starts
- lxd/instance/qmp: Add query-sev-capabilities
- lxd/instance/qemu: Use KVM acceleration
- doc/network: Expand on txqueuelen
- doc/authentication: Update minimum TLS
- lxc/config: Fix config trust fail when remote is specified
- shared/simplestreams: Add support for disk-kvm.img.vcdiff
- lxd/api: Donât crash by passing a nil localConfig
- lxd/storage/pool/interface: Adds CleanupInstancePaths definition
- lxd/storage/backend/mock: Adds CleanupInstancePaths function
- lxd/storage/backend/lxd: Adds CleanupInstancePaths function
- lxd/migrate: Replace clusterSameNameMove with clusterMoveSourceName property
- lxd/instance: newMigrationSource clusterMoveSourceName arg usage
- lxd/instance/instance/interface: Replace ClusterSameNameMove with MigrateArgs.ClusterMoveSourceName
- lxd/instance/post: Forward request to target member if source member offline in instancePost
- lxd/instance/post: Reworks instancePostClusteringMigrate
- lxd/instance/post: Reworks instancePostClusteringMigrateWithCeph
- lxd/instance/post: Updates migrateInstance to load source & target cluster member info
- lxd: migrateInstance usage
- lxd: Removes unused internal/cluster/instance-moved API endpoint
- lxd/instance/drivers/driver/qemu: Make instance agent vsock advertise message a warning
- lxd/instance/drivers: args.ClusterMoveSourceName usage
- lxd/instance/drivers: Donât remove remote volumes on error during cluster move
- lxd/migration/migration/volumes: Adds ClusterMove to VolumeSourceArgs and ClusterMoveSourceName to VolumeTargetArgs
- lxd/instance/drivers: Populate VolumeSourceArgs.ClusterMove in MigrateSend
- lxd/instance/drivers: Populate VolumeTargetArgs.ClusterMoveSourceName in MigrateReceive
- lxd/instances/post: Reworks createFromMigration to use req.Source.Source name
- lxd/storage/backend/lxd: Fix typo
- lxd/storage/backend/lxd: Updates CreateInstanceFromMigration to handle remote shared storage cluster moves
- lxd/storage/drivers/driver/ceph/volumes: Move cluster move logic from MigrateVolume to CreateVolumeFromMigration
- lxd/instance/qemu: Cleanup vmgenid
- lxd/instance/qemu: Refactor cpuTopology
- lxd/migrate: Removes separate src and dest migrationFields fields from migrationSink
- lxd: Updates use of embedded migrationFields in migrationSink
- lxd/migrate/instance: Simplify logic in newMigrationSink
- shared/cancel: Replace http.Client with http.Client.Do
- shared: Update to new CancelableDownload
- lxd: Update to new CancelableDownload
- client: Use DoHTTP on all CancelableDownload
- client: Make lxdDownloadImage use DoHTTP
- lxd/instances: Donât use notify for targetting
- lxd/instance/instance/interface: Updates MigrateArgs to use functions for returning migration connections
- lxd/migrate/instance: instance.MigrateArgs usage
- lxd/instance/drivers/driver/lxc: Updates MigrateSend to use connection functions
- lxd/instance/drivers/driver/lxc: Updates MigrateReceive to use connection functions
- lxd/instance/drivers/driver/qemu: Updates MigrateSend to use connection functions
- lxd/instance/drivers/driver/qemu: Updates MigrateReceive to use connection functions
- shared/network: Sets 5s handshake timeout in WebsocketUpgrader
- lxd/migration/connection: Adds migrationConn concept
- lxd/migrate/instance: Updates newMigrationSource to accept pushTarget information
- lxd/migrate/instance: Updates newMigrationSink to setup migrationConn map
- lxd/migrate/storage/volumes: Updates newStorageMigrationSource to accept push target info
- lxd/migrate/storage/volumes: Updates newStorageMigrationSink to use the migrationConn map
- lxd/storage/volumes: newStorageMigrationSink usage
- lxd/storage/volumes: Pass req.Target to newStorageMigrationSource
- lxd/instances/post: Use setupWebsocketDialer in createFromMigration
- lxd/instance/post: Pass req.Target to newMigrationSource
- lxd/instance/post: Update instancePostClusteringMigrate with newMigrationSource usage
- lxd/instance/snapshot: Pass req.Target to newMigrationSource
- lxd/storage/backend/lxd: Clarify freezing comment in MigrateInstance
- lxd/migrate/instance: Change connection stream helper functions to return error
- lxd/instance: Updates usage of migration connection stream helper functions
- lxd/migrate: Log push mode on source
- lxd/migrate/instance: Only wait for control connection to be established in top level migration subsystem
- lxd/instance/drivers/driver/lxc: Wait for essential connections in MigrateSend and MigrateReceieve
- lxd/instance/drivers/driver/qemu: Wait for essential connections in MigrateSend and MigrateReceieve
- lxd/instance/drivers/driver/qemu: Remove unnecessary variable defintion in MigrateSend
- lxd/instance/drivers/driver/qemu: Separate checkpoint restore from restoreState into restoreStateHandle
- lxd/instance/drivers/driver/qemu: Separate checkpoint save from saveState into saveStateHandle
- lxd/instance/drivers/driver/qemu: Update saveState and restoreState to support restoring from live migration handle
- lxd/instance/drivers/load: Adds global temporary instance reference storage
- lxd/instance/drivers/driver/common: Adds volatileSetPersistDisable
- lxd/migration: Update protobuf version
- lxd/migration: Adds CRIUType_VM_QEMU protobuf type
- lxd/storage/drivers/driver/types: Adds LiveMigrationQEMU to Info struct
- lxd/storage/drivers/driver/ceph: Enable LiveMigrationQEMU
- lxd/instance/drivers/driver/qemu: Add support for using an existing instance reference in getMonitorEventHandler stop hook handler
- lxd/instance/drivers/driver/qemu: Add support shared remote storage live migration in MigrateSend and MigrateReceive
- drivers: Add function loopDeviceSetCapacity
- lxd/instance/drivers/qmp/monitor: Remove whitespace
- lxd/instance/drivers/qmp/commands: Donât wait for initial check in MigrateIncoming
- lxd/instance/drivers/qmp/commands: Split Migrate into MigrateWait
- lxd/instance/drivers/qmp/commands: Fix revert in AddBlockDevice
- lxd/instance/drivers/qmp/commands: Remove invalid comment in RemoveBlockDevice
- lxd/instance/drivers/qmp/commands: Remove unnecessary disconnected checks
- lxd/instance/drivers/qmp/commands: Comment endings
- lxd/instance/drivers/qmp/commands: Simplify CloseFile by using m.run
- lxd/instance/drivers/qmp/commands: Updates SendFileWithFDSet to return a pointer to AddFdInfo
- lxd/instance/drivers/driver/qemu: Updates saveState to only support saving to state file
- lxd/instance/drivers/driver/qemu: Move live state transfer logic into MigrateSend
- lxd/migrate: Replaces the individual connection variables with a map of migrationConn types
- lxd/storage/backend/lxd: Adds info log about freezing instance during migration
- lxd/instance/drivers/qmp/commands: Adds live migration related functions
- lxd/apparmor/instance/qemu: Allow qemu to use abstract unix sockets
- lxd/storage/drivers: Removes LiveMigrationQEMU
- lxd/instance/drivers/driver/qemu: Improve errors in start
- lxd/instance/drivers/driver/qemu: Consider a VM in postmigrate status as api.Frozen
- lxd/instance/drivers/driver/qemu: Allow a frozen VM to be forcefully stopped
- lxd/instance/drivers/driver/qemu: Improve comment on saveStateHandle
- lxd/instance/drivers/driver/qemu: Add config validation check to MigrateSend
- lxc/network: Add an example to create
- lxc/cluster: Donât allow both arg and flag name on add
- lxd/instance/drivers/driver/qemu: Adds non-shared storage live migration support
- lxd/instance/drivers/qmp/commands: Comment typo
- lxd/instance/drivers/qmp/commands: Allow cancellation of MigrateIncoming
- lxd/instance/drivers/driver/qemu: Cancel restoreStateHandle in restoreState when remote connection is closed
- lxd/instance/drivers/driver/qemu: Fix migration block device cleanup on error in migrateSendLive
- doc: add links to YouTube videos
- lxd/storage/drivers/driver/zfs/volumes: Donât ascertain current volmode status for block backed volumes twice in UnmountVolume
- lxd/storage/drivers/driver/zfs/volumes: Avoid double caching VM volumes in the ARC cache
- lxd/storage/drivers/driver/zfs/volumes: Fix block volumes not being deactivated
- lxd/device/nic/ovn: Improve same instance multi-NIC DNS name conflict error in checkAddressConflict
- lxd/device/nic/bridged: Improve same instance multi-NIC DNS name conflict error in checkAddressConflict
- lxd/storage/backend/lxd: Fix bad backport cherry-pick in CreateInstanceFromMigration
- lxd/auth/candid: Move candid to own package
- client: Move candid to own file
- lxd/device/device/utils/network: Improve errors in networkSRIOVSetupVF
- lxd/device/device/utils/network: Use combined probe and interface wait via networkPCIBindWaitInterface
- lxd/network/network/utils: Removes unused InterfaceBindWait
- lxd/network/network/utils/sriov: Split SRIOVFindRepresentorPort into its own separate function
- lxd/network/openvswitch/ovn: Add nested VLAN port support OVNSwitchPortOpts and LogicalSwitchPortAdd
- lxd/network/driver/ovn: Add nested VLAN port support to InstanceDevicePortStart
- lxd/device/nic/ovn: Donât perform DNS name conflict checks on nested NICs in checkAddressConflict
- lxd/device: Backports generateHostName
- lxd/device/nic/ovn: Add support for nested VLAN ports
- lxd/device/nic/ovn: Improve errors in Start
- lxd/device/nic/ovn: Clean up allocated VF on failure in Start
- lxd/device/nic/ovn: Remove representor port from integration bridge when using acceleration=sriov
- lxd/device/nic/ovn: Fix VF interface cleanup on Stop when using acceleration=sriov
- lxd/metrics: Donât duplicate entries
- lxd/metrics: Also cache empty projects
- lxd/instance/qemu: Only use KVM mode for feature detection on X86
- doc/cheat-sheet: update with more markup
- lxd/network/openvswitch/ovn: Support indicating netmask in DHCPv4 options
- lxd/network/openvswitch/ovn: Add Discard support to LogicalRouterRouteAdd
- lxd/network/network/utils: Adds IPToNet function
- doc/authentication: mention that RBAC is covered by Ubuntu Pro
- doc/footer: add community links
- lxd/response: Add support for compression
- lxd/metrics: Add compression support
- shared/version: add regexp.Compile() error handling, avoid unneeded capture group and trailing pattern
- lxd/sys: version.Parse ignores trailing stuff, no need to split on â-â
- lxd-agent/metrics: avoid unneeded capture group and use raw string
- lxd/apparmor: fix AppArmor forkdnsProfile
- lxd/instance/drivers/driver/qemu: Comment whitespace
- lxd/instance/drivers/driver/qemu: Rename snapshot file handle for clarity in migrateSendLive
- lxd/network/openvswitch/ovn: Add support for storing instance port location in external-ids
- lxd/network/openvswitch/ovn: Adds LogicalSwitchPortOptionsSet function
- lxd/network/driver/ovn: Set instance switch port Location in InstanceDevicePortStart
- lxd/network/driver/ovn: Skip clearing up logical switch port if last active host wasnât local in InstanceDevicePortStop
- lxd/device/nic/ovn: Start setting requested-chassis ID for logical switch port in post start hook
- lxd-agent/metrics: use strconv.ParseUint() instead of regexp matching for PID
- lxd/db/db: add regexp.Compile() error handling, require segment numbers and use raw string
- shared/validate: use simpler regexp.MatchString(), avoid unneeded capturing groups and use raw strings
- lxd/devlxd: use regexp.Compile() with error handling instead of MustCompile() and anchor regex
- lxd/seccomp: use regexp.Compile() with error handling instead of MustCompile()
- lxd/ip: use regexp.Compile() with error handling instead of MustCompile()
- lxd/storage/ceph: use regexp.Compile() with error handling instead of MustCompile()
- shared/util: use regexp.Compile() with error handling instead of MustCompile()
- lxd/network/acl/driver/common: Fix comment on Project
- doc: Fix OVN peers doc incorrectly listing a ports option
- lxd/device/config/devices/sort: Fix device sorting for nested NICs
- lxd/device/config/devices/test: Rework device sorting tests to check for more scenarios
- lxd/instance/drivers/driver/lxc: Forcefully stop SFTP forkfile processs when forcefully stopping container
- lxd/device/nic/ovn: Fix unnecessary warning when stopping instance that has nested OVN NICs
- lxc/query: Handle empty plain-text files
- lxd: Pass state to migrateInstance
- lxd/storage/backend/lxd: Only add profiles the instance is using to backup config
- lxd/rsync: Donât use a shell wrapper
- lxd/rsync: Introduce RunWrapper
- lxd/apparmor: apparmor profile for rsync
- lxd/daemon: Setup rsync to use AppArmor
- instance: no timeout on the operationlock for creating an instance
- lxd/api/cluster: Pass state to migrateInstance
- shared/api/storage/pool/bucket: Adds StorageBucketKey URL function
- lxd/api_cluster: Split up evacuateClusterMember
- db: Add ClusterHeal operation type
- instance_post: Drop srcMember from instancePostClusteringMigrateWithCeph
- instance: rename
common.snapshot
tocommon.isSnapshot
- instance: stop API races while creating/deleting snapshots
- shared/api: Add total for disk and swap in instance state
- lxd/apparmor/rsync: Allow locking and linking
- lxd/apparmor/rsync: Add setfcap for fscaps setting
- lxd/network: Skip ovn/dhcp range overlap check when DHCP is off.
- lxd/instance/drivers/driver/common: Adds deleteSnapshots that accepts custom snapshot delete function
- lxd/instance/drivers/driver/lxc: Adds missing call to d.updateBackupFileLock in Stop
- lxd/instance/drivers/driver/lxc: Use non-locking d.deleteSnapshots function when deleting snapshots as part of instance delete
- lxd/instance/drivers/driver/qemu: Use non-locking d.deleteSnapshots function when deleting snapshots as part of instance delete
- lxd/instance/drivers/driver/lxc: Only update instance backup file when handling a request to delete a snapshot
- lxd/instance/drivers/driver/qemu: Only update instance backup file when handling a request to delete a snapshot
- lxd/instance/instance/utils: Removes unused DeleteSnapshots
- lxd/instance/drivers/driver/lxc: Removes redundant revert in LockExclusive
- lxd/instance/drivers/driver/qemu: Adds version function
- lxd/instance/drivers/driver/qemu: Updates addCPUMemoryConfig to use d.version function
- lxd/instance/drivers/driver/qemu: Disable vhost-net network accelerator for veth devices on QEMU 7.2 and later in addNetDevConfig
- lxd/instance/drivers/driver/qemu: Use DriverStatuses Info directly
- lxd/apparmor/rsync: Fix snap use inside of containers
- lxd/db/snapshots: Delete expired snapshots when expiry time is reached rather than exceeded
- lxd/instance: Fix expired snapshot pruning when no new snapshots being created in autoCreateAndPruneExpiredInstanceSnapshotsTask
- instance/logs: Add qemu.conf to log list
- doc/devices/proxy: add video link
- doc/migration: add link to spec for live migration
- doc/config_options.yaml: Remove incorrectly backported file
- lxc/storage_volume: Set target before getting storage volume
- client: Update return type of GetStoragePoolVolumeNamesAllProjects.
- client: Updates urlsToResourceNames to use strings.Cut.
- shared/ws: Introduce new websocket package
- shared/ws/rwc: Merge duplicate implementations from shared
- lxd/instance/exec: Switch to ws.Mirror* and donât immediately stop mirror when child process ends
- lxd-agent/exec: Switch to ws.Mirror* and donât immediately stop mirror when child process ends
- lxd-migrate/utils: Switch to ws.NewWrapper
- lxd: Switch to ws.NewWrapper
- shared/netutils/network/linux: Removes unused WebsocketExecMirror
- shared/util/linux: Removes unused ExecReaderToChannel and GetPollRevents
- shared/network: Removes unused WebsocketIO
- lxc/export: Rename backup file based on file type
- doc/storage_backup_volume: Update file naming for backups
- lxc/export: Revert change to import statement
- lxd: Use protobuf helpers to avoid panics
- scripts: add missing oidc.* keys to bash completion
- lxc/utils: Add IsAliasesSubset and GetCommonAliases
- lxd/storage/drivers/driver/zfs/volumes: Clean up volume on failure in CreateVolumeFromCopy
- lxd/storage/drivers/driver/zfs/volumes: Donât block on receive error in CreateVolumeFromCopy
- lxd/storage/drivers/driver/zfs/volumes: Pass true to allowUnsafeResize when setting volume size in CreateVolumeFromCopy
- doc/storage: clarify that âattachâ is an alias for âdevice addâ
- lxd/db/query: Adds marshaling interfaces.
- lxd-generate: Update scanner function to use the unmarshaler when specified.
- lxd-generate: Add method to get different field params if marshal is true.
- lxd-generate: Updates GetMany to marshal a filter before using it.
- lxd-generate: Updates ID to marshal field when necessary.
- lxd-generate: Updates Create to marshal fields when necessary.
- lxd-generate: Updates Rename to marshal fields when necessary.
- lxd-generate: Updates Update method to marshal fields when necessary.
- lxd-generate: Updates Delete method to marshal fields when necessary.
- lxd-generate: Updates comment to match generated method signature.
- lxd/db/cluster: Regenerates mapper files
- lxd-generate: Updates README with marshal tag.
- doc/devices/nic: add link to video and missing info about macvlan
- Revert âinstance: no timeout on the operationlock for creating an instanceâ
- lxd/instance/operationlock: Remove concept of automatic lock timeout
- lxd/instance/drivers: Update operation lock usage without automatic timeouts
- lxd/instance/drivers: Move more common restart functionality into restartCommon
- lxd/instance/state: Set a 10 minute default shutdown timeout if no timeout specified in doInstanceStatePut
- lxd/storage/drivers/driver/zfs/volumes: Removes operation lock timeout constant dependency
- test: Extend storage pools tests on cluster
- lxd/db: remove the old snapshot records in the storage_volumes table
- lxd/db: remove useless
RemoveStorageVolumeImages
function - lxc/action: Add freeze as alias to pause
- lxd/cgroup: Better matching of devID and io stats
- lxc/publish: Add support for âreuseâ flag
- tests: Add and fix tests for âpublish --reuseâ
- lxd-generate: Fix declaration order of unmarshalable variables.
- lxd-generate: Change call order of update method to match other methods.
- lxd/storage/backend/lxd/patches: Fix storage_delete_old_snapshot_records so it runs on older sqlite versions
- lxd/srorage/backend/lxd/patches: patchDeleteOldSnapshotRecords
- response: Add Unauthorized response
- lxd/cgroup: err of
strconv.ParseInt
should return -1 for consistency - lxd/instance/lxc: use
cg.GetProcessesUsage
(throughprocessesState
) instead ofcg.GetTotalProcesses
- lxd/cgroup: remove useless
cg.GetTotalProcesses
function - lxd/endpoints: Rename vsock socket to vmvsock to avoid naming conflicts
- lxd/endpoints/vsock: Always listen on vsock host context ID in createVsockListener
- lxd/instance/drivers/driver/qemu: Push vsock host context ID to lxd-agent in getAgentConnectionInfo
- lxd-agent: Use vsock.Listen function directly
- lxd/vsock/vsock: Removes unused Listen function
- lxc/config: Donât crash on nil map
- cluster: Disable cluster group creation by anyone authenticated
- lxd-agent/devlxd: Improve client errors
- lxd/endpoints/vsock: Update createVsockListener to use listeners.NewFancyTLSListener
- lxd/endpoints/network: Update NetworkUpdateCert to also update vmvsock and metrics listeners certificate
- lxd/nic/p2p: Disable accept_ra on host
- events: Pass state to eventsSocket
- operations: Pass state instead of daemon
- api_cluster: Pass state instead of daemon
- api_internal: Pass state instead of daemon
- project: Pass state to projectChange
- api_vsock: Pass state to authenticateAgentCert
- images: Pass state instead of daemon
- instance: Pass state instead of daemon
- networks: Pass state instead of daemon
- certificates: Pass state to instead of daemon
- operations: Pass state to autoRemoveOrphanedOperations
- profiles: Pass state to profile update functions
- response: Pass state to instead of daemon
- storage: Pass state instead of daemon
- tokens: Pass state to autoRemoveExpiredTokens
- warnings: Pass state to pruneResolvedWarnings
- lxc/config_device: Donât panic on nil device map.
- api: Use state if possible
- api_cluster: Reduce calls to d.State() and use state if possible
- api_internal: Reduce calls to d.State() and use state if possible
- api_project: Use state if possible
- certificates: Reduce calls to d.State() and use state if possible
- images: Reduce calls to d.State() and use state if possible
- instance_sftp: Drop unused Daemon field from sftpServeResponse
- instance: Reduce calls to d.State() and use state if possible
- network: Reduce calls to d.State() and use state if possible
- operations: Reduce calls to d.State() and use state if possible
- profiles: Reduce calls to d.State() and use state if possible
- storage: Reduce calls to d.State() and use state if possible
- warnings: Reduce calls to d.State() and use state if possible
- lxd/storage/drivers/driver/zfs/volumes: Fix block volume shrink regression
- lxd/certificates: Allow non-admin users to delete only their certificates
- test: Add test for removing trusted certificate
- lxd/endpoints/listeners/fancytls: Update doc block description
- lxd/endpoints/network: Clean up NetworkUpdateTrustedProxy
- lxd/endpoints/endpoints: Move tertiary listeners into own Up functions
- lxd/daemon: Start storage metrics listeners after managed networks
- doc/instance options: clarify CPU limits
- doc: clarify TSIG key name generation for network zones
- doc: Update doc/howto/network_zones.md
- doc/bridge/resolved: clarify use of â~â
- lxd/network_zones: Use
zone
for consistency - doc/storage: add
lxc storage info
command - shared/subprocess/proc: Respect LXD_SECURITY_APPARMOR env var
- lxd/sys/apparmor: Use shared.IsFalse when detecting LXD_SECURITY_APPARMOR env var
- lxd/network/openvswitch/ovn: Adds switch name to logical switch ports in LogicalSwitchPortAdd
- shared/instance: Adds .last_state.ip_addresses to ConfigKeyChecker
- lxd/network/openvswitch/ovn: Fixes issue with LogicalSwitchDHCPv4RevervationsGet when no reservations exist
- lxd/network/openvswitch/ovn: Adds LogicalSwitchPortIPs function
- lxd/network/openvswitch/ovn: Updates LogicalSwitchPortSetDNS to accept list of IPs
- lxd/network/driver/ovn: client.LogicalSwitchPortSetDNS usage
- lxd/network/network/utils: Adds IPInSlice function
- lxd/network/driver/ovn: Adds LastStateIPs field to OVNInstanceNICSetupOpts
- lxd/network/driver/ovn: Refactor DHCPv4 reservation logic
- lxd/network/driver/ovn: Updates InstanceDevicePortStart to return list of IPs associated to port for DNS
- lxd/network/driver/ovn: Comment spacing
- lxd/device/nic/ovn: Update InstanceDevicePortStart definition and usage
- lxd/network/driver/ovn: Update InstanceDevicePortStart to use last state allocated IPs as sticky DHCPv4 hint
- lxd/device/nic/ovn: Populate and use volatile last_state.ip_addresses config to use sticky DHCPv4 allocations
- doc/reference/instance/options: Document volatile..last_state.ip_addresses
- lxd: Drop storageGetVolumeNameFromURL function
- client: Switch to shared/ws websocket package
- lxd/operations/websocket: Switch to shared/ws websocket package
- shared/ws/mirror: Comment improvements
- shared/network: Removes unused websocket functions
- test/godeps.list: Adds github.com/canonical/lxd/shared/ws
- lxd: Use consistent route variable names
- lxc/storage: Rework cmdStorageInfo.Run() to be more resilient to used by resource URLs
- doc/faq: clean up existing FAQ
- doc/faq: add an entry for common firewall issues
- lxd: Improve errors for image record creation
- lxc/export: Fix export rename when run inside snap
- lxc/project: Corrects project edit help text to match reality
- lxd/instance/console: Switch to ws.Mirror in connectVGA
- lxd/instance/console: Switch doConsole to ws.Mirror
- lxd/instance/console: Use logger.Debug instead of logger.Debugf
- shared/network: Removes unused WebsocketConsoleMirror
- lxd-agent: Switch to ws.Upgrader
- lxd: Switch to ws.Upgrader
- shared/network: Removes unused WebsocketUpgrader
- lxc-to-lxd/transfer: Switch to ws.Mirror
- lxd-migrate/transfer: Switch to ws.Mirror
- shared/network: Removes unused WebsocketMirror and associated functions
- lxd/storage/volumes: Prevent moving volumes to projects that dont have features.storage.volumes enabled
- lxc/storage: Exclude entity snapshots from lxc storage info output
- lxd/instance/post: Fix comment in instancePost
- doc/howto/network/bridge/firewalld: Updates docker firewall fixes to include easier forwarding option
- lxd/instance/drivers/qmp/monitor: Define the events we use as constants
- lxd/instance/drivers/driver/qemu: qmp event constant usage
- lxd/instance/drivers/qmp/monitor: Log when monitor connects and disconnects
- lxd/instance/drivers/qmp/monitor: Trigger shutdown event if monitor unexpectedly disconnects
- lxd/instance/drivers/driver/qemu: Log warning when instance stops due to monitor disconnect
- shared/logger/toplevel: The toplevel AddContext should use the top level logger
- lxd-agent/exec: logger.AddContext usage
- lxd/storage/backend/lxd: b.logger.AddContext usage
- lxd: logger.AddContext usage
- lxd/storage/drivers/utils: Clarify comment on loopFileSizeDefault
- lxd/db/storage/volume/snapshots: Populate NodeID field returned from GetExpiredStorageVolumeSnapshots
- lxd/db/storage/volume/snapshots: Adds memberSpecific filtering to GetExpiredStorageVolumeSnapshots
- lxd/storage/volumes/snapshot: Fix pruneExpireCustomVolumeSnapshotsTask to understand cluster members and remote pools
- lxd/storage/volumes/snapshot: Donât start taking snapshots if daemon is shutting down
- lxd/db/storage/volumes: Adds memberSpecific argument to GetStoragePoolVolumesWithType
- lxd/main/activateifneeded: tx.GetStoragePoolVolumesWithType usage
- lxd/storage/volumes/snapshot: Merges auto create and auto prune custom volume snapshots into single task
- lxd/storage/volumes/snapshot: Update autoCreateCustomVolumeSnapshots to return an error
- lxd/storage/volumes/snapshot: Updates errors from pruneExpiredCustomVolumeSnapshots to align with autoCreateCustomVolumeSnapshots
- lxd/instance: Donât start any more instance snapshot tasks if context is cancelled in autoCreateInstanceSnapshots and pruneExpiredInstanceSnapshots
- lxd/instance: Rework instance snapshots task to prune first and then create scheduled ones
- lxd/api/cluster: Fix member rename in clusterNodePost
- lxd/instance/drivers/qmp/monitor: Add ability to enable/disable on disconnect shutdown event
- lxd/instance/drivers/driver/qemu: Donât log warning if no child processes found in killQemuProcess
- lxd/instance/drivers/driver/qemu: Disable monitor disconnect event during VM start
- lxd/instance/drivers/driver/qemu: Enable vhost-net for TAP devices in addNetDevConfig
- lxd/network/driver/bridge: Simplify ipv{n}.routing logic
- lxd/api/internal: Remove force argument from internalImportFromBackup
- lxd/instances/post: Fail import if conflicting DB records are present in createFromBackup
- lxd/device/unix_common: simplify check logic
- lxd/instance/drivers/driver_lxc: simplify check logic
- lxd/network/driver_bridge: simplify check logic
- lxd/network/network_utils: simplify check logic
- lxd/storage/drivers/volume: Donât copy zfs.block_mode setting in NewVMBlockFilesystemVolume
- lxd/storage/drivers/driver/zfs/volumes: Use vol.NewVMBlockFilesystemVolume for image volume creation in CreateVolume
- doc/network/bridge: clarify options for using LXD with Docker
- doc/cluster: clarify
lxc cluster group assign
command - Document how to enable manual testing of zone DNS.
- lxd/instance/drivers/driver/qemu: Move lifecycle stop & shutdown event generarion into onStop function
- lxd/instance/drivers/driver/qemu: Remove unused operation argument from pidWait
- lxd/instance/drivers/driver/qemu: Reworks VM Stop and forceStop functions to better handle non-response QEMU processes
- lxd/storage/drivers/driver/lvm: Fail if conflicting PV or VG exist when creating loop-backed pool
- lxd/storage/drivers/driver/lvm: Make providing a size when using existing PV or VG for non-thin pools an error
- lxd/storage/drivers/driver/lvm/utils: Updates createDefaultThinPool to consistently use settings from d.config
- lxd/storage/drivers/driver/lvm: d.createDefaultThinPool usage
- lxd/storage/drivers/driver/lvm: Make providing size an error when the thinpool already exists
- lxd/storage/drivers/driver/lvm: Updates createDefaultThinPool to accept thin pool size argument
- lxd/storage/backend/lxd: Switch to errgroup for migration in CreateInstanceFromCopy
- lxd/storage/backend/lxd: Switch to errgroup for migration in RefreshInstance
- lxd/storage/backend/lxd: Use source pool to indicate if source instance needs to be frozen in CreateInstanceFromCopy
- lxd/storage/backend/lxd: Allow copying running VMs in CreateInstanceFromCopy
- lxd/storage/backend/lxd: Use same instance freezing logic from CreateInstanceFromCopy in RefreshInstance
- lxd/storage/backend/lxd: Allow migrating running VMs when using raw block mode transfer in MigrateInstance
- lxd/storage/drivers: Record future improvement areas for non-optimized consistent migrations in MigrateVolume
- lxd/instance: Clarify lock exclusive error for target instance in instanceCreateAsCopy
- lxc/copy: Remove pointless error check in copyInstance
- lxc/copy: Donât try and modify root diskâs pool when doing refresh in cmdCopy
- lxd/instance/drivers/driver/qemu: Fixes crash if /dev/vhost-net not available
- lxd/metrics: fix copy-n-paste error for MemoryInactiveAnonBytes help text
- lxd/storage/drivers/utils: Updates loopFileSizeDefault to consider non-root free space
- doc/faq: Drop reference to eth1
- shared/instance: Separate some instance type specific config key validation
- shared/ws/mirror: Allow passing nil to Exec
- lxd/device/nic/ovn: Enable hotplug for VMs
- doc/instances: clean up âContainer runtime environmentâ
- doc/cluster: link directly to cluster options instead of server options
- doc/cluster: add information about automatic evacuation
- doc/CPU limits: clarify what live update means for CPU limits
- lxd/instance/instance/interface: Adds PowerStateRunning and PowerStateStopped constants
- lxd: instance.PowerStateRunning and instance.PowerStateStopped usage
- lxd: Unifies instance auto start logic
- lxd/api/cluster: Fix instance start after cluster heal in evacuateInstances
- doc/faq: add information about
lxc monitor
- lxc/init: Accept Description field from stdin
- doc/API: add video link and small updates
- lxc/publish: Perform alias and image deletion after image creation
- lxd/storage/pool/interface: Updates ImportInstance and ImportCustomVolume to return reverter
- lxd/storage/backend/mock: Update ImportInstance and ImportCustomVolume signatures
- lxd/storage/backend/lxd: Return reverter from ImportCustomVolume
- lxd/storage/backend/lxd: Return reverter from ImportInstance
- lxd/instance/post: ImportInstance usage
- lxd/api/internal/recover: Use pool.ImportInstance and pool.ImportCustomVolume reverters in internalRecoverScan
- lxd/daemon: Use dbCluster as alias to github.com/canonical/lxd/lxd/db/cluster
- lxd/cluster: Use dbCluster as alias for github.com/canonical/lxd/lxd/db/cluster
- lxd/daemon: Pass shutdownCtx to transaction during startup
- lxd/daemon: Clear any left over operations for member when starting up
- doc: update SSL to TLS
- lxd/db:
UpdateImageLastUseDate
is aClusterTx
method - lxd/instance/operationlock: Fix comment typo
- lxd/locking/lock: Clarify comment
- lxd/events/internalListener: Clarify comment
- lxd/db/images: Donât say node in user facing error message
- lxd/instance: Move image distribution logic from instanceCreateFromImage to createFromImage
- lxd/instance/drivers/driver/qemu: Set shutdown and panic actions in start
- lxd/instance/drivers/driver/qemu: Handle more QMP statuses in statusCode
- lxd/instance/drivers/driver/qemu: Comment improvement
- lxd/storage/drivers/driver/btrfs: Adds revert to Create
- lxd/storage/backend/lxd: Delete newly created storage pool if mount fails in Create
- lxd/db/images/test: Fix image test
- lxd/instance/drivers/driver/qemu: Pause on panic
- lxd/operations/operations: Return operation result error from Wait
- lxd/backup: op.Wait usage pruneExpiredContainerBackupsTask
- lxd/images: op.Wait usage in autoUpdateImagesTask
- lxd/images: op.Wait usage in pruneExpiredImagesTask
- lxd/images: op.Wait usage in pruneLeftoverImages
- lxd/images: op.Wait usage in autoSyncImagesTask
- lxd/instance: op.Wait usage in pruneExpiredAndAutoCreateInstanceSnapshotsTask
- lxd/instance/instance/types: op.Wait usage in instanceRefreshTypesTask
- lxd/instance/post: op.Wait usage in instancePostClusteringMigrate
- lxd/logging: op.Wait usage in expireLogsTask
- lxd/operations: op.Wait and SmartError usage in operationWaitGet
- lxd/operations: op.Wait usage in autoRemoveOrphanedOperationsTask
- lxd/storage/volumes/snapshot: op.Wait usage in pruneExpiredAndAutoCreateCustomVolumeSnapshotsTask
- lxd/tokens: op.Wait usage in autoRemoveExpiredTokens
- lxd/warnings: op.Wait usage in pruneResolvedWarningsTask
- lxd/instance/instance/types: Remove pre Go 1.8 check in instanceRefreshTypesTask
- api: Set correct instance resource path for snapshot operations
- doc/faq: add info about hanging instances
- lxd/instance/drivers/driver/qemu: Fix potential race condition with context being cancelled too early in restoreState
- lxd/storage/drivers/driver/zfs: Fix zfs list recommendation in Create
- lxd/storage: Honor target storage config when migrating
- test: Add zfs specific cross-pool copy
- lxc: Add func
getImgInfo
and moveguessImage
- lxd: Add function
getSourceImageFromInstanceSource
- lxd/client: Add
getSourceImageConnectionInfo
- lxd: Add function
ensureImageIsLocallyAvailable
- lxd: Add function
ensureDownloadedImageFitWithinBudget
- lxd/network/utils/sriov: Fix SRIOV representor port lookup
- lxd/network/utils/sriov: Add SRIOVGetSwitchAndPFID
- lxd/network/utils/sriov: Fix typo in comment
- doc: Update max value of
net.core.bpf_jit_limit
- lxd: cluster config doc
- lxd/storage: Call QemuImg with both image and destination path for unique apparmor profile generation
- lxd/apparmor: Use a unique apparmor profile for qemu-img unpacking
- lxd/instance/drivers/driver/qemu: Fix addNetDevConfig to match the tap interface settings that qemu uses
- lxd/instance/drivers/driver/qemu: Donât load vhost_net module in checkFeatures
- lxc/utils: Change sort ByName interface name to SortColumnsNaturally
- lxd/apparmor/qemuimg: Add profileName argument to qemuImgProfile
- lxd/apparmor/qemuimg: Updates qemuImgProfileLoad to return the profile name
- lxd/apparmor/qemuimg: Removes unused getProfileName
- lxd/apparmor/qemuimg: Call deleteProfile directly in QemuImg
- lxd/apparmor/qemuimg: Removes unused qemuImgDelete and qemuImgUnload
- lxc/copy: Donât try and modify volatile.idmap.next on refresh if not set in source
- doc/devices/nic:
ovn
NICs support hotplugging for VMs now - lxd/network/network/utils: Update pingIP to accept context and return error
- lxd/network/driver/ovn: pingIP usage
- lxd/network/driver/ovn: Rename pingOVNRouterIPv6 to pingOVNRouter
- lxd/network/driver/ovn: Ping OVN virtual router external IPs when using physical uplink in startUplinkPortPhysical
- doc: Update wrong description for return value of validatePCIDevice
- lxd/device: Add helper function to check if the requested device matches the given GPU card
- lxd/device: Use the new helper function gpuSelected to check if a GPU for a container should be skipped
- lxd/device: Remove obsolete if statement since the check for GPU id is already performed in the gpuSelected function
- doc: Update godoc to resemble the actual functionality after moving out logic
- lxd/device: Make gpuSelectd generic to support all kinds of GPU device types
- doc: Extend notes to define which id exactly is meant by GPU card id
- doc: fix typo in error message affecting all GPU types when trying to use multiple device settings that interfere with each other
- lxd/storage/utils: Improve errors in ImageUnpack
- lxd/response: Fix cleanup called before file is closed
- lxd/daemon: No need to delete left over operations in init as this is done in OpenCluster
- lxd/operations/operations: Donât log warning when deleting operation if record not found
- lxd/response: Call cleanup at the end of each processed file
- shared/cmd: Moves lxc/utils to shared/cmd.
- shared/cmd: Adds RenderSlice method and sorting utils.
- shared/cmd: Adds tests for SortByPrecedence.
- shared/cmd: Adds tests for RenderSlice.
- api: Adds migration_vm_live extension
- zfs: Allow growing pool size
- btrfs: Allow growing pool size
- lvm: Allow growing pool size
- storage: Prevent shrinking storage pools
- test: Test storage pool resize
- api: Add
storage_pool_resize
API extension - api: disk_io_cache
- lxd/device/disk: Add io.mode
- lxd/instance/qemu: Add support for io.cache
- doc: Add io.cache to disk devices
- doc: Update storage pool resize
- doc: Update description of storage pool
size
key - api: auth_user
- shared/api: Add auth_user_name and auth_user_method
- lxd/api: Add auth_user_name and auth_user_method
- lxd/db: return an error in
UpdateWarningStatus
is no row is affected (ID does nott exist) - lxd/db: return an error in
UpdateWarningState
is the warning is not found - lxd/storage/zfs/utils: Add helper function to get multiple dataset properties
- lxd/storage/zfs/volumes: Fix ZFS does not respect atime=off option
- lxd/instance/qemu/bus: Introduce allocateDirect
- lxd/instance/qemu: Move SCSI to root bridge on CSM
- lxd/instance/qemu: Move GPU to root bridge on CSM
- lxd/apparmor/qemu: Add support for multiple OVMF builds
- lxd/instance/qemu: Support multiple OVMF firmwares
- lxd/endpoints: make sure to not access passed the end of the slice
- lxd/apparmor/archive: Fix snap handling
- lxc/remote: Fix rename of global remotes
- lxd/main/forkproxy: use %v consistently when printing errors
- lxd/main/forkproxy: use Println() when no format specifier is used
- lxd/main/init/interactive: use Print() and Println() when no format specifier is needed
- lxd/main/sql: use Println() when no format specifier is used
- lxd/main/recover: use Println() when no format specifier is used
- lxd/main/cluster: use Print() when no format specifier is needed
- lxd-benchmark: use Println() instead of Printf()
- lxd-migrate: use Print() and Println() when no format specifier is needed
- lxc/info: use Print() when no format specifier is needed
- lxc/file: use Println() when no format specifier is used
- shared/cmd: use Print() when no format specifier is used
- lxd/instance/drivers/driver/lxc: Update initLXC to return a pointer to liblxc.Container
- lxd/instance/drivers/driver/lxc: Update cgroup to require being passed a liblxc.Container
- lxd/instance/drivers/driver/lxc: Updates loadRawLXCConfig to accept a liblxc.Container
- lxd/instance/drivers/driver/lxc: Update to use local liblxc.Container returned from d.initLXC
- lxd/instance: Donât return instance.Instance from instanceCreateFromImage
- test: Improve liblxc file handle leak detection
- lxd/isntance/drivers/driver/lxc: SetFinalizer for clearing liblxc.Container reference once in initLXC
- lxd/storage/drivers/driver/zfs/volumes: Only delete volume on failure if not doing refresh in createVolumeFromMigrationOptimized
- lxd/device/gpu/physical: Fix panic when GPU device doesnât have DRM support in startContainer
- lxd/device: Fix regression for not properly checking for GPU DRM information
- lxd-migrate: Fix SecureBoot handling
- api: instances_state_total
- shared/api: New InstancePost attributes to handle instance rebuilding
- lxd/client: New client method to handle instance rebuilding
- Revert âlxd/device: Fix regression for not properly checking for GPU DRM informationâ
- lxd/sys: Remove loading vhost_vsock module on init
- lxd/instance/drivers: Get vsockID during qemu chectFeatures
- shared/util: Add
StringPrefixInSlice(key string, list []string) bool
- lxd/operations: Use
map[string][]api.URL
as resources - lxd/operations: include project name in resource URL
- lxc: Use api.URL in resources passed to
OperationCreate
- lxd: Use api.URL in resources passed to
OperationCreate
- lxd: replace â1.0â API version by
version.APIVersion
- lxd-agent: Use api.URL in resources passed to
OperationCreate
- Makefile: ensure that update-po fails on any error
- Makefile: tell msgmerge to not create backups that we delete afterward
- lxd/storage/drivers/driver/btrfs/utils: Donât fail on failure to set subvolume readonly during delete
- lxd/storage/drivers/driver/btrfs/utils: Donât try and delete subvolume twice if failed first time and recursion not enabled
- test: Add debug logging for clustering events tests
- lxd/storage/drivers/btrfs: Add FillConfig function
- lxd/storage/drivers/ceph: Add FillConfig function
- lxd/storage/drivers/cephfs: Add FillConfig function
- lxd/storage/drivers/cephobject: Add FillConfig function
- lxd/storage/drivers/dir: Add FillConfig function
- lxd/storage/drivers/lvm: Add FillConfig function
- lxd/storage/drivers/zfs: Add FillConfig function
- lxd/storage/drivers/mock: Add FillConfig function
- lxd/storage/drivers: Add FillConfig function to the storage driver interface
- lxd/api_internal_recover: Populate config defaults
- lxc/info: Show mdev profile name
- lxd/device/gpu/mdev: Add locking
- lxd/instance/qemu: Disable x-vga on mdev GPUs
- lxd/bgp: Allow one hour for LXD restart
- lxd/instance/drivers/driver/qemu: Load vhost_vsock kernel module if /dev/kvm is available
- shared/util: Use more efficient ReadDir in PathIsEmpty
- lxd/resources: Refactor
resources.ParseCpuset
- lxd/resources: Add
resources.ParseNumaNodeSet
- lxd: schedule instance on NUMA nodes if specified
- lxd/instance: Reschedule instance if
limits.cpu.nodes
is updated. - shared/instance: Add
limits.cpu.nodes
field to instance config keys - doc: Add
limits.cpu.nodes
- api: Add
limits.cpu.nodes
- test: Add sleep between restarting instance and checking monitor logs in clustering_events
- *: replace Seek(0, 0) by Seek(0, io.SeekStart) as the later is clearer
- doc: clean up doc about NUMA node IDs
- lxd/instance/qemu: Fix vsock id type
- lxd/instance/lxc: Fix live cgroup updates
- lxd/filter: Support custom filter operators
- shared/filter: Move filter to shared package
- lxd: update filter usages
- lxd/instance/drivers/driver/qemu: Fix VMs on filesystems that do not support direct I/O
- lxd/shared: Add utility function to parse the target query param
- lxd/project: Add functions to validate projects cluster member and group restrictions
- lxd/db: Return a not found error if there isnât any node with least amount of instances
- lxd/api/cluster: Handle error if no evacuation target can be found
- .github/labeler: Bring into sync with main
- github/workflows/tests: Bring into sync with main
- shared/cmd/table/test: Fix imports
- gomod: Update deps
- lxd/api: Restructure the cluster permission checks and use central functions for the instances endoint
- lxd/api: Allow the basic selection of cluster groups when moving instances
- tests/cluster: Add tests for instance movement
- doc/cluster: Add comment on how to move instances to cluster groups using the target flag
- lxc/storage/volume/show: Add missing documentation in help message
- lxc/storage/volume/edit: Add missing documentation in help message
- lxc/storage/volume/set: Add missing documentation in help message
- lxc/storage/volume/get: Add missing documentation in help message
- lxc/storage/volume/info: Add missing documentation in help message
- lxc/storage/volume/unset: Add missing documentation in help message
- lxd/storage/util: use a power of 2 unit for address space limit
- test/*: use a power of 2 units for memory/storage
- lxc/delete: Allow deleting multiple snapshots
- test: Test deleting multiple instance snapshots
- doc: exclude pages from search index
- lxd/storage/drivers: Donât add filesystem suffix to VM images
- lxd/storage/drivers: Drop block options from VM block volumes
- lxd/patches: Drop filesystem suffix from ZFS image volumes
- lxd/storage/drivers: Drop FS suffix on VM image block volumes
- lxd: Fix deviceEventListener resource scheduling when joining cluster
- lxd/instance/drivers: Ensure root disk device
- test: Test assigning empty profile to instance
- lxd/instance/drivers/qemu: Use uint32 for vsock Context ID
- lxd/instance/drivers/qemu: Add function to retrieve the vsock Context ID
- lxd/instance/drivers/qemu: Pick a random vsock Context ID
- lxd/storage/drivers/btrfs: Add reverter for volume snapshotting
- lxd/storage/drivers/btrfs: Change misleading comment in snapshot creation
- lxd/storage/drivers/btrfs: Expect volatile files when performing snapshots
- lxd/storage/drivers/btrfs: Mark btrfsIsSubVolume as deprecated
- lxd/storage/drivers/btrfs: Expect volatile files when performing snapshots
- lxd/storage/drivers/btrfs: Use IsSubvolume consistently
- lxd/db: Add new content type âisoâ
- lxd/storage: Add ContentTypeISO
- lxd/storage/drivers: Add IsContentBlock()
- lxd/storage/drivers: Handle volume disk path of ContentTypeISO
- lxd/storage: Add CreateCustomVolumeFromISO
- lxd/storage: Disallow some actions on ContentTypeISO volumes
- lxd/storage: Support copying ISO storage volumes
- lxd/storage: Handle migration of custom ISO volumes
- lxd/storage/drivers/common: Handle ContentTypeISO
- lxd/storage/drivers/generic: Handle ContentTypeISO
- lxd/storage/drivers/dir: Handle ContentTypeISO
- lxd/storage/drivers/btrfs: Handle ContentTypeISO
- lxd/storage/drivers/ceph: Handle ContentTypeISO
- lxd/storage/drivers/lvm: Handle ContentTypeISO
- lxd/storage/drivers/zfs: Handle ContentTypeISO
- qemu: Set media=cdrom for ISO 9660 images
- lxd/device/disk: Handle ISO custom volumes
- client: Add CreateStoragePoolVolumeFromISO
- lxd/storage: Rephrase restriction of snapshots
- lxd/device/veth: Fix MTU handling
- lxd/device/tap: Fix MTU handling
- tests: Update for bridged host MTU behavior
- added a heading in the client/operations file that was missing
- some functions in the client/lxd.go file were missing the documentation headings
- Added a heading in the client/lxd_candid.go file that was missing
- Added a heading in the client/lxd_containers.go file that was missing
- doc/howto/instances_create: give an example of VM launch with a bigger root disk
- doc/howto/instances_create: s/a Ubuntu/an Ubuntu/
- doc: Fix typo in edit a profile section
- shared: Rename imports to new go module
- lxd/instance/drivers/qemu: Skip container config keys
- In the lxd_instance.go file, I added the heading to the rebuildInstance() function
- In the lxd_instance.go file, I added the heading to the tryRebuildInstance() function
- In the lxd_instance.go file, I added the heading to the tryCreateInstance() function
- In the lxd_instance.go file, I added the heading to the tryMigrateInstance() function
- added headings in the lxd_storage_volumes.go file functions that were missing
- added headings in the util.go file function that was missing
- tests/cluster/groups: Add test for cluster group edits via PUT
- lxd/device/disk: Disable hot plugging of directory disks from VMs
- lxd/instance/drivers/qemu: Remove obsolete directory disk check
- lxd/device/disk: Use functions to check for Ceph RBD or FS
- added multiple headings in the files of lxc directory
- added multiple headings in the action.go file of lxc directory
- added multiple headings in the alias.go file of lxc directory
- lxd/instance/drivers: Update system unit documentation
- lxd/instance/drivers/qemu: Restructure live updateable keys prefix check
- test: Sleep for 2s when making clustering event hub changes
- Added headings in the cluster_group.go file of the LXC directory
- Added headings in the cluster_role.go file of the LXC directory
- lxd/db: Return instance type from GetInstancesByMemberAddress
- lxd: Add instance type to instances of offline cluster members
- lxd/storage/drivers/zfs: Donât delete the target volume when migrating
- doc/contributing: the default branch was renamed to âmainâ
- lxd/resources: update link to systemd github repo
- lxd/migrate: update link to doc (new path and branch name)
- lxd/main_cluster: update link to online doc
- grafana: update link to online doc and dashboard ID
- lxd/util/http/test: Update hostname s/linuxcontainers.org/example.com/
- shared/api/url/test: Update hostname s/linuxcontainers.org/example.com/
- shared/cert: replace org name by âLXDâ
- lxd: Check project permissions when importing from backup
- lxd/instance/drivers/qemu: Skip every other vsock syscall error except ENODEV
- test: Check project limits when importing instances
- lxd/firewall/drivers: Optimize xtables network forward rule generation.
- lxd/firewall/drivers: Optimise nftables network forward rule generation.
- test/suites: Updates network forward suite for optimised xtables rules.
- test/suites: Updates network forward suite for optimised nftables rules.
- Added the headings in multiple functions of the config.go file
- doc/storage: clarify when to specify storage volume type
- lxd/migrate: Fix go routine leak in disconnect if client never connects
- shared/subprocess/proc: Fix go routine leak in start
- test: Cleanup instances at end of metrics test
- lxd/instance: Prevent MAC/address conflict for imported instances
- tests: Add container export/import address conflict test
- lxd/storage/drivers/zfs: Fix content type detection for custom block volumes
- test: Test recovering custom block volumes
- lxd/instance/driver/qemu: Use happy path style
- shared/ws/mirror: Remove unused MirrorWithHooks and use MirrorRead and MirrorWrite in Mirror function
- client/lxd/instances: Donât wait for remote viewer to finish when LXD connection finishes in ConsoleInstanceDynamic
- lxd/instance/console: Improve logging in connectVGA
- lxd/instance/console: Improve logging in doConsole
- client/lxd: Use ws.Mirror in ConsoleContainer functions
- test: Reset rsync compression mode in migration
- test: Force delete instance in migration
- test: Fix lxc-to-lxd tests
- test: Enable lxd-to-lxd test
- lxc-to-lxd/transfer: When remote websocket reaches EOF close connection to rsync
- lxc-to-lxd/utils: Use abort function earlier on
- lxc-to-lxd/utils: Detect and fail if negotiated rsync features donât match
- lxd/storage/drivers/generic/vfs: Improve logging in genericVFSCreateVolumeFromMigration
- lxd/storage/drivers/driver/ceph: Update MigrationTypes to support rsync xattrs
- lxd/cluster/membership: Apply MemberConfig to storage config table
- shared/ws/mirror: Donât send normal close message at end of MirrorWrite
- shared/ws/mirror: Setup defer to close channel first
- lxd-migrate/transfer: Pass context into rsyncSend
- lxd-migrate/utils: Improve errors in transferRootfs
- lxd-migrate/utils: Use abort cleanup function earlier and more often
- lxd-migrate/utils: Detect and fail if negotiated rsync features donât match
- lxd-migrate/transfer: When remote websocket reaches EOF close connection to rsync
- lxd/instance/drivers/qemu: Occupy vsock Context ID through syscall
- lxc/profile: Add refresh option for copy
- doc: Add busybox-static requirement for running test suite
- test: Fix flaky clustering image refresh
- ceph: Detect custom ISO volumes
- btrfs: Use suffixed volume name when deleting custom ISO volumes
- lvm: Detect custom ISO volumes
- zfs: Detect custom ISO volumes
- generic: Detect custom ISO volumes
- volume: Get mount path for custom ISO volumes
- patches: Rename existing custom ISO volumes
- storage: Detect unknown ISO custom volumes
- lxd/device: Add
checkAttachedRunningProcesses
function - lxd/device/gpu: for VM, if
gputype=physical
, check that that no procs are tied to card before unbind - client: Add
getInstanceExecOutputLogFile
anddeleteInstanceExecOutputLogFile
- client: stream the content of the exec log file to stdout/stderr within the
ExecInstance
func - tests: add tests for lxc profile copy with refresh flag
- Makefile: Install latest golangci-lint if not already installed.
- lxd: Fix gosimple false positive.
- shared: Remove BuildNameToCertificate.
- lxd/util: Remove BuildNameToCertificate.
- shared/netutils: Move C code to top of file (gci).
- shared/linux: Move C code to top of file (gci).
- shared/idmap: Move C code to top of file (gci).
- lxd/storage/quota: Move C code to top of file (gci).
- lxd/seccomp: Move C code to top of file (gci).
- lxd/storage/backend/lxd: Fix call to VolumeDbCreate in CreateCustomVolumeFromISO
- lxd: Move C code to top of files (gci).
- lxc-to-lxd: Move C code to top of file (gci).
- lxd/api_internal_recover: Skip unsupported storage drivers during recovery
- doc: Use JSON object as term instead of dict
- shared/api: Use JSON object as term instead of dict
- lxd/operations: Use JSON object as term instead of dict
- lxc/cluster_group: Added lxc cluster group add
- doc: Added lxc cluster group add
- test: Added tests for lxc cluster group add
- lxc: Add
stringTo{ Type }HookFunc
utils func - test: Add unit tests for
utils_properties.go
- lxc: Update
get/set/unset
command forcluster
properties - lxc: Update
get/set/unset
command forinstance
properties - lxc: Update
get/set/unset
command fornetwork ACL
properties - lxc: Update
get/set/unset
command fornetwork forward
properties - lxc: Update
get/set/unset
command fornetwork zone
properties - lxc: Update
get/set/unset
command fornetwork peer
properties - lxc: Update
get/set/unset
command fornetwork
properties - lxc: Update
get/set/unset
command forprofile
properties - lxc: Update
get/set/unset
command forproject
properties - lxc: Update
get/set/unset
command forstorage volume
properties - lxc: Update
get/set/unset
command forstorage
properties - zfs: Add lxd:content_type user property
- zfs: Get content type from lxd:content_type property
- patches: Add patchZfsSetContentTypeUserProperty
- test: Recover zfs block_mode custom volumes
- lxd/network/common: Prevent unspecified network forward address
- tests: Check unspecified network forward addresses
- lxd/shared/instancewriter: Use right header key for tar ACLs
- tests: Add file ACL test for image publishing
- test: get/set/unset of instance properties
- doc: Update the doc to describe how to get/set/unset instance properties
- lxc: Show storage volume info regardless of state
- lxd/db: Move GetStoragePoolVolumeWithID to ClusterTx
- lxd/db: Fix URI of TypeStorageVolumeBackup entities
- lxd/db: Fix column name in storage volume query
- i18n: Update translation templates
- doc: generate rest-api.yaml
- Makefile: Bring into sync with main
- Makefile: Donât fail doc build if doc/reference/manpages/ doesnt exist
- doc/metrics: Update grafana dashboard link
- gitignore: Bring into sync with main
- lxd/db/storage/volumes: Removes unused function storageVolumeConfigGet
- suites/projects: Bring into sync with main
- api: Add
network_allocations
API extension - shared/api: Add new
NetworkAllocations
API type - lxd/client: Add
GetNetworkAllocations
function - lxd: Implement
networkAllocationsGet
API endpoint - lxc: Add
network list-allocations
command - test: Display IPAM information and check it is correct
- doc: generate rest-api.yaml
- doc: Add IPAM howto section
- doc/clustering: update MicroCloud information
- lxc/volume: Fix docstrings to clarify volume operations
- doc/lxd-migrate: add an example for importing to a VM
- lxd/instance/drivers/driver/lxc: make limits.memory.swap work properly
- inclusive identities
- lxd/db: Return nodeID in GetStoragePoolVolumeWithID
- lxd/db: Add function to get expired storage volume backups
- lxd: Add hourly job pruning expired storage volume backups
- operationtype: Change description of BackupsExpire
- test: Check backup volume expiry
- lxd/network/allocations: Handle networks that donât implement the Leases functionality
- lxd/network/allocations: Renames getDefaultCIDRAddr to ipToCIDR for clarity
- lxd/network/allocations: Use better wrapped errors in networkAllocationsGet
- test: Fix integration tests to support network allocation listing with a tabular format
- shared/api/network/addresses: Reworks NetworkAllocations struct to allow for the concept of NAT being enabled/disabled on a per-IP family basis
- lxd/network/allocations: Fixes networkAllocationsGet NAT output
- lxc/network-allocations: Output a tabular format instead of JSON format
- doc/rest-api: Refresh swagger YAML
- doc: Update
lxc network list-allocations
output format - lxd/client: Mark HasExtension as deprecated
- lxd/storage/drivers/zfs: Allow volume snapshot refresh
- api: Add storage_api_remote_volume_snapshot_copy extension
- lxd/shared/api: Extend StorageVolumeSnapshotPost for remote copy
- rest-api: Extend StorageVolumeSnapshotPost for remote copy
- lxc/volume: Use the right path when copying volume snapshots
- lxc/volume: Check for storage_api_remote_volume_snapshot_copy extension
- lxd/api/storage: Add support to copy volume snapshots between remotes
- lxc/volume: Block --volume-only flag when copying volume snapshots
- tests: Check various volume snapshot copy operations
- tests: Check various volume snapshot remote copy operations
- test: Fix test_container_devices_disk_ceph tests
- i18n: Update translation templates
- doc: add a link to Ubuntu Discourse
- lxc/utils: Support parsing of anonymous nested structs
- test: Add get timestamp property test with instance snapshot
- shared/proxy: allow SOCKS5 proxy
- lxd/device/disk: Fix boot from Windows ISO by setting correct FSType for .iso files
- lxd/storage/drivers/volume: Use vol.IsBlockBacked() in ConfigSize
- lxd/storage/utils: Use vol.IsBlockBacked in ImageUnpack
- lxd/storage/backend/lxd: ImageUnpack usage
- lxd/storage/backend/lxd: Use the result of FillVolumeConfig in EnsureImage when comparing cached volumes
- lxd/storage/drivers/driver/zfs/volumes: Donât populate block volume settings for VM volumes in FillVolumeConfig
- lxd/storage/backend/lxd: Removes unused poolBlockFilesystem function
- lxd/backup/backup_config_utils: Change helper function to update multiple backup file properties
- lxd/storage/backend: Update instance backup file on instance import
- test/suites/backup.sh: Add test for backup export, import, and recovery
- test/main.sh: Reference test for imported instance recovery
- lxc/init: Remove project query parameter from instance name
- lxd/storage/drivers/zfs: Tweak getDatasets
- lxd/storage/drivers/zfs: Clarify comment
- lxd/storage/drivers/ceph: Fix typo in comment
- lxd/storage/zfs: Donât strip leading slash on snapshots
- lxd/storage/drivers: Handle newer losetup
- lxd/storage/pool_interface: Add PostHooks to MountInfo
- lxd/storage: Add MountInfo to MountCustomVolume
- lxd: Update for MountCustomVolume change
- lxd/device/disk: Update for MountCustomVolume change
- lxd/instance/lxc: Update for MountInfo change
- api: zfs_delegate
- scripts: Add
zfs.delegate
to bash completion - lxd/storage/drivers/zfs: Detect support for delegation
- lxd/storage/drivers/zfs: Add
zfs.delegate
- lxd/storage/drivers/zfs: Implement recursion
- lxd/instance/lxc: Add /dev/zfs when delegation is supported
- lxd/storage/drivers: Add DelegateVolume and CanDelegateVolume
- lxd/storage: Add DelegateVolume to PostHooks
- tests: Add basic ZFS delegation test
- test/suites/clustering: Add test case for storage config on create vs cluster join
- lxd/instance/lxc: Restrict /dev/zfs to unprivileged containers
- doc/installing: update link to tutorial on Discourse
- doc/cluster: add an example for a ZFS storage pool to preseed
- lxd/device/device/utils/disk: Look for virtiofsd in /usr/lib/
- SECURITY.md: update the security policy
- lxd/networks: Donât filter config on project owned networks
- test/suites/config.sh: LXC 2.0 is EOL
- test/suites/kernel_limits.sh: LXC 2.0 is EOL
- test/suites/console.sh: LXC 3.0 is EOL
- test/suites/storage_driver_zfs.sh: be extra careful when parsing zfs --help
- test: Improve skip message
- lxd: Move rbac package to auth
- lxd/auth: Add Authorizer interface
- auth: Add common authorization driver
- auth: Add tls authorizer
- lxd: Add Authorizer to daemon
- state: Add Authorizer to state
- rbac: Make rbac use the new Authorizer interface
- Use Authorizer interface across the code base
- lxd: Stop status check if RBAC is disabled
- shared/simplestreams: avoid out of bound array access in GetFiles()
- lxd/util/kernel: avoid out of bound array access in HugepagesPath()
- lxd-agent/metrics: avoid out of bound array access in getCPUMetrics()
- lxd-agent/metrics: avoid out of bound array access in getDiskMetrics()
- lxd-agent/metrics: avoid out of bound array access in getFilesystemMetrics()
- lxd-agent/metrics: avoid out of bound array access in getMemoryMetrics()
- doc: Update IPAM cli output to use documentation-specific IP addresses
- client/simplestreams_images: avoid out of bound array access in GetImageFile()
- auth/rbac: Fix uninitialized permission lock
- rbac: Validate API URL
- lxd: Pass RBAC agent username to authorizer
- rbac: Mention config keys on validation error
- doc: Remove DNS subheading.
- rbac: Use correct function to get projects
- Change RaftSpare node to RaftVoter
- doc: Add a how to for routed nic devices on VMs.
- doc: Link to the VM routed nic how-to from the device reference.
- Update .deepsource.toml
- static-analysis: Fix shellcheck 0.9.x complaints
- test/includes/lxc: avoid printing LXC_LOCAL=1 lxc_remote âŠ
- test/includes/lxc: avoid printing the eval line in DEBUG
- lxd/endpoints_exported_test: s/sss/ss/
- lxd/endpoints/network: s/sss/ss/
- lxd/endpoints/pprof: s/sss/ss/
- lxd/networks: s/sss/ss/
- shared/validate: s/sss/ss/
- test/basic: s/sss/ss/
- lxd/device/nic_macvlan: s/suppprt/support/
- lxd/device/nic_macvlan: s/suppprt/support/
- lxd/storage/drivers/driver_dir_utils: s/ppp/pp/
- lxd/util/http: s/fff/ff/
- lxd/network/bridge: s/dbUpdateNeeeded/dbUpdateNeeded/
- lxd/network/macvlan: s/dbUpdateNeeeded/dbUpdateNeeded/
- lxd/network/ovn: s/dbUpdateNeeeded/dbUpdateNeeded/
- lxd/network/physical: s/dbUpdateNeeeded/dbUpdateNeeded/
- lxd/network/sriov: s/dbUpdateNeeeded/dbUpdateNeeded/
- lxd/api_internal_recover: s/neeed/need/
- lxd/firewall/nftables: s/adddress/address
- shared/util: fix RandomCryptoString()'s description
- shared/util: fix JoinTokenDecode()'s description
- lxd/api_internal_recover: Recover database entry for empty storage pools
- lxd/main_recover: Allow recovery of empty storage pools
- test/suites/backup.sh: Update expected no-op recovery output
- doc: Clarify scope of nexthop config keys in BGP extension
- doc/api-extensions: fix extension name for VM support
- client/lxd_server: use StringInSlice() in HasExtension()
- lxc/copy: replace strings.Contains() and .SplitN() by strings.Cut()
- lxc/init: replace strings.Contains() and .SplitN() by strings.Cut()
- lxc/project: replace strings.Contains() and .SplitN() by strings.Cut()
- lxd-migrate: replace strings.SplitN() by strings.Cut()
- api/instance: Fix instance movement node selection
- lxd/network: fix bgp.ipv*.nexthop keys not being recognized
- doc: Align header of macaroon_authentication
- test/migration: Check instance node when moving within cluster group
- fix: helper message typo
- shared/termios: Use golang.org/x/term instead of golang.org/x/crypto/ssh/terminal
- gomod: Tidy
- lxd/api_cluster: document
cluster
options - shared/instance: document instance
miscellaneous
options - shared/instance: document instance
boot-related
options - shared/instance: document instance
cloud-init
options - shared/instance: document instance
limit
options - shared/instance: document instance
nvidia
options - shared/instance: document instance
raw
options - shared/instance: document instance
snapshots
options - doc/cluster: review config option documentation
- doc/css: add an orange color to the doc styling
- doc: update link to distrobuilder docs
- lxd/devices: adjust network device hotplug check
- lxd/instance/drivers/driver_lxc: wait for container to start before setNetworkPriority
- api: add operations_get_query_all_projects extension
- lxd/db: add support for getting nodes without project name
- lxd: add all-projects param for operationsGet
- lxd: add param swagger doc for operationsGet
- doc/rest-api: Refresh swagger YAML
- client: add GetOperationsAllProjects
- tests: add standalone test cases for operations_get
- lxd/device/nic_bridgeed: Allow migration if nic parent is managed network
- lxd/instance/drivers/driver_common: Log warnings when auto-migration is prevented by a certain device
- i18n: Update translation templates
- lxd/auth/rbac: Fix regression
- lxd/storage/zfs: Fix version handling
- shared/version: Show parsed version on failure
- lxc: Un-hide
lxc pause
command - lxc: Un-hide
lxc init
command - lxc: Un-hide
lxc monitor
command - lxc: Un-hide
lxc query
command - scripts/bash/lxd-client: fix completion to work for non-default projects
- scripts/bash/lxd-client: use parentheses around grep -E alternations
- scripts/bash/lxd-client: donât propose â(current)â as valid project
- doc: add guide about virt-v2v
- lxd: Use instance lock when updating instance
- shared/util: use LC_ALL instead of LANG in RunCommandCLocale()
- lxd/resources: Use
lshw
if DMI is not available - lxd/config: Add ubuntu-minimal and ubuntu-minimal-daily remotes
- zfs: Disallow block.* settings for regular custom block volumes
- test: Check that custom block volumes cannot set block.*
- doc: Updates routed nic how-to to use pass netplan config via stdin.
- lxd/resources: Use RunCommandCLocale when calling
lshw
- drivers: Use StatusError to ensure error code consistency
- instance_exec: Add contraint validation
- lxd/cgroup/abstraction: skip loop devices from cgroup2âs io.stat
- lxd/cgroup/abstraction: skip loop devices from cgroup1âs blkio.throttle.{io_service_bytes_recursive,io_serviced_recursive}
- doc/zfs: remove limitation
- btrfs: Mention detected FS on detection error
- lxd/device/disk: Refactor CanHotPlug
- lxd/device/disk: Check that filesytem disks being attached to VMs have a mount path inside guest
- lxd/device/disk: Removes unused sourceIsDir function
- storage/drivers/ceph: Differentiate between a true non-existent OSD pool and a Ceph internal issue
- shared/cmd/ask: Add Asker type with CLI helpers as methods
- lxd: Setup global Asker for lxd commands
- lxc: Setup global Asker for lxc commands
- lxd-migrate: Setup global Asker for lxd-migrate commands
- doc/zfs: document that some features require ZFS 2.2
- lxd-agent: Skip when already mounted
- lxd/instance/qemu: Fix bootorder when using -kernel
- github: Adds CODEOWNERS file
- lxd/apparmor/instance/qemu: Allow /etc/machine-id
- lxd/instance/qemu: Avoid old -bios syntax
- test/backends/ceph: lower OSD pg_num to 8
- lxd/network/openvswitch/ovn: Add function to retrieve all logical switch port IPs
- lxd/network/driver_ovn: Fix OVN leases not showing static ips
- lxd/device/nic_ovn: Use all allocated IPs as dynamic when static IP is not set for a device
- lxd/network/driver_ovn: Remove redundant InstanceDevicePortDynamicIPs function
- lxd-agent: Validate fields only for CPU info
- lxd/storage/drivers/btrfs: Use command instead of walking dir to get subvolumes
- lxd/auth: Exit goroutine if RBAC has been disabled
- shared/simplestreams/products: Adds support for incus.tar.xz items
- shared/validate: names starting with a digit are valid
- test/basic: 12test is now a valid instance name
- test/basic: test invalid instance name with a period
- lxd: Revert server config if it cannot be set
- lxd/device/device/utils/network: Improve error handling and messaging in networkSRIOVRestoreVF
- test/network: test DNS resolution of instance names
- lxd: Return http 429 on repeated shutdowns
- lxd: Fix type field formatting
- lxd/storage/drivers/driver_zfs_volumes: Disallow setting zfs.block_mode for VM block volumes
- lxd/main/forknet: Remove altname if preventing rename of NIC interface
- lxc/operation.go: Add missing flag all-projects for command operation list
- patches: Donât fail if no storage pools were found
- shared/simplestreams/products: Fix regression in lxd_combined.tar.gz handling
- client: check API extension for
instances_rebuild
- doc: add link to Windows VM tutorial
- i18n: Update translation templates
- test/main: Donât clean up if run inside Github
- test/suites/storage_driver_cephfs: Sync with main
- test/suites/container_devices_nic_bridged: Check for known firewall driver
- test: Backports test_clustering_update_cert_reversion
- shared/api/event: Adds EventTypeOVN
- shared/api/event: Adds fields from event_lifecycle_name_and_project
- shared/api/resource: Adds types from ovn_nic_acceleration_vdpa
- client: Adds oidc support
- gomod: Add oidc dependencies
- lxd/storage/drivers: Keep sync with main
- doc/rest-api: Refresh swagger YAML
- test/godeps: Updates list for oidc
- doc: add missing information from website to docs
- doc: update information about provided/supported images
- readme: update link
- doc: update link to IRC tutorial
- doc: update to use the ubuntu: image server
- doc: fix broken links
- doc: cleanup
- README: Update test status badge so it accurately shows status of tests.yml workflow
- README: remove CII Best Practices badge link
- api: Add event_lifecycle_name_and_project
- lifecycle: Add name and project for instance lifecycle events
- doc/api-extensions: Use
lifecycle
consistently - lxd/main_init: use GiB instead of GB for storage-create-loop
- lxd/firewall: add support for InstanceSetupNetPrio/InstanceClearNetPrio
- lxd/device: extend networkSetupHostVethLimits signature
- lxd/device: add support for network device limits.priority option
- test: add test for limits.priority per-device setting
- api: instances_nic_limits_priority
- lxc/cgroup/init: change warning that network priority will be ignored without NetPrio cgroup
- patches: Remove invalid block settings from existing volumes
- patches: Check server name when unsetting invalid block settings
- lxc/network-allocations: Fix project and remote usage.
- tests: Donât use lxdbr0 in network tests
- doc/devices_nic: add missing column when
limits.priority
was copy-n-pasted in - lxd/patches: Fix patchStorageRenameCustomISOBlockVolumes when no storage pools exist
- github: Skip edge snap build for pushes on branches from dependabot
- github: Run push actions on main and release branches only
- Revert âlxd/storage/zfs/volumes: Fix ZFS does not respect atime=off optionâ
- Revert âlxd/storage/zfs/utils: Add helper function to get multiple dataset propertiesâ
- doc/howto/instances_routed_nic_vm: add missing EOF
- doc/howto/network_ipam: remove extraneous blank line
- doc/doc-lint: fix the linting script for new version of mdl
- doc: add page title for related links
- doc/api-extensions: remove blank line
- lxd/device/proxy: Consider routed NIC IPs for wildcard target check
- Makefile: Rename update to update-gomod
- doc/requirements: allow linking to Go requirements
- doc/installing: link to Go requirements and update Ubuntu instructions
- doc/howto/benchmark_performance: link to Go requirements
- doc/howto/migrate_from_lxc: link to Go requirements
- doc/requirements: Go 1.19 is now the minimum version
- shared/cert: Update code comments about CRL
- github: Use Go 1.19 and check for compat with that in go mod tidy
- lxd/network/utils: use crypto/rand instead of math/rand
- doc: Ensure readthedocs build uses Go 1.19
- shared/cert: Replace x509.ParseCRL() by x509.ParseRevocationList()
- lxd/util/http: Use x509.RevocationList
- Makefile: Force Go 1.19
- Makefile: remove toolchain directive from go.mod for backward compat
- go.mod: update deps with
make update-gomod
- github: look for branch target name in PR title
- github: merge DCO and branch target jobs into one
- lxd/apparmor/rsync: Replace ioutil.WriteFile() by os.WriteFile()
- lxd/device_utils_generic: Replace ioutil.ReadDir() by os.ReadDir()
- Makefile: add staticcheck target
- Add staticcheck config
- golangci: sort linters list
- lxd/api: replace numeric literal 301 by http.StatusMovedPermanently
- lxd/devlxd: replace numeric literal 401 by http.StatusUnauthorized
- github: shorten job names to improve the UI view
- github: dependabot knows which branch to target
- lxd/device/nic_ovn: Prevent setting static IPv6 if static IPv4 is not set
- lxd/storage/drivers: Adds further validation to common driver.
- lxd/storage: Remove check for mutually exclusive config options.
- test/suites: Adds checks for mutually exclusive config options.
- Replace RemoveElementsFromStringSlice with RemoveElementFromSlice
- github: add differential shellcheck to get in PR feedback
- github: only try to upload differential shellcheck result if it ran
- lxd/firewall/drivers_nftables: fix hostVersion() description
- patches: Remove invalid block settings from existing volumes
- test/suites: Check that we can list allocations in a remote server.
- doc/networking/firewall: add more restrictive UFW rules
- client/lxd/images: Propagate error (if any) when streaming split tarballs
- github: add more quotes around subshell
- github: run fsck on git objects (safety feature)
- github: sign commits (with SSH key) to repo on git.launchpad.net
- github: set -eux on shell snippet
- lxc: Handle volume rename in
lxc storage volume move
command - lxd: Fully configure new node from cluster config after it is added.
- test: Rename custom volume using
lxc storage volume move
- lxc/storage: Initialise storage pool config map if nil.
- build(deps): bump redhat-plumbers-in-action/differential-shellcheck
- client: Remove project from format string API path.
- scripts/bash: add missing
lxc config trust
subcommands - github: build static lxc and lxd-migrate bins for arm64
- lxd: Move certificate type to certificate package.
- lxd/storage: Prevent duplicate usedBy profile device entries
- lxd/certificate: Adds a thread-safe certificate cache.
- lxd: Use certificate.Cache in the daemon.
- Revert âgithub: build static lxc and lxd-migrate bins for arm64â
- github: build static lxc and lxd-migrate bins for arm64
- lxd/resources: if
SCSI_IDENT_SERIAL
is available, use it as serial nr beforeID_SERIAL_SHORT
- tests: Fix storage volume recovery test
- tests: Add lxd-user test
- client: Adds a flag to operations to skip event listener setup.
- client: Pass useEventListener flag into queryOperation.
- client/certificates: Update calls to queryOperation.
- client/cluster: Update calls to queryOperation.
- client/containers: Update calls to queryOperation.
- client/images: Update calls to queryOperation.
- client/instances: Update calls to queryOperation.
- client/projects: Update calls to queryOperation.
- client/storage_volumes: Update calls to queryOperation.
- client: Check for operation wait extension and conditionally revert to events API.
- lxd-agent: Adds an operation wait endpoint.
- shared/version: Adds API extension.
- github: improve ceph test reliability
- github: reorder microceph setup steps to remove a sleep
- github: tune ext4 for speed and reclaim some space
- lxd/locking/lock: Return error if context got cancelled
- lxd/api: Handle error from lock
- lxd/daemon: Handle error from lock
- lxd/images: Handle error from lock
- lxd/instance: Handle error from lock
- lxd/instance/drivers: Handle error from lock
- lxd/storage/drivers: Handle error from lock
- lxd/network/driver/ovn: Handle error from lock
- lxd/storage/backend: Handle error from lock
- shared/ws/mirror: Log as soon as io.Copy has finished in MirrorRead
- shared/ws/mirror: Removes unused context argument from Mirror*()
- client: ws.Mirror*() usage
- lxc-to-lxd: ws.Mirror*() usage
- lxd-agent: ws.Mirror*() usage
- lxd-migrate: ws.Mirror*() usage
- lxd: ws.Mirror*() usage
- shared/util/linux: Partially reverts 54e3da881103c42d6b4813e8930bde1b10edb236 and reintroduces GetPollRevents
- shared/util/linux: Adds execWrapper for use with ws.MirrorRead() and ws.Mirror()
- lxd/instance/exec: Use context.WithCancel rather than cancel
- lxd/instance/exec: Use shared.NewExecWrapper
- lxd-agent/exec: Use shared.NewExecWrapper and bring into line with container exec
- gomod: Update dependencies
- patches: Fix patch regarding unsetting zfs block settings
- lxd/storage/backend_lxd: Allow generating backup configuration w/o volume snapshots
- lxd/instance/drivers: Update func call
- shared/osarch: Add loongarch64
- internal/server/seccomp: Fix clang build
- client: Unset response header timeout when waiting for operations.
- test/suites/backup: Test instance export with instance-only flag
- test/main: Add invocation of instance export test
- github: use ppa:ubuntu-lxc/daily instead of ppa:ubuntu-lxc/lxc-git-master
- test/container_devices_unix: Make unix device checks less flaky
- lxd-agent: Fixes vsock listener restart on boot due to vsock module not being fully initialised
- lxd/vsock/vsock: Removes unused ContextID function
- lxd-agent: Fixes intermittent exec EOF closure when vsock listener is restarted just after boot
- shared/api/url: Fix double path encoding issue
- lxc: avoid returning early when multiple ephemeral instances are to be deleted
- test: test multiple ephemeral delete
- lxc/storage/volume: Move volume if a destination cluster member name is set
- test: Rename storage volumes in a cluster
- lxd/network/driver/bridge: Donât consider an IP parse failure of a proxy listen address an error
- test/remote: switch to cloud-images.ubuntu.com URLs
- client/doc: use Ubuntu Cloud Images for simplestreams example
- gitignore: Ignore pycache
- lxd/daemon: Initialise server name and global config before patches
- doc: add a note about go-lxc build issue when LXC_DEVEL=1
- lxd/patches: Only update volumes that need updating in patchStorageZfsUnsetInvalidBlockSettingsV2
- lxd/patches: Only update volumes that need updating in patchStorageZfsUnsetInvalidBlockSettings
- lxd/firewall: Fix nftables ACL template
- doc: update link to tool downloads
- lxd: Update certificate cache again after cluster join.
- lxd/patches: Add cluster check for patches fixing volumes
- doc: update broken MAAS link
- lxd/storage_pools: Fix etag when retrieving storage pool
- shared/cliconfig: Nicer error on missing socket
- lxd/instance/drivers: Check running status with
InitPID
for cgroups - lxd/instance/drivers: Extend error message in deviceAddCgroupRules
- btrfs: Add function to check subvolumes in a given path
- btrfs: Use
hasSubvolumes
when creating a new pool - test: Btrfs pool with a subvolume as its source
- lxd/storage/drivers: Collect subvolumes via filepath traversal if in nested container.
- lxd/instance/drivers/qemu_cmd: Return clean EOF error
- client/lxd/instances: Consume ping messages from server for exec control and stdin channels
- build(deps): bump actions/labeler from 4 to 5
- build(deps): bump actions/setup-go from 4 to 5
- shared/api: Add Location to StorageVolumeSource
- shared/api: Add Source to StorageVolumePost
- client: Set Source.Location if supported
- lxd/instance/exec: Use shared.NewExecWrapper for MirrorRead in non-interactive exec
- shared/ws/mirror: Updare Mirror*() to return error channels
- client: shared.Mirror*() usage
- lxd/instance/exec: Log error from ws.Mirror*() in execWs
- readme: reference Ubuntuâs LXD security page
- test/macaroon-identity: Adds RBAC endpoints to external auth daemon.
- test: Rename macaroon-identiy â rbac.
- test/includes: Update includes for external auth daemon.
- test/includes: Rename includes file for RBAC server.
- gitignore: Update gitignore for test rbac server binary.
- test: Updates calls to start/stop RBAC daemon.
- test/suites: Updates macaroon authentication test.
- test/suites: Adds an RBAC test suite.
- test: Runs RBAC test in standalone tests.
- lxc/copy: Require destination name to be provided
- shared/network: remove unused args of GetTLSConfig()
- lxd/migration_connection: drop unused args for shared.GetTLSConfig()
- lxd/storage_volumes: drop unused args for shared.GetTLSConfig()
- lxd/util/http: drop unused args for shared.GetTLSConfig()
- shared/cert: drop unused args for GetTLSConfig()
- test/suites: Unsets RBAC configuration after test.
- lxd/instance/driver/qemu: replace sha1 by sha256 in blockNodeName()
- shared/api: Adds constant for default project name.
- lxd/cluster: Updates project.Default to api.ProjectDefaultName.
- lxd/db: Updates project.Default to api.ProjectDefaultName.
- lxd/device: Updates project.Default to api.ProjectDefaultName.
- lxd/instance/drivers: Updates project.Default to api.ProjectDefaultName.
- lxd/instance: Updates project.Default to api.ProjectDefaultName.
- lxd/maas: Updates project.Default to api.ProjectDefaultName.
- lxd/network/acl: Updates project.Default to api.ProjectDefaultName.
- lxd/network: Updates project.Default to api.ProjectDefaultName.
- lxd/project: Updates project.Default to api.ProjectDefaultName.
- lxd/storage: Updates project.Default to api.ProjectDefaultName.
- lxd: Updates project.Default to api.ProjectDefaultName.
- lxd/project: Removes project.Default.
- lxd/api: Fix missing import
- lxd/request: Exports query parameter methods and moves to
lxd/request
. - shared/util/linux: Update NewExecWrapper.Read to be time based when waiting for output from a process after it has exited
- lxd/patches: Ensure renaming is only done on cluster leader
- instance/lxc: Fix swap limit handling
- test/suites: Fixes wait_no_operations helper.
- lxd/storage/drivers: Generate and parse UUID using github.com/google/uuid
- lxd/instance/drivers: Generate and parse UUID using github.com/google/uuid
- lxd/instance: Generate UUID using github.com/google/uuid
- lxc-to-lxd: Generate UUID using github.com/google/uuid
- lxd-migrate: Generate UUID using github.com/google/uuid
- lxd/apparmor: Generate UUID using github.com/google/uuid
- lxd/bgp: Generate UUID using github.com/google/uuid
- lxd/db: Generate UUID using github.com/google/uuid
- lxd/device: Generate UUID using github.com/google/uuid
- lxd/events: Generate UUID using github.com/google/uuid
- lxd/firewall/drivers: Generate UUID using github.com/google/uuid
- lxd/operations: Generate UUID using github.com/google/uuid
- lxd/rsync: Generate UUID using github.com/google/uuid
- shared/validate: Parse UUID using github.com/google/uuid
- test/rbac: Generate UUID using github.com/google/uuid
- metrics: Fix label merging in metric sets
- zfs: Support zfs pools containing â/â in the patch
- lxd/db: Exports StoragePoolVolumeTypeToName function.
- test/includes: Adds util for getting certificate fingerprint.
- test/includes: Use hostname for RBAC server endpoint.
- test/deps: switch to ecdsa certificate
- test/clustering: remove unneeded shellcheck ignore and update others
- lxc/network forward: Fix typo
port
toports
. - i18n: Update translation templates
- config: Ensure config key values are reset to their default
- lxd/seccomp: Switch to path/filepath
- lxd/seccomp: Pass correct path and fstype to IdmappedStorage
- lxd/forksyscall: Fix idmapped mount code path
- test: Test unsetting config keys
- test: Check instance type in filesystem metrics
- config: Restrict user.* keys
- test/includes/certificates: add gen_cert_and_key()
- test/metrics: use gen_cert_and_key function instead of directly calling openssl
- test/remote: use gen_cert_and_key function instead of directly calling openssl
- test/tls_restrictions: add some double quotes
- test/tls_restrictions: fix some comments
- test/tls_restrictions: make sure expected failures get the expected 403
- test/tls_restrictions: use gen_cert_and_key function instead of directly calling openssl
- test/tls_restrictions: ensure type=metrics certificates cannot access anything besides /1.0/metrics.
- test: Validate user.* keys
- client: Use io.Writer for Stdout/Stderr in InstanceExecArgs
- lxd/network/driver/bridge: Improve comments for accept_ra
- lxd/main: Stop seeding the RNG
- doc/rest-api: Refresh swagger YAML
- test/basic: always use â with
lxc exec
- test/basic: test with and without âââ separator
- test/clustering: always use â with
lxc exec
- test/config: always use â with
lxc exec
- test/devlxd: always use â with
lxc exec
- test/image_acl: always use â with
lxc exec
- test/storage_snapshots: always use â with
lxc exec
- doc/howto/network_ovn_setup: always use â with
lxc exec
- doc/howto/instances_troubleshoot: always use â with
lxc exec
- lxd/devlxd: always use â with
lxc exec
- lxd/util/http: Check if the CRL was signed by the CA before using it
- lxc/delete: Include instance name in error message
- client: Add function to open webbrowser
- client: Allow overriding web browser
- client: Cleanup OIDC login
- lxc: Use volume copy when moving to target project
- shared/network: Only skip TLS verification if no remote certificate is available
- lxd/daemon_images: fix typo
- test: Restructure local volume handling
- test: Add storage volume move between projects
- tests: Properly test core.trust_ca_certificates
- lxd/instance/exec: Only use keepalives on TCP sockets
- client: Use io.Reader for Stdin in InstanceExecArgs
- lxd/task/group: Code style
- lxd/task/group: Handle nil group
- lxd/storage/filesystem/fs: Rename parseMountinfo()
- lxd/storage/filesystem/fs: Add GetMountinfo()
- lxd/storage/drivers/btrfs: Skip nodatacow on compressed pools
- lxd/storage/drivers/btrfs: Check for datacow mount option
- github: try up to 3 times to download Go tip tarball
- github: remove Go tip tarball after extraction
- lxd/instance/drivers/driver_qemu: factor out config volume mounting from setupNvram
- shared: Read system certs from /etc instead of snapd/hostfs
- client/lxd/instances: Close websocket as soon as channel mirror finishes in ExecInstance
- lxc/exec: No need to use io.ReadCloser anymore
- shared/ws/mirror: No need for defer in MirrorWrite and MirrorRead
- Revert âlxd/instance/exec: Only use keepalives on TCP socketsâ
- doc/installing: LXC_DEVEL needs to be fixed on 22.04+
- lxd/instance/drivers/qemu: consistently rely on $PATH to find binaries
- lxd/instance/drivers/qemu: mount the config drive as readonly
- lxd/instance/drivers/qemu: reduce the size of /run/lxd_agent tmpfs and set nodev,nosuid,noatime
- lxd/instance/drivers/qemu: do not preserve the ownership during the cp to avoid chown
- i18n: Update translation templates
- godmod: Update dependencies
- lxc/move: Prevent pool migration to block project migration
- api: Add cluster_internal_custom_volume_copy
- lxd/db: Add function to update storage volume node
- lxd: Handle copying storage volumes with a single API call
- lxd: Support single API custom volume rename
- lxd/instance_post: Determine root device from profiles in target project
- lxc/move: Throw an error when unsupported move flags are used
- lxd/storage/drivers: Update cephfs entity helpers
- i18n: Update translations
- lxd/storage/drivers: Add DefaultVMBlockFilesystemSize to driver Info struct
- lxd/storage/drivers/btrfs: Set drivers DefaultVMBlockFilesystemSize
- lxd/storage/drivers/ceph: Set drivers DefaultVMBlockFilesystemSize
- lxd/storage/drivers/cephfs: Set drivers DefaultVMBlockFilesystemSize
- lxd/storage/drivers/dir: Set drivers DefaultVMBlockFilesystemSize
- lxd/storage/drivers/lvm: Set drivers DefaultVMBlockFilesystemSize
- lxd/storage/drivers/mock: Set drivers DefaultVMBlockFilesystemSize
- lxd/storage/drivers/zfs: Set drivers DefaultVMBlockFilesystemSize
- lxd/storage/backend: Use drivers default VM block volume size for config filesystem
- lxd/storage/drivers/volume: Use drivers default VM block size for filesystem volume
- lxd/project: Fix typo in comment
- lxd/instance/drivers: Use the pools default VM block filesystem size
- lxd/storage: Use the pools default VM block filesystem size
- lxd/project: Add TODO for instance limits accounting
- lxd/instance: Use stable random generator for temporary instance name
- lxd/instance: Improve error message
- lxd/instance/drivers/qemu: Run specific remote config only for Ceph backends
- lxd/storage/drivers: Create cephfs entities if keys specified
- lxd/storage/drivers: Revert osd/fs creation
- lxd/instances: Properly detect unfiltered
- lxd/images: Properly detect unfiltered
- shared/filter: Support string slices
- lxd/storage_volumes: Allow filtering based on UsedBy
- lxd/instance_post: Retain root disk device if not explicitly changed
- test: Add tests for server-side instance move
- api: Add API extension for improved server-side move
- shared/api/instance: Expand InstancePost structure
- lxc/move: Respect all flags on server-side move
- lxd/instance_post: Respect provided config, device and profile overwrites on move
- tests: Add server-side move tests
- doc: Update API
- tests: Rename shiftfs test with idmapped_mount
- test: if backend is ZFS (also through random backend) and version less than 2.2, skip idmapped mount
- lxd/instance/drivers: Set correct RBD content type for qemu drives
- lxc/move: Overwrite profiles only if explicitly provided by the user
- lxd/instance_post: Retain previous profiles on instance move
- tests: Improve tests for instance move
- lxd/db/instances: Fix instance names from project not retrieved
- lxd/cluster: Retry cluster join if cluster is busy
- lxd/apparmor: Allow qemu access to microceph conf
- i18n: Update translations
- lxd/state: Add new ServerClustered field
- lxd: Use ServerClustered
- github: Update for new labeler
- lxd-agent: Prevent panic when devlxd server is stopped
- lxd/storage/drivers: Always copy Ceph VMs filesystem volume
- doc/cloud-init: overwrite link text to make spell checker happy
- internal/server/response: Donât re-send headers when streaming
- incusd/operations: Use ManualResponse to send headers early
- client: Always use event listener for operations.
- lxd/instance/drivers/qemu: Load storage pool before accessing it
- golangci: Updates the metalinter configuration.
- lxd/firewall/drivers: Removes unnecessary break statements from switch.
- test/lint: Add script to invoke golangci-lint with âânewâ.
- Makefile: Remove invocation of golangci-lint from Makefile.
- incusd/storage: Fix size check for ISO volumes
- incus: Fix typo in comment
- incusd/storage: Use Shutdown context for import from backup
- incusd/instance/qemu: Properly set cdrom type
- client/lxd/instances: Treat nil args as empty InstanceExecArgs in ExecInstance
- client/lxd/instances: Always consume pings from control socket if established in ExecInstance
- client/lxd/instances: Discard non-interactive stdout/stderr output if writer(s) not supplied in ExecInstance
- client/lxd/instances: Remove unnecessary args nil check
- build(deps): bump actions/upload-artifact from 3 to 4
- build(deps): bump github.com/minio/minio-go/v7 from 7.0.65 to 7.0.66
- build(deps): bump github.com/mattn/go-sqlite3 from 1.14.18 to 1.14.19
- build(deps): bump golang.org/x/crypto from 0.16.0 to 0.17.0
- build(deps): bump google.golang.org/protobuf from 1.31.0 to 1.32.0
- build(deps): bump golang.org/x/sys from 0.15.0 to 0.16.0
- build(deps): bump github.com/osrg/gobgp/v3 from 3.21.0 to 3.22.0
- build(deps): bump golang.org/x/term from 0.15.0 to 0.16.0
- build(deps): bump golang.org/x/sync from 0.5.0 to 0.6.0
- build(deps): bump golang.org/x/oauth2 from 0.15.0 to 0.16.0
- lxd/devlxd: Allow querying instance info when devlxd is disabled
- build(deps): bump github.com/miekg/dns from 1.1.57 to 1.1.58
- build(deps): bump actions/dependency-review-action from 3 to 4
- build(deps): bump github.com/google/uuid from 1.5.0 to 1.6.0
- build(deps): bump github.com/mattn/go-sqlite3 from 1.14.19 to 1.14.20
- lxc/move: Only use server-side move when dealing with a single server
- gomod: Update dependencies
- github: Pin microceph to quincy edge
- test/lint: Bring linters inline with main
- github: Update test workflows with latest linter config
- Makefile: Remove unnecessary go dep pins
- gomod: Update dependencies
- Revert âgomod: Update dependenciesâ
- Revert âMakefile: Remove unnecessary go dep pinsâ
- Makefile: Removes unnecessary openfga pin
- Revert âgomod: Update dependenciesâ
- gomod: Update dependencies
Downloads
The release tarballs can be found on our download page.
Binary builds are also available for:
- Linux: snap install lxd
- MacOS: brew install lxc
- Windows: choco install lxc