Back to the news overview

LXD 4.0.9 has been released

3rd of February 2022

Introduction

The LXD team is pleased to announce the release of LXD 4.0.9!

This is the ninth bugfix release for LXD 4.0 which is supported until June 2025.

Bugfixes and improvements

This release includes a couple of months worth of bugfixes and minor improvements from the development branch.

Some of the highlights include:

  • lxc copy got a new --allow-inconsistent flag
  • lxc info now consistently uses IEC units
  • lxc help now has a --sub-commands flag
  • lxc alias now supports specifying number arguments (@ARG1)
  • lxc storage volume copy supports a --destination-target flag
  • lxc cluster list will show the current cluster leader (database-leader)
  • New ceph.rbd.du storage configuration option to reduce Ceph load
  • Support for image restrictions (to soon be enabled on our image servers)
  • Support for uuid on mig GPUs
  • New security.agent.metrics configuration option to restict lxc info on VMs to data provided by QEMU (when set to false)

Those are all smaller improvements backported from LXD feature releases which required no database changes or API behavior changes and were considered a sufficient usability improvement to backport to the LTS release.

The full list of commits is available below:

Detailed changelog
  • lxd/db/query/transaction: Adds 10s timeout to Transaction
  • lxd/cluster/gateway: Add 30s idle timeout in dqliteProxy
  • lxd/cluster/gateway: Close remote connection in dqliteProxy
  • lxd/cluster/events: Disconnect event listeners for offline members in eventsUpdateListeners
  • lxd/events/events: Rework events.Listener to use websocket heartbeats
  • lxd/device/nic/bridged: Prevent specifying ipv{n}.address when NIC is connected to unmanaged parent bridge
  • test: Add test for bridged NIC not able to specify static IPs when using unmanaged parent bridge
  • lxd/events/events: Moves blocking reader into heartbeat function
  • lxd: Removes blocking reader from event client
  • lxd-agent: Removes blocking reader from event client
  • lxd/fsmonitor/drivers: Log warning instead of failing
  • lxd/cluster/gateway: Removes dqliteProxy idle timeout
  • lxd/cluster/gateway: Update logging in dqliteProxy
  • lxd/cluster/gateway: Set 30s TCP_USER_TIMEOUT and keep alive timers in dqliteProxy
  • lxd/util/net: Adds SetTCPUserTimeout function
  • lxd/db/db: retry cluster transactions once if context deadline exceeded
  • shared/validate: Add IsListOf
  • shared: Add network zone API
  • client: Rename lxd_network_forwards for consistency
  • client: Add network zone functions
  • doc/rest-api: Refresh swagger YAML
  • lxd/instance/qemu: Fix host-nodes on multi-node
  • lxd/migrate: Fix deadlock in sendControl
  • lxd/migrate: Time out when waiting for connections
  • lxd/storage/backend/lxd: Clarify errors in CreateInstanceFromCopy and CreateInstanceFromMigration
  • lxd/instances/post: Wrap error in createFromMigration
  • lxd/instances/post: Update comment in createFromMigration
  • lxd/instance/post: Replace node in errors with member
  • lxd/instances/post: Replace node with member in error in clusterCopyContainerInternal
  • test: Update teardown_clustering_netns to succeed if process has already gone
  • lxd/device/nic/bridged: Allow static IP on unmanaged bridge when MAAS subnet specified
  • bash-completion: Add restore snapshots
  • lxd/operations: Updates waitForOperations to accept consoleShutdownTimeout arg
  • lxd/daemon: Load shutdown timeout from DB in Stop()
  • lxd/daemon: Only call waitForOperations during Stop if cluster DB is available
  • lxd/api/internal: Wait for daemon to finish starting up before shutting down in internalShutdown
  • forkuevent: minor fixes
  • forkuevent: fix "--" placement
  • lxd/instances/qemu: Enable topoext on x86_64 with SMT
  • doc/instances: Explain CPU topology in VMs
  • lxc/file: Don't use HostPath on temp files
  • lxd/cluster: Log leader address on failure
  • lxd/api/cluster: Sleep for 100ms to allow http.Flush to render
  • lxd/fsmonitor: Don't crash on Walk errors
  • lxd/cluster: Add missing import
  • lxd/instance/lxc: Only mount for file operations if stopped
  • lxd/instance_exec: Improve and expand default PATH setting
  • lxd/instance/drivers/driver/lxc: Adds release function to reduce repetition of liblxc clearing logic
  • lxd/instance/drivers/driver/lxc: Release liblxc cache when stopping or shutting down
  • Replace 'which' with 'command -v'
  • Use which to resolve lxc's path without resolving the shell function of the same name
  • lxc: better advertise support for VMs
  • i18n: Update translation templates
  • lxd/device/device/utils/network: Renames networkSnapshotPhysicalNic to networkSnapshotPhysicalNIC
  • lxd/device: networkSnapshotPhysicalNIC usage
  • lxd/device/device/utils/network: Renames networkRestorePhysicalNic to networkRestorePhysicalNIC
  • lxd/device: networkRestorePhysicalNIC usage
  • shared/instance: Add .last_state.vf.parent support to ConfigKeyChecker
  • Remove the last 'which' occurence.
  • doc/rest-api: Refresh swagger YAML
  • lxd: Move to new protobuf when possible
  • lxd/storage/btrfs: Support 5.14.2
  • lxd/db: Use upstream context package
  • lxd/storage/ceph: Properly support pre-existing empty pools
  • lxd/cluster/gateway: Don't restart gateway in Reset
  • lxd/api/cluster: Don't update certificate on endpoints during clusterPutDisable
  • lxd/db/images: Change nullable fields in Image to sql.NullTime type
  • lxd/db/images: Image sql.NullTime field usage
  • lxd/db/instances: Changes nullable datetime fields in Instance to sql.NullTime type
  • lxd/db/instances: Instance sql.NullTime field usage
  • lxd/db/snapshots: Updates InstanceSnapshot nullable datetime fields to sql.NullTime
  • lxd/db/snapshots: InstanceSnapshot sql.NullTime field usage
  • lxd/instance/instance/utils: InstanceSnapshot sql.NullTime field usage
  • lxd/api/internal: Updates internalShutdown to wait until request context is done before exiting
  • shared/api/error: Update StatusErrorf to not parse format to fmt.Sprintf if no replacement arguments
  • lxd/operations: Consistent comment endings
  • lxd/operations: Don't duplicate local operations in operationsGet when running in single member cluster
  • lxd/api/1.0: Prevent update of cluster.https_address in doApi10Update
  • lxd/cluster/gateway: Change client loop logic in LeaderAddress
  • lxd/cluster/gateway: Comment cleanup
  • lxd/cluster/gateway: Error wrapping
  • lxd/cluster/gateway: Don't ever return an empty leader address in LeaderAddress
  • lxd/api/cluster: Add leader address check in internalClusterPostAccept
  • lxd/device: Clean up mdev vGPU on failure
  • lxd/device: Log error message on GPU mdev cleanup failure
  • lxd/device: Switch to github.com/jochenvg/go-udev
  • doc: Elaborate on pongo2 date-time syntax for snapshots
  • lxc/info: Use consistent units
  • lxc/list: Use consistent units
  • lxc/storage: Use consistent units
  • lxd/api_internal: Use consistent units
  • lxd/patches_utils: Use consistent units
  • lxd/projects: Use consistent units
  • tests/macaroon-identity: Switch to go-httprequest
  • lxd/migrate: Only use pointers to migration.MigrationControl to avoid shallow copies
  • Update default volume.size from 10GB to 10GiB
  • Update default state volume size from 100MB to 100MiB
  • lxd/db/networks: Fix panic in networkConfigAdd
  • lxd/db/storage/pools: Fix panic in CreateStoragePool
  • lxd/db/storage/volumes: Fix panic in storageVolumeConfigAdd
  • shared/util: Removes unused IsUnixDev function
  • lxd/project/permissions: Removes unnecessary wrapping
  • lxd/device/proxy: Improve comment in proxy validateConfig
  • lxd/device/device/utils/disk: Error quoting and wrapping in DiskMount
  • lxd/device/device/utils/disk: Remove block device filesystem detection from DiskMount
  • lxd/device/disk: Unify srcPath argument treatment in createDevice
  • lxd/device/disk: Clarify isFile logic in createDevice
  • lxd/device/disk: Removes duplicated source path exists check in createDevice
  • lxd/device/disk: Removes revert arg from createDevice
  • lxd/device/disk: Switch to using open file handle for createDevice mount
  • lxd/device/disk: Add block device filesystem detection to createDevice
  • lxd/device/disk: Updates createDevice to return isFile boolean indicator
  • lxd/device/disk: Updates d.createDevice usage now it returns isFile boolean
  • lxd/device/disk: Require local source paths to be absolute in validateConfig
  • lxd/device/disk: Stop using global logger
  • lxd/device/disk: Adds diskSourceNotFoundError type
  • lxd/device/disk: Replace calls to isRequired with returning diskSourceNotFoundError instead
  • lxd/device/disk: Remove duplicated source path exists check in startVM
  • lxd/device/disk: Add d.validateEnvironmentSourcePath function
  • lxd/device/disk: Update Start to handle diskSourceNotFoundError
  • lxd/devlxd: stricter regexp
  • lxd/instance/drivers/driver/lxc: Fix liblxc handle leak in renderState
  • lxd/migrate/instance: Code style tweak in migrationSink
  • lxc/copy: Add comment clarifying post-migration start up logic in copyInstance
  • lxd/storage/drivers/driver/ceph/volumes: Improve comment in MigrateVolume
  • lxd/instance/post: Remove trailing newline in instancePostClusteringMigrateWithCeph
  • lxd/instance/post: Use http.StatusOK in instancePostClusteringMigrateWithCeph
  • lxd/storage/drivers/driver/ceph/volumes: Fix MigrateVolume to support VM cluster migration
  • lxd/device/nic: Split up SR-IOV functions
  • gomod: Update dependencies
  • lxd/instance: Instance sql.NullTime field usage
  • lxd/device: Records SRIOV VF parent device in last_state.vf.parent
  • lxd/device/device/utils/network: Adds useSpoofCheck arg to networkSRIOVSetupVF and networkSRIOVRestoreVF
  • lxd/device/device/utils/network: Add support for last_state.vf.parent in networkSRIOVRestoreVF
  • lxd/device/nic/sriov: useSpoofCheck argument usage
  • lxd/network/network/utils/sriov: Rename sriovFindFreeVirtualFunctionMutex to SRIOVVirtualFunctionMutex
  • lxd/network/network/utils/sriov: Remove use of lock from SRIOVFindFreeVirtualFunction
  • lxd/device/nic/sriov: Use network.SRIOVVirtualFunctionMutex.Lock
  • lxc/import: read from stdin
  • cleanup: remove subtest
  • lxd/daemon: Adds systemdSocketActivated
  • lxd/api/cluster: Exit LXD after removal from cluster if systemd socket activated in clusterPutDisable
  • lxd/api/cluster: Adds clusterPutDisableMu to control daemon replace/stop until request finished in clusterNodeDelete
  • test/suites/clustering: Fix condition in test_clustering_remove_leader
  • test/suites/clustering: Change test_clustering_remove_leader to test_clustering_remove_members
  • lxd/api/cluster: Reformat clusterAcceptMember function
  • lxd/db/cluster/update: Fix upgrade from 2.0/3.0 when using go-dqlite v1.10.1 NULLable fields
  • lxd/instances/qemu: fix usb pass-through with more than one device
  • shared/api: Allow cert modification
  • doc/rest-api: Refresh swagger YAML
  • lxd: Drop fingerprint in doCertificateUpdate
  • doc/projects: Improve doc on restricted key
  • seccomp: use stricter regexps when looking for Uid/Gid/Tgid in /proc/$pid/status
  • lxd/device/config/device/runconfig: Add Revert reverter field to RunConfig
  • lxd/instance/drivers/driver/lxc: Call runConf.Revert revert in startCommon
  • lxd/instance/drivers/driver/qemu: Call runConf.Revert revert in Start
  • lxd/device/disk: Switch to using file handles for local disk VM passthrough
  • lxd/instance/drivers/driver/qemu: Rework addDriveConfig to support file descriptors encoded into device paths
  • lxd/ip/neigh/proxy: Adds NeighProxy type for managing neighbour proxy entries
  • lxd/ip/neigh: Removes conflation of neighbour proxy functionality from Neigh type
  • lxd/device/nic/routed: Switch to ip.NeighProxy for neighbour proxy removal
  • lxd/ip/neigh: Rework Show to return a useful struct rather than just a raw string
  • lxd/network/network/utils: Update GetNeighbourIPs to use ip.Show()
  • lxd/device/nic/bridged: Updated network.GetNeighbourIPs and ip package constant usage
  • test: Add routed NIC tests for neighbour proxy add/remove
  • test: Adds check for routed NIC MAC
  • test: Improves grep MAC test
  • doc/instances: Updates routed NIC with VM support
  • doc: Fix misspelling in server.md
  • lxd/device/device/utils/disk: Change DiskMount mount options arg to []string
  • lxd/device/device/utils/disk: Update diskCephfsOptions to return []string for mount options
  • lxd/instance/drivers/driver/qemu: device.DiskMount usage
  • lxd/device/disk: Update createDevice to use []string for mount options
  • lxd: Update for new certificate structs
  • lxd/device/device/utils/unix: DiskMount usage
  • lxd/instance/drivers/driver/lxc: Align start error with VM type
  • lxd/device/disk: Readonly setting cleanup
  • shared/validate/validate: Adds IsAbsFilePath function
  • shared/validate/validate: Fixes comment on IsListOf
  • shared/validate/validate: Wraps item value in IsListOf error
  • lxd/device/disk: Adds localSourceOpen function
  • lxd/device/disk: Use d.localSourceOpen in startVM
  • lxd/device/disk: Use d.localSourceOpen in createDevice
  • shared/api: Add Project to InstancePost and SourceProject to StorageVolumePost
  • client: Support for moving instances and custom volumes between projects
  • doc/rest-api: Refresh swagger YAML
  • doc/instances: Clarify shift disk property is only for containers
  • lxd: switch main_nsexec to config.h
  • tests: Split cluster and standalone
  • lxd: add forkusernsexec()
  • lxd/main/daemon: Actually ignore shutdown request if shutdown ongoing
  • shared/subprocess/proc: Simplify process cleanup channel closure
  • lxd/instance/drivers/driver/qemu: Updates fdFiles to be slice of os.File
  • lxd/instance/drivers/driver/qemu: Improve error in addDriveConfig
  • lxd/instance/drivers/driver/qemu: Cancel operation on d.UpdateBackupFile error in Start
  • lxd/device/disk: Change mountPoolVolume to return a revert function
  • lxd/device/disk: Updates createDevice to return a revert function
  • lxd/device/disk: createDevice should always return a non-empty device path or an error now
  • lxd/device/device/utils/disk: Adds DiskVMVirtfsProxyStart function
  • lxd/device/device/utils/disk: Adds DiskVMVirtfsProxyStop function
  • lxd/device/disk: Switch to using DiskVMVirtfsProxyStart for VM 9p proxy
  • lxd/device/disk: DiskVMVirtfsProxyStop usage
  • lxd/device/device/utils/disk: Returns revert function from DiskVMVirtiofsdStart
  • lxd/device/disk: DiskVMVirtiofsdStart revert usage
  • lxd/instance/drivers/driver/qemu: device.DiskVMVirtiofsdStart revert usage
  • lxd/device/device/utils/disk: Updates DiskVMVirtiofsdStart to pass the listen socket via file descriptor
  • lxd/instance/drivers/driver/qemu: Remove openUnixSocket function
  • lxd/device/device/utils/disk: Updates DiskVMVirtiofsdStart to return unix listener
  • lxd/device/disk: Remove old virtiofsd log if needed
  • lxd/device/disk: Close virtiofsd unix listener after VM start
  • lxd/instance/drivers/driver/qemu: Close virtiofsd unix listener after VM start
  • lxd/main/forkusernsexec: Return error if uid or gid map FDs not supplied
  • lxd/instance/drivers/driver/qemu: Make sure operation is cancelled in Stop
  • lxd/device/device/utils/disk: Close unnecessary file handles in DiskVMVirtfsProxyStart
  • lxd/device/device/utils/disk: Close unnecessary file handles in DiskVMVirtiofsdStart
  • lxd/device/disk: Add disk unmount call to createDevice reverter
  • util_linux: ensure that O_NOCTTY is raised when opening terminals
  • util_linux: ensure that pty fds are O_CLOEXEC too
  • forkusernsexec: close file descriptors before exec
  • forkusernsexec: add --keep-fd-up-to
  • lxd/project/permissions: Fix wrapping in checkRestrictions
  • lxd/project/permissions: Updates entity checkers to accept instancetype.Type
  • shared/validate/validate: Improve comment on IsListOf
  • shared/validate/validate: Improve error in IsInRange
  • shared/validate/validate: Adds ParseUint32Range and IsUint32Range functions
  • shared/validate/validate: Reworks IsNetworkPortRange to behave the same as IsUint32Range
  • lxd/instance/instance/utils: Removes ParseRawIdmap
  • shared/idmap/parse: Adds ParseRawIdmap function
  • lxd/instance/drivers/driver/lxc: idmap.ParseRawIdmap usage
  • lxd/instance/instance/utils: idmap.ParseRawIdmap usage
  • lxd/device/device/utils/disk: Uses fmt.Error for wrapping errors in DiskVMVirtfsProxyStart
  • forkusernsexec: parse command section correctly
  • forkusernsexec: log verbosely
  • forkusernsexec: allow for --arg= and --arg syntax
  • lxd/api/project: Ensure restricted projects have their own profiles
  • lxd: Move to cron/v3
  • gomod: Update dependencies
  • shared/validate/validate: Fix bug in ParseUint32Range
  • shared/idmap/idmapset/linux: Adds HostIDsCoveredBy function
  • shared/idmap/idmapset/linux/test: Adds tests for HostIDsCoveredBy
  • lxd/project/permissions/test: Fix import ordering
  • shared: Add context to DownloadFileHash
  • client: Pass empty context to DownloadFileHash
  • client/lxd_storage_volumes: Add destination target flag; Respect target flag
  • lxc/storage_volume: Add destination target flag; Respect target flag
  • i18n: Update translation templates
  • doc: clean up headings in files
  • doc: update links to configuration.md
  • lxd/instance/drivers/driver/qemu: Return shutdown error to caller
  • lxd/instance/drivers/driver/lxc: Return shutdown error to caller
  • lxd/instance/drivers/driver/lxc: Return stop error to caller
  • lxd/instance/drivers/driver/qemu: Return stop error to caller
  • lxd/instance/drivers/driver/lxc: Make sure onStop unmount has full operation lock time
  • lxd/instance/drivers/driver/qemu: Handle unmount errors in onStop
  • lxd/storage/drivers/driver/zfs/volumes: Increase ZFS unmount wait time to operationlock.TimeoutSeconds
  • lxd/instance/drivers/driver/qemu: Moves readonly config volume mount to devices directory
  • lxd/storage/drivers/generic/vfs: Removes VMConfigDriveMountDir
  • lxd/instance/drivers: Remove cloud-init from config share
  • forkusernsexec: use unix.Stderr as standard --keep-fd-up-to value
  • doc: Add initial sphinx support
  • github: Add a workflow to build the documentation
  • doc: Add sphinx navigation
  • doc/index: Fix header level
  • sphinx: Add substitutions
  • sphinx: Add example redirect
  • lxd/db/generate/db/mapping: Accept sql.NullTime in the generator
  • lxd: Fix test with new certificate structs
  • lxd/device/nic/routed: Port routed NIC (without gvrp support) from main branch
  • doc/instances: Updates routed NIC docs to reflect backported code features
  • doc/instances: Remove unnecessary full stops from routed NIC table
  • test: Remove duplicate ping tests from routed NIC
  • test: Enable IPv4 forwarding for NIC routed
  • shared/termios: manually copy termios settings between Go and C
  • shared/termios: actually copy the values not the index
  • doc: add a cheat sheet for documentation
  • Revert "shared/termios: actually copy the values not the index"
  • Revert "shared/termios: manually copy termios settings between Go and C"
  • shared/termios: Remove requirement on cgo when setting raw mode
  • shared/termios: Removes dependency on lxd package github.com/lxc/lxd/shared
  • test: Update test_concurrent_exec to also test with --force-noninteractive
  • test: Add non-concurrent exec test
  • lxc/exec: Always connect control websocket
  • lxd/instance/drivers/driver/lxc/cmd: Use exitErr.ExitCode functions
  • lxd/instance/drivers/driver/lxc: Close forkexec log file
  • lxd/instance/drivers/driver/lxc: release liblxc in DevptsFd function
  • lxd/instance/drivers/driver/lxc: Remove empty newline
  • shared/network: Use contextual logging for websocket proxy functions
  • lxd/instance/exec: Adds execWS constants for websocket numbers
  • lxd/instance/exec: Replace allConnected with requiredConnectedCtx
  • lxd/instance/exec: Replaces controlConnected with controlConnectedCtx
  • lxd/instance/exec: Rework Connect to make control connection required for interactive exec
  • lxd/instance/exec: Adds comment documenting variable use of connection number 0
  • lxd/instance/exec: Simplify connection slot secret setup loop
  • lxd/instance/exec: Add a timeout waiting for all required websockets to connect
  • lxd/instance/exec: Adds belt-and-braces websocket close defer
  • lxd/instance: Remove whitespace
  • lxd/instance/exec: Don't get lock to access same control connection on every message in control handler
  • lxd/instance/exec: Improve exec logger context
  • lxd/instance/exec: Remove duplication of interactive/non-interactive control handler go routines
  • lxd/instance/exec: Improve logging of websocket mirroring go routines
  • lxd/instance/exec: Remove duplication of connection locking code
  • lxd/instance/exec: Adds cmdKill and cmdKillOnce
  • lxd/instance/exec: Removes need for controlExit
  • lxd/instance/exec: Adds a check for remote stdout reader closing and kills command if no control connection
  • lxd/instance/exec: Fix container devpts FD leak in non-interactive exec requests
  • lxd/instance/exec: Log exit code of command
  • lxd/instance/exec: Only try to detect extra PATH locations for containers
  • doc: Increases recommended subuid and subgid ranges in machine setup.
  • lxd-agent/main/agent: Avoid duplicate log lines by only logging to stdout/stderr
  • lxd/instance/drivers/driver/qemu: Dont force WaitForWS
  • lxd-agent/exec: Adds execWS constants for websocket numbers
  • lxd-agent/exec: Replace allConnected with requiredConnectedCtx
  • lxd-agent/exec: Adds comment documenting variable use of connection number 0
  • lxd-agent/exec: Simplify connection slot secret setup loop
  • lxd-agent/exec: Add a timeout waiting for all required websockets to connect
  • lxd-agent/exec: Adds belt-and-braces websocket close defer
  • lxd-agent/exec: Remove whitespace
  • lxd-agent/exec: Improve exec logger context
  • lxd-agent/exec: Start command before websocket handler go routines
  • lxd-agent/exec: Capture command not found errors and convert them to 127 exit code
  • lxd-agent/exec: Log exit code and use exitErr.ExitCode()
  • lxd-agent/exec: Removs controlConnected channel and simplifies Connect function
  • lxd-agent/exec: Use same function for interactive/non-interactive control handler go routines
  • lxd-agent/exec: Removes controlExit
  • doc: split out installation instructions from doc start page
  • doc: split out FAQ from doc start page
  • doc: clean up support information on doc start page
  • doc: clean up doc start page
  • shared/util/linux: Adds ExitStatus function
  • lxd/instance/exec: Use exitStatus rather than exitCode
  • lxd/instance/drivers/driver/qemu/cmd: Use exitStatus rather than exitCode
  • lxd-agent/exec: Use exitStatus rather than exitCode and use shared.ExitStatus() helper
  • lxd/instance/drivers/driver/lxc/cmd: Use exitStatus rather than exitCode and use shared.ExitStatus() helper
  • lxd/instance/drivers/driver/qemu: Do not treat stdin as pty
  • lxd/instance/exec: Remove internal PTY/TTY emulation use on LXD side for VM exec
  • doc: css: temporary fixes for theme issues
  • doc: Update Ceph docs with details for erasure coded pools
  • Replace 18.04/Bionic Beaver by 20.04/Focal Fossa
  • doc: add redirect to index.html
  • shared/util/linux: Remove empty line in ExitStatus
  • shared/validate/validate: Return nil error if OK in ParseUint32Range
  • lxd/device: Improves error message for custom storage volumes when shift is true.
  • lxd/instance/exec: Simplify and add logging for non-websocket based exec
  • test: Adds tests for non-websocket based instance exec
  • lxd/device: Fix golint
  • lxd-agent/exec: Detect invalid exec requests
  • lxd/instance/drivers/driver/qemu: Always send req.WaitForWS to lxd-agent exec
  • lxd/db/generate/db/stmt: remove '-ref' support from stmt
  • lxd/db/generate/db/method: remove '-ref' support from method
  • lxd/db/generate/db/lex: remove indexType function
  • lxd/db/generate/db/method: add ifErrNotNil helper
  • lxd/db: remove unused generator comments
  • lxd/db/cluster/constants: format used-by uris to drop default project
  • lxd/db: update generated code
  • lxd/db: add URI generation and ID fields to entities with references
  • lxd/db:update generated code
  • lxd/db/generate/db/mapping: add TableType to Mapping
  • lxd/db/generate/db/parse: determine TableType on parse struct
  • lxd/db/generate/db/mapping: add Filterable field to Mapping
  • lxd/db/generate/db/parse: don't require filters ReferenceTable/MapTable
  • lxd/db/generate/db/stmt: support programmatic sql stmts
  • lxd/db/generate/db/method: add support for generating reference tables
  • lxd/db/generate/db/method: add support for filling reference fields from tables
  • lxd/db/devices: add Devices struct and generator comments
  • lxd/db/devices: Devices to/from API helpers
  • lxd/db/generate/db/mapping: add DeviceType to mapping
  • lxd/db/config: add Config struct and generator comments
  • lxd/db: add association table files
  • lxd/db: use Device type for Devices
  • lxd: convert between db.Devices and API map format
  • lxd/db/projects: use UpdateConfig to update project config
  • lxd/db/instances: replace addProfilesToInstance with non-generated UpdateInstanceProfiles method
  • lxd/db: add manual get-URI methods for networks/acls/storage volumes
  • lxd/db: add non-generated GetProjectUsedBy and GetProfileUsedBy
  • lxd/db: update generated code
  • lxd/db/generate: use fmt.Errorf for errors
  • lxd/db/snapshots.mapper: update generated code
  • lxd/db: Drop irrelevant table
  • lxd/db: Update GetNetworkURIs to work with stable-4.0
  • lxd/db: Fix bad call in GetNetworkURIs
  • i18n: Update translation templates
  • lxd/db: Add database-leaader role
  • lxd: Support for database-leader role
  • tests: Support for database-leader role
  • api: Add database_leader extension
  • doc: added link between installing.md and doc/installing.md Signed-off-by: Dillon Samra dillonsamra9@utexas.edu
  • lxd/storage/backend/lxd: Restore VM filesystem size.state quota on backup restore
  • lxd/storage/drivers/generic/vfs: Improve logging during backup unpack
  • lxd/storage/drivers/driver/btrfs/volumes: Enable nodatacow on subvolume for block volumes
  • lxd/project/permissions: Separate limits.disk validate from other keys in getInstanceLimits
  • lxd/device/config/consts: Moves DefaultVMBlockFilesystemSize from storage/drivers package
  • lxd/storage/drivers/volume: Switch to deviceConfig.DefaultVMBlockFilesystemSize
  • lxd/storage/backend/lxd: Switch to deviceConfig.DefaultVMBlockFilesystemSize
  • lxd/events/events: Switch events heartbeat to counter rather than using absolute deadline times
  • lxd/project/permissions: Accounts for VM root disk size.state in getInstanceLimits
  • doc/storage: Add warning about using VMs on BTRFS storage pools
  • doc/storage: fix 2 typos
  • lxc/--sub-command: Added --sub-command flag
  • lxc/main: More depth in sub-commands
  • i18n: Update translation templates
  • lxd/storage: Switch to deviceConfig.DefaultVMBlockFilesystemSize
  • doc: add files requires for Swagger output
  • doc: include the Swagger API
  • doc: override Swagger UI CSS
  • doc: shallow clone of theme
  • lxc/copy: Replaces profiles when -p is set.
  • lxd/firewall/drivers: Adds util to convert port list to port ranges.
  • lxd/firewall/drivers: Optimises SNAT rules in Xtables.
  • doc: Clarify btrfs resize documentation
  • shared/api: Add Project field to Instance
  • lxd/instance/drivers: Fill Project field for instance
  • client: Add GetInstancesAllProjects, GetInstancesFullAllProjects, GetInstanceNamesAllProjects
  • lxd/db: Support for retrieving data from multiple projects
  • tests: Support for retrieving instances for all projects
  • lxd: Ability to retrieve instances for all projects
  • doc/rest-api: Refresh swagger YAML
  • api: Add instance_all_projects extension
  • lxd/firewall/drivers: Optimises SNAT rules in nftables.
  • lxd/ucred: Add connection functions
  • lxd/cluster: Require full admin for clusterNodesPost
  • tests: Make reboot test more reliable
  • lxd/ip/route: Add support for 'via' when creating routes
  • lxd/firewall/drivers: Adds util to calculate DNAT rule optimisations.
  • lxd/firewall/drivers: Optimises DNAT rules for xtables.
  • lxd/firewall/drivers: Optimises DNAT rules for nftables.
  • tests: Updates proxy device integration tests with port range optimisations.
  • doc: fix link to rest-api.yaml
  • shared/api: Add cluster group structs
  • lxd: Disallow node names starting with "@"
  • client: Add cluster group
  • doc/rest-api: Refresh swagger YAML
  • doc: fixed typo in gpu_mig section. Signed-off-by: Dillon Samra dillonsamra9@utexas.edu
  • doc/storage: Split storage driver config tables
  • doc/storage: Add missing ceph keys under cephfs
  • doc/storage: Consistent line endings
  • lxd/storage: Add const LO_FLAGS_DIRECT_IO flag
  • lxd/storage: Check for kernel support and O_DIRECT flag before setting direct IO
  • lxd/storage: Enable direct IO for loop devices in lvm
  • lxd/storage: Enable direct IO for loop devices in btrfs
  • lxd/db: Make GetNonPendingNetworkIDs project aware
  • lxd/cluster: Update for GetNonPendingNetworkIDs changes
  • lxd/cluster: Modernize coding style
  • lxd/db: Properly initialize network map
  • lxd/db: Coding style
  • lxd/daemon: Ensure heartbeat member refresh task is only called with full state list
  • lxd/network/driver/bridge: Exclude offline peers in HandleHeartbeat
  • lxd/daemon: Update hasNodeListChanged to detect member state changes
  • lxd/daemon: Don't remove offline members from supplied heartbeat member list in NodeRefreshTask
  • lxd/daemon: Move calculation of member state metrics into leader-only section of NodeRefreshTask
  • lxd/daemon: Renames hasNodeListChanged to hasMemberStateChanged
  • lxd/daemon: Make heartbeat member state change task refresh failure retry more explicit in NodeRefreshTask
  • test: Give exec chance to finish before capturing output
  • lxd/cluster/gateway: Include endpoint address in dqlite connect errors
  • client: Adds method to get events for all projects.
  • lxd/cluster: Use GetEventsAllProjects to monitor events in the cluster.
  • lxd/daemon: Rework how heartbeat member role rebalancing works to take into account online members
  • lxd/daemon: Improves NodeRefreshTask comments
  • lxd/daemon: Log when cluster member state changes as info level in NodeRefreshTask
  • lxd/cluster/heartbeat: Use node.IsOffline in heartbeat member data
  • lxd/db/node: Update nodeIsOffline to consider a node offline if time now is equal to offline threshold
  • lxd/request: Adds function to save connection to request context.
  • lxd: Adds save connection in context function to api and dev servers.
  • lxd/ucred: Refactors GetConnFromWriter to use request context.
  • test: Updates clustering_remove_raft_node to take into account updated offline threshold logic
  • lxd/cluster/events: Updates eventsUpdateListeners to accept a heartbeat member list
  • lxd/cluster/events: Load members from global DB if no heartbeat members provided in eventsUpdateListeners
  • lxd/cluster/events: Updates eventsUpdateListeners to use heartbeat members
  • lxd/cluster/events: Updates eventsUpdateListeners member handling
  • lxd: Remove running eventsUpdateListeners as a continuous task
  • lxd/cluster/events: Rename eventsUpdateListeners to EventsUpdateListeners
  • lxd/daemon: Call cluster.EventsUpdateListeners asynchronously from heartbeat NodeRefreshTask
  • lxd/api/cluster: Call cluster.EventsUpdateListeners asynchronously from internalClusterPostRebalance
  • lxd/api/cluster: Don't start clustering tasks until member has actually joined the cluster in clusterPutJoin
  • lxd/daemon: Call cluster.EventsUpdateListeners asynchronously from startClusterTasks
  • lxc/monitor: Use GetEventsAllProjects to monitor events with lxc monitor.
  • lxd: Accepts 'all-projects' query parameter on /1.0/events.
  • lxd/events: Adds allGroups field to listener.
  • lxd/storage: add ceph.rbd.du storage option
  • doc: add new ceph.rbd.du storage option to storage configuration docs
  • api: Add ceph_rbd_du
  • gomod: Update dependencies
  • doc/cluster: Clarify join question handling
  • doc/clustering: Fix typo
  • tests: Bump pg_num to 16
  • doc/rest-api: Refresh swagger YAML
  • lxd/events/events: Don't mention node in user facing error
  • lxd/events/event: Error quoting
  • lxd/cluster/events: Adds EventListenerWait to allow waiting for a event listener to connect
  • lxd/cluster/connect: Switch Connect to use EventListenerWait
  • lxd/cluster/heartbeat: Removes deprecated Raft field from heartbeat
  • test: Add 1s between running non-interactive exec and checking for exit status in operation
  • lxd/cluster/membership: Move notifyNodesUpdate call out of transaction in Join
  • shared/api/network/peer: Adds UsedBy field to NetworkPeer
  • doc/rest-api: Refresh swagger YAML
  • i18n: Update translation templates
  • lxd/db: Tweak GetNonPendingNetworkIDs for stable-4.0
  • lxc/list_test: Fix for stable-4.0
  • doc: Fixed incorrect type of ceph.rbd.clone_copy.
  • lxd/cluster: Update not clustered error
  • lxd/db: Update comments
  • fuidshift: Remove accidental binary build
  • lxd/device/nic/routed: Enable IP forwarding on veth host_name interface
  • test: Restores old routed NIC IPv4 forwarding behaviour
  • lxd/db/generate/db/mapping: Add Identifier method
  • lxd/cluster/upgrade: Don't panic in UpgradeMembersWithoutRole in raft ID not found
  • lxd/cluster/upgrade: Comment clean up in UpgradeMembersWithoutRole
  • lxd/cluster/upgrade: Removes empty line in UpgradeMembersWithoutRole
  • lxd/cluster/upgrade: Improve variable naming in UpgradeMembersWithoutRole
  • lxd/cluster/upgrade: Error wrapping and dont use node term in user facing errors
  • lxd/cluster/upgrade: Adds additional logging to UpgradeMembersWithoutRole
  • gitignore: Ignore potential binaries
  • lxd/network/driver/bridge: Adds UsesDNSMasq function
  • lxd/network/driver/bridge: Improve comments
  • lxd/device/nic/bridged: Don't depend on dnsmasq pid file existence to write static allocation file
  • lxd/device/nic/bridged: Removes duplicated pid check when killing dnsmasq
  • lxc/utils: Make byName sort all columns
  • lxd/db/generate/db/method: Generate URIs from get-objects stmt
  • lxd/db: Replace 'name' generation comments and tags with 'objects'
  • shared/api/url: Don't allow 'none' as target
  • lxd/db/generate/db/stmt: Remove 'name' statement generation
  • lxd/db/db: Duplicate urlsToResourceNames from client/util.go
  • lxd/db/projects: Add generator comment for fetching projects by ID
  • lxd/db/projects: Pass both project ID and Name to networks
  • lxd/db: Use api.NewURL for non-generated GetURIs
  • lxd/db: Remove unused URI fetching methods
  • lxd/db: Update generated code
  • lxd/db/instance/profiles: Add missing error to stmt.Exec
  • lxd/api/cluster: Only take clusterMembershipMutex on leader
  • doc: use customized Furo theme
  • doc: customize footer
  • doc: add a header
  • doc: remove Vanilla theme from Makefile
  • lxd/endpoints: Make socketUnixListen return a UnixListener
  • lxd/db/node: nodeIsOffline should always use UTC
  • lxd/api/cluster: Improve logging
  • lxd/cluster/heartbeat: Adds NewAPIHearbeat function
  • lxd/cluster/heartbeat: Adds HearbeatCancelFunc
  • lxd/cluster/heartbeat: Export HeartbeatRestart
  • lxd/cluster/membership: Set tx.SetNodeHeartbeat in Join
  • lxd/cluster/membership: Renames notifyNodesUpdate to NotifyHeartbeat
  • lxd/cluster/gateway: Moves heartbeatLock to other heartbeat related variables
  • lxd/daemon: Use contextual logging with local address in NodeRefreshTask
  • lxd/daemon: Adds heartbeatHandler function
  • lxd/daemon: Update nodeRefreshTask to only perform role changes if called from leader heartbeat send
  • lxd/cluster/gateway: Pass HeartbeatHandler into HandlerFuncs
  • lxd/cluster/gateway: Error message and log improvements
  • lxd/api: d.gateway.HandlerFuncs usage
  • lxd/cluster/heartbeat: Initialise unavailableMembers as empty slice in heartbeat
  • lxd/cluster/heartbeat: Updates HeartbeatTask to skip starting new heartbeat if already running
  • lxd/endpoints: Add STARTTLS and BufferedUnixConn wrappers
  • lxd/ucred: Add support for BufferedUnixConn
  • lxd/endpoints: Add STARTTLS support on unix socket
  • lxd: Allow TLS auth on unix socket
  • lxd/device/nic/routed: Don't setup auto gateway if IP family not in use
  • test: Adds test for single family routed NIC operation
  • lxd/db: Updates GetInstanceNamesByNodeAddress to also return project name.
  • lxd: Prevents overwriting instances with same name but different project.
  • test: Adds tests for passing through unix socket with disk device
  • lxd/device/disk: Open source with O_PATH to support directories and unix sockets
  • lxd/events/events: Renames noForward to localOnly
  • lxd/cluster/membership: Call EventsUpdateListeners locally from NotifyHeartbeat
  • lxd/cluster/heartbeat: Improve logging
  • lxd: Uses api.NewURL and sets project when querying other nodes.
  • doc: reuse content from the repo README in the doc index
  • doc: move relevant files out of .github folder
  • lxd/instance/drivers/qemu: Move network state to separate function
  • shared/instance: Add security.agent.metrics
  • doc/instances: Add security.agent.metrics
  • lxd/instance/drivers/qmp: Extend commands
  • lxd/db/cluster: Adds empty description to node 1 when opening the db.
  • lxd/db: Adds empty description where null constraints are violated.
  • lxd/instance/drivers/qemu: Add agentMetricsEnabled helper function
  • lxd/instance/drivers/qemu: Validate security.agent.metrics for state
  • api: Add qemu_metrics extension
  • doc: fix link in README
  • lxd/clustert/heartbeat: Logging improvements in Send
  • lxd/cluster/info: Logging improvement in loadInfo
  • lxd/cluster/membership: Logging improvement
  • lxd/api/cluster: No need to call cluster.EventsUpdateListeners in internalClusterPostRebalance
  • test: Add short sleep for clustering rebalance to allow raft nodes to settle after join
  • lxd/migrate: Change allConnected channel in migrationSourceWs to be struct{}
  • lxd/migrate: Change allConnected channel in migrationSink to be struct{}
  • lxd/util/net: Adds SetTCPTimeouts and ExtractTCPConn functions
  • lxd/cluster/gateway: Updates dqliteProxy to use util.ExtractTCPConn and util.SetTCPTimeouts
  • lxd/migrate: Updates migrationSourceWs to use util.ExtractTCPConn and util.SetTCPTimeouts
  • lxd/migrate/instance: Defers a call to disconnect in migrationSourceWs Do
  • lxd/daemon: Introduce daemonStorageSplitVolume
  • lxd/images: Don't cleanup unknown images from shared volume
  • lxd: Checks that the host node is clustered before editing.
  • lxc/alias: Allows users to reference specific arguments.
  • lxd/cluster/heartbeat: Cancel APIHeartbeat Send during spread sleep if context is cancelled
  • lxd/migrate: Update for stable-4.0
  • lxd/cluster/heartbeat: Detect aborted heartbeat round quicker
  • lxd/cluster/heartbeat: Move defer setup to after lock is released
  • lxd/cluster/heartbeat: Move clustered check before locking and context setup
  • lxd/cluster/events: Rework listener connect notification to support multiple addresses
  • lxd/cluster/connect: EventListenerWait usage in Connect
  • client/events: Get lock before checking e.disconnected in Disconnect
  • client/lxd: Adds eventConn to store events websocket connection
  • client/lxd/events: Store events websocket connection in getEvents
  • lxd/cluster/membership: Update NotifyHeartbeat to have access to gateway so it can cancel ongoing heartbeat
  • lxd/cluster/events: Close client connection on events get failure in eventsConnect
  • lxd/cluster/events: Use looked up listener rather than doing another map retrieval
  • client/events: Replace chActive and disconnected with context
  • lxd/events/events: Improve logging in Listener
  • lxd/events: Removes duplicate event connection logging
  • lxd-agent/events: Removes unnecessary logging in eventsSocket
  • lxd/cluster/events: Clarify event connections are clients to another server
  • lxd/cluster/recover: Return separate error if no raft role found
  • lxd: Fix progress indicator for 'lxc export'
  • lxd/device/gpu: Add support for mig.uuid
  • api: gpu_mig_uuid
  • doc/instances: Add mig.uuid on MIG GPU
  • shared/network: Differentiate websocket network errors
  • lxd/instance/exec: Simplify websocket error handling
  • lxd/instance/drivers/driver/qemu/cmd: Don't attempt to send signal to lxd-agent exec process if finished
  • lxd/instance/drivers/driver/qemu/cmd: Run cleanup function after command has finished in Wait
  • lxd/instance/exec: Close attachedChildIsDead channel first in finisher
  • lxd/instance/exec: Only attempt to kill process if still running when a control connection error occurs
  • lxd-agent/exec: Close attachedChildIsDead channel first in finisher
  • lxd-agent/exec: Only attempt to kill process if still running when a control connection error occurs
  • lxd: Fix overriding public property by auto-update
  • lxd/db/storage/volumes/snapshots: Update GetExpiredStorageVolumeSnapshots to support sql.NullTime ExpiryDate field
  • lxd/instance/drivers: Specify number of USB ports
  • doc: improve placement of header
  • doc: fix broken include
  • doc: fix links in contributing docs
  • shared/network: Differentiate websocket handler function debug messages
  • lxd-agent/exec: Treat websocket.CloseMessage the same as websocket disconnection
  • lxd/instance/exec: Treat websocket.CloseMessage the same as websocket disconnection
  • doc: change file inclusion to use comments instead of text
  • automatically add labels to PRs that contain doc changes
  • api: Move storage_volume Writable() function
  • api: Add Writable() function for storage snapshot
  • lxc/storage_volume: Properly handle snapshots in set
  • i18n: Update translation templates
  • lxd/instance: Prevent nvidia.runtime on privileged containers
  • shared/usbid: Document reasons to fork
  • shared/log15: Remove fork
  • lxd: Update imports for log15
  • lxd-agent: Update imports for log15
  • client: Update imports for log15
  • lxc: Update imports for log15
  • shared/logging: Update imports for log15
  • shared: Update imports for log15
  • shared/logging: Update for current log15
  • gomod: Update dependencies
  • gomod: Update go-dqlite dependency to include fix for local timezone conversion removal
  • doc: fix scrolling in tables
  • doc: remove spaces at the end of the line
  • doc: prevent linking of .ci, .as and similar
  • doc: remove manual list of components
  • api: Adds event_project extension
  • shared/api/event: Adds Project field to Event struct
  • doc/rest-api: Refresh swagger YAML
  • lxd/events/events: Rename group concept to projectName
  • lxd/events/events: Store project name inside event and update broadcast to use it
  • client/lxd: Change eventListeners to be keyed on project name using map[string][]*EventListener
  • client/events: Add projectName field to store project that event listener is using
  • client/events: Update Disconnect to use listener projectName to clear listeners
  • client/lxd/events: Use connection's project and allProjects argument to maintain listeners keyed on project name
  • client/lxd: Convert eventConn to map of connections keyed on project
  • client/connection: Initialise eventListeners and eventConns
  • client/lxd/events: Save websocket connections by project
  • client/lxd/server: Initialise websocket event listeners and connections in UseProject and UseTarget
  • lxd/lifecycle/instance: Use URL builder in Event
  • lxd/instance/drivers/driver/lxc: Update devlxdEventSend to use map[string]interface{}
  • lxd/instance/drivers/driver/qemu: Update devlxdEventSend to use map[string]interface{}
  • lxd/events: Move common functionality between external and devlxd servers into common file and types
  • lxd/events/devlxdEvents: Adds devlxd event server
  • lxd/events/common: listenerCommon
  • lxd/events/events: Server
  • lxd/events/devlxdEvents: DevLXDServer
  • lxd/state/state: Update DevlxdEvents to events.DevLXDServer
  • lxd/daemon: Switch to using events.DevLXDServer for devlxdEvents
  • lxd/devlxd: d.devlxdEvents.AddListener usage
  • lxd/instance/drivers/driver/lxc: d.state.DevlxdEvents.Send usage in devlxdEventSend
  • lxd-agent/events: Remove lxd-agent as location in eventsSocket and subscribe to all project events
  • github: Add API label to labeler
  • doc/projects: Remove invalid features.networks
  • lxd/db: Fix GetProjectUsedBy for stable-4.0
  • tests: Fix failure when shiftfs is skipped
  • lxd/instance/lxc: Fix mount injection on VFS idmap
  • lxd/device/disk: Ensure disk FDs are marked CLOEXEC
  • lxd/fsmonitor/drivers/driver/fanotify: Ensure FDs are marked CLOEXEC
  • lxd/storage/drivers/utils/cgo: Ensure FD is opened with CLOEXEC in get_unused_loop_dev_legacy
  • lxd/util/net: Fix return value in ExtractTCPConn
  • lxd/events/common: Import ordering
  • lxd/events/common: Adds support for receiving events from listener client
  • lxd/events/events: Adds receive event handler to AddListener
  • lxd/events: d.events.AddListener usage
  • lxd-agent/events: d.events.AddListener usage
  • client/interfaces: Adds SendEvent function signature
  • client/lxd: Adds eventConnsLock to control write access to eventConns
  • client/lxd/events: Use r.eventConnsLock to control access to r.eventConns
  • client/lxd/events: Implement SendEvent function
  • lxd/instance/qemu: Always set memory sharing on memory-backend-file
  • lxc/exec: Expose interactive to handler
  • lxc/exec: Don't send SIGWINCH when non-interactive
  • fsmonitor: s/syscall.CloseOnExec()/unix.CloseOnExec()/g
  • fsmonitor: close fd from open_by_handle_at()
  • lxd: Export storage pool availability functions
  • lxc: Support for restricted projects on unix socket
  • lxd: ensure file descriptors are closed before starting container
  • lxd/db/cluster: Fixes v19 migration for sqlite 3.37.
  • lxd/network: Fixes misspelling of interface.
  • api: Adds instance_allow_inconsistent_copy extension.
  • shared/api: Adds AllowInconsistent to instance source.
  • client: Adds AllowInconsistent to InstanceCopyArgs.
  • lxd/migration: Adds AllowInconsistent flag to VolumeSourceArgs.
  • lxd/storage/drivers: Ignore rsync error 24 if allowInconsistent.
  • lxd/storage: Adds allowInconsistent to pool interface.
  • lxd: Passes allowInconsistent from instance source to pool method.
  • lxc/copy: Adds --allow-inconsistent flag.
  • lxc/move: Adds --allow-inconsistent flag.
  • i18n: Updates translation templates.
  • doc/rest-api: Refresh swagger YAML
  • lxd/storage/ceph: Align standard arguments
  • lxd/storage/ceph: Always pass user/id to ceph/rbd
  • doc: fix language in SECURITY.md
  • doc: only link the Swagger files that we actually need
  • lxd/dnsmasq: Append device name to dnsmasq entry file name.
  • lxd/device: Adds ping check for nic routed device.
  • gomod: Update dependencies
  • Take extra precautions when calling tar
  • lxd: Applies patch to add device names to dnsmasq files.
  • test: Updates test suite to append device names to dnsmasq files.
  • doc: Adds note about newuidmap to machine setup.
  • lxd/instances: Don't check limits on restore
  • tests: Validate snapshots on limited projects
  • test: Fixes number of expected NAT rules when using xtables driver.
  • lxc/config/file: allow overriding default remote by env variable
  • doc/environment: add new LXC_REMOTE variable
  • test: Ensure ebtables is legacy when driver is xtables.
  • client: Addd GetInstanceFull
  • client: Add WithContext
  • client: Add context-aware connection functions
  • lxd/instance/qemu: Extend live updatable config keys
  • lxd: Refresh all dnsmasq hosts during patch.
  • lxd/instance/drivers: Adds getRootDiskDevice function to common driver.
  • lxd/instance/drivers: Performs disk size check on stateful startup.
  • doc: add a security summary and include it where needed
  • doc: add an authentication section
  • doc: clean up security documentation
  • doc: add styling for abbreviations
  • doc: fix loading of substitutions
  • Growing a loop backed btrfs pool fix snap path
  • doc: use absolute URL for Swagger
  • doc: swagger: hide link to yaml file
  • lxd/db: Import ordering
  • doc: clean up links in README
  • doc: move missing content from SUPPORT.md to README.md
  • doc: add a support page and include it
  • doc: move SUPPORT.md to .github folder
  • doc: add a link to the Code of Conduct
  • doc: fix link to support documentation
  • lxd/network: Adds State function to interace with common implementation.
  • lxd: Call the networks 'State' function if it can be loaded.
  • shared/validate: Introduce ParseNetworkVLANRange
  • shared/validate: Align ParseNetworkVLANRange with ParseUint32Range
  • lxd/storage/btrfs: Add volume delete shortcut
  • shared/api: Fix typo
  • doc/rest-api: Refresh swagger YAML
  • client: Fix bad arg naming in zone functions
  • doc: enable automatically generated anchors
  • shared/api: Adds OVN network state to api response.
  • lxd/network: Port to using fmt.Errorf
  • lxd/instance/lxc: Use absolute rootfs
  • doc: kernel 5.15+ have sane value for net.core.bpf_jit_limit
  • api: Add image_restrictions extension
  • shared/simplestreams: Support image reqs metadata
  • doc: Add notion of image reqs
  • shared/util: Add IsFalse
  • lxd/drivers: Add secureboot & cgroup image reqs
  • doc: Add secureboot and cgroup image reqs
  • lxd/instance/qemu: Enable HyperV flags on x86_64
  • doc/storage: Ceph supports quotas
  • lxd/endpoints/listeners: Add exportable listeners package
  • lxd/endpoints/starttls: Remove TLS methods from endpoints package
  • lxd/ucred/ucred: Use new listeners package
  • lxd/instance/qemu: Restrict HyperV flags to 5.10+
  • shared/api: Add network zone record structs
  • doc/rest-api: Refresh swagger YAML
  • client: Add network zone records
  • doc: Fix typo in ZFS storage
  • lxd: Only patch dnsmasq for networks in the db.
  • lxd/storage/drivers: Support zfs.export
  • lxd/storage: Add zfs.reserve_space
  • lxd/storage/drivers: Sets RunningCopyFreeze to true.
  • doc: add a target to serve the rendered docs
  • doc: add a doc README
  • doc: exclude README.md from doc build
  • lxd/storage/drivers: Factors out fast snapshot logic from volume backup.
  • lxd/storage/drivers: Uses fast snapshot as source of migration.
  • lxd/storage/drivers: Factors out fast snapshot logic from volume backup.
  • lxd/storage/drivers: Uses fast snapshot as source of migration.
  • lxd/storage: Freezes instances during migration.
  • lxc/exec: Don't terminate on SIGWINCH
  • lxd/events: Increase websocket pings to 10s
  • lxd/console: Fix error wrapping
  • lxc/console: Properly handle GUI exitting
  • lxc/console: Fix typo
  • lxd/storage/drivers: Fixes reverter usage.
  • lxd: Restart networks when enabling clustering
  • lxd/network/bridge: Skip HandleHeartbeat on missing forkdns
  • client: Add GetNetworkACLLogfile
  • lxd/storage/drivers: Add support for zfs.blocksize config option
  • doc: quick cleanup of FAQ

Try it for yourself

Try the latest LXD release on our demo service.

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