News

LXD 5.6 リリースのお知らせ

23rd of September 2022

はじめに

LXD チームは LXD 5.6 のリリースをお知らせできることにとてもワクワクしています!

LXD を使ってコンテナや仮想マシンを実行しているか、クラスタリングとプロジェクトを使っているかどうかに関わらず、このリリースはあらゆる面で改良されている、色々なことがある LXD リリースです。

Enjoy!

新機能とハイライト

Grafana Loki サポート

LXD はログメッセージやライフサイクルイベントを、中央の Grafana Loki サーバーに送ることができるようになりました。今回の初期実装は HTTP の Basic 認証をサポートしており、ラベルとして送られるフィールドに関してある程度の柔軟性があります。

仕様 : https://discuss.linuxcontainers.org/t/lxd-stream-lifecycle-and-log-events-to-loki/14992
ドキュメント : https://linuxcontainers.org/lxd/docs/latest/server/

ローカルストレージプール上のオブジェクトストレージ

LXD 5.5 での Ceph を使ったストレージバケットの初期実装に続き、このリリースでは機能が拡張され、他のストレージドライバーすべてで動作するようになりました。

これはローカルストレージドライバーから直接 S3 互換 API を提供できる MinIO project の素晴らしい成果にもとづいています。

仕様 : https://discuss.linuxcontainers.org/t/lxd-object-storage-s3-api/14579
ドキュメント : https://linuxcontainers.org/lxd/docs/latest/howto/storage_buckets/

仮想マシンでの Infiniband サポート

コンテナと仮想マシンが同じように動くようにするための作業が続いています。今回は LXD VM に Infiniband のサポートを追加しました。

これは、infiniband デバイスタイプを使うことでコンテナと同様に動作します。physicalsriov の両方をサポートします。この場合 SR-IOV が機能するためには、システム上で IOMMU が有効になっており、Mellanox ドライバーで "unprobed" の状態のままの SR-IOV バーチャルファンクションが多数存在していることを確認する必要があります。

ドキュメント : https://linuxcontainers.org/lxd/docs/latest/instances/#type-infiniband

プロジェクト内での制限されたネットワークアクセス

LXD のプロジェクトで設定できるオプションや制限の数はまだ増えています。今回は新たに restricted.networks.access を追加しました。このオプションは管理ネットワークをカンマ区切りのリストで指定します。

設定した場合、制限されたプロジェクトはこれらのネットワークの使用とリストのみを許可します。この機能は特にネットワークとして ovn を使っていないけれども、プロジェクトごとに 1 つのネットワークを分離して使っているような環境で特に有用です。

ドキュメント : https://linuxcontainers.org/lxd/docs/latest/projects/

instance-ready ライフサイクルイベント

LXD 5.5 で、/dev/lxd ゲスト API を通してトリガーできる、新たにインスタンスの状態として READY を導入しました。LXD 5.6 では、新たに instance-ready ライフサイクルイベントを追加しました。これはインスタンスが利用可能状態になったときに発行されます。

有効な CPU の総数を示すメトリック

最後に、新たなメトリックを LXD のメトリクス API に追加しました。

lxd_cpu_effective_total は、インスタンスで利用できる CPU の総数をレポートします。これは CPU の使用率を正確に計算するのに役立ちます。

すべての変更点(翻訳なし)

このリリースでの完全な変更点のリストは次の通りです:

すべてのChangeLogを見る
  • Doc: Fix typo in howto/storage_backup
  • gomod: Update dependencies
  • Makefile: Pin xgettext-go to working version
  • doc: backquote true and NO_PROXY in doc/server.md
  • doc: backquote mac in doc/api-extensions.md
  • doc: backquote instance types in events.md
  • doc: backqoute cloud-init in doc/cloud-init.md
  • Doc: replace Pongo with Pongo2 in doc/image-handling.md
  • doc: Capitalize fuse to FUSE in doc/instances.md
  • doc: Capitalize candid in doc/api-extensions.md
  • doc: Use more backquotes in documents
  • doc: Capitalize MAC filtering in doc/instances.md
  • doc: Improve uses of backquotes in documents
  • Doc: update using backquotes by review suggestions
  • lxd/instance/drivers: Adds storage pool to instance-created lifecycle context.
  • doc: Correct typo in cephobject.radosgw.endpoint*
  • lxd: Correct typo in cephobject.radosgw.endpoint*
  • test: Correct typo in cephobject.radosgw.endpoint*
  • lxd/db/cluster/update: Adds patch to correct typo in cephobject.radosgsw.endpoint*
  • doc: Note AIO requirement
  • lxd/db/generate/db/stmt: Add braces around WHERE clause
  • lxd/db/cluster/devices: Add Filter structs to Config/Devices
  • lxd/db/generate/db/parse: Generate queries with multiple filters
  • lxd/db/cluster/mapper: Update generated code
  • lxd/instance/instancetype/instance/type: Add instancetype.Filter
  • lxd: Remove usage of empty filter structs
  • doc/storage: small cleanup to the storage bucket documentation
  • doc/storage: group the pool/volume/bucket information
  • doc: remove FAQ about live migration
  • api: Adds storage_buckets_create_credentials extension
  • lxd-generate: Catch 'type' and change to 'entityType'.
  • lxd/db/cluster/schema: Apply schema patch version for bucket config typo fix
  • doc/migration: add link to lxd-migrate tutorial on Discourse
  • doc/upgrading: clarify database updates
  • doc/storage/btrfs: add YouTube link
  • doc/storage/lvm: add YouTube link
  • client: Update CreateStoragePoolBucket to return create-time admin key
  • lxc/storage/bucket: Display generated admin key in cmdStorageBucketCreate
  • lxd/storage/buckets: Generate admin key on bucket creation
  • test: Update storage buckets tests to check for initial credentials
  • i18n: Update translation templates
  • doc/rest-api: Refresh swagger YAML
  • doc/storage: make navigation titles more consistent
  • lxd/storage/buckets: Handle missing URL in storagePoolBucketsGet
  • api: metric: lxd_cpu_seconds_total: fix help text, floats
  • lxd/db/generate/db/method: Fix external package support
  • lxd/db/generate/db/stmt: Add joinon tag
  • lxd/db/generate/db/stmt: Don't allow joins and leftjoins at the same time
  • lxd/db/generate/db/stmt: Use joinon tag for ID query generation
  • lxd-generate: Adds method to get table and column from join config.
  • lxd-generate: Use join table in order by clause.
  • lxd-generate: Use join table config in create statement subselect.
  • lxd-generate: Use join table config in update statement subselect.
  • lxd-generate: Updates whereClause to use join config.
  • lxd/db/generate: Use joinTable
  • lxd: Change project rename response to operation in swagger.
  • doc: Regenerate swagger.
  • lxd/storage/buckets: Detect missing bucket URL in storagePoolBucketGet
  • lxd/storage/utils: Improve errors
  • lxd/storage/utils: Return explicit nil on error in VolumeDBGet
  • lxd/storage/utils: Prevent using VolumeDBCreate to create bucket volume records
  • lxd/storage/drivers/volume: Adds VolumeTypeBucket type
  • lxd/storage/drivers/interface: Use Volume type for bucket functions
  • lxd/storage/drivers/driver/common: Updates bucket functions to accept Volume type
  • lxd/storage/drivers/driver/cephobject/buckets: Use consistent minio s3 client context names
  • lxd/storage/drivers/driver/cephobject: Improved comments
  • lxd/storage/drivers/driver/cephobject/buckets: Updates to use Volume type for bucket config
  • lxd/storage/utils: Adds BucketDBCreate and BucketDBDelete functions
  • lxd/storage/backend/lxd: Switch to using Volume for buckets
  • lxd/storage/backend/lxd: Removes unused GetBucket
  • lxd/storage/drivers/bucket: Removes unused Bucket type
  • doc/requirements: correct statement about AIO
  • lxd/cgroup: Add GetEffecticeCPUs
  • lxd/metrics: Add lxd_cpu_effective_total
  • api: metrics_cpu_effective_total
  • lxd/db/storage/buckets: Allow cross-pool bucket listing in GetStoragePoolBuckets
  • lxd/storage/buckets: tx.GetStoragePoolBuckets usage
  • lxd/storage/storage: tx.GetStoragePoolBuckets usage
  • lxd/storage/drivers/driver/zfs: Adds ensureInitialDatasets function
  • lxd/storage/drivers/driver/cephobject/buckets: Ensure context cancel is run after revert.Fail
  • doc: improve systemd-resolved integration by adding stop command
  • doc: resolvectl status doesn't require sudo
  • doc: remove sentence about disk support for VMs
  • doc/network: add note that static leases require MAC as identifier
  • doc/storage/volumes: add --all-projects to documentation
  • lxd/apparmor: Deref compress commands
  • shared/api/event/lifecycle: Add instance ready constant
  • lxd/lifecycle: Add InstanceReady lifecycle event
  • lxd/devlxd: Send InstanceReady lifecycle event
  • doc/events: Add instance-ready lifecycle event
  • test: Test InstanceReady lifecycle event
  • doc: add configuration and script for markdownlint
  • doc: add a target for running markdownlint
  • doc: add an action to run markdownlint on the docs
  • doc: fix markdown errors for MD022
  • doc: fix markdown errors for MD004-MD007
  • doc: fix markdown errors for MD034
  • doc: fix markdown errors for MD032
  • doc: fix markdown errors for MD012
  • doc: fix markdown errors for MD031
  • doc: fix markdown errors for MD027
  • doc: do not use emphasis
  • doc: fix markdown errors for MD026
  • doc: fix markdown errors for MD038
  • doc: fix markdown errors for MD010
  • doc: fix markdown errors for MD038
  • doc: fix markdown errors for MD002
  • lxd/device: Support physical infiniband for VMs
  • doc: add related links to the start page
  • test: Add 60s timeout to lxc commands
  • test: Add clean up of storage buckets in kill_lxd
  • scripts/empty-lxd.sh: Add emptying of storage buckets
  • test: Allow automatic removal of loop devices in deconfigure_loop_device
  • lxd/db/networks: Removes unused NetworkNodes function
  • lxd/db/storage/pools: Removes unused StoragePoolNodes function
  • lxd/instance/drivers/driver/lxc: Removes profiles argument from lxcLoad
  • lxd/instance/drivers/driver/common: Removes profiles argument from expandConfig
  • lxd/instance/drivers/driver/qemu: Removes profiles argument from qemuLoad
  • lxd/instance: Removes profiles argument from load
  • lxd: instance.Load usage
  • lxd/profiles/utils: instance.Load usage in doProfileUpdateInstance
  • lxd-agent/server: Log original error during write error in createCmd
  • lxd/daemon: Log original error during write error in createCmd
  • lxd/operations/websocket: Don't return close errors in Render
  • lxd/instance/drivers: Change common.Project from string to api.Project type
  • lxd/instance: Updates instance load functions to accept api.Project
  • lxd/device/disk: instance.Load usage
  • lxd/project/permissions: Update AllowSnapshotCreation to accept api.Project
  • lxd/instance: instance.Load and project.AllowSnapshotCreation usage
  • lxd/instance/snapshot: project.AllowSnapshotCreation usage
  • lxd/instances: instance.Load usage
  • lxd/storage/backend/lxd: instance.Load usage
  • lxd/storage/utils: Updates VolumeUsedByProfileDevices to pass api.Project to callback function
  • lxd/storage/volumes/utils: storagePools.VolumeUsedByProfileDevices and instance.Load usage
  • lxd/profiles/utils: Updates profile management functions to load projects
  • lxd/profiles/utils: Fix incorrect handling of error in doProfileUpdate
  • lxd/storage/volumes/snapshot: project.AllowSnapshotCreation usage
  • lxd/storage/volumes: instance.Load usage
  • lxd/project/project: Updates ProfileProject to return effective api.Project info
  • lxd/profiles: project.ProfileProject usage
  • lxd/project/project: Updates NetworkProject to return requested project's info
  • lxd/networks: NetworkProject usage
  • lxd/project/project: Align StorageBucketProject with StorageVolumeProject return values
  • lxd/storage/buckets: project.StorageBucketProject usage
  • lxd/instance: Change Project() to return api.Project
  • lxd/instance: inst.Project() usage
  • lxd/device/disk: inst.Project() usage
  • lxd/device/proxy: inst.Proxy() usage
  • lxd/device: inst.Project() usage
  • lxd/backup: inst.Project() usage
  • lxd/seccomp: inst.Project() usage
  • lxd/maas: inst.Project() usage
  • lxd/lifecycle: inst.Project() usage
  • lxd/network: inst.Project() usage
  • lxd/storage/backend/lxd: inst.Project() usage
  • lxd/apparmor: inst.Project() usage
  • lxd: inst.Project() usage
  • lxc-to-lxd: Handle linux32 and linux64 arch personalities
  • doc/network/bgp: add some clarifications to the BGP docs
  • doc/metrics: add a list of provided metrics
  • lxd/instance/drivers/driver/qemu: Adds support for multi-queue macvlan NICs in VMs
  • lxd/backup: Add Profiles field do Config struct
  • lxd/storage: Add profiles to backup data
  • lxd/db/generate/db/parse: Add ParseStmt
  • lxd/db/generate/db/stmt: Parse 'objects' directive result to create 'objects-by'
  • lxd/db/cluster/instance/profiles: Add 'objects' directive for instance_profiles and certificate_projects
  • lxd/db/generate/README: Add lxd-generate README
  • lxd/db/cluster/mapper: Update generated code
  • doc/migration: Document lxc-to-lxd tool
  • api: Adds projects_networks_restricted_access extension
  • doc/projects: Documents restricted.networks.access
  • lxd/api/project: Adds restricted.networks.access
  • lxd/project/project: Adds NetworkAllowed function
  • lxd/network: Uses project.NetworkAllowed to check access to networks
  • lxd/networks: Prevent creation of managed networks not accessible by project
  • doc/storage/dir: add link to the YouTube video
  • lxd/project/permissions: Updates checkRestrictions to check NICs against restricted.networks.access setting
  • test: Updates project restrictions tests to check for restricted.networks.access setting
  • lxd/apparmor: allow rw access to /sys/fs/bpf
  • api: Adds storage_buckets_local extension
  • shared/util: Adds HTTPSStorageBucketsDefaultPort constant
  • lxd/endpoints: StorageBucketsServer listener
  • lxd/api/1.0: Updates doApi10UpdateTriggers to handle core.storage_buckets_address
  • scripts/bash/lxd-client: Adds core.storage_buckets_address
  • lxd/node/config: Adds core.storage_buckets_address support
  • lxd/storage/s3/types: Add S3 types
  • lxd/storage/s3/headers: Adds AuthorizationHeaderAccessKey function
  • lxd/storage/s3/policy: Adds policy generator
  • lxd/storage/s3/miniod: Adds miniod package
  • gomod: Adds github.com/minio/madmin-go
  • lxd/db/storage/buckets: Adds GetStoragePoolLocalBucket function
  • lxd/db/storage/buckets: Adds GetStoragePoolLocalBucketByAccessKey function
  • lxd/db/storage/buckets: Uses GetStoragePoolLocalBucketByAccessKey in CreateStoragePoolBucketKey and UpdateStoragePoolBucketKey
  • lxd/storage/pool/interface: Adds ActivateBucket
  • lxd/storage/pool/interface: Adds GetBucketURL definition
  • lxd/storage/backend/mock: Adds ActivateBucket
  • lxd/storage/backend/mock: Adds GetBucketURL
  • lxd/storage/backend/lxd: Implements local bucket support
  • lxd/storage/drivers: Renames BucketURL to GetBucketURL for consistency
  • lxd/storage/drivers/driver/dir: Add bucket support
  • lxd/storage/drivers/driver/lvm: Add bucket support
  • lxd/storage/drivers/driver/btrfs: Add bucket support
  • lxd/storage/drivers/driver/zfs: Add bucket support
  • lxd/storage/buckets: Use pool.GetBucketURL()
  • lxd/api: Adds storageBucketsServer
  • lxd/daemon: Initialise StorageBucketsServer listener in init
  • lxd/daemon: Shutdown minio processes during Stop
  • doc: Updates docs for local storage bucket support
  • test: Update storage buckets tests
  • lxd/db/generate/db/mapping: Add field-to-sql clause conversion helpers
  • lxd/db/generate/db/stmt: Rework statement generation
  • lxd/db/cluster/nodes: Generate ID statement for nodes
  • lxd/db/cluster/snapshots: Remove 'via' tag and replace with 'joinon' tag
  • lxd/db/cluster/mapper: Update generated code
  • lxd/db/generate/db/stmt: Expect full database package path in arguments
  • lxd/db/generate/db/stmt: Fallback to database package for parsing existing variables
  • lxd/db/generate/README: Update lxd-generate README
  • lxd/network/driver/bridge: Consider a dnsmasq start failure as a network start failure
  • lxd/warnings: Fix lxc warning show
  • doc: move live migration content
  • doc: cosmetic changes
  • lxc/config/default: Change DefaultConfig to a function
  • lxc/config: DefaultConfig usage
  • test: Add tests to check for lxc warning show functionality
  • doc/migration: clarify how to enable live migration for VMs
  • GetAllXattr: handle overlay filtering
  • lxd/db: Remove GetLocalStoragePoolVolumes and storagePoolVolumesGet functions
  • lxd/db/storage/pools: Removes GetStoragePoolVolume
  • lxd/storage/utils: Updates VolumeDBGet to return *db.StorageVolume and use tx.GetStoragePoolVolume
  • lxd/storage/backend/lxd: Replace b.state.DB.Cluster.GetLocalStoragePoolVolume with VolumeDBGet usage
  • lxd/api/internal: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/cluster/connect: Replace s.DB.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/daemon/storage: Replace s.DB.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/db/storage/volume/snapshots: Replace c.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/db/storage/volumes: Replace c.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/device/disk: Replace d.state.DB.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/storage/pool/load: Replace state.DB.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/storage/volumes: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/storage/volumes/backup: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/storage/volumes/snapshot: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/storage/volumes/state: Replace d.db.Cluster.GetLocalStoragePoolVolume with tx.GetStoragePoolVolume usage
  • lxd/db/storage/volumes: Removes inefficient storagePoolVolumeGetType and associated functions
  • lxd/db: Removes storageVolumeIDsGet and storagePoolVolumeReplicateIfCeph
  • lxd/db/generate/db/mapping: Use 'join' tag to deduce column name
  • lxd/db/generate/db/mapping: Override joined column name with 'joinon' tag
  • lxd/storage/s3/miniod: Use a sub-directory for minio on storage volume
  • shared/subprocess/proc: Adds context support
  • shared/subprocess/manager: Removes redundant error return value from NewProcessWithFds
  • lxd/archive/archive: subprocess usage
  • lxd/device: subprocess usage
  • lxd/instance/drivers/driver/qemu: subprocess usage
  • lxd/network/driver/bridge: subprocess usage
  • lxd/apparmor/archive: Use non-deferenced outputPath to derive profile name in archiveProfile
  • gomod: Updates dependencies
  • shared/logger/log: Don't modify the global logrus standard logger
  • shared/util/linux: Update GetAllXattr implementation using github.com/pkg/xattr
  • gomod: Adds github.com/pkg/xattr
  • shared/idmap/idmapset/linux: Improve errors in doUidshiftIntoContainer
  • shared/idmap/idmapset/linux: Go vet fixes in doUidshiftIntoContainer
  • lxd: Fix calls to inst.Project().Name when used in fmt.Sprintf and related functions
  • Makefile: Fix shellcheck version detection
  • Makefile: Use same pinned version of golangci-lint as github workflows
  • lxd/db/generate/db/method: Use QueryRowContext for one-row queries
  • lxd/db/cluster/mapper: Update generated code
  • lxd/db/query/objects: Include context in db query helpers
  • lxd/db/generate/db/method: Pass context to query helpers
  • lxd/db/cluster/mapper: Update generated code
  • lxd: Pass transaction ctx through to query helpers
  • lxd/test: Update tests
  • lxd/db/db: Include context in node Transaction
  • lxd: Update node.Transaction usages
  • lxd: Pass node transaction ctx to query helpers
  • lxd/db/schema/schema: Add context to schema updates
  • lxd/firewall/drivers/drivers/nftables: Pass rules via stdin rather than as command arguments
  • lxd/networks: Don't log all networks initialized if they weren't yet
  • gomod: go mod tidy
  • lxd/networks: Start deferred networks depending on physical interfaces before logical ones
  • lxd/storage/backend/lxd: Log pool names in Mount and Unmount
  • lxd/db/query/retry: Don't log not found errors in Retry
  • lxd/network/openvswitch/ovn: Check that the chassis is a member of the correct chassis group in ChassisGroupChassisDelete
  • lxd/db/images: Adds project support to UpdateImageLastUseDate
  • lxd/db/images: Adds project and custom last used date support to SetImageCachedAndLastUseDate
  • lxd/db/images: Make CreateImage project argument and explicit string type
  • lxd/images: d.db.Cluster.SetImageCachedAndLastUseDate usage
  • lxd/daemon/images: d.db.Cluster.SetImageCachedAndLastUseDate usage
  • lxd/daemon/images: Ensure cached property is maintained when using existing image from another project
  • lxd/instance: s.DB.Cluster.UpdateImageLastUseDate usage
  • test/README: Use backticks for test env var options
  • test/README: Clarify options which enable tests
  • test/README: Removes unused LXD_SKIP_STATIC
  • test: Adds LXD_SKIP_TESTS env var option
  • lxd/db: Replace usage of QueryRow with QueryRowContext
  • lxd/db: Add context arg to more tx methods
  • lxd/db: Replace tx.Query with tx.QueryContext
  • lxd: Pass transaction ctx to QueryContext
  • lxd/patches: Use context.TODO for db patch calls to query helpers
  • lxd/test: Update tests
  • lxd/db/generate/db/method: Remove superfluous error check for GetID
  • lxd/db/cluster/mapper: Update generated code
  • lxd/device: Support sr-iov infiniband for VMs
  • doc/instances: Add VM to supported instance types for infiniband devices
  • build(deps): bump actions/checkout from 2 to 3
  • build(deps): bump actions/setup-go from 2 to 3
  • doc/performance: create new pages
  • doc/performance: move content from production setup
  • shared/osarch: Improve 32bit arm handling
  • shared/validate/validate: Add IsX509Certificate validator
  • shared/validate/validate: Remove List validators
  • lxd/network/driver/physical: Update usages
  • lxd/network/driver/physical: Fix ipv4.routes validation
  • lxd/storage/drivers/driver/dir/volumes: Don't allow creating a volume that already exists on disk
  • lxd/storage/backend/lxd: Delete local volume if bucket creation fails
  • lxd/storage/drivers/volume: Create bucket local storage volumes using same permissions as custom volumes
  • lxd/storage/s3/miniod/miniod: Run MinIO as LXD's unprivilged user
  • lxd/storage/backend/lxd: miniod.EnsureRunning usage
  • doc: update footer to display correctly
  • test: Adds LXD_REQUIRED_TESTS support
  • test: Updates test_storage_buckets to check for minio command
  • lxd/device/device/common: Fix project name in device logger
  • doc/security: edit information about name leakage
  • doc/performance: clean up information about txqueuelen
  • doc/performance: clean up page about production setup server settings
  • doc/performance: move production setup page
  • doc/metrics: make part of the Metrics documentation reusable
  • doc/performance: update the performance tuning information
  • doc/spellcheck: add benchmarking to wordlist
  • Drop replace directive in go.mod
  • Update gomod
  • client: Handle nil args in CopyImage
  • doc/performance: add how-to guide for benchmarking
  • doc/lxc-to-lxd: update installation command
  • doc/storage: add information about special custom volumes
  • doc/storage: add link to YouTube video about storage volumes
  • doc/storage: add links between storage documentation
  • doc/instance API: add link to YouTube video
  • lxd/events: Add simpleListenerConnection
  • lxd/cluster/config: Add Loki config keys
  • lxd/events: Remove closed listeners
  • lxd/events: Add internal listener
  • lxd/daemon: Add internal event listener to Daemon
  • Update gomod
  • lxd/loki: Support Loki server
  • lxd: Support Loki server
  • doc/server: Add Loki config
  • api: Add loki API extension
  • i18n: Update translations from weblate
  • gomod: Update dependencies

試用環境

この新しい LXD リリースは私たちの デモサービス で利用できます。

ダウンロード

このリリースの tarball は ダウンロードページ から取得できます。

ビルド済みバイナリーは次のようにして使えます:

  • Linux: snap install lxd
  • MacOS: brew install lxc
  • Windows: choco install lxc

LXD 5.5 リリースのお知らせ

19th of August 2022

はじめに

LXD チームは LXD 5.5 のリリースをお知らせできることにとてもワクワクしています!

このリリースでは、LXD でのオブジェクトストレージのサポート開始を含む、非常にエキサイティングな機能が追加されています。また、小さいながらも歓迎すべき機能追加や修正も行われています。

Enjoy!

新機能とハイライト

(Ceph 上の)ストレージバケット

LXD がオブジェクトストレージサポートをゲットしました!

これはストレージバケットというまったく新しい概念と、専用のコマンド(lxc storage bucket)と API を追加することで実現しています。

この機能で LXD ユーザーは新たにストレージバケットを作成し、サイズの制限を割り当て、そのバケットへのアクセスキーを管理できます。バケットには S3 API を持った独自の URL があります。

初期実装では、S3 API を提供する rados ゲートウェイを持つ Ceph の使用に限定されています。LXD 5.6 では minio を使って、他の全てのストレージドライバーにこの機能を拡張する予定です。

stgraber@dakara:~$ lxc storage create remote-object cephobject cephobject.radosgsw.endpoint=http://athos.hosts.mtl.stgraber.net:7480
Storage pool remote-object created

stgraber@dakara:~$ lxc storage bucket create remote-object foo
Storage bucket foo created

stgraber@dakara:~$ lxc storage bucket key create remote-object foo admin --role admin
Storage bucket key admin added
Access key: TNZAYZSYIHM243PS8337
Secret key: xbBTY8exhnXdm3uwEcsBjeBVBFzi4n4NOhtOEYa3

stgraber@dakara:~$ lxc storage bucket show remote-object foo
config: {}
description: ""
name: foo
s3_url: http://athos.hosts.mtl.stgraber.net:7480/foo
location: ""

stgraber@dakara:~$ time s3cmd put Downloads/Win11_English_x64v1.iso s3://foo --multipart-chunk-size-mb=1000 --no-ssl --host athos.hosts.mtl.stgraber.net:7480 --host-bucket athos.hosts.mtl.stgraber.net:7480 --access_key TNZAYZSYIHM243PS8337 --secret_key xbBTY8exhnXdm3uwEcsBjeBVBFzi4n4NOhtOEYa3
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 1 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   26s    37.30 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 2 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   25s    39.72 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 3 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   28s    35.28 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 4 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   31s    32.15 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 5 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   29s    33.45 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 6 of 6, 307MB] [1 of 1]
 322172928 of 322172928   100% in    9s    33.17 MB/s  done

real    2m37.658s
user    0m20.592s
sys     0m4.383s

stgraber@dakara:~$ s3cmd get s3://foo/Win11_English_x64v1.iso --multipart-chunk-size-mb=1000 --no-ssl --host athos.hosts.mtl.stgraber.net:7480 --host-bucket athos.hosts.mtl.stgraber.net:7480 --access_key TNZAYZSYIHM243PS8337 --secret_key xbBTY8exhnXdm3uwEcsBjeBVBFzi4n4NOhtOEYa3
download: 's3://foo/Win11_English_x64v1.iso' -> './Win11_English_x64v1.iso'  [1 of 1]
 5565052928 of 5565052928   100% in   31s   170.59 MB/s  done

上記のように、標準的な S3 クライアントを使って新しいバケットの作成と利用を見ることができます。

インスタンスの使用可能状態

LXD ユーザーが直面する共通の問題に、インスタンスがいつ使用可能になるかを知りたいという問題がありました。
この問題は "ready" の定義がかなり状況固有になるため、LXD だけで解決できる問題ではありません。しかし、LXD にできることは、いつ使用可能になったかを教え、それを API を通して公開することです。

この方法は、ゲスト API(/dev/lxd)を通して動作します:

stgraber@dakara:~$ lxc list u1
+------+---------+-----------------------+-------------------------------------------+-----------+-----------+
| NAME |  STATE  |         IPV4          |                   IPV6                    |   TYPE    | SNAPSHOTS |
+------+---------+-----------------------+-------------------------------------------+-----------+-----------+
| u1   | RUNNING | 172.17.250.107 (eth0) | 2602:fc62:b:250:216:3eff:feb9:e5bd (eth0) | CONTAINER | 0         |
+------+---------+-----------------------+-------------------------------------------+-----------+-----------+

stgraber@dakara:~$ lxc exec u1 bash
root@u1:~# curl --unix-socket /dev/lxd/sock lxd/1.0
{"state":"Started","api_version":"1.0","instance_type":"container","location":"none"}
root@u1:~# curl --unix-socket /dev/lxd/sock lxd/1.0 -X PATCH -d '{"state": "Ready"}'
root@u1:~# exit

stgraber@dakara:~$ lxc list u1
+------+-------+-----------------------+-------------------------------------------+-----------+-----------+
| NAME | STATE |         IPV4          |                   IPV6                    |   TYPE    | SNAPSHOTS |
+------+-------+-----------------------+-------------------------------------------+-----------+-----------+
| u1   | READY | 172.17.250.107 (eth0) | 2602:fc62:b:250:216:3eff:feb9:e5bd (eth0) | CONTAINER | 0         |
+------+-------+-----------------------+-------------------------------------------+-----------+-----------+

devlxd API が無効化されていない限り、この機能はコンテナと仮想マシンの両方で動作します。

BGP ホールドタイムの設定

新たに bgp.peers.NAME.holdtime という設定キーを導入しました。
これにより、ピアに特定の BGP ホールドタイムの値を設定できます。通常のデフォルト値である 180 秒よりずっと小さな値に減らせます。

全プロジェクトのストレージボリューム情報の取得

ここしばらくのインスタンス API と同様に、URL で ?all-projects=true というキーワードを使って、プロジェクトをまたがるボリューム情報を取得できるようになりました。

stgraber@dakara:~$ lxc query /1.0/storage-pools/default/volumes?all-projects=true
[
    "/1.0/storage-pools/default/volumes/container/bgp-test",
    "/1.0/storage-pools/default/volumes/container/centos3",
    "/1.0/storage-pools/default/volumes/container/centos4",
    "/1.0/storage-pools/default/volumes/container/charmcraft-lxd-1779348-0-0-amd64?project=charmcraft",
    "/1.0/storage-pools/default/volumes/container/lxd-build",
    "/1.0/storage-pools/default/volumes/container/snapcraft-lxd",
    "/1.0/storage-pools/default/volumes/container/snapcraft-microceph-1142335?project=snapcraft",
    "/1.0/storage-pools/default/volumes/container/speedtest",
    "/1.0/storage-pools/default/volumes/container/u1",
    "/1.0/storage-pools/default/volumes/custom/backups",
    "/1.0/storage-pools/default/volumes/custom/images",
    "/1.0/storage-pools/default/volumes/virtual-machine/v1",
    "/1.0/storage-pools/default/volumes/virtual-machine/v2",
    "/1.0/storage-pools/default/volumes/virtual-machine/win11"
]

メトリクスの OOM kill カウンター

新しいメトリクス API エントリーを追加しました。カーネルの Out Of Memory killer が発生した回数を監視します。

stgraber@dakara:~$ lxc config set u1 limits.memory=64MiB
stgraber@dakara:~$ lxc query /1.0/metrics | grep lxd_memory_OOM_kills_total
# HELP lxd_memory_OOM_kills_total The number of out of memory kills.
# TYPE lxd_memory_OOM_kills_total counter
lxd_memory_OOM_kills_total{name="u1",project="default",type="container"} 0

stgraber@dakara:~$ lxc exec u1 -- apt update
Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease
stgraber@dakara:~$ ts... 56% Killed

stgraber@dakara:~$ lxc query /1.0/metrics | grep lxd_memory_OOM_kills_total
# HELP lxd_memory_OOM_kills_total The number of out of memory kills.
# TYPE lxd_memory_OOM_kills_total counter
lxd_memory_OOM_kills_total{name="u1",project="default",type="container"} 1

データベースの最適化

最後に、新機能ではありませんが、このリリースの重要な注目点です。
LXD が実行するデータベースリクエストの回数を減らし、これらのリクエストを全体的に最適化するために、多くの作業を行いました。

これにより、全体的にパフォーマンスが向上しました。そして、一部の大規模なクラスターユーザーで発生していたような多数のタイムアウトが回避できるはずです。

すべての変更点(翻訳なし)

このリリースでの完全な変更点のリストは次の通りです:

すべてのChangeLogを見る
  • Doc: Fix LXD volume group to LVM
  • Remove redundant LXD before ZFS pool
  • Doc: change a LVM to an LVM
  • doc/authentication: add information about a server behind NAT
  • lxc/remote: Allow specifying alternate server address for tokens
  • i18n: Update translation templates
  • lxd/db/warningtype: Move warning type definitions to warningtype package
  • lxd: Update usages of warning types
  • lxd/db/cluster/warnings: Add cluster.Warnings
  • lxd/db/warnings.mapper: Remove db.Warnings and its code generation
  • lxd/db/cluster/warnings.mapper: Update generated code
  • lxd/db/cluster/mapper: Get Images/Certificates by ID
  • shared/api/certificate: Add api.Certificate URL helper
  • lxd/warnings: Add getWarningEntityURL
  • lxd/warnings/warnings: Use cluster package helpers for Warnings
  • lxd/db/warnings.mapper: Remove db package warnings generated files
  • lxd/db/generate: Remove v1 generator
  • lxd/db/cluster: Remove version flag from generator comments
  • lxd/db/warnings: Remove unused types
  • doc/storage: add link to video about benchmarking storage drivers
  • lxd/db/storage/buckets: Fix member specific filter bug in GetNetworkLoadBalancers
  • lxd/db/cluster/projects: Move ProjectFeatures and ProjectFeaturesDefaults into cluster package
  • lxd/db/cluster/open: Update EnsureSchema to use ProjectFeaturesDefaults for default project features
  • lxd/api/project: Use cluster.ProjectFeatures and cluster.ProjectFeaturesDefaults
  • lxd/db/network/forwards: Adds context arg to GetNetworkForwards and GetNetworkForward
  • lxd/network: GetNetworkForward and GetNetworkForwards usage
  • lxd/db/network/forwards: Adds optional listenAddresses filter to GetNetworkForwards
  • lxd/db/network/load/balancers: Adds context argument to GetNetworkLoadBalancer and GetNetworkLoadBalancers
  • lxd/network: Usage of GetNetworkLoadBalancers and GetNetworkLoadBalancer
  • lxd/db/network/load/balancers: Adds optional listenAddresses filter to GetNetworkLoadBalancers
  • lxd/db/cluster/stmt: Export Stmt helper
  • lxd/db/cluster: Use exported Stmt helper
  • lxd/db/generate/db/method: Use exported Stmt helper
  • lxd/db/cluster/mapper: Update generated code
  • lxd/db/transaction: Remove Cluster/ClusterTx prepared stmts field
  • lxd/db: Use cluster.Stmt as the only statement store
  • lxd/storage/drivers/driver/lvm/volumes: Fix "lvm.stripes cannot be used with thin pool volumes" error
  • lxd/lifecycle/network/load/balancer: Fix load balancer lifecycle types
  • shared/api/event/lifecycle: Fix typo in constant
  • lxd: Update response.SyncResponseLocation URL generation to use api.NewURL() helper
  • lxd/network/load/balancers: Add missing networks segment to URL response in networkLoadBalancersPost
  • lxd/storage/volumes: Adds missing volume name to URL response in storagePoolVolumeTypePostRename
  • lxd/lifecycle: Reworks URL generation to use api.NewURL()
  • lxd/lifecycle/cluster/member: Update ClusterMemberAction.Event to use api.NewURL
  • lxd/lifecycle/instance/backup: Updates InstanceBackupAction.Event to clarify what backup name is expected
  • lxd/instance/backup: Pass full backup name to lifecycle.InstanceBackupRetrieved.Event
  • lxd/lifecycle/storage/volume: Make StorageVolumeAction.Event require volume with name and type
  • lxd/lifecycle/storage/volume/backup: Updates StorageVolumeBackupAction.Event to clarify the type of backup name required
  • lxd/storage/volumes/backup: Pass full backup name into lifecycle events
  • lxd/lifecycle/storage/volume/snapshot: Updates StorageVolumeSnapshotAction.Event to expect snapshot volume
  • doc: add spellcheck
  • doc: add spellchecking to the tests
  • doc: add an extension to allow spelling exceptions
  • doc: update word list for spellchecker
  • doc: fix spelling README.md
  • doc: fix spelling api-extensions.md
  • doc: fix spelling architectures.md
  • doc: fix spelling backup.md
  • doc: fix spelling events.md
  • doc: fix spelling faq.md
  • doc: fix spelling instances.md
  • doc: fix spelling security.md
  • doc: fix spelling server.md
  • doc: fix spelling network_bridge_resolved.md
  • doc: fix spelling metrics.md
  • doc: fix spelling projects.md
  • doc: fix spelling rest-api.md
  • doc: fix spelling network_bridge.md
  • doc: fix spelling network_macvlan.md
  • doc: fix spelling network_ovn.md
  • doc: fix spelling storage_btrfs.md
  • doc: fix spelling clustering.md
  • doc: fix spelling container-environment.md
  • doc: fix spelling database.md
  • doc: fix spelling dev-lxd.md
  • doc: fix spelling network_acls.md
  • doc: fix spelling network_load_balancers.md
  • doc: fix spelling userns-idmap.md
  • doc: fix spelling syscall-interception.md
  • doc: fix spelling requirements.md
  • doc: fix spelling remotes.md
  • doc: fix spelling storage_zfs.md
  • doc: fix spelling storage_lvm.md
  • doc: fix spelling storage_drivers.md
  • doc: fix spelling storage_dir.md
  • doc: fix spelling storage_cephfs.md
  • doc: fix spelling storage_ceph.md
  • doc: fix spelling network_sriov.md
  • doc: fix spelling network_physical.md
  • doc: fix spelling network_forwards.md
  • doc: fix spelling network_ovn_peers.md
  • doc: fix spelling network_zones.md
  • doc: fix spelling storage_add_volume.md
  • doc: fix spelling image_handling.md
  • doc: fix spelling migration.md
  • doc: fix spelling production-setup.md
  • doc: exclude some tags from spell checking
  • doc: allow Markdown syntax when we need markup in a link
  • doc: fix spelling authentication.md
  • doc: fix spelling cloud-init.md
  • doc: fix spelling containers.md
  • doc: fix spelling contributing.md
  • doc: fix spelling daemon-behavior
  • doc: fix spelling debugging.md
  • doc: fix spelling doc-cheat-sheet.md
  • doc: fix spelling networks.md
  • doc: fix spelling storage.md
  • doc: fix spelling network_bridge_firewalld.md
  • doc: fix spelling network_ovn_setup.md
  • doc: fix spelling storage_backup.md
  • doc: fix spelling installing.md
  • doc: fix spelling instance-exec.md
  • doc: fix spelling profiles.md
  • doc: fix spelling CONTRIBUTING.md
  • lxd: Use lifecycle URL in SyncResponseLocation
  • lxd/lifecycle/storage/pool: Remove projectName arg from StoragePoolAction.Event
  • lxd/networks: Adds project to networksPost SyncResponseLocation response
  • lxd/storage/pools: Updates storagePoolsPost to use a common lifecycle var
  • lxd/storage/pools: Fix comment typo in storagePoolsPost
  • lxd/storage/pools: Updates storagePoolPut and storagePoolDelete to use updated lifecycle function
  • lxd/storage/volumes: Adds project to SyncResponseLocation in storagePoolVolumeTypePostRename
  • lxd/db/instances: Don't use query parameters with IN statement when loading instance config in InstanceList
  • lxd/db/instances: Use query.Params in GetProjectAndInstanceNamesByNodeAddress
  • lxd/db/instances: Use query.Params in GetProjectInstanceToNodeMap
  • lxd/db/instances: Use consistent IN format
  • lxd/db/instances: Remove unused generateInClauseParams function
  • lxd/db/network/forwards: Use query.Params in GetNetworkForwards
  • lxd/db/network/load/balancers: Use query.Params in GetNetworkLoadBalancers
  • lxd/db/cluster: Don't use prepared statements in RemoveNodeFromClusterGroup and AddNodeToClusterGroup
  • lxd/db/images: Updates getImagesByFingerprintPrefix to use QueryScan rather than prepare
  • lxd/db/transaction: Removes unused prepare function
  • lxd/resources: Fix VPD parser crash
  • lxd/db/cluster/snapshots: Updates ToInstance to be more flexible
  • lxd: snapshot.ToInstance usage
  • lxd/db/instances: Refactors InstanceList into several smaller functions
  • lxd/db/instances: Adds snapshot support to InstancesToInstanceArgs and associated functions
  • lxd: Use consistent log context name for err
  • lxd/instances/get: Log instance render errors in doInstancesGet
  • lxd: Don't pass duplicate profiles into instance.Load
  • lxd/instance/drivers/driver/common: Updates Snapshots to avoid using tx.GetInstanceSnapshotsWithName
  • lxd/instance/instance/utils: Removes inefficient unused LoadFromAllProjects function
  • lxd/network/driver/ovn: Update Leases to use InstanceList
  • lxd/network/driver/bridge: Updates Leases to use InstanceList
  • lxd/instance/instance/utils: Removes unused LoadByProject function
  • lxd/instance: Reworks autoCreateInstanceSnapshots and autoCreateInstanceSnapshotsTask to use InstancesToInstanceArgs
  • lxd/daemon: Updates usage of autoCreateInstanceSnapshotsTask
  • lxd/instance: Update pruneExpiredInstanceSnapshotsTask to use tx.InstancesToInstanceArgs
  • lxd/instance: Reworks pruneExpiredInstanceSnapshotsTask to use tx.InstancesToInstanceArgs
  • lxd/instance/instance/utils: Removes unused LoadAllInternal function
  • shared/api: Add Ready state
  • shared/api: Add function to get status code from status name
  • shared/instance: Allow volatile.last_state.ready key
  • lxd/db: Add function to remove volatile.last_state.ready key
  • lxd: Unset volatile.last_state.ready on daemon init
  • lxd/instance/drivers: Set volatile.last_state.ready on stop/shutdown
  • lxd/instance/drivers: Return api.Ready when ready
  • lxd/devlxd: Add instance state to /1.0
  • lxd/devlxd: Allow setting instance state in /1.0
  • test/deps: Add ready-state subcommand
  • test: Test instance Ready state using devlxd
  • lxd/profiles/utils: Updates getProfileInstancesInfo to use tx.InstancesToInstanceArgs
  • api: Add instance_ready_state
  • doc/devlxd: Add PATCH /1.0
  • doc/devlxd: Update GET /1.0
  • docs: Update storage create pool howto
  • lxd-agent: Handle PATCH /1.0 in devlxd
  • lxd/config: Fix expanded show of instance snapshot
  • doc: update version of lxd-sphinx-extensions
  • doc: mark up default values correctly for clustering.md
  • doc: mark up default values correctly for network_zones.md
  • doc: mark up default values correctly for instances.md
  • doc: mark up default values correctly for production-setup.md
  • doc: mark up default values correctly for projects.md
  • doc: mark up default values correctly for network_bridge.md
  • doc: mark up default values correctly for network_macvlan.md
  • doc: mark up default values correctly for network_ovn.md
  • doc: mark up default values correctly for network_physical.md
  • doc: mark up default values correctly for storage_btrfs.md
  • doc: mark up default values correctly for storage_ceph.md
  • doc: mark up default values correctly for storage_cephfs.md
  • doc: mark up default values correctly for storage_dir.md
  • doc: mark up default values correctly for storage_lvm.md
  • doc: mark up default values correctly for storage_zfs.md
  • doc: mark up default values correctly for security.md
  • doc: mark up default values correctly for server.md
  • lxd/network/forwards: Add support for config patching in networkForwardPut
  • lxd/network/load/balancers: Add support for config patching in networkLoadBalancerPut
  • lxd/fsmonitor/drivers/errors: Removes unused variable ErrNotImplemented
  • lxd/storage/drivers/driver/common: Adds default "Not supported" functions
  • lxd/storage/drivers/driver/cephfs/volumes: Fall back to using common ("not supported") RefreshVolume function
  • lxd/storage/drivers/errors: Removes little used ErrNotImplemented
  • lxd/storage/backend/mock: Removes use of drivers.ErrNotImplemented
  • lxd/storage/backend/lxd: Switch to ErrNotSupported in CreateInstanceFromCopy
  • lxd/networks: Restrict network config view to admin users
  • lxd/storage/pools: Restrict storage pool config view to admin users
  • lxd/storage/drivers/driver/btrfs: Scan pool device source for BTRFS filesystems before mounting
  • lxd/db/instances: Adds snapshot support to instanceProfilesFill
  • lxd/db/instances: Adds fillProfiles argument to InstancesToInstanceArgs
  • lxd/instance/instance/utils: Switch to InstancesToInstanceArgs in LoadByProjectAndName
  • lxd/instance/instance/utils: Switch to InstancesToInstanceArgs in CreateInternal
  • lxd/instance/drivers/driver/common: Don't reload snapshot profiles in Snapshots
  • lxd/profiles/util: InstancesToInstanceArgs usage in getProfileInstancesInfo
  • lxd/db/instances: InstancesToInstanceArgs usage in InstanceList
  • lxd/instance: InstancesToInstanceArgs usage in autoCreateInstanceSnapshotsTask
  • lxd/instance: InstancesToInstanceArgs in pruneExpiredInstanceSnapshotsTask
  • lxd/db/instances: Remove inefficient InstanceToArgs function
  • test: Move devlxd-client into its own directory
  • test: Remove source/baz file at end of filemanip test
  • lxd/daemon: Add explicit instancesLoaded bool to indicate if shared mounts can be cleaned up
  • lxd/storage/drivers/utils: Adds loopDeviceSetup and loopDeviceAutoDetach functions
  • lxd/storage/drivers/driver/btrfs: Switch to loopDeviceSetup for loop device management
  • lxd/storage/drivers/driver/lvm: Switch to loopDeviceSetup for loop device management
  • lxd/storage/drivers/utils/cgo: Removes unused file
  • lxd/storage/cgo: Removes unused file
  • doc: update project description
  • doc: update Project and community section
  • shared/util/linux: Fix typo in comment of ExitStatus
  • shared/util/linux: Adds detection of RunError to ExitStatus
  • shared/validate/validate: Adds IsRequestURL function
  • test: Run proxy listener command before adding proxy device
  • test: Sleep longer when starting up proxy listener process after restart
  • client/util: Set transport.DialTLSContext in tlsHTTPClient
  • test: Add retries to udhcpc6 calls
  • test: Add retries to udhcpc calls
  • lxd/db/network/load/balancers: Fix regression in GetNetworkLoadBalancers
  • doc/reference: improve description of storage option
  • test: Keep retrying to signal to container to reboot in basic_usage
  • lxd/profiles/utils: Removes incorrect comment from doProfileUpdateInstance
  • lxd: Fixes API version for instances in project usedby.
  • lxd/db: Fix escaped slashes in storage volume URIs.
  • lxd/cluster/membership: Improve error in membershipCheckClusterStateForAccept
  • lxd/db/cluster: Improve URL generation.
  • client/lxd/cluster: No reason to use queryStruct in DeleteClusterMember
  • gomod: Update dependencies
  • workflows: Adds edge ppa's and removes make deps step.
  • lxd/storage/drivers/zfs: set atime=off and relatime=on
  • doc/reference: fix description of dir source param
  • lxd/cgroup/abstractions: Improve errors from GetIOStats
  • lxd/instance/instance/utils: Updates DeleteSnapshots to use more efficient Snapshots() function
  • lxd/instance/drivers: instance.DeleteSnapshots usage
  • shared/util: Adds context argument to RunCommandSplit, RunCommandInheritFds and RunCommandWithFds
  • shared/util: Adds RunCommandContext and deprecates RunCommand
  • lxd: RunCommand* context usage
  • shared/util: Unexports RunError fields and adds NewRunError function
  • shared/util: NewRunError usage
  • shared/util/linux: Use errors.As in ExitStatus
  • lxd/archive/archive: shared.NewRunError usage
  • lxd: RunError functions usage
  • cgo: ensure that lxd wrappers don't conflict with libc provided wrapper
  • doc/storage/zfs: include link to related YouTube video
  • doc/authentication: clarify what to specify for admin password
  • lxc/remote: the admin password prompt also accepts a token
  • i18n: Update translation templates
  • lxd/instance/drivers: Adds instance type to instance-created lifecycle event context.
  • doc/storage/zfs: {remove_snapshots,use_refquota,reserve_space} are bools
  • lxd/storage/drivers: use SI units
  • lxd/main_init_interactive: use SI units
  • lxd/storage/drivers/utils: Support CentOS 7 in loopDeviceSetup
  • test: Increase storage pool delete timeout to 20s
  • lxd/storage/storage: Adds UsedBy function
  • lxd: Use storagePools.UsedBy function
  • doc/migration: clean up "live migration" documentation
  • lxd/db/instances: Use stable sorting in GetInstanceSnapshotsWithName
  • lxd/instance/drivers: Use stable sorting
  • lxd/instances/get: Use stable sorting in doInstancesGet
  • lxd/resources/cpu: Use stable sorting in GetCPU
  • shared/api/instance: Adds GetParentAndSnapshotName function
  • shared/api/storage/pool/volume: Adds URL function to StorageVolume
  • lxd/storage/volumes: Fix volume get project resolution in storagePoolVolumeGet
  • lxd/project/project: Update StorageVolumeProjectFromRecord and StorageVolumeProject
  • lxd/db/storage/volumes: Rework GetStoragePoolVolumes to be more efficient
  • lxd/db/storage/volumes: Removes duplicate zero length check in GetStorageVolumeNodes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to use tx.GetStoragePoolVolumes
  • doc: use HTTPS for links to CRIU site and inotify man
  • lxd/storage/volumes: Update storage-pools/{name}/volumes/{type} handler to use storagePoolVolumesGet
  • lxd/storage/volumes: Remove unused storagePoolVolumesTypeGet
  • lxd/storage/volumes: Fix golint error in storagePoolVolumesTypePost
  • lxd/db/storage/volumes: Adds memberSpecific support to GetStoragePoolVolumes
  • lxd/storage/volumes: Adds target member support to storagePoolVolumesGet
  • lxd/db/images: Clarifies argument name in GetImagesFingerprints
  • lxd/db/images: Adds GetProjectsUsingImage function
  • lxd/storage/storage: Reworks UsedBy to use tx.GetStoragePoolVolumes
  • lxd/storage/backend/lxd: UsedBy usage in IsUsed
  • lxd/storage/pools: storagePools.UsedBy usage in storagePoolsGet
  • api: network_bgp_holdtime
  • doc: Add bgp.peers.NAME.holdtime
  • lxd/bgp: Add configurable hold time
  • lxd/network: Add configurable BGP hold time
  • lxd/storage/pools: storagePools.UsedBy usage in storagePoolGet
  • lxd/db/storage/pools: Removes unused GetStoragePoolUsedBy function
  • shared/api/storage/pool/volume: Adds target awareness to URL
  • lxd/storage/volumes/utils: Removes unused supportedVolumeTypesInstances var
  • lxd/bgp: Only set HoldTime if set by the user
  • lxd-user: Fix use with clusters
  • shared/instance: Removes InstanceGetParentAndSnapshotName
  • lxd: api.GetParentAndSnapshotName usage
  • lxc: api.GetParentAndSnapshotName
  • lxd/db/storage/volumes: Adds support for StorageVolumeFilter to GetStoragePoolVolumes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to use tx.GetStoragePoolVolumes filtering
  • lxd/db/storage/volumes: Updates GetStoragePoolVolumes to return []StorageVolume
  • lxd/storage/storage: Updates UsedBy to use updated GetStoragePoolVolumes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to use updated GetStoragePoolVolumes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to avoid unnecessary conversions
  • lxd/storage/volumes/utils: Updates storagePoolVolumeUsedByGet to add target param
  • lxd/db/storage/volumes: Adds GetStoragePoolVolume function
  • lxd/storage/volumes/utils: Updates storagePoolVolumeUsedByGet to accept a db.StorageVolume
  • lxd/storage/volumes: Updates storagePoolVolumeUsedByGet usage
  • lxd/storage/volumes: Fix image in use detection in storagePoolVolumeDelete
  • lxd/projects: Ensure default project has features.networks
  • api: Adds storage_volumes_all_projects extension
  • client: Adds all-projects functions for storage volumes
  • shared/api: Add Project field to StorageVolume
  • doc/rest-api: Refresh swagger YAML
  • lxc/storage/volume: Adds --all-projects flag to lxc storage volume list
  • lxd/instances/get: Replace mentions of cluster node with member
  • lxd/db/storage/volumes: Removes Project field from StorageVolume
  • shared/api/storage/pool/volume: Remove projectName from URL function
  • lxd: Unify all-projects handling
  • lxd/events: Improve error handling in eventsSocket
  • lxd/storage/storage: Update UsedBy with updated URL function usage
  • lxd/storage/volumes: Adds all-projects support to storagePoolVolumesGet
  • i18n: Update translation templates
  • lxd/db/storage/volumes: Updates GetStoragePoolVolumes to accept variadic filters
  • lxd/storage/storage: tx.GetStoragePoolVolumes usage
  • lxd/storage/volumes: tx.GetStoragePoolVolumes usage
  • lxd/network: Fix BGP without hold time
  • grafana: Only use instant queries on piechart graphs
  • lxd/instance/instance/utils: Updates MoveTemporaryName to generate missing volatile.uuid
  • lxd/instance/post: instance.MoveTemporaryName usage
  • lxd/db/cluster: Adds remote storage aware unique index to storage_volumes
  • lxd/network/driver/bridge: Include error from n.populateAutoConfig
  • lxd/network/openvswitch/ovn: Lower case DNS names
  • lxd/storage/pools: Don't use project param when deleting images before pool deletion
  • lxd/db/storage/volumes: Removes unused GetStoragePoolVolumesNames function
  • lxd/db/generate/db/method: Remove URI generation
  • go: Update go-dqlite
  • lxd/db/transaction: Move QueryScan to query package
  • lxd/db/storage/volumes: Update usages of QueryScan
  • lxd/db/generate/db/lex: Use QueryScan rowFunc in generated code
  • lxd/db/generate/db/method: Remove unnecessary stmt preparations
  • Update generated code
  • lxd/db/cluster/stmt: Remove prepare helper
  • metrics: new metric: lxd_memory_OOM_kills_total
  • Makefile: Moves shellcheck version call into static-analysis target.
  • doc/storage/ceph: remove YouTube link from content that is reused
  • lxd-generate: Allow GetOne filter to include a 'type' field.
  • doc: Split storage_configure into storage_configure_pool and storage_configure_volume
  • doc: Split storage_list into storage_view_pools and storage_view_volumes
  • doc: Split storage_resize into storage_resize_pool and storage_resize_volume
  • doc: Rename storage_move to storage_move_volume
  • doc: Rename storage_backup to storage_backup_volume
  • doc: Rename storage_add_volume to storage_create_volume
  • doc: Fix storage references
  • doc: Reworks storage sub menu
  • doc/migration: move current migration topic
  • api: metrics_memory_oom_total
  • doc: fix display of expandable sections
  • doc/migration: Add instructions for lxd-migrate
  • doc/migration: move the migration section
  • doc/migration: updates to the instance migration documentation
  • api: Adds storage_buckets extension
  • shared/api: Adds storage pool bucket API types
  • lxd/db/cluster: Adds storage buckets tables
  • lxd/db/cluster/projects: Adds "features.storage.buckets" to ProjectFeaturesDefaults
  • lxd/project/project: Adds StorageBucketProjectFromRecord and StorageBucketProject functions
  • lxd/project: Update cmdProjectList with features.storage.buckets support
  • lxd-user/lxd: Enable features.storage.buckets in projects
  • lxd/api/project: Add features.storage.buckets project setting
  • doc/projects: Adds features.storage.buckets setting
  • lxd/storage/drivers/driver/types: Adds Buckets field to Info
  • client/lxd/storage/buckets: Client functions for bucket management
  • lxc/storage/bucket: CLI commands for bucket management
  • shared/api/event/lifecycle: Add bucket constants
  • lxd/lifecycle/storage/bucket: Add lifecycle helper and types
  • lxd/storage/pool/interface: Add bucket management definitions
  • lxd/storage/drivers/bucket: Adds bucket type
  • lxd/storage/drivers/bucket: Add S3Credentials type
  • lxd/db/storage/buckets: Adds storage bucket management functions
  • lxd/storage/backend/mock: Add storage management functions
  • lxd/storage/backend/lxd: Add bucket management functions
  • lxd/storage/drivers: Adds bucket management functions
  • lxd/storage/buckets: Adds storage pool bucket management API endpoints
  • doc/rest-api: Refresh swagger YAML
  • gomod: Adds minio client and depenencies
  • lxd/storage/drivers/driver/cephobject: Adds cephobject storage pool driver type
  • lxd/storage/storage: Adds buckets to storage pool UsedBy output
  • i18n: Update translation templates
  • test: Document LXD_CEPH_CEPHFS option
  • test: Adds cephobject tests
  • doc: Adds cephobject documentation
  • lxd/network/driver_ovn: Fixes impossibility to set MTU for a pair of veths connecting uplink and ovs-system bridges
  • lxd/storage/drivers/driver/cephobject: Fix detection of missing lxd-admin radosgw user
  • lxd: Replace SelectObjects callback with QueryScan rowFunc
  • lxd/db/generate/db/method: Remove old destFunc
  • lxd/db/cluster/stmt: Add StmtString and remove panics
  • lxd/db/generate/db/method: Handle Stmt helper errors
  • lxd/db/cluster/mapper: Update generated code
  • lxd/db/cluster/nodes/cluster/groups.mapper: Add NodeClusterGroup generation
  • lxd/db/cluster/update: Add ID to nodes_cluster_groups table
  • lxd/instances/post: Use lxd-generate for cluster_groups
  • lxd/db/storage/volumes: Rename QueryScan to Scan
  • lxd/db/warnings: Remove unnecessary statement prepares
  • lxd/node/config: Removes most inefficient "convenience" functions
  • lxd/daemon: Don't load the local daemon config repeatedly in init
  • lxd/endpoints/endpoints: Use single-line contextual logging for socket bind & close
  • lxd/firewall/drivers/drivers/xtables: Use xtables locking in NetworkApplyACLRules
  • lxd/firewall/drivers/drivers/xtables: Simplify args list in iptablesAdd
  • lxd/firewall/drivers/drivers/xtables: Use long form xtables arguments in iptablesClear
  • lxd/storage/drivers/driver/cephobject/buckets: Create admin radosgw-admin user if missing in CreateBucket
  • i18n: Update translations from weblate
  • gomod: Update dependencies
  • lxd/db/generate/db/method: Fix lxd-generate typo

試用環境

この新しい LXD リリースは私たちの デモサービス で利用できます。

ダウンロード

このリリースの tarball は ダウンロードページ から取得できます。

ビルド済みバイナリーは次のようにして使えます:

  • Linux: snap install lxd
  • MacOS: brew install lxc
  • Windows: choco install lxc

LXD 5.0.1 リリースのお知らせ

19th of August 2022

はじめに

LXD チームが LXD 5.0.1 のリリースをお知らせします!

このリリースは LXD 5.0 の最初のバグ修正リリースです。このリリースは 2027 年 6 月までサポートされます。

アップグレードの注意

vsock API の変更(LXD VM)

両方向の vsock インターフェース(下記参照)の作業の一環で、LXD VM 内部のホストからゲストへの通信での TLS の扱いがかなり壊れていることに気づきました。

サーバーとクライアントの認証はすべて正しく行われていたので、セキュリティの観点では懸念することはありません。特に理由もなく TLS over TLS を行っていたので、意味もなくオーバーヘッドが 2 倍になり、実際に REST/HTTP レイヤーがクライアントについての詳細にアクセスすることを妨げていました。

このリリースでは LXD と VM エージェントの両方をアップデートし、TLS の単一のレイヤーでのみ処理されるようにして、この問題を修正しました。残念ながら、これは後方互換性のある方法で処理できるものではありません…

この結果、LXD 5.0.1 へのアップグレードを行うと、すべての実行中の仮想マシンとのエージェントの通信が切断されます。これは lxc execlxc file に影響します。lxc restart で影響を受けた VM を再起動することで、更新されたバージョンのエージェントで VM を再起動され、この問題が修正されます。

回避方法: ゲスト内部で更新されたバージョンに手動で置き換えることができます。積極的に行う(LXDが更新されるまで通信が途絶えます)か、SSH もしくはテキストコンソールで事後に行うかのどちらかです。systemd を使ったシステムであると想定した場合の手順は次の通りです:

  • systemctl stop lxd-agent
  • /run/lxd_agent/lxd-agent を新しいバージョンのバイナリに置き換えます
  • mount -o bind /bin/true /lib/systemd/lxd-agent-setup
  • systemctl start lxd-agent

バグ修正と改良

このリリースには、開発ブランチで行われた数ヶ月分のバグ修正とマイナーな改良が含まれています。

主な変更点は次の通りです:

  • ストレージボリュームの状態に total フィールドの追加
  • file API に HEAD メソッドのサポートを追加
  • resource API で PCI VPD データの公開
  • 新たに raw.qemu.conf 設定キーを仮想マシンに追加
  • cephfs ストレージドライバーで fscache のサポート
  • 仮想マシン用の双方向の通信路
  • プロジェクトをまたがったストレージボリュームデータの取得のサポート

コミットの全リストは次の通りです(翻訳なし):

すべてのChangeLogを見る
  • doc: move networking content to new files
  • doc: add new files to the networking docs
  • doc: move network-peers
  • doc: move network-acls
  • doc: move network-forwards
  • doc: move network-zones
  • doc: clean up headings for networking section
  • doc: update and add content for networking
  • doc: add links to network_ovn_peers
  • doc: add links to network_zones
  • doc: add links to network_forwards
  • doc: add links to network_acls
  • doc: general cleanup
  • doc: general cleanup network_acls
  • doc: general cleanup network_forwards
  • doc: general cleanup network_zones
  • lxd/storage/btrfs: Fix usage nested
  • lxd/instance/qemu: Fix bad topoext logic
  • lxc: Fix typo in notes
  • lxd/networks: Removes references to nodes in user facing errors
  • lxd/networks: Clone per-node config on networksPostCluster
  • lxd/storage/pools: Removes references to nodes in user facing errors
  • lxd/db/storage/pools: Renames StoragePoolNodeConfigKeys to NodeSpecificStorageConfig
  • lxd: db.NodeSpecificStorageConfig usage
  • lxd/cluster/config: Remove legacy server level storage settings defaults
  • lxd/cluster/config: Remove deprecatedStorage
  • lxd/storage/utils: Removes ValidName
  • lxd/storage/pool/interface: Adds Type interface
  • lxd/storage/pool/load: Adds LoadByType function
  • lxd/storage/backend/mock: Adds ValidateName function
  • lxd/storage/backend/lxd: Adds ValidateName function
  • lxd/storage/utils: Improve validation of rsync.bwlimit
  • lxd/storage/backend/lxd: Validate earlier in Create
  • lxd/storage/pools/utils: Updates storagePoolValidate to use poolType.ValidateName
  • lxd/storage/volumes/snapshot: Updates storagePoolVolumeSnapshotsTypePost to use pool.ValidateName
  • lxd/storage/utils: Unexport some variables now unused outside of storage package
  • lxd/storage/pool/interface: Adds Validate signature
  • lxd/storage/backend/lxd: Adds Validate function
  • lxd/storage/backend/mock: Adds Validate function
  • lxd/storage/backend/lxd: Call b.ValidateName in Create
  • lxd/storage: size is not a common pool option
  • lxd/storage/drivers/driver/common: Removes pool name from validatePool errors
  • lxd/storage/pools: Don't call storagePoolValidate from storagePoolsPostCluster
  • lxd/storage/pools: Call pool.Validate directly in doStoragePoolUpdate
  • lxd/storage/pools/utils: Call poolType.Validate in storagePoolValidate
  • lxd/storage/pools/config: Remove legacy storagePoolConfigKeys and storagePoolValidateConfig
  • lxd/storage/pools: Clone per-node config in storagePoolsPostCluster
  • lxd/storage/pools/utils: Whitespace in storagePoolDBCreate
  • lxd/storage/pools/utils: Expand arg types to storagePoolDBCreate
  • lxd/storage/pools/utils: Use revert in storagePoolCreateGlobal
  • lxd/storage/pools/config: Remove file
  • lxd/storage/pools/utils: Removes call to storagePoolFillDefault in storagePoolDBCreate
  • lxd/storage/pools/utils: Rely on pool.Create to fill default pool config in storagePoolCreateLocal
  • lxd/storage/drivers/utils: Adds loopFileSizeDefault function
  • lxd/storage/drivers: Generate per-node loop file size from loopFileSizeDefault in Create
  • lxd/storage/drivers/driver/lvm/utils: Adds lvmThinpoolDefaultName constant
  • lxd/storage/drivers/driver/lvm: Populate lvm.thinpool_name if not specified in Create
  • lxd/storage/utils: Removes unused functions and variables
  • lxd/storage/pool/load: Removes unused CreatePool function
  • lxd: Fix typo in notes
  • doc/rest-api: Refresh swagger YAML
  • shared: Adds method to remove elements from a slice.
  • lxc: Adds cluster role / commands.
  • i18n: Update translation templates.
  • test: Removes cluster edit where possible.
  • lxd/db/generate/db/method/v2: Add V2 method generation
  • lxd/db/certificate/projects.mapper: Update generated code
  • lxd/db/certificates: Remove Projects from db Certificate struct
  • lxd/db/certificates.mapper: Update generated code
  • lxd/db: Use ClusterTx with ToAPI for filling reference fields
  • lxd/db/certificates: Pass projects into create/update helpers
  • lxd/db/certificates: Transition to using ClusterTx
  • lxd/events: Use ClusterTx instead of opening new transactions
  • lxd/certificates: Open fewer txes, use API structs for all fields
  • lxd/api/cluster: Update cert projects manually
  • lxd/instance/drivers/qemu: Add serial key to device
  • shared: Add SplitNTrimSpace
  • lxc: Move to shared.SplitNTrimSpace
  • lxd: Move to shared.SplitNTrimSpace
  • lxd/util: Remove SplitNTrimSpace
  • lxd/cluster: Don't overwrite original volatile.evacuate.origin
  • lxd/daemon/images: Renames imageDownloadLock to imageOperationLock
  • lxd/images: Use SmartError when handling error from d.cluster.GetImage
  • lxd/images: Use imageID rather than imageId
  • lxd/images: Add locking on imageDelete
  • shared/api: Add Total field
  • lxd: Add total field to /1.0/storage-pools/{name}/volumes/{type}/{volume}/state API
  • api: storage_volume_state_total
  • lxd/db/generate: Replace ErrNoSuchObject with api.StatusErrorf(http.StatusNotFound)
  • lxd/db: Applies changes to db generator
  • doc/rest-api: Refresh swagger YAML
  • lxd/util/net: Assign default port if no port given
  • lxd/instance/qemu: Allow using external firmware or kernel
  • lxd/instance/drivers: Fix context logging
  • lxd/storage/utils: Use volName in context logging for consistency
  • lxd/storage/volumes/snapshots: Use volName in context logging for consistency
  • lxd/storage/drivers/driver/ceph/utils: Use volName in context logging for consistency
  • lxd/storage/drivers/driver/lvm/volumes: Remove non-thinpool volume activation/deactivation workarounds
  • lxd/storage/drivers/driver/lvm/utils: Updates activateVolume and deactivateVolume to accept Volume type
  • lxd/storage/drivers/driver/lvm: activateVolume and deactivateVolume usage
  • lxd/storage/drivers/generic/vfs: Check for close errors
  • shared/instancewriter/instance/tar/writer: Check for close errors
  • doc: move Sphinx extensions to a separate repo
  • lxd/storage/drivers/volume: Check for unmount errors in MountTask
  • lxd/device/device/utils/disk: Use storageDrivers.TryUnmount without MNT_DETACH in DiskMountClear
  • doc: whitespace changes and reordering content
  • doc: add headings
  • lxd/storage/drivers/utils: Adds debug logging to TryUnmount
  • lxd/instance/qemu: Tweak warning on -bios/-kernel
  • lxd/storage/drivers/driver/lvm/utils: Don't deactivate non-thinpool snapshot volume if parent mounted
  • test: Removes old storage pool driver exclusions
  • lxd/storage/drivers/generic/vfs: Detect close errors in genericVFSMigrateVolume
  • lxd/instance: Fix RuntimeLiblxcVersionAtLeast to handle ~
  • shared: allow EOPNOTSUPP from llistxattr()
  • doc: update BGP server documentation
  • lxd/instance/drivers/driver/qemu: Correctly detect dish source path filesystem
  • lxd/instance/drivers/driver/qemu: Improve disk error context and comments
  • lxd/instance/drivers/driver/qemu: Fixes incorrect FD garbage collection in addDriveConfig
  • lxd/instance/drivers/driver/qemu: Remove unnecessary duplicated stat of disk source
  • lxd/instance/drivers/driver/qemu: Add input checks to addDriveConfig
  • lxd/device/disk: Pass cloud-init:config drive to QEMU using file descriptor
  • lxd/device/disk: Return explicit nil on error in localSourceOpen
  • test/suites/migration: Check optimized refresh
  • lxd/storage/drivers/btrfs: Change how subvolumes are received
  • lxd/storage/drivers/btrfs: Move subvolumes after reception
  • lxd/storage/drivers/btrfs: Update CreateVolumeFromBackup
  • lxd/instance/operationlock: Add update
  • lxd/instance/lxc: Use locking in Update
  • lxd/instance/qemu: Use locking in Update
  • lxd/instance/qemu: Replace container with instance
  • lxd/instance: Reword operationlock errors
  • lxd/migration/wsproto: Check websocket argument
  • lxd/storage/backend: Fix VolumeDBDelete revert
  • lxd/cluster: fix typo in comment
  • test/includes: remove unnessary subshells
  • lxd/api/cluster: Remove duplicated not found error handling
  • lxd/api: Update not found error matching
  • lxd/db: Replaces use of ErrNoSuchObject with api.StatusErrorf(http.StatusNotFound)
  • lxd/db/errors: Removes ErrNoSuchObject constant
  • lxd/db: Don't use "node" in user facing errors
  • lxd/db/network/zones: Fix query case in GetNetworkZone
  • lxd/operations: Replace use of db.ErrNoSuchObject with api.StatusErrorf(http.StatusNotFound)
  • lxd/response/smart: Remove db.ErrNoSuchObject use
  • lxd/storage/drivers/driver/ceph: Replaces use of db.ErrNoSuchObject with api.StatusErrorf(http.StatusNotFound)
  • lxd/storage/drivers/lvm: Replaces use of errLVMNotFound with api.StatusErrorf(http.StatusNotFound)
  • lxd/backup/backup/config: Default to container instance type if not specified in backup config
  • test: Update backup test error response checks
  • lxd/storage/drivers/zfs: Close stderr after copy
  • doc: order tables alphabetically
  • doc: add IDs for easier linking
  • doc: move content to different files and include
  • doc/network/bridge: move IPv6 prefix section
  • doc/network/bridge: make config table for network_bridge consistent
  • doc/network/ovn: make config table for network_ovn consistent
  • doc/network/macvlan: make config table for network_macvlan consistent
  • doc/network/physical: make config table for network_physical consistent
  • doc/network/sriov: make config table for network_sriov consistent
  • doc: add a reusable note about IP address format
  • doc/network/bridge: add name space and format information for table
  • doc/network/physical: add name space and format information for table
  • doc/network/ovn: add name space and format information for table
  • doc/network/macvlan: add name space and format information for table
  • doc/network/sriov: add name space and format information for table
  • doc/network/physical: add supported features for network_physical
  • doc/network/ovn: add supported features for network_ovn and hide ToC
  • doc/network/bridge: add supported features for network_bridge and hide ToC
  • doc/network/bridge: content updates network_bridge
  • doc/network/ovn: content updates network_ovn
  • doc/network/physical: content updates network_physical
  • doc/network/sriov: content updates network_sriov
  • doc/network/macvlan: content updates network_macvlan
  • doc/network/external: content updates network_external
  • global: Update doc links to /latest
  • README: Use links to public doc pages
  • CONTRIBUTING: Use links to public doc pages
  • lxd/storage/drivers/generic/vfs: Updates genericVFSCopyVolume to not copy block volume files twice
  • lxd/storage/drivers/driver/dir/volumes: Use reverter in CreateVolumeSnapshot
  • lxd/storage/drivers/utils: copyDevice arg type expansion
  • lxd/storage/drivers/utils: Catch file close errors in copyDevice
  • lxd/fsmonitor: Hide permission errors
  • lxd/instance/lxc: Better handle missing apparmor
  • lxd/apparmor/dnsmasq: Support non-snap nesting
  • lxd/apparmor/dnsmasq: Properly handle logpath
  • lxd/instance/qemu: Avoid conflicting vsock IDs
  • lxd/storage/drivers/driver/dir/volumes: Updates CreateVolumeSnapshot to copy block volumes using io.Copy
  • lxd/storage/backend/lxd: Create instance snapshot symlink in CreateInstanceFromCopy
  • api: instance_file_head
  • lxd/daemon: Add support for HEAD
  • lxd/instance_file: Implement HEAD
  • doc/rest-api: Refresh swagger YAML
  • lxd/storage/drivers/utils: Update copyDevice to use low priority dd with 16M byte size and direct i/o
  • lxd: No need to import deprecated syscall
  • lxd/storage/utils: Run qemu-img dd with low priority and 16M buffer
  • lxd/instance/drivers/driver/qemu: Run qemu-img with low priority in Export
  • lxd: Error quoting fixes
  • lxd: Use SmartError rather than NotFound
  • lxd/networks: Don't return os.ErrNotExist from doNetworkGet
  • test: drop dependency on uuidgen
  • lxd-agent: Ignore both trans= and msize= when on virtiofs
  • lxd/instance/qemu: Set msize on 9p
  • lxd/main_forkfile: Update comment
  • shared/idmap: Expose IdmapSet on all platforms
  • shared/subprocess: Add SetUserns
  • lxd/device/disk: Port to SetUserns
  • lxd: Remove forkuserns
  • global: Remove legacy build tags
  • lxd/instance_exec: Improve error on openpty
  • lxd/util: Extend tests for CanonicalNetworkAddress
  • lxd/devlxd: Don't expand format strings
  • tests: Test for format string in devlxd
  • lxd/instance: Prevent deleting volatile keys
  • lxd/instance: Update tests
  • lxd/instance: Don't allow root pool changes
  • tests: Test root disk device pool override
  • tests: Fix typo in storage_profiles test
  • doc: make it explicit that automake is needed to build LXD
  • doc: LXD requires Golan 1.18 now
  • lxd/main_init_interactive: Mention port
  • lxd/db/generate/db/method/v2: Create methods for reference tables
  • lxd/db/projects: Use v2 generator, remove UsedBy/Config fields
  • lxd/db/projects.mapper: Update generated code
  • lxd/db/projects: Populate config in ToAPI
  • lxd/db/projects: Use GetProjectConfig
  • lxd/db/projects: Removed UsedBy handling from db package
  • lxd/storage/drivers/zfs: Check if raw flag can be used
  • lxd/storage/drivers/zfs: Use -w in zfs send if possible
  • shared/subprocess: Fix comment
  • shared/api: Update to new godoc comment
  • client: Update to new godoc syntax
  • lxd/api/project: Add projectUsedBy
  • shared/api/project: Add URL method
  • lxd/storage/volumes/utils: Use api.Project for InstanceList
  • lxd/api/project: Use api.Project over db.Project
  • lxd: manually fetch project Config or use api struct
  • lxd/project/permissions/test: Fix tests
  • lxd/api/project: Return immediately if project is used
  • shared/cert: Update test certs to EC
  • Revert "Skip clustering-related unit tests, see issue #6122"
  • lxd: Remove old clustering tests
  • lxd/cluster/connect: Modify ConnectIfInstanceIsRemote to return a client configured with project
  • lxd/instance/console: Use api.NewURL in instanceConsolePost
  • lxd/instance/exec: Use api.NewURL in instanceExecPost
  • lxd: No need to use UseProject() with client from ConnectIfInstanceIsRemote
  • lxd/migrate: Adds migrationControlResponse type
  • lxd/migrate: Update controlChannel to return migrationControlResponse
  • lxd: golint fixes
  • lxd/migrate/instance: migrationControlResponse usage
  • lxd/migrate/storage/volumes: migrationControlResponse usage
  • lxd/device/device/utils/disk: Look for QEMU helpers in /usr/libexec/
  • lxd: Switch to using api.StatusErrorCheck where appropriate
  • lxd/db/generate: Update to use api.StatusErrorCheck
  • lxd/db: Regenerates DB functions
  • lxd/storage/drivers/zfs: send -w is possible since 0.8.0
  • lxd/state: Make InstanceTypes store errors
  • lxd/instance/drivers: Replace SupportedInstanceTypes with DriverStatuses
  • lxd: DriverStatuses usage
  • lxd/instance: Report driver errors
  • lxd/instance/qemu: Improve errors in Info
  • lxd-agent: Fix trans= handling
  • lxd/instance/drivers/driver/qemu: Update Export to use qemu-img convert in direct I/O mode
  • lxd/storage/utils: Updates ImageUnpack to use qemu-img convert in direct I/O mode
  • lxd/storage/drivers/utils: Update copyDevice to open files in read only mode
  • lxd/storage/drivers/driver/dir/volumes: Reduce var scope in CreateVolumeSnapshot
  • lxd/storage/drivers/driver/dir/volumes: Use dd to restore block volumes in RestoreVolume
  • lxd/instance: Enforce a 64 chars device name limit
  • doc/instances: Mention 64 chars limit on device names
  • lxd/device/disk: Drop 27 chars limit
  • lxd/storage/utils: Disable format detection in qemu-img info in ImageUnpack
  • lxd/instance/qemu: Use a hash for long disk names
  • lxd/instance: Fix Update calls for ephemeral instances
  • tests: Add restart test for ephemeral instances
  • test: simplify handling of set -x
  • lxd/db/generate: Don't list bash completion
  • lxd/storage: Forward instance volume state request
  • client: Add GetMetrics
  • lxd/device/proxy: Fix comment typo
  • doc: Remove user-facing mentions of cluster node
  • lxd: Replace local node mentions with local member
  • lxd/api/cluster: Request that projects with restricted.networks be created first in clusterInitMember
  • lxd/init: Re-arrange initDataNodeApply order
  • lxd/init: Error quoting in initDataNodeApply
  • lxd/init: Create relevant networks before and after projects in initDataNodeApply
  • test: Check that default project networks are created before projects during cluster member join
  • doc/reference/network/bridge: Clarify ipv{n}.nat default value added when creating networks
  • lxd/instance/drivers/driver/qemu: Catch stateful resume errors in Snapshot
  • test: fix copy-n-paste error
  • lxd/instance/drivers/driver/qemu: Pass nvram file by FD and make writable by QEMU process
  • lxd/console: Move PTS logic to LXC driver
  • lxd/instance/qemu: Switch to socket for console
  • lxd/apparmor: Treat ramfs the same as tmpfs
  • lxd/network/driver/sriov: Mark network as available on successful start
  • lxd/storage/drivers/zfs: Fix optimized refresh in migration
  • lxd/storage/drivers/zfs: Delete volume before copying
  • test/suites/migration: Run optimized refresh test
  • lxd-agent: Enable gorilla UseEncodedPath
  • lxd-agent: Unescape URL path variables
  • lxd: Enable gorilla UseEncodedPath
  • lxd: Unescape path URL variables
  • lxd/instance/drivers/driver/qemu: Centralise logic for UEFI architecture detection
  • lxd/instance/drivers/driver/qemu: Only use NVRAM firmware template on UEFI architectures
  • lxd/instance/drivers/driver/qemu/templates: Removes duplicated arch check in qemuDriveFirmware
  • lxd/network/zone/zone: Improve validation of network zone name
  • test: Improve network zone tests
  • test/suites/migration: Add more refresh tests
  • shared/api: Add Profiles field to ImageExportPost
  • client: Support for profiles in image copying
  • doc/rest-api: Refresh swagger YAML
  • gateway: Separate, smaller timeout for client request
  • lxd/instance/drivers: Ensure that devices are added and removed in the correct order
  • lxd/storage/drivers/volume: Still attempt to unmount on task error in MountTask
  • lxd/storage/drivers: Be explicit with logic brackets
  • shared/util/linux: report "Detected poll(POLLNVAL) event" at debug level
  • shared/util/linux: fix typos in comments
  • shared/util/linux: drop trailing "." in logs
  • lxd/internal: Coding style
  • lxd/db/query: Coding style
  • lxd/main_interactive: Fix bad servername
  • lxc/copy: Add description of modes
  • lxc/move: Add description of modes
  • i18n: Update translation templates
  • lxd/init: Eliiminate serverName
  • lxc/utils: Fix bad error string
  • i18n: Update translation templates
  • lxd/instance/qemu: Don't timeout during migration
  • test: restore "set -x" at the end of respawn_lxd()
  • lxd/db/generate/db/parse: Add ParsePackage
  • lxd/db/generate: Use sql.Tx param for generated functions
  • lxd/db/generate/db/stmt: Parse any imported package
  • test: avoid unbound var if cleanup() is called early on
  • lxd/storage/drivers/driver/lvm/volumes: Fix restoration of block volume snapshots
  • lxd/storage/drivers/driver/lvm/utils: Use 100%ORIGIN as size for non-thin snapshots
  • lxd/instance/drivers/driver/qemu: Removes unused return var from unmount
  • lxd/storage/drivers/driver/lvm/utils: Code style in activateVolume
  • lxd/storage/drivers/driver/lvm/volumes: Restrict var scope in volDevPath
  • lxd/storage/drivers/generic/vfs: Catch unmount errors in genericVFSBackupUnpack
  • lxd/sys: Fix vsockID detection
  • test: Don't leave files behind
  • lxd/storage: Allow parallel writes in qemu-img
  • lxd/storage/drivers: Extend CephMonitors
  • lxd/storage/cephfs: Simplify use of CephMonitors
  • lxd/device/disk: Simplify cephfs handling
  • lxd/db: Specify cluster package in generator comments
  • lxd/db/projects.mapper: Remove Certificates/Projects from db package
  • lxd/db/cluster/projects: Add cluster package db entities
  • lxd/db/cluster/projects.mapper: Generate cluster package methods/stmts
  • lxd/db/db/unified: Add unified DB struct
  • lxd/state/state: Use unified DB struct
  • lxd/db/db: Store cluster statements in global map
  • lxd/db/transaction: Add Tx method
  • lxd/db/db: Add ctx to cluster.Transaction
  • lxd: Use new DB type and Transaction method
  • lxd/tests: fix tests
  • lxd/db/generate/db/lex: Fix adjective pluralization
  • Cluster: use gateway context for client.Leader requests
  • lxd/db/query/transaction: Removes TransactionCtx and updates Transaction to take a context
  • Cluster: granular locking in Gateway.Handlerfuncs
  • lxd: query.Transaction usage
  • lxd/db/query: Gets both schema and data from sqlite.
  • lxd/db/query: Updates tests for refactored dump functions.
  • lxd: Updates SQLGet handler for refactored SQL dump.
  • test/suites/sql: Removes test for schema table data when getting schema only.
  • test: rename unused var to "_"
  • lxd/db/query: Return the table schema sql verbatim from sqlite_master.
  • lxd/db/query: Dumps all entities in sqlite_master table.
  • lxd/db/query: Updates tests to remove quotes.
  • lxd/db/query: Adds index to test schema and dump output.
  • lxd/sql: Do not format output of .dump and .schema.
  • test/sql: Adds some checks to ensure other db schema entities are captured.
  • lxc: Replace 20.04/Focal Fossa by 22.04/Jammy Jellyfish
  • doc: Replace 20.04/Focal Fossa by 22.04/Jammy Jellyfish
  • shared/api: Replace 20.04/Focal Fossa by 22.04/Jammy Jellyfish
  • lxd/db: Replace 20.04/Focal Fossa by 22.04/Jammy Jellyfish
  • doc/rest-api: Refresh swagger YAML
  • i18n: Update translation templates
  • lxd: Moves swagger response definitions to response package.
  • test/suites/static_analysis: Modifies deadcode exception to new dir.
  • lxd/seccomp/seccomp: Fix comment on HandleSchedSetschedulerSyscall
  • lxd/cgroup/abstraction: Adds GetEffectiveMemoryLimit function
  • doc: move content and add headings
  • lxd/db/generate/file/write: Support adding build comments
  • lxd/db: Specify build comments in generator comments
  • lxd/db/generate/file/write: Add interface flag
  • lxd/db/warnings: Add interface flag to generator comments
  • shared/cert: Adds method for returning the public key as an x509 cert.
  • lxd/cgroup/file: Fix incorrect path matching for /init.scope in NewFileReadWriter
  • lxd/instance/drivers/driver/lxc: cg.GetEffectiveMemoryLimit usage in Metrics
  • test: Fix start_external_auth_daemon to work with git 2.34.1
  • lxd/db/generate/db: Returns a status error on create if entry already exists.
  • doc: whitespace changes
  • lxd/db/cluster: Regenerates schema.
  • doc: update documentation for integrating with systemd-resolved
  • lxd/db/generate: Returns status error if delete operation affects zero rows.
  • lxd/db/cluster: Regenerates database files.
  • lxd/device/disk: Handle long paths in virtiofsd
  • gomod: Update github.com/canonical/go-dqlite to v1.11.1
  • lxd/resources: Handle nested devices
  • lxd/instance/drivers/driver/lxc: Update deviceRemove to accept a device.Device
  • lxd/instance/drivers/driver/qemu: Update deviceRemove to accept a device.Device
  • client: Move image profile override to ImageCopyArgs
  • doc: check for inclusive language
  • github: Re-organize workflows
  • github: Add DCO check
  • github: Split static builds from tests
  • github: Add branch target test
  • github: Run commit tests on target
  • github: Fix commit checks
  • doc: add a JSON file that defines the doc versions
  • doc: add a version switcher to the docs
  • lxc/file: Fix edit in snap environment
  • lxd/storage/drivers/driver/lvm/utils: Don't try and deactive snapshot non-thin volume if parent volume in use
  • lxd/instance/drivers/driver/lxc: Removes unmounted return var from unmount
  • lxd/storage/pool/interface: Remove unmounted indicator from UnmountInstance and UnmountInstanceSnasphot
  • lxd/storage/pool/backend/mock: Remove unmounted indicator from UnmountInstance and UnmountInstanceSnasphot
  • lxd/storage/pool/backend/lxd: Remove unmounted indicator from UnmountInstance and UnmountInstanceSnasphot
  • lxd/instance/drivers/driver/lxc: pool.UnmountInstance and pool.UnmountInstanceSnapshot usage
  • lxd/instance/drivers/driver/qemu: pool.UnmountInstance usage
  • lxd/device/disk: Updates applyQuota with MountInstance usage
  • lxd/storage/utils: Updates InstanceUnmount to not return unmounted indicator
  • lxd/storage/drivers/generic/vfs: Comment typo
  • shared/api: nowadays various types of certs are accepted
  • doc/rest-api: Refresh swagger YAML
  • gomod: Update dependencies
  • shared/api: Add Mode to ClusterMemberStatePost
  • doc/rest-api: Refresh swagger YAML
  • lxc/storage: Show volume total size
  • i18n: Update translation template
  • lxd/storage/drivers/btrfs: Delete volume after receiving new one
  • lxd/storage/drivers/btrfs: Check length of snapshots slice
  • test: Extend refresh migration tests
  • shared/cancel: Renames Canceler to HTTPRequestCanceller.
  • doc: mention that ECDSA cert generation requires openssl 1.1.0+
  • lxd/storage/utils: Improve logging in ImageUnpack
  • lxd/storage/drivers/driver/common: Adds allowUnsafeResize argument to runFiller
  • lxd/storage/drivers/driver/btrfs/volumes: runFiller usage
  • lxd/storage/drivers/driver/ceph/volumes: d.runFiller usage
  • lxd/storage/drivers/driver/cephfs/volumes: d.runFiller usage
  • lxd/storage/drivers/driver/dir/volumes: d.runFiller usage
  • lxd/storage/drivers/driver/lvm/volumes: d.runFiller usage
  • lxd/storage/drivers/driver/zfs/volumes: d.runFiller usage
  • shared/cancel: Adds simple Canceller type wrapping a context.Context.
  • lxc/delete: Validate all instances exist
  • i18n: Update translation templates
  • lxd/storage/drivers/btrfs: Modify received UUID
  • lxd/storage/drivers/btrfs: Set Received UUID
  • test: Extend migration refresh test
  • client/util: Add timeouts to tlsHTTPClient
  • client/util: Add timeouts to unixHTTPClient
  • lxd/cluster/tls: Add timeouts to tlsTransport
  • lxd/main/shutdown: Increase default timeout in cmdShutdown
  • lxd/util/http: Adds timeouts in HTTPClient
  • lxd/vsock/vsock: Adds timeouts in HTTPClient
  • shared/cert: Adds timeouts in GetRemoteCertificate
  • lxd/certificates: Simplify non-admin check
  • lxd/certificates: Comment the logic a bit
  • lxd/certificates: Move duplicate cert detection
  • doc: Fix typos
  • server.crt referred to as lxd.crt in the prometheus config file
  • doc: headings and whitespace
  • doc: change to "Machine in the middle"
  • doc: add exceptions for inclusive language
  • doc: update doc for OVN peer routing relationships
  • doc: update firewall configuration documentation
  • doc: add a section about LXD and Docker
  • shared/network: Always return 0 on error
  • lxd/utils: Improve errors in instancesExist
  • lxd/device/disk: Improve error in validateConfig
  • lxd/utils: Check snapshots only once in instancesExist
  • i18n: Update translation templates
  • doc: Fix typo
  • lxd: Prevent use of instance/snapshot name in instance specific routes
  • doc: document how to handle SAN vs target name mismatch in Prometheus sample
  • lxc/list: Don't skip extra info when name filtering
  • doc: rework doc for setting up OVN
  • lxd/certificates: Fix token request validation
  • doc: add a Discourse link about simple streams
  • lxc/config_trust: revoke-token requires a name, not a token
  • i18n: Update translation templates
  • lxd/project: Fix bad error on invalid instance type
  • lxc/config_trust: update help when client should be singular
  • lxc/config_trust: clarify help for join token creation
  • i18n: Update translation templates
  • lxd/daemon: Fix LXD crash is failing to start due to already running LXD process
  • lxd/request: Export CtxKey type and use for all keys.
  • lxd/storage/drivers/driver/zfs/volumes: Simplifies UnmountVolume
  • lxd/storage/drivers/driver/lvm/volumes: Simplifies UnmountVolume
  • lxd/storage/drivers/driver/ceph/volumes: Simplifies UnmountVolume
  • lxd/storage/drivers/volumes: v.driver.MountVolumeSnapshot usage in MountTask
  • lxd/storage/drivers/interface: Removes ourMount indicator from MountVolumeSnapshot
  • lxd/storage/backend/lxd: b.driver.MountVolumeSnapshot usage
  • lxd/storage/drivers/driver/mock: Updates MountVolumeSnapshot
  • lxd/storage/driver/driver/btrfs/volumes: Adds ref counting to MountVolumeSnapshot
  • lxd/storage/drivers/driver/ceph/volumes: Adds ref counting to MountVolumeSnapshot
  • lxd/storage/drivers/driver/cephfs/volumes: Adds ref counting to MountVolumeSnapshot
  • lxd/storage/drivers/driver/dir/volumes: Adds ref counting to MountVolumeSnapshot
  • lxd/storage/drivers/driver/lvm/volumes: Adds ref counting to MountVolumeSnapshot
  • lxd/storage/drivers/driver/zfs/volumes: Adds ref counting to MountVolumeSnapshot
  • lxc/config: no name shown when editing the instance's config
  • i18n: Update translation templates
  • api: resources_pci_vpd
  • shared/api: Add VPD to PCI in resources
  • lxd/resources: Fix comment
  • lxd/resources: Add PCI VPD support
  • doc/rest-api: Refresh swagger YAML
  • lxd/response: Adds nolint directive for deadcode.
  • lxd: Removes unused test function (deadcode).
  • lxd/network/openvswitch/ovn: Pass --wait=sb when using ovn-nbctl
  • lxd/network/driver/ovn: Fix cleanup of bridge mappings of physical OVS parent
  • lxd/storage/backend/lxd: Restore instance snapshot volume config and description
  • test: Adds tests for restoration of instance volume snapshot config
  • test: Run snapshot naming tests for all storage pool types
  • shared/instance: Adds volatile.apply_nvram config key
  • lxd/instance/drivers/driver/qemu: Regenerate nvram on next start when security.secureboot profile config is changed
  • doc/instances: Documents VM volatile.apply_nvram setting
  • test/static_analysis: Adds golangci-lint and runs deadcode.
  • lxd/resources: Handle negative CPU indexes
  • lxc/config_device: Add extra example to device add
  • i18n: Update translation templates
  • lxc/profile: Add cross-project copy
  • lxd: Increase client header timeout from 30s to 1 hour
  • client: Increase header timeout from 30s to 1 hour
  • shared/cert: Increase header timeout from 30s to 1 hour
  • lxc/config_device: Fix small typo
  • i18n: Update translation templates
  • tests: Test project profile copy
  • lxd/storage/utils: Updates DB functions to take Pool interface argument
  • lxd/storage/utils: Updates VolumeDBSnapshotsGet to align with other DB function arguments
  • lxd/migrate/storage/volumes: storagePools.VolumeDBSnapshotsGet usage
  • lxd/storage/backend/lxd: Update DB function usage to pass Pool
  • lxd/storage/backend/lxd: Updates UpdateInstanceBackupFile to use VolumeDBGet
  • lxd/storage/backend/lxd: Preallocate snapshot slice in UpdateInstanceBackupFile
  • lxd/db/storage/volumes: Populate content type and config in GetLocalStoragePoolVolumeSnapshotsWithType
  • lxd/storage/backend: Populate instance storage volume snapshots in UpdateInstanceBackupFile
  • lxd/backup: Switch to storagePools.VolumeDBGet in volumeBackupCreate
  • lxd/backup: Updates volumeBackupWriteIndex to use storagePools.VolumeDBSnapshotsGet
  • lxd/db/storage/volumes/snapshots: Removes unused function GetStorageVolumeSnapshotsNames
  • lxd/storage/backend/lxd: Updates BackupCustomVolume to use VolumeDBSnapshotsGet
  • lxd/images: Remove references to cluster node in user facing error messages
  • lxd/db/query/transaction: Start errors with capital letter
  • lxd/backup: Whitespace
  • lxd/backup: Populate volume config in backupWriteIndex
  • test: Add tests for checking that storage volume records are exported and restored from backups
  • lxd/storage/utils: Adds removeUnknownKeys argument to VolumeDBCreate
  • lxd/storage/backend/lxd: VolumeDBCreate updated usage
  • lxd/storage/backend/lxd: Updates CreateInstanceFromMigration to strip unknown storage volume config keys
  • lxd/storage/backend/lxd: Don't strip unknown storage volume keys for same pool copies in CreateCustomVolumeFromCopy
  • lxd/storage/backend/lxd: Updates CreateCustomVolumeFromMigration to strip unknown storage volume config keys
  • lxd/storage/backend/lxd: VolumeDBCreate updated usage when stripping unknown storage volume config keys
  • lxd/storage/backend/lxd: Updates CreateInstanceFromBackup to use storage volume config from backup
  • lxd/storage/backend: Copy snapshot config for same-pool copies in CreateCustomVolumeFromCopy
  • lxd/storage/backend/lxd: Use snapshot volume config when restoring custom volume in CreateCustomVolumeFromBackup
  • test: Add tests to check snapshot volume config is restored from backup
  • lxc/config_trust: Fix single argument trust remove
  • i18n: Update translation templates
  • lxd/filter: Support case insensitive and regular expresions
  • client: Add support for server-side filtering for CLI list commands
  • lxc/list: Use server-side filtering for list command
  • lxc/image: Use server-side filtering for list command
  • lxc/storage_volume: Use server-side filtering for list command
  • lxc/utils: Add structHasField and getServerSupportedFilters
  • i18n: Update translation templates
  • Revert "lxc/config: no name shown when editing the instance's config"
  • shared/api: Mark ExpandedConfig and ExpandedDevices fields as omitempty
  • lxc/config: Exclude expanded config from edit screen
  • lxd/filter/value: Fix parsing of yaml tags in ValueOf
  • i18n: Update translation templates
  • test: Check instance name in edit screen
  • lxd/resources: Handle unreadable VPD
  • lxd/device: Add rbd format constants
  • lxd-agent/state: Handle cgroup v2 cpu usage
  • lxd-agent/state: Use /proc/meminfo
  • lxd/device: Add DiskGetRBDFormat
  • lxd/device: Add DiskParseRBDFormat
  • lxd/storage/drivers/ceph: Add cluster and user name constants
  • lxd/storage/drivers/ceph: Use constants
  • lxd/device/disk: Use ceph constants
  • lxd/instance/drivers/qmp: Add AddSecret
  • lxd/storage/drivers/ceph: Add CephGetRBDImageName
  • lxd/instance/drivers/qemu: Use QEMU rbd driver if possible
  • lxd/device/disk: Use rbd syntax for rbd volumes
  • lxd/storage/drivers/ceph: Fix typo
  • lxd/instance/drivers/qemu: Handle rbd root devices
  • lxd/instance: Fix auto-snapshot on restricted projects
  • lxd/instance/qemu: Fix ceph username key
  • lxd/instance/qemu: Fix ceph volname in projects
  • test: Add additional tests for checking volume snapshot config is copied
  • lxd/storage/volume: Use source snapshot volume config when copying to new volume in cmdStorageVolumeCopy
  • lxd/storage/volume: Fix move of snapshot in cmdStorageVolumeCopy
  • test: Adds check that source snapshot config is used when copying snapshot to new volume
  • lxd/cluster/heartbeat: Improve heartbeat logging
  • doc: add link to YouTube video for network ACLs
  • lxd-agent/devlxd: Don't expand format strings
  • lxd/instance/drivers/qemu: Set conf option in rbd driver
  • lxd/storage/pool/interface: Add GenerateInstanceBackupConfig definition
  • lxd/storage/backend/mock: Adds GenerateInstanceBackupConfig definition
  • lxd/storage/backend/lxd: Splits UpdateInstanceBackupFile into GenerateInstanceBackupConfig
  • lxd/backup: Updates backupWriteIndex to use pool.GenerateInstanceBackupConfig
  • lxd/storage/pool/interface: Adds GenerateCustomVolumeBackupConfig definition
  • lxd/storage/backend/mock: Adds GenerateCustomVolumeBackupConfig function
  • lxd/storage/backend/lxd: Adds GenerateCustomVolumeBackupConfig function
  • lxd/backup: Updates volumeBackupWriteIndex to use pool.GenerateCustomVolumeBackupConfig
  • lxd/backup: Move config struct into own package to use in non-cgo applications
  • lxd/api/internal: backup.ConfigToInstanceDBArgs usage
  • lxd/api/internal/recover: backupConfig usage
  • lxd/api/internal/recover: backup.ConfigToInstanceDBArgs usage
  • lxd/backup/backup/info: config.Config usage
  • lxd/instance/instance/utils: backup.ConfigToInstanceDBArgs usage
  • lxd/migrate/storage/volumes: Switch to using pool.GenerateCustomVolumeBackupConfig
  • lxd/storage/backend/lxd: backupConfig.Config usage
  • lxd/storage/backend/mock: backupConfig.Config usage
  • lxd/storage/pool/interface: backupConfig.Config usage
  • lxd/storage/backend/lxd: Fix incorrect revert in ImportCustomVolume
  • lxd/instance/drivers/qemu: Fix ceph conf filename
  • lxd/storage/drivers: Handle seek errors
  • lxd/storage/backend/lxd: Handle error from vol.MountTask in detectUnknownCustomVolume
  • lxd/storage/backend/lxd: Handle srcVol.MountTask errors
  • lxd-generate: Explictly ignore rows.Close error in defer.
  • lxd/db: Regenerate database methods.
  • tests: Test stateless migration
  • client: Checks or explicitly ignores errors.
  • fuidshift: Checks or explicitly ignores errors.
  • lxd/db/generate/db/stmt: Use join tag value instead of hardcoded 'name'
  • lxc: Checks or explicitly ignores errors.
  • lxc-to-lxd: Checks or explicitly ignores errors.
  • lxd-agent: Checks or explicitly ignores errors.
  • lxd-benchmark: Checks or explicitly ignores errors.
  • lxd-migrate: Checks or explicitly ignores errors.
  • lxd-user: Checks or explicitly ignores errors.
  • shared: Checks or explicitly ignores errors.
  • test/macaroon-identity: Explicitly ignores errors.
  • lxd/apparmor: Checks or explicitly ignores errors.
  • lxd/archive: Checks or explicitly ignores errors.
  • lxd/backup: Checks or explicitly ignores errors.
  • lxd/bgp: Checks or explicitly ignores errors.
  • lxd/cluster: Checks or explicitly ignores errors.
  • lxd/config: Checks or explicitly ignores errors.
  • lxd/db: Checks or explicitly ignores errors.
  • lxd/device: Checks or explicitly ignores errors.
  • lxd/dns: Checks or explicitly ignores errors.
  • lxd/endpoints: Checks or explicitly ignores errors.
  • lxd/events: Checks or explicitly ignores errors.
  • lxd/firewall: Checks or explicitly ignores errors.
  • lxd/fsmonitor: Checks or explicitly ignores errors.
  • lxd/instance: Checks or explicitly ignores errors.
  • lxd/maas: Checks or explicitly ignores errors.
  • lxd/metrics: Checks or explicitly ignores errors.
  • lxd/migration: Checks or explicitly ignores errors.
  • lxd/network: Checks or explicitly ignores errors.
  • lxd/operations: Checks or explicitly ignores errors.
  • lxd/rbac: Checks or explicitly ignores errors.
  • lxd/resources: Checks or explicitly ignores errors.
  • lxd/response: Checks or explicitly ignores errors.
  • lxd/rsync: Checks or explicitly ignores errors.
  • lxd/storage: Checks or explicitly ignores errors.
  • lxd/sys: Checks or explicitly ignores errors.
  • lxd/task: Checks or explicitly ignores errors.
  • lxd/util: Checks or explicitly ignores errors.
  • lxd/seccomp: Checks or explicitly ignores errors.
  • lxd/ip: Checks or explicitly ignores errors.
  • lxd: Checks or explicitly ignores errors.
  • test: Adds errcheck linter and list of excludes.
  • i18n: Updates translations.
  • lxd/storage/backend/lxd: Fix argument logging name in MigrateCustomVolume and CreateCustomVolumeFromMigration
  • lxd/storage/backend/lxd: Fix refresh of non existent volume in CreateCustomVolumeFromMigration
  • test: Add checks for custom storage volume refresh
  • doc/storage: Add CEPHFS to table
  • docs: Typo in ovn docs
  • lxd: Add allowInconsistent to migration fields.
  • lxd: Default allowInconsistent to false for snapshots.
  • lxd: Pass allowInconsistent to migration source on instance post.
  • lxd/storage/drivers: Optionally ignore rsync error 24 for local copy.
  • lxd/storage/drivers: Updates calls to genericVFSCopy.
  • lxd/storage/drivers: Add allowInconsistent to CreateVolumeFromCopy on driver interface.
  • lxd/storage: Pass allowInconsistent into driver.CreateVolumeFromCopy.
  • lxd: Use allowInconsistent for pool and project migrations.
  • lxd/instances/post: Handle unknown errors in createFromMigration
  • lxd/migration: Updates proto buf version
  • lxd/migration/utils: Adds IndexHeaderVersion to migration header
  • lxd/migration/utils: Updates comments on constant to indicate index header may be sent first
  • lxd/migration/utils: Adds IndexHeaderVersion constant
  • test: Adds cross pool checking of storage volume snapshot config population
  • lxd/migration/migration/volumes: Adds IndexHeaderVersion to VolumeSourceArgs and VolumeTargetArgs
  • lxd/migration/migration/volumes: Adds InfoResponse struct
  • lxd/storage/backend/lxd: Updates CreateCustomVolumeFromCopy to use srcPool.GenerateCustomVolumeBackupConfig
  • lxd/storage/backend/lxd: Add support for migration index header and response in MigrateCustomVolume and CreateCustomVolumeFromCopy
  • lxd/migrate/storage/volumes: Add support for migration index frame for custom volume migration
  • lxd/storage/backend/lxd: Update RefreshCustomVolume to use srcPool.GenerateCustomVolumeBackupConfig
  • lxd/storage/utils: Removes unused syncSnapshotsVolumeGet function
  • test: Expand test_storage_local_volume_handling tests to check for custom volume refresh
  • test: Add checks for custom storage volume config copy in migration
  • lxd/storage/drivers: Adds allowInconsistent argument to RefreshVolume.
  • lxd/storage: Pass allowInconsistent flag into volume refresh call.
  • lxd/instance/qemu: Implement qemuBaseSections
  • lxd/instance/qemu: Replace qemuBase template with qemuBaseSections
  • lxd/bgp: Enable multihop
  • doc: move content to different files
  • doc: add a link to the YouTube video on BGP
  • lxd/apparmor: Add mknod cap to archive
  • lxd/instance/qemu: Fix some variable names to match code style
  • doc: remove duplicate entries
  • doc: spell out configuration option
  • doc: fix capitalization of Ceph, CephFS, Btrfs, LVM and ZFS
  • lxd/sys: Add ReleaseInfo
  • lxd/api: Switch to OS struct for release info
  • lxd/api: Reduce number of DB queries
  • lxd/sys: Move KernelVersion from state
  • lxd/sys: Add Uname
  • lxd/cluster/config: Split to separate package
  • lxd/state: Add global configuration
  • lxd/cluster/config: Update for golint
  • lxd: Update for config function names
  • lxd/daemon: Setup globalConfig
  • lxd/api_cluster: Reduce calls to State
  • lxd/daemon_config: Use GlobalConfig
  • lxd/api_1.0: Update daemon config
  • lxd/state: Add ServerName
  • lxd/daemon: Fill ServerName
  • lxd/api_1.0: Use state variables
  • lxd/api: Don't access DB on every request
  • lxd/storage_volumes_snapshot: Port to State config
  • lxd/instance_post: Port to State config
  • lxd/cluster: Port to State config
  • lxd/instances_post: Port to State config
  • lxd/images: Port to State config
  • lxd/cluster/config: Add MetricsAuthentication
  • lxd/api_metrics: Avoid needless DB calls
  • lxd/network: Disable IPv6 on bridges with no IPv6 address
  • lxd/db/snapshots: Add by-ID
  • lxd/db/snapshots: Add GetLocalExpiredInstanceSnapshots
  • tests: Don't route IPv6 on network without IPv6
  • lxd/instance/lxc: Reduce DB calls in Metrics
  • lxd/cluster/config: Update test for new package
  • lxd/api_cluster: Update serverName on bootstrap/join
  • lxd/state: Initialize GlobalConfig in testing struct
  • lxd/cluster: Update for State config
  • lxd/daemon: Use Mutex around globalConfig and serverName
  • lxd/api_cluster: Use Mutex around serverName
  • lxd/instance: Use GetLocalExpiredInstanceSnapshots
  • lxd/storage_volumes_snapshots: Don't trigger expiry task on load
  • lxd/db/storage_volumes_snapshots: Skip snapshots with NULL expiry
  • lxd/events/connections: Add EventListenerConnection interface
  • lxd/events: Implement websocketListenerConnection
  • lxd/events: Implement streamListenerConnection
  • lxd/events/common: Remove unused WriteMessage function
  • lxd/events: Use EventListenerConnection in listenerCommon
  • lxd/devlxd: Support http streaming
  • lxd-agent/events: Support http streaming
  • lxd: Use EventListenerConnecion
  • lxd/events: s/heartbeat/start/
  • test/deps/devlxd-client: Add stream monitor
  • test: Add devlxd http stream
  • gomod: Update dependencies
  • i18n: Update translations from weblate
  • lxd/db/cluster/profiles.mapper: Add cluster.Profile and generated methods
  • lxd/db/cluster/profiles: Add ToAPI and GetProfileIfEnabled
  • shared/api/profile: Add profile URL method
  • lxd/db: Port GetStoragePoolVolumesWithType to ClusterTx
  • lxd/storage_volumes_snapshots: Update to ClusterTx
  • lxd/main_activateifneeded: Update to ClusterTx
  • lxd/instance: Optimize instance snapshots
  • lxd/resources: Handle ethtool not supported
  • lxc/profile: Fix bad target project handling
  • tests: Fix bad profile copy test
  • lxd/main_forkfile: Change counting model
  • lxd/instance/qemu: Implement qemuMemorySections
  • lxd/instance/qemu: Replace qemuMemory template with qemuMemorySections
  • lxd/instance/qemu: Implement qemuSerialSections
  • lxd/instance/qemu: Replace qemuSerial template with qemuSerialSections
  • lxd/instance/qemu: Implement qemuPCIeSections
  • lxd/instance/qemu: Replace qemuPCIe template with qemuPCIeSections
  • lxd/instance/qemu: Implement qemuSCSISections
  • lxd/instance/qemu: Replace qemuSCSI template with qemuSCSISections
  • lxd/instance/qemu: Implement qemuBalloonSections
  • lxd/instance/qemu: Replace qemuBalloon template with qemuBalloonSections
  • lxd/instance/qemu: Implement qemuRNGSections
  • lxd/instance/qemu: Replace qemuRNG template with qemuRNGSections
  • lxd/instance/qemu: Implement qemuVsockSections
  • lxd/instance/qemu: Replace qemuVsock template with qemuVsockSections
  • lxd/instance/qemu: Implement qemuGPUSections
  • lxd/instance/qemu: Replace qemuGPU template with qemuGPUSections
  • lxd/instance/qemu: Implement qemuKeyboardSections
  • lxd/instance/qemu: Replace qemuKeyboard template with qemuKeyboardSections
  • lxd/instance/qemu: Implement qemuTabletSections
  • lxd/instance/qemu: Replace qemuTablet template with qemuTabletSections
  • lxd/instance/qemu: Refactor qemuBaseSections to struct opts arg
  • lxd/events/common: Ignore connection close errors in Close
  • doc: move content around
  • lxd/instance/qemu: Implement qemuCPUSections
  • lxd/instance/qemu: Replace qemuCPU template with qemuCPUSections
  • lxd/instance/qemu: Implement qemuControlSocketSections
  • lxd/instance/qemu: Replace qemuControlSocket template with qemuControlSocketSections
  • lxd/instance/qemu: Implement qemuConsoleSections
  • lxd/instance/qemu: Replace qemuConsole template with qemuConsoleSections
  • lxd/instance/qemu: Implement qemuDriveFirmwareSections
  • lxd/instance/qemu: Replace qemuDriveFirmware template with qemuDriveFirmwareSections
  • lxd/events: Use cancel.Canceller for done indicator
  • doc: add and update content
  • doc: allow center-aligning table cells
  • doc: fix version numbers in the version switcher
  • lxd/db/profiles: Keep minimal db.Profile
  • lxd: Use new cluster.Profile methods
  • lxd/main/test: Update tests
  • lxd/db/cluster/instances.mapper: Generate cluster package methods for instances
  • shared/api/instance: Add Instance URL method
  • lxd/profiles: Add profileUsedBy
  • lxd/db/db: Fill cluster PreparedStmts in ForLocalInspection
  • lxd/instance/lxc: Stop forkfile on restore
  • lxd/operations/operations: Renames Run to Start
  • lxd: op.Start usage
  • lxd/operations/operations: Renames WaitFinal to Wait, and adds context support
  • lxd/operations: op.Wait usage
  • lxd/operations/operations: Fix possible races on accessing status property
  • lxd/operations/operations: Store operation error as error type rather than string
  • lxd/operations/operations: Use contextual logging
  • client/operations: Get error text verbatim in setupListener
  • lxd/images: Fix bug with operation run function returning empty error in imageExportPost
  • lxd/state: Adds ServerName field placeholder for non-cgo builds
  • lxd/operations/linux: Removes getServerName function
  • lxd/operations/operations: Used cached state.ServerName rather than looking up server name for every operation
  • lxd/db/node: Fix crash in nodes by avoiding reusing the rows var in defer
  • lxd/instance/qemu: Implement qemuDriveConfigSections
  • lxd/instance/qemu: Replace qemuDriveConfig template with qemuDriveConfigSections
  • lxd/instance/qemu: Implement qemuDriveDirSections
  • lxd/instance/qemu: Replace qemuDriveDir template with qemuDriveDirSections
  • lxd/instance/qemu: Implement qemuPCIPhysicalSections
  • lxd/instance/qemu: Replace qemuPCIPhysical template with qemuPCIPhysicalSections
  • lxd/instance/qemu: Implement qemuGPUDevPhysicalSections
  • lxd/instance/qemu: Replace qemuGPUDevPhysical template with qemuGPUDevPhysicalSections
  • lxd/storage/backend/lxd: Don't close migration socket on error
  • lxd/instance/qemu: Implement qemuUSBSections
  • lxd/instance/qemu: Replace qemuUSB template with qemuUSBSections
  • lxd/instance/qemu: Implement qemuTPMSections
  • lxd/instance/qemu: Replace qemuTPM template with qemuTPMSections
  • doc: update info on how to grow a ZFS pool
  • doc: use the same order for drivers
  • doc: storage: add a how-to for creating a storage pool
  • doc: storage: move examples for creating a storage pool
  • doc: storage: clean up and align examples
  • lxd/instance/drivers/driver/qemu: Don't reference absolute times in op.Reset comments
  • lxd/instance/operationlock/operationlock: Adds ResetTimeout for custom reset timeouts
  • lxd/instance/drivers/driver/lxc: Use ticker in Shutdown operation lock keepalive
  • lxd/instance/drivers/driver/qemu: Use ticker in Shutdown operation lock keepalive
  • lxd/instance/drivers/driver/lxc: Use operationlock.TimeoutShutdown in onStop
  • lxd/instance/drivers/driver/qemu: Use operationlock.TimeoutShutdown in onStop
  • lxd/storage/drivers/driver/zfs/volumes: Use operationlock.TimeoutShutdown in UnmountVolume
  • lxd/instance/drivers/driver/lxc: Reworks revert clean up in FileSFTPConn
  • lxd/instance/drivers/driver/lxc: Removes double call to defer in stopForkfile
  • lxd-agent: Consistent use of revert name
  • lxd: Consistent use of revert name
  • lxd-migrate: Consistent use of revert name
  • shared: Consistent use of revert name
  • lxd/instance/operationlock/operationlock: Adds ActionCreate constant
  • lxd/instance/instance/utils: Use ActionCreate operation lock constant in CreateInternal
  • lxd/instance/instance/interface: Adds LockExclusive definition
  • lxd/instance/drivers/driver/lxc: Log path in IdmappedStorage
  • lxd/instance/drivers/driver/lxc: Improve comment in FileSFTPConn
  • lxd/instance/drivers/driver/lxc: Implement LockExclusive
  • lxd/instance/drivers/driver/qemu: Whitespace in Restore
  • lxd/instance/drivers/driver/qemu: Implement LockExclusive
  • lxd/instance: Use inst.LockExclusive in instanceCreateAsCopy
  • lxd/instances/post: Use inst.LockExclusive in createFromMigration
  • lxd/instances/post: Removes duplicated in createFromCopy
  • lxd/storage/drivers/driver/zfs/volumes: Fix comment
  • lxd/daemon/images: Use contextual logging in imageOperationLock
  • lxd/instance/qemu: Move common test run code into a separate function
  • doc: storage: add examples for CephFS
  • doc: storage: add "source" option for all storage drivers
  • doc: storage: Clarify driver names
  • lxd/instance/qemu: Remove usage of a temporary strings.Builder instance
  • lxd/instance/qemu: Remove "Sections" suffix from config builders
  • lxd/storage/drivers/zfs: Fix VM migration
  • lxd-agent/events: Ensure connection is closed on function return in eventsSocket
  • lxd: Ensure events connection is closed on function return
  • lxd: Wait for operations to be finished in scheduled tasks
  • lxd/images: Adds imageTaskMu to prevent image related tasks from running concurrently with each other
  • lxd: Contextual logging
  • lxd/operations/operations: Improves comment on Wait
  • test: Rename FIX ME to FIXME for consistency with ther FIXMEs
  • lxd/storage/backend/lxd: Moves migration index header send/receive into own functions
  • lxd/migration/migration/volumes: Clarify that Config field only used for custom volumes
  • lxd/storage/backend/lxd: Improve error in CreateInstanceFromMigration
  • lxd/storage/backend/lxd: Fix bug in CreateCustomVolumeFromMigration that prevented refreshing volume with custom mount settings
  • doc: storage: add information about clustering
  • doc: storage: add instructions for adding storage volumes
  • shared: Export the Msg field in RunError
  • lxd/archive: Restore squashfs unpack behavior
  • doc/howto/ovn: Fix incorrect config syntax
  • lxd/events: Update API description
  • doc/rest-api: Refresh swagger YAML
  • doc: storage: clarification about sharing of storage volumes
  • lxd/instance/qemu: Support running inside a LXD container
  • lxd/operations: Fix crash on nil state
  • chore: Set permissions for GitHub actions
  • chore: Included githubactions in the dependabot config
  • lxd/instance/drivers: Moves away from accepting a revert argument
  • lxd/instance: Updates Create and create to return a revert.Hook rather than accept a revert.Reverter argument
  • lxd/instance: Updates CreateInternal to return a revert.Hook rather than accept a revert.Reverter argument
  • lxd: Use revert.Hook rather than func() where a revert hook is returned
  • lxd: instance.CreateInternal usage
  • lxd/network: Return revert.Hook rather than revert.Reverter for cleanup
  • lxd/device/nic/bridged: Improve comment on setupHostFilters
  • lxd/storage/drivers/driver/btrfs/volumes: Return revert.Hook rather than revert.Reverter for cleanup
  • lxd/device/device/utils/disk: Return revert.Hook after file handle in DiskVMVirtfsProxyStart
  • lxd: Use cleanup rather than revertExternal naming
  • lxd/api/internal/recover: Moves away from accepting a revert argument in internalRecoverImportInstance
  • lxd/device/nic/ovn: Moves away from accepting a reverter as an argument in setupHostNIC
  • lxd/storage/drivers: Don't defer calls to revert.Success
  • lxd/storage/drivers/driver/zfs/volumes: Return revert.Hook rather than revert.Reverter for cleanup
  • lxd: Change RunConfig.Revert to revert.Hook type
  • lxd: instance.CreateInternal usage in tests
  • lxd/instance/test: Update TestContainer_LoadFromDB to use RenderFull for equality check
  • lxd/storage/pool/load: Fix error handling bug in Patch
  • lxd/storage/utils: Better error in VolumeDBGet
  • lxd/storage/backend/lxd: Add logging to ApplyPatch
  • lxd/patches: Better logging in apply
  • lxd: Adds storage_missing_snapshot_records patch
  • test: Adds tests for instance volume snapshot DB record recovery
  • build(deps): bump actions/setup-go from 2 to 3
  • build(deps): bump actions/labeler from 3 to 4
  • build(deps): bump actions/checkout from 2 to 3
  • build(deps): bump actions/upload-artifact from 2 to 3
  • chore(deps): Included dependency review
  • github: Move depsreview to tests
  • github: Move woke test to ubuntu-latest
  • lxd/migrate/storage/volumes: Only choose source's index header version if target supports it
  • lxd/storage/backend/lxd: Fix index migration header format
  • lxd/storage/backend/lxd: Improve logging of index migration header send/receive
  • lxd/storage/drivers: Improve log and error messages related to driver specific migration frames
  • lxd/storage: Expand arg names in logging
  • lxd: Don't return migration error until after its been sent to remote
  • lxd/storage/backend/lxd: Improve pre migration checks in MigrateCustomVolume
  • lxd/migrate_storage_volumes: Make sender aware of refresh
  • doc: Update for new myst_parser
  • lxd-user: Move away from atomic
  • lxd-user: Use getent instead of os/user
  • lxd/certificates: Require an address for token issuance
  • lxd/instance/qemu: Drop bootIndex from PCI
  • lxc/network_forward: Fix example
  • i18n: Update translation templates
  • lxd/cgroup: Better handle broken CGroupV2 setups
  • lxd/migration: Add Refresh to InfoResponse
  • lxd/storage: Return InfoResponse from migrationIndexHeaderSend
  • lxd/storage: Use Refresh from InfoResponse
  • lxd/storage/backend: Add refresh arg to migrationIndexHeaderReceive
  • test/suites: Enable migration test for zfs
  • lxd/storage/drivers/btrfs: Fix volumeSnapshotsSorted
  • lxd/storage/drivers/btrfs: Don't rely on passed snapshots
  • lxd/storage/drivers/zfs: Handle MultiSync with optimized refresh
  • lxd/migration: Add VolumeOnly to source and target args
  • lxd: Use VolumeOnly field when migrating
  • lxd/storage/drivers/btrfs: Check VolumeOnly when migrating
  • lxd/storage: Use VolumeOnly field when migrating
  • lxd/storage/drivers/zfs: Use VolumeOnly migration field
  • lxd/instance/drivers: Improve error messages
  • lxd/instance/drivers/driver/qemu: Fix typo in qemuCreate
  • lxd/migrate/instance: Updates snapshotToProtobuf to accept api.InstanceSnapshot
  • lxd/migrate/instance: Updates migrationSink.Do to use updated snapshotToProtobuf
  • lxd/migrate/instance: snapshotToProtobuf usage
  • lxd/migrate/instance: Improve error handling and logging in migrationSourceWs.Do
  • lxd/migrate/instance: Improve error handling and logging in migrationSink.Do
  • lxd/backup: Don't allow writing backup index file for snapshot instances in backupWriteIndex
  • lxd/storage/backend/lxd: Relax validation in GenerateInstanceBackupConfig to allow generating config for instance snapshots
  • lxd/migrate/instance: Switch to using pool.GenerateInstanceBackupConfig in migrationSourceWs.Do
  • lxd/migrate/instance: Setup migration.VolumeSourceArgs in one go
  • lxd/storage/backend/lxd: Expand arg names in logging in migrationIndexHeaderSend
  • lxd/storage/backend/lxd: Additional logging in migrationIndexHeaderReceive
  • lxd/storage/backend/lxd: Fix error message in migrationIndexHeaderSend
  • lxd/storage/backend/lxd: Removes unnecessary/duplicated checks in CreateCustomVolumeFromMigration
  • lxd/storage/backend/lxd: Reduce indentation in CreateCustomVolumeFromMigration
  • lxd/storage/backend/lxd: CreateCustomVolumeFromMigration comment improvements
  • lxd/migrate/storage/volumes: Simplify snapshot config generation in migrationSourceWs.DoStorage
  • test: Add check that instance volume config is copied for both same pool and cross-pool copies
  • lxd/storage/backend/lxd: Adds index migration header support to CreateInstanceFromCopy
  • lxd/storage/backend/lxd: Adds index migration header support to RefreshInstance
  • lxd/storage/backend/lxd: Adds index migration header support to MigrateInstance and CreateInstanceFromMigration
  • lxd/migrate/instance: Update migrationSourceWs.Do to support migration index header
  • lxd/migrate/instance: Update migrationSink.Do to support migration index header
  • lxd/instance/post: Fix comment in instancePostClusteringMigrateWithCeph
  • lxd/instance/post: Include required migration source config in instancePostClusteringMigrateWithCeph
  • test: Updates incremental_copy to check for volume and snapshot volume config copying
  • github: Only run dependencies check on PR
  • tests: Skip EDITOR=cat when not a terminal
  • doc: fix indentation for commands
  • lxd/instance/qemu: Implement granular control of qemu.conf output
  • scripts/bash: Add raw.qemu.conf
  • api: qemu_raw_conf
  • doc/instances: Add raw.qemu.conf
  • doc/instances: Add section about raw.qemu.conf
  • fixup! doc/instances: Add section about raw.qemu.conf
  • fixup! doc/instances: Add section about raw.qemu.conf
  • doc: add link to video about network forwards
  • lxd/db/generate/db/method/v2: Expect collections for generated reference methods
  • lxd/db/generate/db/method/v2: Add newLine flag to ifErrNotNil
  • lxd/db/cluster/mapper: update generated code
  • lxd/profiles: Update usage of CreateProfileDevices
  • lxd/db/cluster/profiles: Make GetProfileIfEnabled GetProfilesIfEnabled
  • lxd/db/cluster/instances: cluster.Instance generator comments/helpers
  • lxd/db/cluster/instances.mapper: Update generated code
  • lxd/db/instances: Remove db.Instance and generator comments
  • lxd/db/instances.mapper: Remove unused generator files
  • lxd/db/cluster/snapshots: Minimal cluster.Snapshot
  • lxd/db/instances: Instance and Snapshot Conversions
  • lxd/db/instances: Use InstanceToArgs in InstanceList
  • lxd/db/instances: Reference cluster package for ClusterTx helpers
  • lxd/db/images: ClusterTx method for fetching images by fingerprint prefix
  • lxd/db/cluster/profiles: Add expanded config/devices helpers to cluster package
  • lxd/api/project: UsedBy and URIs for projects
  • lxd/backup/backup/config/utils: Fetch api.Profiles in ConfigToInstanceDBArgs
  • lxd/storage/volumes/utils: Update usages of InstanceList
  • lxd/storage/migration: Fetch api.Profiles for migration InstanceArgs
  • lxd/instance/instance/interface: Store api.Profile instead of profile names
  • lxd/instances/post: Update helper usages for new cluster package syntax/args
  • lxd/profiles/utils: Update remainining helper usages
  • lxd/project/permissions: Use api.Instance for instance info
  • lxd/instance/instance/utils: Explicit args to instance_profiles
  • lxd/db/db: Remove urlsToResourceNames
  • lxd/db/profiles: Remove unused functions
  • lxd/project/permissions/test: Fix tests
  • lxd/db/cluster/snapshots: Add missing build constraints
  • lxd/db/cluster/snapshots: Add full snapshot generator comments and ToInstance helper
  • lxd/db/cluster/snapshots.mapper: Update generated code
  • lxd/db/snapshots: Remove db.Snapshot and generator comments
  • lxd/db/snapshots.mapper: Remove generated code
  • lxd/db/cluster/images: Add cluster.Images
  • lxd/db/cluster/images.mapper: Update generated code
  • lxd/db/images: Remove db.Images and generator comments
  • lxd/db/images.mapper: Remove generated code
  • shared/api/image: Add URL method
  • lxd/api/project: Use api.URL for project usedBy images
  • lxd/sys: Add BootTime
  • shared/util_linux: Refactor GetMeminfo
  • lxd/cgroup: Handle no swap limit
  • lxd: Update helper usages for cluster.Image syntax/args
  • lxd/db/images/test: Fix tests
  • lxd: Update usages for cluster.InstanceSnapshot
  • lxd/db/snapshots/test: Fix tests
  • lxd/db/node: Remove db.Config and db.Device types
  • lxd/db/generate/db/parse: Allow all types as columns
  • lxd/db/operationtype/operation/type: Create operationtype package
  • lxd/db/cluster/operations: Add cluster.Operations
  • lxd/db/cluster/operations.mapper: Update generated code
  • lxd/db/operations/types: Remove db.Operations and OperationType
  • lxd: Update OperationType usages
  • lxd: Update cluster.Operation usages
  • lxd/db/operations/test: Fix tests
  • lxd/instance/drivers/driver/common: Moves StoragePool into public section
  • lxd/instance/drivers: Moves deviceLoad into common
  • lxd/instance/drivers: Moves deviceAdd into common
  • lxd/instance/drivers: Moves deviceRemove into common
  • lxd/instance/drivers/driver/qemu: Bring deviceStop inline with lxc signature
  • lxd/instance/drivers: Removes updateDevice and moves updateDevices into common
  • lxd/instance/drivers: Rename updateDevices to devicesUpdate for consistency with other function names
  • lxd/instance/drivers: Deduplicates device add logic into common devicesAdd function
  • lxd/instance/drivers: Deduplicates RegisterDevices by adding devicesRegister to common
  • lxd/instance/drivers: Use consistent error messages for device load failures
  • lxd/instance/drivers: Deduplicates device remove logic by adding devicesRemove to common
  • lxd/instance/drivers/driver/common: If device is unsupported for instance don't return usable device in deviceLoad
  • lxd/instance/drivers: Simplify error checks in cleanupDevices
  • lxd/instance/drivers/driver/common: Simplify error checks in devicesRemove
  • lxd/instance/drivers/driver/common: Simplify error checks in devicesAdd
  • lxd/instance/drivers/driver/common: Simplify error checks in devicesRegister
  • lxd/instance/drivers/driver/common: Simplify error checks in devicesUpdate
  • lxc/storage_volume: Fix usage strings
  • i18n: Update translation templates
  • doc: storage: expand configuration documentation
  • doc: storage: clarify requirements for attaching volumes
  • doc: storage: add information on listing pools and volumes
  • doc: storage: add information about copying or moving volumes
  • lxd/profiles/utils: Add missing profiles slice check
  • lxd/network/zone: Add SOA
  • lxd/dns: Add support for SOA
  • lxd/daemon: Update for SOA support
  • client: Fixes gosimple lint errors.
  • lxc: Fixes gosimple lint errors.
  • lxd-agent: Fixes gosimple lint errors.
  • shared: Fixes gosimple lint errors.
  • lxd/cluster: Fixes gosimple lint errors.
  • lxd/db: Fixes gosimple lint errors.
  • lxd/device: Fixes gosimple lint errors.
  • lxd/dns: Fixes gosimple lint errors.
  • lxd/dnsmasq/dhcpalloc: Fixes gosimple lint errors.
  • lxd/events: Fixes gosimple lint errors.
  • lxd/firewall/drivers: Fixes gosimple lint errors.
  • lxd/fsmonitor/drivers: Fixes gosimple lint errors.
  • lxd/instance: Fixes gosimple lint errors.
  • lxd/ip: Fixes gosimple lint errors.
  • lxd/lifecycle: Fixes gosimple lint errors.
  • lxd/maas: Fixes gosimple lint errors.
  • lxd/migration: Fixes gosimple lint errors.
  • lxd/network: Fixes gosimple lint errors.
  • lxd/project: Fixes gosimple lint errors.
  • lxd/resources: Fixes gosimple lint errors.
  • lxd/revert: Fixes gosimple lint errors.
  • lxd/rsync: Fixes gosimple lint errors.
  • lxd/seccomp: Fixes gosimple lint errors.
  • lxd/storage: Fixes gosimple lint errors.
  • lxd/util: Fixes gosimple lint errors.
  • lxd: Fixes gosimple lint errors.
  • static-analysis: Enables gosimple linter.
  • lxd/instance/drivers: Fix potential LXD crash when starting device fails to load
  • lxd/device/nic/bridged: Moves address conflict detection into own checkAddressConflict function
  • lxd/device/nic/bridged: Update checkAddressConflict to return a conflict api.StatusError on conflicting address
  • lxd/instance/drivers/driver/common: Allow instances to be created and updated with conflicting devices
  • tests: Add tests for conflicting instance device validation behaviour
  • lxd/migrate/instance: Use the negotiated index migration header version on target
  • lxd/device/nic/bridged: Avoid loading already loaded parent network config in rebuildDnsmasqEntry
  • lxd/network/acl/driver/common: Fix ACL UsedBy Instance type assertion
  • lxd/instance/drivers/driver/common: Use per-loop contextual loggers in devicesUpdate
  • lxd/instance/drivers/driver/common: Remove device if non-user requested update validation fails
  • test: Update bridged NIC checks to expect device removal after non-user requested update validation fails
  • lxd/dnsmasq/dnsmasq: Add DHCPStaticAllocationPath function
  • lxd/device/nic/bridged: Make sure volatile hwaddr is used when writing static DHCP allocation file in Add
  • lxd/device/nic/bridged: Detect missing static DHCP lease file at start and create if needed
  • test: Add tests for creating missing bridged DHCP static lease file at NIC start time
  • lxd/device/disk: Fix ceph creds on custom volumes
  • build(deps): bump actions/dependency-review-action from 1 to 2
  • github: Disable dependabot labels
  • doc: fix instructions for substitutions
  • doc: storage: fix format for snapshots.schedule
  • api: storage_cephfs_fscache
  • doc: Add cephfs.fscache
  • scripts: Add cephfs.fscache
  • lxd/network/ovs: Add timeout to nbctl/sbctl
  • shared: Use DialContext.
  • client: Use DialContext.
  • lxd/endpoints: Use DialContext.
  • lxd/instance/drivers: Use DialContext.
  • lxd/util: Use DialContext.
  • lxd: Use DialContext.
  • test/deps: Use DialContext.
  • client: Remove dereferenced memory address.
  • client: Replace nil context with context.TODO.
  • lxc: Ignore deprecation warning for PEM encryption.
  • lxc: Use blank identifier for unused variable.
  • lxc-to-lxd: Replace deprecated GetContainerNames.
  • lxd/cluster: Ignore empty critical section lint error.
  • lxd-generate: Replace deprecated strings.Title.
  • lxd-generate: Uncomment error return for unexported fields.
  • lxd/device: Fix vgpu file permissions.
  • lxd/dnsmasq/dhcpalloc: Prefer net.IP.Equal over bytes.Equal.
  • lxd/endpoints: Use blank identifier for unused variable.
  • lxd/instance/drivers: Remove unnecessary fmt.Sprintf.
  • lxd/network/openvswitch: Remove unnecessary fmt.Sprintf.
  • doc: add link to the YouTube video about network zones
  • shared/logger: Filter event levels for syslog
  • lxd/storage/cephfs: Add cephfs.fscache
  • lxc: List volumes under used-by
  • lxc/storage: Show project and target on info
  • doc: Rename refquota config key name for proper one
  • doc: storage: add --refresh flag for copying volumes
  • doc: storage: how to back up storage volumes
  • doc: instances: clarify units for limits
  • doc: storage: move I/O limits section
  • doc: storage: fix wrong link
  • doc: storage: clarify doc about I/O limits
  • doc: instances: add links for I/O limits and clarifications
  • lxd/network: Fail peer validation if unable to get existing peers from DB.
  • lxd/resources: Use blank identifier for unused variable.
  • lxd/storage/drivers: Use -1 in strings.Replace.
  • lxd/sys: Use NewPid2 (NewPid is deprecated).
  • lxd/util/config: Move unconditional break statement.
  • lxd: Omit unused assignment.
  • lxd: Omit or use blank identifier for unused variables.
  • lxd: Ignore empty branch lint error.
  • lxd: Replace deprecated strings.Title.
  • lxd: Length of a slice cannot be < 0.
  • lxd-agent: Replace deprecated Temporary error.
  • shared/cancel: Use context instead of deprecated http.Request.Cancel.
  • shared/cmd: Replace deprecated terminal package.
  • shared/ioprogress: Remove int % 1 (any int mod 1 is zero).
  • shared/validate: Remove port < 0 (uint cannot be less than zero).
  • shared/version: Replace deprecated strings.Title.
  • shared: Remove unnecessary for loop.
  • shared: Exit test to avoid nil pointer dereference.
  • test/macaroon-identity: Remove assignment to tokenString.
  • test/static-analysis: Includes govet, ineffassign, and staticcheck linters.
  • doc: storage: clean up driver overview page
  • doc: storage: clean up general storage drivers reference
  • lxd/migration: Handle optimized refresh for older versions
  • lxc: Removes unused flags.
  • lxd/events: Removes unused pongsPending field.
  • lxd/response: Ignores lint errors for unused swagger types.
  • lxd/storage/drivers: Removes unused getSubVolumeUUID.
  • lxd: Removes unused struct field.
  • lxd: Removes unused kernelVersion from Daemon.
  • lxd: Removes unused field from cmdDaemon.
  • test/static-analysis: Removes golangci-lint flags.
  • lxd/vsock: Use DialContext in vsock HTTP client.
  • lxd-generate: Revert to deprecated strings.Title.
  • gomod: Update dependencies
  • i18n: Update translations from weblate
  • shared/api: Add event types
  • lxd: Use event type consts
  • shared/api: Add constants for lifecycle events
  • shared/osarch: Fix indirect lock copy
  • doc: storage: clarify moving of storage volumes
  • doc: fix version switcher to work for latest
  • lxd/network/openvswitch: Use %s so that delimiting quotes are not escaped.
  • shared/subprocess/manager: Improve errors in ImportProcess
  • doc: storage: clarify that most docs are about custom volumes
  • doc: fix typo
  • gomod: Switch to github for go-lxc
  • gomod: Update dependencies
  • lxd: Update to github path for go-lxc
  • lxc-to-lxd: Update to github path for go-lxc
  • lxd: Use liblxc's RuntimeLiblxcVersionAtLeast
  • shared/api: Fix typo in event name
  • shared/api: Add missing events
  • shared/api: Sort events
  • doc/events: Add missing events
  • doc/events: Sort entries
  • lxd/lifecycle: Use event names from api package
  • client: End all function comments with a full-stop.
  • client: Fixes imports.
  • lxc/config: End comments with a full-stop.
  • lxc/utils: End comments with a full-stop.
  • lxc/utils: Fix import order.
  • lxc: End comments with a full-stop.
  • lxc: Fixes import order.
  • lxc: Removes unnecessary whitespace.
  • lxc-to-lxd: Ends all comments with a full-stop.
  • lxd/apparmor: Ends all comments with a full-stop.
  • lxd/cgroup: Ends all comments with a full-stop.
  • lxd/bgp: Fixes import order.
  • lxd/cluster/config: Ends all comments with a full-stop.
  • lxd/cluster/config: Removes unnecessary whitespace.
  • lxd/cluster/config: Fixes imports.
  • lxd/cluster: Ends all comments with a full-stop.
  • lxd/cluster: Removes unnecessary whitespace.
  • lxd/cluster: Fixes imports.
  • lxd/config: Fixes imports.
  • lxd/config: Ends all comments with a full-stop.
  • lxd-generate: Ensure generated comments end with a full-stop.
  • lxd/db/cluster: Ends all comments with a full-stop.
  • lxd/db/cluster: Fixes imports.
  • lxd/db/generate/db: Removes unnecessary whitespace.
  • lxd/db/generate/db: Fixes imports.
  • lxd/db/generate/db: Ends all comments with a full-stop.
  • lxd/db/generate/lex: Ends all comments with a full-stop.
  • lxd/db/generate/lex: Fixes imports.
  • lxd/db/generate: Removes unnecessary whitespace.
  • lxd/db/generate: Fixes imports.
  • lxd/db/operationtype: Ends all comments with a full-stop.
  • lxd/db/query: Fixes imports.
  • lxd/db/schema: Ends all comments with a full-stop.
  • lxd/db: Removes unnecessary whitespace.
  • lxd/db: Fixes imports.
  • lxd/db: Ends all comments with a full-stop.
  • lxd/device/nictype: Removes unnecessary whitespace.
  • lxd/device: Ends all comments with a full-stop.
  • lxd/device: Removes unnecessary whitespace.
  • lxd/device: Fixes imports.
  • lxd/dnsmasq: Removes unnecessary whitespace.
  • lxd/endpoints: Fixes imports.
  • lxd/endpoints: Ends all comments with a full-stop.
  • lxd/filter: Fixes imports.
  • lxd/filter: Removes unnecessary whitespace.
  • lxd/firewall/drivers: Ends all comments with a full-stop.
  • lxd/firewall/drivers: Removes unnecessary whitespace.
  • lxd/fsmonitor/drivers: Ends all comments with a full-stop.
  • lxd/instance/drivers/qmp: Ends all comments with a full-stop.
  • lxd/instance/drivers/qmp: Removes unnecessary whitespace.
  • lxd/instance/drivers: Removes unnecessary whitespace.
  • lxd/instance/drivers: Fixes imports.
  • lxd/instance/drivers: Ends all comments with a full-stop.
  • lxd/instance: Ends all comments with a full-stop.
  • lxd/ip: Ends all comments with a full-stop.
  • lxd/lifecycle: Ends all comments with a full-stop.
  • lxd/maas: Ends all comments with a full-stop.
  • lxd/metrics: Ends all comments with a full-stop.
  • lxd/migration: Ends all comments with a full-stop.
  • lxd/network/acl: Removes unnecessary whitespace.
  • lxd/network/openvswitch: Removes unnecessary whitespace.
  • lxd/network/zone: Fixes imports.
  • lxd/network: Removes unnecessary whitespace.
  • lxd/network: Ends all comments with a full-stop.
  • lxd/node: Ends all comments with a full-stop.
  • lxd/node: Fixes imports.
  • lxd/operations: Ends all comments with a full-stop.
  • lxd/operations: Removes unnecessary whitespace.
  • lxd/project: Removes unnecessary whitespace.
  • lxd/project: Ends all comments with a full-stop.
  • lxd/rbac: Ends all comments with a full-stop.
  • lxd/request: Ends all comments with a full-stop.
  • lxd/resources: Ends all comments with a full-stop.
  • lxd/response: Ends all comments with a full-stop.
  • lxd/seccomp: Removes unnecessary whitespace.
  • lxd/seccomp: Fixes imports.
  • lxd/storage/drivers: Ends all comments with a full-stop.
  • lxd/storage/drivers: Removes unnecessary whitespace.
  • lxd/storage/memorypipe: Ends all comments with a full-stop.
  • lxd/storage: Removes unnecessary whitespace.
  • lxd/storage: Ends all comments with a full-stop.
  • lxd/sys: Ends all comments with a full-stop.
  • lxd/sys: Fixes imports.
  • lxd/task: Removes unnecessary whitespace.
  • lxd/task: Fixes imports.
  • lxd/template: Ends all comments with a full-stop.
  • lxd/util: Fixes imports.
  • lxd/util: Ends all comments with a full-stop.
  • lxd/util: Removes unnecessary whitespace.
  • lxd: Fixes imports.
  • lxd: Removes unnecessary whitespace.
  • lxd: Ends all comments with a full-stop.
  • lxd: Fixes misspelling.
  • lxd-agent: Fixes imports.
  • lxd-agent: Removes unnecessary whitespace.
  • lxd-agent: Ends all comments with a full-stop.
  • lxd-benchmark/benchmark: Removes unnecessary whitespace.
  • lxd-migrate: Ends all comments with a full-stop.
  • shared/api: Ends all comments with a full-stop.
  • shared/cancel: Ends all comments with a full-stop.
  • shared/cmd: Ends all comments with a full-stop.
  • shared/dnsutil: Ends all comments with a full-stop.
  • shared/eagain: Ends all comments with a full-stop.
  • shared/i18n: Ends all comments with a full-stop.
  • shared/idmap: Ends all comments with a full-stop.
  • shared/idmap: Fixes imports.
  • shared/ioprogress: Ends all comments with a full-stop.
  • shared/logger: Ends all comments with a full-stop.
  • shared/osarch: Ends all comments with a full-stop.
  • shared/simplestreams: Ends all comments with a full-stop.
  • shared/subprocess: Ends all comments with a full-stop.
  • shared/subprocess: Fixes imports.
  • shared/units: Ends all comments with a full-stop.
  • shared/version: Ends all comments with a full-stop.
  • shared: Ends all comments with a full-stop.
  • shared: Fixes imports.
  • shared: Removes unnecessary whitespace.
  • test/macaroon-identity: Fixes imports.
  • test/macaroon-identity: Ends all comments with a full-stop.
  • golangci: Adds golangci-lint configuration file.
  • doc: add link to YouTube video about image handling
  • lxd/instance/lxc: Don't fail on missing apparmor
  • client: Inserts newlines after blocks.
  • fuidshift: Inserts newlines after blocks.
  • lxc: Inserts newlines after blocks.
  • lxc-to-lxd: Inserts newlines after blocks.
  • lxd-agent: Inserts newlines after blocks.
  • lxd-benchmark: Inserts newlines after blocks.
  • lxd-migrate: Inserts newlines after blocks.
  • lxd-user: Inserts newlines after blocks.
  • shared: Inserts newlines after blocks.
  • test: Inserts newlines after blocks.
  • lxd/archive: Inserts newlines after blocks.
  • lxd/backup: Inserts newlines after blocks.
  • lxd/bgp: Inserts newlines after blocks.
  • lxd/cgroup: Inserts newlines after blocks.
  • lxd/cluster: Inserts newlines after blocks.
  • lxd/config: Inserts newlines after blocks.
  • lxd/db: Inserts newlines after blocks.
  • lxd/device: Inserts newlines after blocks.
  • lxd/dns: Inserts newlines after blocks.
  • lxd/dnsmasq: Inserts newlines after blocks.
  • lxd/endpoints: Inserts newlines after blocks.
  • lxd/events: Inserts newlines after blocks.
  • lxd/filter: Inserts newlines after blocks.
  • lxd/firewall/drivers: Inserts newlines after blocks.
  • lxd/fsmonitor/drivers: Inserts newlines after blocks.
  • lxd/instance: Inserts newlines after blocks.
  • lxd/ip: Inserts newlines after blocks.
  • lxd/maas: Inserts newlines after blocks.
  • lxd/metrics: Inserts newlines after blocks.
  • lxd/migration: Inserts newlines after blocks.
  • lxd/network: Inserts newlines after blocks.
  • lxd/operations: Inserts newlines after blocks.
  • lxd/project: Inserts newlines after blocks.
  • lxd/rbac: Inserts newlines after blocks.
  • lxd/request: Inserts newlines after blocks.
  • lxd/resources: Inserts newlines after blocks.
  • lxd/response: Inserts newlines after blocks.
  • lxd/rsync: Inserts newlines after blocks.
  • lxd/seccomp: Inserts newlines after blocks.
  • lxd/storage: Inserts newlines after blocks.
  • lxd/sys: Inserts newlines after blocks.
  • lxd/task: Inserts newlines after blocks.
  • lxd/util: Inserts newlines after blocks.
  • lxd/vsock: Inserts newlines after blocks.
  • lxd: Inserts newlines after blocks.
  • lxc: Removes all one-line assign and check statements.
  • lxc-to-lxd: Removes all one-line assign and check statements.
  • lxd/backup: Removes all one-line assign and check statements.
  • lxd/cluster: Removes all one-line assign and check statements.
  • lxd-generate: One-line assign and check statements.
  • lxd/db/generate: Removes all one-line assign and check statements.
  • lxd/db/generate: Use multiline import syntax.
  • lxd/db: Removes all one-line assign and check statements.
  • lxd/db: Use multiline import syntax.
  • lxd/config: Use multiline import syntax.
  • lxd/device: Removes all one-line assign and check statements.
  • lxd/device: Use multiline import syntax.
  • lxd/dnsmasq: Removes all one-line assign and check statements.
  • lxd/firewall/drivers: Removes all one-line assign and check statements.
  • lxd/firewall/drivers: Use multiline import syntax.
  • lxd/fsmonitor/drivers: Use multiline import syntax.
  • lxd/instance/drivers: Removes all one-line assign and check statements.
  • lxd/network/acl: Removes all one-line assign and check statements.
  • lxd/network/openvswitch: Removes all one-line assign and check statements.
  • lxd/network: Removes all one-line assign and check statements.
  • lxd/refcount: Removes all one-line assign and check statements.
  • lxd/resources: Removes all one-line assign and check statements.
  • lxd/response: Removes all one-line assign and check statements.
  • lxd/rsync: Removes all one-line assign and check statements.
  • lxd/seccomp: Removes all one-line assign and check statements.
  • lxd/storage/drivers: Removes all one-line assign and check statements.
  • lxd/storage: Removes all one-line assign and check statements.
  • lxd/util: Removes all one-line assign and check statements.
  • lxd/util: Use multiline import syntax.
  • lxd: Removes all one-line assign and check statements.
  • lxd-agent: Removes all one-line assign and check statements.
  • lxd-migrate: Removes all one-line assign and check statements.
  • shared/api: Use multiline import syntax.
  • shared/cancel: Use multiline import syntax.
  • shared/idmap: Removes all one-line assign and check statements.
  • shared/instancewriter: Removes all one-line assign and check statements.
  • shared/termios: Removes all one-line assign and check statements.
  • shared/usbid: Removes all one-line assign and check statements.
  • shared: Removes all one-line assign and check statements.
  • test: Removes all one-line assign and check statements.
  • test/lint: Adds shell based linters.
  • Makefile: Updates static-analysis target.
  • test/suites: Removes static analysis suite.
  • workflows: Adds static analysis job.
  • lxd/network/driver/common: Fix comment typos
  • lxd/db/network/forwards: Fix error handling in GetNetworkForward
  • lxd/network/driver/common: Adds forwardTarget type
  • lxd/network/driver/bridge: Update forwardConvertToFirewallForwards to support new forward target type
  • lxd/network/driver/common: Adds usageType field to externalSubnetUsage
  • lxd/network/driver/common: Update forwardValidate to use forwardTarget type
  • lxd/network/driver/bridge: Update subnet usage to use usageType
  • lxd/network/driver/ovn: Updates to support subnet use usageType field
  • lxd/network/openvswitch/ovn: Updates LoadBalancerApply to support multiple targets via OVNLoadBalancerTarget
  • lxd/network/driver/ovn: Update forwardFlattenVIPs to support updated openvswitch.OVNLoadBalancerVIP
  • lxd/network/driver/ovn: Fix network ForwardUpdate revert
  • test/lint/client-imports: grep for fixed string before sorting
  • test/lint/i18n-up-to-date: move lxd.pot instead of copying it
  • test/lint/mixed-whitespace: only process files with .sh extention
  • test/lint/mixed-whitespace: only process files with .sh extention
  • test/lint/negated-is-bool: use git grep and only check .go files
  • test/lint/newline-after-block: use git ls-files instead of find
  • test/lint/no-short-form-imports: use git grep and avoid early exit
  • test/lint/trailing-space: use git grep and only check .sh files
  • Makefile: use run-parts to run test/lint
  • test/lint: tell git grep to consider tracked and untracked files
  • test/lint: tell git ls-files to consider tracked and untracked files
  • lxd/network/driver/ovn: Inserts newlines after blocks.
  • i18n: Update translation templates
  • test/lint/i18n-up-to-date: don't leave dirty .po files behind
  • workflows: Removes unit tests and reinstates ubuntu client tests.
  • lxd/db/generate/lex: Use cases.Title instead of deprecated strings.Title.
  • lxd/db/generate/db/method/v2: Fix config error handling
  • lxd/db/cluster/mapper: Update generated code
  • doc/ovn: fix steps for OVN cluster setup
  • doc: fix nested ordered lists
  • test: Update test_container_devices_disk_socket to test both start time and hotplug
  • test: Adds test_container_devices_disk_char to check passing char devices as disks
  • workflows/static-analysis: Download but do not update dependencies.
  • gomod: Update dependencies
  • client: Move to bakery.v3
  • lxc: Move to bakery.v3
  • lxd-migrate: Move to bakery.v3
  • lxd: Move to bakery.v3
  • test: Move to bakery.v3
  • gomod: Update dependenies
  • lxd/resources: Handle invalid VPD lengths
  • lxd/response: Fix swagger structs
  • doc/rest-api: Refresh swagger YAML
  • lxd/db/cluster/projects: Improve error in ToAPI
  • lxd/db/instances: Optimise query pattern for InstanceList
  • lxd/db/instance: Remove profiles arg from instanceFunc in InstanceList
  • lxd: InstanceList updated usage
  • lxd-benchmark: Add --project flag
  • lxd/db/instances/test: Specify expected and actual order correctly in TestInstanceList
  • lxd/db/instances: InstanceList
  • lxd/db/instances: Adds InstanceListOpts type to allow retrieving config and devices optional for InstanceList
  • lxd: Update InstanceList usage
  • shared/api: Adds network load balancer types
  • shared/api/event/lifecycle: Adds network load balancer lifecycle constants
  • client/lxd/server: Adds CheckExtension function
  • client: Adds network load balancer functions
  • doc/rest-api: Refresh swagger YAML
  • i18n: Update translation templates
  • doc: Add missing network forward delete section
  • lxd/storage/drivers/volume: Don't use short arguments in NewVolume
  • lxd/storage/backend/lxd: Improve logging in CreateInstanceFromBackup
  • doc/storage: structure configuration options section
  • doc/storage: structure driver notes
  • lxd/instance/qemu: Fix qemuCPU template broken numa section
  • lxd/storage/backend/lxd: Add missing size.state check to UpdateInstance
  • lxd/storage/backend/lxd: Replaces instanceEffectiveRootVolume with applyInstanceRootDiskOverrides
  • lxd/storage/backend/lxd: b.applyInstanceRootDiskOverrides usage
  • lxd/storage/backend: Update b.applyInstanceRootDiskOverrides usage in CreateInstanceFromCopy
  • test: Updates tests to check for instance root disk size not leaking into storage volume DB record
  • lxd-agent: Remove legacy code
  • lxd/vsock: Undo double TLS
  • lxd-agent: Undo double TLS
  • lxd/instance/operationlock: Allow InstanceOperation.Action() to be called on nil InstanceOperation
  • lxd/instance/drivers/driver/lxc: Don't wait for update operation to complete when removing disk from running container
  • Revert "lxd/db/instances: Adds InstanceListOpts type to allow retrieving config and devices optional for InstanceList"
  • Revert "lxd: Update InstanceList usage"
  • test: Fixes lint errors for shellcheck 0.8.0.
  • workflows: Installs shellcheck version 0.8.0.
  • Makefile: Warns if shellcheck version is not 0.8.0.
  • doc/storage: add introductions for storage drivers
  • doc/storage: clean up terminology
  • doc/storage: clean up driver notes
  • doc/storage: clean up tables
  • doc/storage/ceph: add information about remote storage
  • doc/storage/cephfs: clarify that the file system must exist
  • doc/instances: add link to NVIDIA video
  • lxd: Replace use of cluster "node" with "member" in user facing text
  • doc: add a more complete prometheus.yaml example
  • lxd/db/generate/db/method/v2: Properly attach package name for external calls
  • lxd/db/generate/db/stmt: Allow overriding table name with config key
  • lxd/db/generate/db/method/v2: Limit generated method references to same package
  • lxd/resources: Better handle invalid VPD
  • doc/storage: add tip about volume.* configuration
  • doc/storage: remove limitation about XFS as file system for Ceph
  • doc/storage: remove mentions of ceph.osd.force_reuse
  • doc: Fix use of setup/set up
  • lxd-agent: Always close file
  • lxd-agent: Introduce CONNECTED state
  • shared/api: Add API10Put
  • lxd-agent: Add PUT /1.0 endpoint
  • lxd/endpoints: Add vsock endpoint
  • lxd/vsock: Add port argument to HTTPClient
  • lxd/instance: Add VM interface
  • lxd/instance/drivers: Add advertiseVsockAddress
  • lxd/instance/drivers: Add AgentCertificate
  • lxd/db/instances: Add GetLocalInstanceWithVsockID
  • shared/api: Add VsockServerGet
  • lxd/response: Add devLxdResponse
  • lxd/devlxd: Use response.DevLxdResponse
  • lxd/devlxd: Allow setting hoist function for devlxd server
  • lxd: Add vsock server
  • lxd-agent: Use vsock interface for devlxd
  • lxd/instance/drivers/qemu: Handle LXD-AGENT-READY event
  • lxd/instance/drivers/qmp: Call event handler if lxd-agent becomes ready
  • lxd/instance/drivers/qemu: Remove instance-data file
  • api: Add vsock_api
  • lxd/instance/drivers: Handle security.devlxd config change
  • lxd/endpoints: Update endpoints test
  • lxd/storage: Add poolAndVolumeCommonRules function
  • lxd/storage/drivers: Support common pool and volume configuration options
  • lxd/storage/drivers: Support for propagation of the volume.* configuration options to the new storage volume
  • doc: Update storage config keys propagation
  • tests: Test propagation volume.* config keys for new storage volumes
  • lxd/storage/drivers/driver/ceph: Mark ceph.osd.force_reuse as deprecated
  • scripts/bash/lxd-client: Remove ceph.osd.force_reuse
  • lxc/monitor: Clarify that --log-level can only be used with pretty formatting mode
  • i18n: Update translation templates
  • doc/storage: add a howto for launching instances in a specific pool
  • doc/storage: add howto for resizing storage
  • doc/storage: "size" option missing for Btrfs & LVM storage pools
  • lxd/storage/drivers/driver/lvm/utils: Fix parse errors when instance not running
  • doc/storage: move content from FAQ to storage section
  • lxd/resources: Better handle ethtool errors
  • lxd/instance/drivers: Handle QEMU I/O errors
  • client: Use 30s HTTP header timeout in GetImageFile and GetPrivateImageFile
  • lxd/daemon/images: Use 30s HTTP header timeout in ImageDownload
  • lxd/instance/drivers/driver/qemu: Fix instance reference leak in getMonitorEventHandler
  • doc: Update cloud-init.md with user-data examples
  • lxd/instance/drivers: Rename LXD-AGENT-READY to LXD-AGENT-STARTED
  • lxd/instance/drivers/qmp: Rename agentReady to agentStarted
  • lxd/instance/drivers: Rename AgenReady to AgentStarted
  • lxd/db/generate/db/method: Fix v1 generator code style
  • lxd/devices: Improve comments in devicesRegister
  • lxd/db/instances: Add support for instancetype.Any to InstanceList
  • lxd/instance/instance/utils: Updates LoadNodeAll to use InstanceList
  • lxd/instance: Updates instanceLoadNodeProjectAll to use InstanceList
  • lxd/cluster/config/config: Adds InstancesNICHostname function
  • lxd/cluster/config/config: Adds BackupsCompressionAlgorithm function
  • lxd/backup: Use s.GlobalConfig.BackupsCompressionAlgorithm
  • lxd/certificates: Updates certificatesPost to use config.TrustPassword
  • lxd/cluster/config/config: Adds NetworkOVNIntegrationBridge function
  • lxd/device/nic/ovn: Use d.state.GlobalConfig.NetworkOVNIntegrationBridge
  • lxd/cluster/config/config: Adds ImagesCompressionAlgorithm function
  • lxd/images: Updates imgPostInstanceInfo to use d.State().GlobalConfig.ImagesCompressionAlgorithm
  • lxd/cluster/config/config: Adds NetworkOVNNorthboundConnection function
  • lxd/network/openvswitch/ovn: Updates NewOVN to use s.GlobalConfig.NetworkOVNNorthboundConnection
  • lxd/instance/drivers/driver/common: Updates MAAS functions to use d.state.GlobalConfig.MAASController
  • lxd/cluster/config/config: Removes unused GetString function
  • lxd/cluster/config/config: Adds ImagesAutoUpdateCached function
  • lxd/instances/post: Updates createFromImage to use GlobalConfig.ImagesAutoUpdateCached
  • lxd/cluster/config/config: Removes unused GetBool function
  • lxd/cluster/config/config: Adds ImagesAutoUpdateIntervalHours function
  • lxd/daemon/images: Updates ImageDownload to use GlobalConfig.ImagesAutoUpdateIntervalHours
  • lxd/images: Updates autoUpdateImage to use GlobalConfig.ImagesAutoUpdateIntervalHours
  • lxd/cluster/config/config: Adds ImagesRemoteCacheExpiryDays function
  • lxd/images: Updates pruneExpiredImagesInProject to use GlobalConfig.ImagesRemoteCacheExpiryDays
  • lxd/cluster/config/config: Removes unused GetInt64 function
  • lxd/cluster/config/config: Removes unused configGet function
  • lxd/storage/utils: Remove unnecessary tx.GetLocalNodeName from VolumeUsedByExclusiveRemoteInstancesWithProfiles
  • lxd/network/network/utils/sriov: Remove unnecessary tx.GetLocalNodeName from SRIOVGetHostDevicesInUse
  • lxd/network/driver/bridge: Remove unnecessary tx.GetLocalNodeName from ForwardCreate
  • lxd/api/cluster: Remove unnecessary tx.GetLocalNodeName from clusterGet
  • lxd/db/node: Adds comment about usage to GetLocalNodeName
  • lxd/events: Remove unnecessary tx.GetLocalNodeName from eventsSocket
  • lxd/instance/instance/utils: Remove unnecessary tx.GetLocalNodeName from CreateInternal
  • lxd/instances/post: Remove unnecessary tx.GetLocalNodeName from createFromCopy
  • lxd/profiles/utils: Remove unnecessary tx.GetLocalNodeName from doProfileUpdate
  • lxd/profiles/utils: Remove unnecessary tx.GetLocalNodeName from doProfileUpdateCluster
  • lxd/storage/backend/lxd: Remove unnecessary tx.GetLocalNodeName from ImportInstance
  • lxd/storage/pools: Remove unnecessary tx.GetLocalNodeName from storagePoolsPostCluster
  • shared/api: Remove non-API structs
  • lxd-agent: Add API package
  • lxd-agent: Update for new API structs
  • lxd: Update for new API structs
  • gomod: Update dependencies
  • Doc: Fix LXD volume group to LVM
  • Remove redundant LXD before ZFS pool
  • Doc: change a LVM to an LVM
  • doc/authentication: add information about a server behind NAT
  • lxc/remote: Allow specifying alternate server address for tokens
  • i18n: Update translation templates
  • lxd/db/warningtype: Move warning type definitions to warningtype package
  • lxd: Update usages of warning types
  • lxd/db/cluster/warnings: Add cluster.Warnings
  • lxd/db/warnings.mapper: Remove db.Warnings and its code generation
  • lxd/db/cluster/warnings.mapper: Update generated code
  • lxd/db/cluster/mapper: Get Images/Certificates by ID
  • shared/api/certificate: Add api.Certificate URL helper
  • lxd/warnings: Add getWarningEntityURL
  • lxd/warnings/warnings: Use cluster package helpers for Warnings
  • lxd/db/warnings.mapper: Remove db package warnings generated files
  • lxd/db/generate: Remove v1 generator
  • lxd/db/cluster: Remove version flag from generator comments
  • lxd/db/warnings: Remove unused types
  • doc/storage: add link to video about benchmarking storage drivers
  • lxd/db/cluster/projects: Move ProjectFeatures and ProjectFeaturesDefaults into cluster package
  • lxd/db/cluster/open: Update EnsureSchema to use ProjectFeaturesDefaults for default project features
  • lxd/api/project: Use cluster.ProjectFeatures and cluster.ProjectFeaturesDefaults
  • lxd/db/network/forwards: Adds context arg to GetNetworkForwards and GetNetworkForward
  • lxd/network: GetNetworkForward and GetNetworkForwards usage
  • lxd/db/network/forwards: Adds optional listenAddresses filter to GetNetworkForwards
  • lxd/db/cluster/stmt: Export Stmt helper
  • lxd/db/cluster: Use exported Stmt helper
  • lxd/db/generate/db/method: Use exported Stmt helper
  • lxd/db/cluster/mapper: Update generated code
  • lxd/db/transaction: Remove Cluster/ClusterTx prepared stmts field
  • lxd/db: Use cluster.Stmt as the only statement store
  • lxd/storage/drivers/driver/lvm/volumes: Fix "lvm.stripes cannot be used with thin pool volumes" error
  • shared/api/event/lifecycle: Fix typo in constant
  • lxd: Update response.SyncResponseLocation URL generation to use api.NewURL() helper
  • lxd/storage/volumes: Adds missing volume name to URL response in storagePoolVolumeTypePostRename
  • lxd/lifecycle: Reworks URL generation to use api.NewURL()
  • lxd/lifecycle/cluster/member: Update ClusterMemberAction.Event to use api.NewURL
  • lxd/lifecycle/instance/backup: Updates InstanceBackupAction.Event to clarify what backup name is expected
  • lxd/instance/backup: Pass full backup name to lifecycle.InstanceBackupRetrieved.Event
  • lxd/lifecycle/storage/volume: Make StorageVolumeAction.Event require volume with name and type
  • lxd/lifecycle/storage/volume/backup: Updates StorageVolumeBackupAction.Event to clarify the type of backup name required
  • lxd/storage/volumes/backup: Pass full backup name into lifecycle events
  • lxd/lifecycle/storage/volume/snapshot: Updates StorageVolumeSnapshotAction.Event to expect snapshot volume
  • lxd: Use lifecycle URL in SyncResponseLocation
  • lxd/lifecycle/storage/pool: Remove projectName arg from StoragePoolAction.Event
  • lxd/networks: Adds project to networksPost SyncResponseLocation response
  • lxd/storage/pools: Updates storagePoolsPost to use a common lifecycle var
  • lxd/storage/pools: Fix comment typo in storagePoolsPost
  • lxd/storage/pools: Updates storagePoolPut and storagePoolDelete to use updated lifecycle function
  • lxd/storage/volumes: Adds project to SyncResponseLocation in storagePoolVolumeTypePostRename
  • lxd/db/instances: Don't use query parameters with IN statement when loading instance config in InstanceList
  • lxd/db/instances: Use query.Params in GetProjectAndInstanceNamesByNodeAddress
  • lxd/db/instances: Use query.Params in GetProjectInstanceToNodeMap
  • lxd/db/instances: Use consistent IN format
  • lxd/db/instances: Remove unused generateInClauseParams function
  • lxd/db/network/forwards: Use query.Params in GetNetworkForwards
  • lxd/db/cluster: Don't use prepared statements in RemoveNodeFromClusterGroup and AddNodeToClusterGroup
  • lxd/db/images: Updates getImagesByFingerprintPrefix to use QueryScan rather than prepare
  • lxd/db/transaction: Removes unused prepare function
  • lxd/resources: Fix VPD parser crash
  • doc: add spellcheck
  • doc: add spellchecking to the tests
  • doc: add an extension to allow spelling exceptions
  • doc: update word list for spellchecker
  • doc: fix spelling README.md
  • doc: Update URLs for 5.0 branch
  • doc: fix spelling api-extensions.md
  • doc: fix spelling architectures.md
  • doc: fix spelling backup.md
  • doc: fix spelling events.md
  • doc: fix spelling faq.md
  • doc: fix spelling instances.md
  • doc: fix spelling security.md
  • doc: fix spelling server.md
  • doc: fix spelling network_bridge_resolved.md
  • doc: fix spelling metrics.md
  • doc: fix spelling projects.md
  • doc: fix spelling rest-api.md
  • doc: fix spelling network_bridge.md
  • doc: fix spelling network_macvlan.md
  • doc: fix spelling network_ovn.md
  • doc: fix spelling storage_btrfs.md
  • doc: fix spelling clustering.md
  • doc: fix spelling container-environment.md
  • doc: fix spelling database.md
  • doc: fix spelling dev-lxd.md
  • doc: fix spelling network_acls.md
  • doc: fix spelling userns-idmap.md
  • doc: fix spelling syscall-interception.md
  • doc: fix spelling requirements.md
  • doc: fix spelling remotes.md
  • doc: fix spelling storage_zfs.md
  • doc: fix spelling storage_lvm.md
  • doc: fix spelling storage_drivers.md
  • doc: fix spelling storage_dir.md
  • doc: fix spelling storage_cephfs.md
  • doc: fix spelling storage_ceph.md
  • doc: fix spelling network_sriov.md
  • doc: fix spelling network_physical.md
  • doc: fix spelling network_forwards.md
  • doc: fix spelling network_ovn_peers.md
  • doc: fix spelling network_zones.md
  • doc: fix spelling storage_add_volume.md
  • doc: fix spelling image_handling.md
  • doc: fix spelling migration.md
  • doc: fix spelling production-setup.md
  • doc: exclude some tags from spell checking
  • doc: allow Markdown syntax when we need markup in a link
  • doc: fix spelling authentication.md
  • doc: fix spelling cloud-init.md
  • doc: fix spelling containers.md
  • doc: fix spelling contributing.md
  • doc: fix spelling daemon-behavior
  • doc: fix spelling debugging.md
  • doc: fix spelling doc-cheat-sheet.md
  • doc: fix spelling networks.md
  • doc: fix spelling storage.md
  • doc: fix spelling network_bridge_firewalld.md
  • doc: fix spelling network_ovn_setup.md
  • doc: fix spelling storage_backup.md
  • doc: fix spelling installing.md
  • doc: fix spelling instance-exec.md
  • doc: fix spelling profiles.md
  • doc: fix spelling CONTRIBUTING.md
  • lxd/db/cluster/snapshots: Updates ToInstance to be more flexible
  • lxd: snapshot.ToInstance usage
  • lxd/db/instances: Refactors InstanceList into several smaller functions
  • lxd/db/instances: Adds snapshot support to InstancesToInstanceArgs and associated functions
  • lxd: Use consistent log context name for err
  • lxd/instances/get: Log instance render errors in doInstancesGet
  • lxd: Don't pass duplicate profiles into instance.Load
  • lxd/instance/drivers/driver/common: Updates Snapshots to avoid using tx.GetInstanceSnapshotsWithName
  • lxd/instance/instance/utils: Removes inefficient unused LoadFromAllProjects function
  • lxd/network/driver/ovn: Update Leases to use InstanceList
  • lxd/network/driver/bridge: Updates Leases to use InstanceList
  • lxd/instance/instance/utils: Removes unused LoadByProject function
  • lxd/instance: Reworks autoCreateInstanceSnapshots and autoCreateInstanceSnapshotsTask to use InstancesToInstanceArgs
  • lxd/daemon: Updates usage of autoCreateInstanceSnapshotsTask
  • lxd/instance: Update pruneExpiredInstanceSnapshotsTask to use tx.InstancesToInstanceArgs
  • lxd/instance: Reworks pruneExpiredInstanceSnapshotsTask to use tx.InstancesToInstanceArgs
  • lxd/instance/instance/utils: Removes unused LoadAllInternal function
  • shared/api: Add Ready state
  • shared/api: Add function to get status code from status name
  • lxd/profiles/utils: Updates getProfileInstancesInfo to use tx.InstancesToInstanceArgs
  • docs: Update storage create pool howto
  • lxd/config: Fix expanded show of instance snapshot
  • doc: update version of lxd-sphinx-extensions
  • doc: mark up default values correctly for clustering.md
  • doc: mark up default values correctly for network_zones.md
  • doc: mark up default values correctly for instances.md
  • doc: mark up default values correctly for production-setup.md
  • doc: mark up default values correctly for projects.md
  • doc: mark up default values correctly for network_bridge.md
  • doc: mark up default values correctly for network_macvlan.md
  • doc: mark up default values correctly for network_ovn.md
  • doc: mark up default values correctly for network_physical.md
  • doc: mark up default values correctly for storage_btrfs.md
  • doc: mark up default values correctly for storage_ceph.md
  • doc: mark up default values correctly for storage_cephfs.md
  • doc: mark up default values correctly for storage_dir.md
  • doc: mark up default values correctly for storage_lvm.md
  • doc: mark up default values correctly for storage_zfs.md
  • doc: mark up default values correctly for security.md
  • doc: mark up default values correctly for server.md
  • lxd/network/forwards: Add support for config patching in networkForwardPut
  • lxd/fsmonitor/drivers/errors: Removes unused variable ErrNotImplemented
  • lxd/storage/drivers/driver/common: Adds default "Not supported" functions
  • lxd/storage/drivers/driver/cephfs/volumes: Fall back to using common ("not supported") RefreshVolume function
  • lxd/storage/drivers/errors: Removes little used ErrNotImplemented
  • lxd/storage/backend/mock: Removes use of drivers.ErrNotImplemented
  • lxd/storage/backend/lxd: Switch to ErrNotSupported in CreateInstanceFromCopy
  • lxd/networks: Restrict network config view to admin users
  • lxd/storage/pools: Restrict storage pool config view to admin users
  • lxd/storage/drivers/driver/btrfs: Scan pool device source for BTRFS filesystems before mounting
  • lxd/db/instances: Adds snapshot support to instanceProfilesFill
  • lxd/db/instances: Adds fillProfiles argument to InstancesToInstanceArgs
  • lxd/instance/instance/utils: Switch to InstancesToInstanceArgs in LoadByProjectAndName
  • lxd/instance/instance/utils: Switch to InstancesToInstanceArgs in CreateInternal
  • lxd/instance/drivers/driver/common: Don't reload snapshot profiles in Snapshots
  • lxd/profiles/util: InstancesToInstanceArgs usage in getProfileInstancesInfo
  • lxd/db/instances: InstancesToInstanceArgs usage in InstanceList
  • lxd/instance: InstancesToInstanceArgs usage in autoCreateInstanceSnapshotsTask
  • lxd/instance: InstancesToInstanceArgs in pruneExpiredInstanceSnapshotsTask
  • lxd/db/instances: Remove inefficient InstanceToArgs function
  • test: Move devlxd-client into its own directory
  • test: Remove source/baz file at end of filemanip test
  • lxd/daemon: Add explicit instancesLoaded bool to indicate if shared mounts can be cleaned up
  • lxd/storage/drivers/utils: Adds loopDeviceSetup and loopDeviceAutoDetach functions
  • lxd/storage/drivers/driver/btrfs: Switch to loopDeviceSetup for loop device management
  • lxd/storage/drivers/driver/lvm: Switch to loopDeviceSetup for loop device management
  • lxd/storage/drivers/utils/cgo: Removes unused file
  • lxd/storage/cgo: Removes unused file
  • doc: update project description
  • doc: update Project and community section
  • shared/util/linux: Fix typo in comment of ExitStatus
  • shared/util/linux: Adds detection of RunError to ExitStatus
  • shared/validate/validate: Adds IsRequestURL function
  • test: Run proxy listener command before adding proxy device
  • test: Sleep longer when starting up proxy listener process after restart
  • client/util: Set transport.DialTLSContext in tlsHTTPClient
  • test: Add retries to udhcpc6 calls
  • test: Add retries to udhcpc calls
  • doc/reference: improve description of storage option
  • test: Keep retrying to signal to container to reboot in basic_usage
  • lxd/profiles/utils: Removes incorrect comment from doProfileUpdateInstance
  • lxd: Fixes API version for instances in project usedby.
  • lxd/db: Fix escaped slashes in storage volume URIs.
  • lxd/cluster/membership: Improve error in membershipCheckClusterStateForAccept
  • lxd/db/cluster: Improve URL generation.
  • client/lxd/cluster: No reason to use queryStruct in DeleteClusterMember
  • gomod: Update dependencies
  • workflows: Adds edge ppa's and removes make deps step.
  • lxd/storage/drivers/zfs: set atime=off and relatime=on
  • doc/reference: fix description of dir source param
  • lxd/cgroup/abstractions: Improve errors from GetIOStats
  • lxd/instance/instance/utils: Updates DeleteSnapshots to use more efficient Snapshots() function
  • lxd/instance/drivers: instance.DeleteSnapshots usage
  • shared/util: Adds context argument to RunCommandSplit, RunCommandInheritFds and RunCommandWithFds
  • shared/util: Adds RunCommandContext and deprecates RunCommand
  • lxd: RunCommand* context usage
  • shared/util: Unexports RunError fields and adds NewRunError function
  • shared/util: NewRunError usage
  • shared/util/linux: Use errors.As in ExitStatus
  • lxd/archive/archive: shared.NewRunError usage
  • lxd: RunError functions usage
  • cgo: ensure that lxd wrappers don't conflict with libc provided wrapper
  • doc/storage/zfs: include link to related YouTube video
  • doc/authentication: clarify what to specify for admin password
  • lxc/remote: the admin password prompt also accepts a token
  • i18n: Update translation templates
  • lxd/instance/drivers: Adds instance type to instance-created lifecycle event context.
  • doc/storage/zfs: {remove_snapshots,use_refquota,reserve_space} are bools
  • lxd/storage/drivers: use SI units
  • lxd/main_init_interactive: use SI units
  • lxd/storage/drivers/utils: Support CentOS 7 in loopDeviceSetup
  • test: Increase storage pool delete timeout to 20s
  • lxd/storage/storage: Adds UsedBy function
  • lxd: Use storagePools.UsedBy function
  • doc/migration: clean up "live migration" documentation
  • lxd/db/instances: Use stable sorting in GetInstanceSnapshotsWithName
  • lxd/instance/drivers: Use stable sorting
  • lxd/instances/get: Use stable sorting in doInstancesGet
  • lxd/resources/cpu: Use stable sorting in GetCPU
  • shared/api/instance: Adds GetParentAndSnapshotName function
  • shared/api/storage/pool/volume: Adds URL function to StorageVolume
  • lxd/storage/volumes: Fix volume get project resolution in storagePoolVolumeGet
  • lxd/project/project: Update StorageVolumeProjectFromRecord and StorageVolumeProject
  • lxd/db/storage/volumes: Rework GetStoragePoolVolumes to be more efficient
  • lxd/db/storage/volumes: Removes duplicate zero length check in GetStorageVolumeNodes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to use tx.GetStoragePoolVolumes
  • doc: use HTTPS for links to CRIU site and inotify man
  • lxd/storage/volumes: Update storage-pools/{name}/volumes/{type} handler to use storagePoolVolumesGet
  • lxd/storage/volumes: Remove unused storagePoolVolumesTypeGet
  • lxd/storage/volumes: Fix golint error in storagePoolVolumesTypePost
  • lxd/db/storage/volumes: Adds memberSpecific support to GetStoragePoolVolumes
  • lxd/storage/volumes: Adds target member support to storagePoolVolumesGet
  • lxd/db/images: Clarifies argument name in GetImagesFingerprints
  • lxd/db/images: Adds GetProjectsUsingImage function
  • lxd/storage/storage: Reworks UsedBy to use tx.GetStoragePoolVolumes
  • lxd/storage/backend/lxd: UsedBy usage in IsUsed
  • lxd/storage/pools: storagePools.UsedBy usage in storagePoolsGet
  • lxd/storage/pools: storagePools.UsedBy usage in storagePoolGet
  • lxd/db/storage/pools: Removes unused GetStoragePoolUsedBy function
  • shared/api/storage/pool/volume: Adds target awareness to URL
  • lxd/storage/volumes/utils: Removes unused supportedVolumeTypesInstances var
  • lxd-user: Fix use with clusters
  • shared/instance: Removes InstanceGetParentAndSnapshotName
  • lxd: api.GetParentAndSnapshotName usage
  • lxc: api.GetParentAndSnapshotName
  • lxd/db/storage/volumes: Adds support for StorageVolumeFilter to GetStoragePoolVolumes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to use tx.GetStoragePoolVolumes filtering
  • lxd/db/storage/volumes: Updates GetStoragePoolVolumes to return []StorageVolume
  • lxd/storage/storage: Updates UsedBy to use updated GetStoragePoolVolumes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to use updated GetStoragePoolVolumes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to avoid unnecessary conversions
  • lxd/storage/volumes/utils: Updates storagePoolVolumeUsedByGet to add target param
  • lxd/db/storage/volumes: Adds GetStoragePoolVolume function
  • lxd/storage/volumes/utils: Updates storagePoolVolumeUsedByGet to accept a db.StorageVolume
  • lxd/storage/volumes: Updates storagePoolVolumeUsedByGet usage
  • lxd/storage/volumes: Fix image in use detection in storagePoolVolumeDelete
  • lxd/projects: Ensure default project has features.networks
  • api: Adds storage_volumes_all_projects extension
  • client: Adds all-projects functions for storage volumes
  • shared/api: Add Project field to StorageVolume
  • doc/rest-api: Refresh swagger YAML
  • lxc/storage/volume: Adds --all-projects flag to lxc storage volume list
  • lxd/instances/get: Replace mentions of cluster node with member
  • lxd/db/storage/volumes: Removes Project field from StorageVolume
  • shared/api/storage/pool/volume: Remove projectName from URL function
  • lxd: Unify all-projects handling
  • lxd/events: Improve error handling in eventsSocket
  • lxd/storage/storage: Update UsedBy with updated URL function usage
  • lxd/storage/volumes: Adds all-projects support to storagePoolVolumesGet
  • i18n: Update translation templates
  • lxd/db/storage/volumes: Updates GetStoragePoolVolumes to accept variadic filters
  • lxd/storage/storage: tx.GetStoragePoolVolumes usage
  • lxd/storage/volumes: tx.GetStoragePoolVolumes usage
  • grafana: Only use instant queries on piechart graphs
  • lxd/device/nic_bridged: Fix static analysis
  • lxd/instance/instance/utils: Updates MoveTemporaryName to generate missing volatile.uuid
  • lxd/instance/post: instance.MoveTemporaryName usage
  • lxd/network/driver/bridge: Include error from n.populateAutoConfig
  • lxd/network/openvswitch/ovn: Lower case DNS names
  • lxd/storage/pools: Don't use project param when deleting images before pool deletion
  • lxd/db/storage/volumes: Removes unused GetStoragePoolVolumesNames function

試用環境

この新しい LXD リリースは私たちの デモサービス で利用できます。

ダウンロード

このリリースの tarball は ダウンロードページ から取得できます。

ビルド済みバイナリーは次のようにして使えます:

  • Linux: snap install lxd
  • MacOS: brew install lxc
  • Windows: choco install lxc

LXD 5.4 リリースのお知らせ

25th of July 2022

はじめに

LXD チームは LXD 5.4 のリリースをお知らせできることにとてもワクワクしています!

今回のリリースは、今後のリリースに含まれるかなりの新機能の始まりになるでしょう。新機能の 1 つは主要な新機能で、今後さらに必要となる機能の基盤となる機能です。

Enjoy!

アップグレード時の注意

vsock API の変更(LXD VM)

両方向の vsock インターフェース(下記参照)の作業の一環で、LXD VM 内部のホストからゲストへの通信での TLS の扱いがかなり壊れていることに気づきました。

サーバーとクライアントの認証はすべて正しく行われていたので、セキュリティの観点では懸念することはありません。特に理由もなく TLS over TLS を行っていたので、意味もなくオーバーヘッドが 2 倍になり、実際に REST/HTTP レイヤーがクライアントについての詳細にアクセスすることを妨げていました。

このリリースでは LXD と VM エージェントの両方をアップデートし、TLS の単一のレイヤーでのみ処理されるようにして、この問題を修正しました。残念ながら、これは後方互換性のある方法で処理できるものではありません…

この結果、LXD 5.4 へのアップグレードを行うと、すべての実行中の仮想マシンとのエージェントの通信が切断されます。これは lxc execlxc file に影響します。lxc restart で影響を受けた VM を再起動することで、更新されたバージョンのエージェントで VM を再起動され、この問題が修正されます。

新機能とハイライト

ロードバランサー(OVN)

このリリース最大の新機能です。ネットワークロードバランサーのコンセプトが LXD に導入されます。

既存のネットワークフォワード機能とコンセプトが似ていますが、ロードバランサーは特定のアドレスやポートが複数のターゲットを持て、OVN がソースとデスティネーションアドレスをハッシュ化することでロードバランシングを処理するという点で異なります。

この機能はすべて lxc network load-balancer を通して扱い、現時点では OVN ネットワークに限定されています。

ドキュメント : https://linuxcontainers.org/lxd/docs/latest/howto/network_load_balancers/

仕様 : https://discuss.linuxcontainers.org/t/lxd-network-load-balancers-ovn/14317

双方向 vsock インターフェース(VM)

LXD の VM では、LXD デーモンは仮想マシン内で動作するエージェント(lxd-agent)と相互に動作します。このような動作によって、lxc execlxc file のようなコマンドが、コンテナと同じように動作します。

これは、各 VM が vsock をリスンし、ホストがエージェントに接続することで行われます。
しかし、今回のリリースまで、エージェントからホストに接続する方法はありませんでした。

これはゲストの /dev/lxd API に少し機能が欠けていたという副作用以外にはほぼ問題がありませんでした。しかし、VM に関する機能の将来的に計画している作業で、本当にエージェントが直接ホストに接続する方法が必要でした。

今回のリリースで、LXD 自身が vsock をリスンし、VM が接続できるようになりました。通常のエージェント接続と同様に、この接続はすべて TLS 証明書によって認証されるため、LXD はどの VM と通信しているのか、そしてエージェント(もしくはエージェントキーにアクセスできる何か)が通信していることが確認できます。

仕様 : https://discuss.linuxcontainers.org/t/lxd-bidirectional-vsock-interface-for-vms/14066

ストレージドキュメントの見直し

先日のネットワークのドキュメントに続き、このリリースではストレージのドキュメントを大幅に見直し、再構成しました。

この作業で構造がよりクリアになり、いくつかのコンテンツが追加され、今後数回のリリースで進化を続けるでしょう。

ドキュメント : https://linuxcontainers.org/lxd/docs/latest/explanation/storage/

一貫性のあるストレージボリュームの設定

前述のドキュメント見直しで、ストレージボリュームの設定をストレージボリュームに適用する方法に矛盾があることが判明しました。

具体的には、ストレージプールは volume.XYZ のようなパターンの設定キーを持てます。これらのキーは新しく作成したボリュームに適用され、事実上デフォルト値として機能するはずです。

一貫性がなかったのは、すべてのボリュームキーがサポートされているわけではありませんでした。さらに、サポートされている場合でもキーがボリューム設定に正しくコピーされる場合もあれば、そうでない場合もあり、その場合プールからボリュームにキーが反映される場合もあり、プール構成が変更された時に問題となります。

LXD 5.4 では、すべてのボリュームキーがサポートされ、作成時にプールからボリュームにのみコピーされることですべての一貫性を保っています。

lxd-benchmark のプロジェクトサポート

ビルトインのベンチマークツールである lxd-benchmark (snap を使っている場合は lxd.benchmark)はここ数年間手が加えられていませんでした。最近このツールを引っ張り出してきたところ、プロジェクトのサポートがないことが問題であり、それを追加するのは簡単であることがわかりました。

このため、プロジェクトサポートが追加され、lxd-benchmark--project NAME 引数を取るようになりました。

すべての変更点(翻訳なし)

このリリースでの完全な変更点のリストは次の通りです:

すべてのChangeLogを見る
  • doc: storage: clarify moving of storage volumes
  • doc: fix version switcher to work for latest
  • lxd/network/openvswitch: Use %s so that delimiting quotes are not escaped.
  • shared/subprocess/manager: Improve errors in ImportProcess
  • doc: storage: clarify that most docs are about custom volumes
  • doc: fix typo
  • gomod: Switch to github for go-lxc
  • gomod: Update dependencies
  • lxd: Update to github path for go-lxc
  • lxc-to-lxd: Update to github path for go-lxc
  • lxd: Use liblxc's RuntimeLiblxcVersionAtLeast
  • shared/api: Fix typo in event name
  • shared/api: Add missing events
  • shared/api: Sort events
  • doc/events: Add missing events
  • doc/events: Sort entries
  • lxd/lifecycle: Use event names from api package
  • client: End all function comments with a full-stop.
  • client: Fixes imports.
  • lxc/config: End comments with a full-stop.
  • lxc/utils: End comments with a full-stop.
  • lxc/utils: Fix import order.
  • lxc: End comments with a full-stop.
  • lxc: Fixes import order.
  • lxc: Removes unnecessary whitespace.
  • lxc-to-lxd: Ends all comments with a full-stop.
  • lxd/apparmor: Ends all comments with a full-stop.
  • lxd/cgroup: Ends all comments with a full-stop.
  • lxd/bgp: Fixes import order.
  • lxd/cluster/config: Ends all comments with a full-stop.
  • lxd/cluster/config: Removes unnecessary whitespace.
  • lxd/cluster/config: Fixes imports.
  • lxd/cluster: Ends all comments with a full-stop.
  • lxd/cluster: Removes unnecessary whitespace.
  • lxd/cluster: Fixes imports.
  • lxd/config: Fixes imports.
  • lxd/config: Ends all comments with a full-stop.
  • lxd-generate: Ensure generated comments end with a full-stop.
  • lxd/db/cluster: Ends all comments with a full-stop.
  • lxd/db/cluster: Fixes imports.
  • lxd/db/generate/db: Removes unnecessary whitespace.
  • lxd/db/generate/db: Fixes imports.
  • lxd/db/generate/db: Ends all comments with a full-stop.
  • lxd/db/generate/lex: Ends all comments with a full-stop.
  • lxd/db/generate/lex: Fixes imports.
  • lxd/db/generate: Removes unnecessary whitespace.
  • lxd/db/generate: Fixes imports.
  • lxd/db/operationtype: Ends all comments with a full-stop.
  • lxd/db/query: Fixes imports.
  • lxd/db/schema: Ends all comments with a full-stop.
  • lxd/db: Removes unnecessary whitespace.
  • lxd/db: Fixes imports.
  • lxd/db: Ends all comments with a full-stop.
  • lxd/device/nictype: Removes unnecessary whitespace.
  • lxd/device: Ends all comments with a full-stop.
  • lxd/device: Removes unnecessary whitespace.
  • lxd/device: Fixes imports.
  • lxd/dnsmasq: Removes unnecessary whitespace.
  • lxd/endpoints: Fixes imports.
  • lxd/endpoints: Ends all comments with a full-stop.
  • lxd/filter: Fixes imports.
  • lxd/filter: Removes unnecessary whitespace.
  • lxd/firewall/drivers: Ends all comments with a full-stop.
  • lxd/firewall/drivers: Removes unnecessary whitespace.
  • lxd/fsmonitor/drivers: Ends all comments with a full-stop.
  • lxd/instance/drivers/qmp: Ends all comments with a full-stop.
  • lxd/instance/drivers/qmp: Removes unnecessary whitespace.
  • lxd/instance/drivers: Removes unnecessary whitespace.
  • lxd/instance/drivers: Fixes imports.
  • lxd/instance/drivers: Ends all comments with a full-stop.
  • lxd/instance: Ends all comments with a full-stop.
  • lxd/ip: Ends all comments with a full-stop.
  • lxd/lifecycle: Ends all comments with a full-stop.
  • lxd/maas: Ends all comments with a full-stop.
  • lxd/metrics: Ends all comments with a full-stop.
  • lxd/migration: Ends all comments with a full-stop.
  • lxd/network/acl: Removes unnecessary whitespace.
  • lxd/network/openvswitch: Removes unnecessary whitespace.
  • lxd/network/zone: Fixes imports.
  • lxd/network: Removes unnecessary whitespace.
  • lxd/network: Ends all comments with a full-stop.
  • lxd/node: Ends all comments with a full-stop.
  • lxd/node: Fixes imports.
  • lxd/operations: Ends all comments with a full-stop.
  • lxd/operations: Removes unnecessary whitespace.
  • lxd/project: Removes unnecessary whitespace.
  • lxd/project: Ends all comments with a full-stop.
  • lxd/rbac: Ends all comments with a full-stop.
  • lxd/request: Ends all comments with a full-stop.
  • lxd/resources: Ends all comments with a full-stop.
  • lxd/response: Ends all comments with a full-stop.
  • lxd/seccomp: Removes unnecessary whitespace.
  • lxd/seccomp: Fixes imports.
  • lxd/storage/drivers: Ends all comments with a full-stop.
  • lxd/storage/drivers: Removes unnecessary whitespace.
  • lxd/storage/memorypipe: Ends all comments with a full-stop.
  • lxd/storage: Removes unnecessary whitespace.
  • lxd/storage: Ends all comments with a full-stop.
  • lxd/sys: Ends all comments with a full-stop.
  • lxd/sys: Fixes imports.
  • lxd/task: Removes unnecessary whitespace.
  • lxd/task: Fixes imports.
  • lxd/template: Ends all comments with a full-stop.
  • lxd/util: Fixes imports.
  • lxd/util: Ends all comments with a full-stop.
  • lxd/util: Removes unnecessary whitespace.
  • lxd: Fixes imports.
  • lxd: Removes unnecessary whitespace.
  • lxd: Ends all comments with a full-stop.
  • lxd: Fixes misspelling.
  • lxd-agent: Fixes imports.
  • lxd-agent: Removes unnecessary whitespace.
  • lxd-agent: Ends all comments with a full-stop.
  • lxd-benchmark/benchmark: Removes unnecessary whitespace.
  • lxd-migrate: Ends all comments with a full-stop.
  • shared/api: Ends all comments with a full-stop.
  • shared/cancel: Ends all comments with a full-stop.
  • shared/cmd: Ends all comments with a full-stop.
  • shared/dnsutil: Ends all comments with a full-stop.
  • shared/eagain: Ends all comments with a full-stop.
  • shared/i18n: Ends all comments with a full-stop.
  • shared/idmap: Ends all comments with a full-stop.
  • shared/idmap: Fixes imports.
  • shared/ioprogress: Ends all comments with a full-stop.
  • shared/logger: Ends all comments with a full-stop.
  • shared/osarch: Ends all comments with a full-stop.
  • shared/simplestreams: Ends all comments with a full-stop.
  • shared/subprocess: Ends all comments with a full-stop.
  • shared/subprocess: Fixes imports.
  • shared/units: Ends all comments with a full-stop.
  • shared/version: Ends all comments with a full-stop.
  • shared: Ends all comments with a full-stop.
  • shared: Fixes imports.
  • shared: Removes unnecessary whitespace.
  • test/macaroon-identity: Fixes imports.
  • test/macaroon-identity: Ends all comments with a full-stop.
  • golangci: Adds golangci-lint configuration file.
  • doc: add link to YouTube video about image handling
  • lxd/instance/lxc: Don't fail on missing apparmor
  • client: Inserts newlines after blocks.
  • fuidshift: Inserts newlines after blocks.
  • lxc: Inserts newlines after blocks.
  • lxc-to-lxd: Inserts newlines after blocks.
  • lxd-agent: Inserts newlines after blocks.
  • lxd-benchmark: Inserts newlines after blocks.
  • lxd-migrate: Inserts newlines after blocks.
  • lxd-user: Inserts newlines after blocks.
  • shared: Inserts newlines after blocks.
  • test: Inserts newlines after blocks.
  • lxd/archive: Inserts newlines after blocks.
  • lxd/backup: Inserts newlines after blocks.
  • lxd/bgp: Inserts newlines after blocks.
  • lxd/cgroup: Inserts newlines after blocks.
  • lxd/cluster: Inserts newlines after blocks.
  • lxd/config: Inserts newlines after blocks.
  • lxd/db: Inserts newlines after blocks.
  • lxd/device: Inserts newlines after blocks.
  • lxd/dns: Inserts newlines after blocks.
  • lxd/dnsmasq: Inserts newlines after blocks.
  • lxd/endpoints: Inserts newlines after blocks.
  • lxd/events: Inserts newlines after blocks.
  • lxd/filter: Inserts newlines after blocks.
  • lxd/firewall/drivers: Inserts newlines after blocks.
  • lxd/fsmonitor/drivers: Inserts newlines after blocks.
  • lxd/instance: Inserts newlines after blocks.
  • lxd/ip: Inserts newlines after blocks.
  • lxd/maas: Inserts newlines after blocks.
  • lxd/metrics: Inserts newlines after blocks.
  • lxd/migration: Inserts newlines after blocks.
  • lxd/network: Inserts newlines after blocks.
  • lxd/operations: Inserts newlines after blocks.
  • lxd/project: Inserts newlines after blocks.
  • lxd/rbac: Inserts newlines after blocks.
  • lxd/request: Inserts newlines after blocks.
  • lxd/resources: Inserts newlines after blocks.
  • lxd/response: Inserts newlines after blocks.
  • lxd/rsync: Inserts newlines after blocks.
  • lxd/seccomp: Inserts newlines after blocks.
  • lxd/storage: Inserts newlines after blocks.
  • lxd/sys: Inserts newlines after blocks.
  • lxd/task: Inserts newlines after blocks.
  • lxd/util: Inserts newlines after blocks.
  • lxd/vsock: Inserts newlines after blocks.
  • lxd: Inserts newlines after blocks.
  • lxc: Removes all one-line assign and check statements.
  • lxc-to-lxd: Removes all one-line assign and check statements.
  • lxd/backup: Removes all one-line assign and check statements.
  • lxd/cluster: Removes all one-line assign and check statements.
  • lxd-generate: One-line assign and check statements.
  • lxd/db/generate: Removes all one-line assign and check statements.
  • lxd/db/generate: Use multiline import syntax.
  • lxd/db: Removes all one-line assign and check statements.
  • lxd/db: Use multiline import syntax.
  • lxd/config: Use multiline import syntax.
  • lxd/device: Removes all one-line assign and check statements.
  • lxd/device: Use multiline import syntax.
  • lxd/dnsmasq: Removes all one-line assign and check statements.
  • lxd/firewall/drivers: Removes all one-line assign and check statements.
  • lxd/firewall/drivers: Use multiline import syntax.
  • lxd/fsmonitor/drivers: Use multiline import syntax.
  • lxd/instance/drivers: Removes all one-line assign and check statements.
  • lxd/network/acl: Removes all one-line assign and check statements.
  • lxd/network/openvswitch: Removes all one-line assign and check statements.
  • lxd/network: Removes all one-line assign and check statements.
  • lxd/refcount: Removes all one-line assign and check statements.
  • lxd/resources: Removes all one-line assign and check statements.
  • lxd/response: Removes all one-line assign and check statements.
  • lxd/rsync: Removes all one-line assign and check statements.
  • lxd/seccomp: Removes all one-line assign and check statements.
  • lxd/storage/drivers: Removes all one-line assign and check statements.
  • lxd/storage: Removes all one-line assign and check statements.
  • lxd/util: Removes all one-line assign and check statements.
  • lxd/util: Use multiline import syntax.
  • lxd: Removes all one-line assign and check statements.
  • lxd-agent: Removes all one-line assign and check statements.
  • lxd-migrate: Removes all one-line assign and check statements.
  • shared/api: Use multiline import syntax.
  • shared/cancel: Use multiline import syntax.
  • shared/idmap: Removes all one-line assign and check statements.
  • shared/instancewriter: Removes all one-line assign and check statements.
  • shared/termios: Removes all one-line assign and check statements.
  • shared/usbid: Removes all one-line assign and check statements.
  • shared: Removes all one-line assign and check statements.
  • test: Removes all one-line assign and check statements.
  • test/lint: Adds shell based linters.
  • Makefile: Updates static-analysis target.
  • test/suites: Removes static analysis suite.
  • workflows: Adds static analysis job.
  • lxd/network/driver/common: Fix comment typos
  • lxd/db/network/forwards: Fix error handling in GetNetworkForward
  • lxd/network/driver/common: Adds forwardTarget type
  • lxd/network/driver/bridge: Update forwardConvertToFirewallForwards to support new forward target type
  • lxd/network/driver/common: Adds usageType field to externalSubnetUsage
  • lxd/network/driver/common: Update forwardValidate to use forwardTarget type
  • lxd/network/driver/bridge: Update subnet usage to use usageType
  • lxd/network/driver/ovn: Updates to support subnet use usageType field
  • lxd/network/openvswitch/ovn: Updates LoadBalancerApply to support multiple targets via OVNLoadBalancerTarget
  • lxd/network/driver/ovn: Update forwardFlattenVIPs to support updated openvswitch.OVNLoadBalancerVIP
  • lxd/network/driver/ovn: Fix network ForwardUpdate revert
  • test/lint/client-imports: grep for fixed string before sorting
  • test/lint/i18n-up-to-date: move lxd.pot instead of copying it
  • test/lint/mixed-whitespace: only process files with .sh extention
  • test/lint/mixed-whitespace: only process files with .sh extention
  • test/lint/negated-is-bool: use git grep and only check .go files
  • test/lint/newline-after-block: use git ls-files instead of find
  • test/lint/no-short-form-imports: use git grep and avoid early exit
  • test/lint/trailing-space: use git grep and only check .sh files
  • Makefile: use run-parts to run test/lint
  • test/lint: tell git grep to consider tracked and untracked files
  • test/lint: tell git ls-files to consider tracked and untracked files
  • lxd/network/driver/ovn: Inserts newlines after blocks.
  • i18n: Update translation templates
  • test/lint/i18n-up-to-date: don't leave dirty .po files behind
  • workflows: Removes unit tests and reinstates ubuntu client tests.
  • lxd/db/generate/lex: Use cases.Title instead of deprecated strings.Title.
  • lxd/db/generate/db/method/v2: Fix config error handling
  • lxd/db/cluster/mapper: Update generated code
  • doc/ovn: fix steps for OVN cluster setup
  • doc: fix nested ordered lists
  • test: Update test_container_devices_disk_socket to test both start time and hotplug
  • test: Adds test_container_devices_disk_char to check passing char devices as disks
  • workflows/static-analysis: Download but do not update dependencies.
  • gomod: Update dependencies
  • client: Move to bakery.v3
  • lxc: Move to bakery.v3
  • lxd-migrate: Move to bakery.v3
  • lxd: Move to bakery.v3
  • test: Move to bakery.v3
  • gomod: Update dependenies
  • lxd/resources: Handle invalid VPD lengths
  • lxd/response: Fix swagger structs
  • doc/rest-api: Refresh swagger YAML
  • lxd/db/cluster/projects: Improve error in ToAPI
  • lxd/db/instances: Optimise query pattern for InstanceList
  • lxd/db/instance: Remove profiles arg from instanceFunc in InstanceList
  • lxd: InstanceList updated usage
  • lxd-benchmark: Add --project flag
  • lxd/db/instances/test: Specify expected and actual order correctly in TestInstanceList
  • lxd/db/instances: InstanceList
  • lxd/db/instances: Adds InstanceListOpts type to allow retrieving config and devices optional for InstanceList
  • lxd: Update InstanceList usage
  • api: Adds network_load_balancer API extension
  • shared/api: Adds network load balancer types
  • shared/api/event/lifecycle: Adds network load balancer lifecycle constants
  • lxd/lifecycle/network/load/balancer: Adds network load balancer lifecycle helper
  • lxd/db/cluster: Adds networks_load_balancers and networks_load_balancers_config tables
  • lxd/db/network/load/balancers: Adds network load balancer DB functions
  • lxd/network: Adds LoadBalancers field to Info and enables it for OVN networks
  • lxd/network/driver/common: Adds loadBalancerPortMap type
  • lxd/network/driver/common: Adds subnetUsageNetworkLoadBalancer constant
  • lxd/network: Add load balancer functions to interface and common driver
  • lxd/network/driver/ovn: Updates getExternalSubnetInUse to account for load balancers
  • lxd/network/driver/ovn: Load balancer management functions
  • lxd/network/load/balancers: Adds load balancer API endpoints
  • client/lxd/server: Adds CheckExtension function
  • client: Adds network load balancer functions
  • lxc: Adds network load balancer commands
  • doc/rest-api: Refresh swagger YAML
  • i18n: Update translation templates
  • doc: Add missing network forward delete section
  • doc: Adds network load balancer documentation
  • lxd/storage/drivers/volume: Don't use short arguments in NewVolume
  • lxd/storage/backend/lxd: Improve logging in CreateInstanceFromBackup
  • doc/storage: structure configuration options section
  • doc/storage: structure driver notes
  • lxd/instance/qemu: Fix qemuCPU template broken numa section
  • lxd/storage/backend/lxd: Add missing size.state check to UpdateInstance
  • lxd/storage/backend/lxd: Replaces instanceEffectiveRootVolume with applyInstanceRootDiskOverrides
  • lxd/storage/backend/lxd: b.applyInstanceRootDiskOverrides usage
  • lxd/storage/backend: Update b.applyInstanceRootDiskOverrides usage in CreateInstanceFromCopy
  • test: Updates tests to check for instance root disk size not leaking into storage volume DB record
  • lxd-agent: Remove legacy code
  • lxd/vsock: Undo double TLS
  • lxd-agent: Undo double TLS
  • lxd/instance/operationlock: Allow InstanceOperation.Action() to be called on nil InstanceOperation
  • lxd/instance/drivers/driver/lxc: Don't wait for update operation to complete when removing disk from running container
  • Revert "lxd/db/instances: Adds InstanceListOpts type to allow retrieving config and devices optional for InstanceList"
  • Revert "lxd: Update InstanceList usage"
  • test: Fixes lint errors for shellcheck 0.8.0.
  • workflows: Installs shellcheck version 0.8.0.
  • Makefile: Warns if shellcheck version is not 0.8.0.
  • doc/storage: add introductions for storage drivers
  • doc/storage: clean up terminology
  • doc/storage: clean up driver notes
  • doc/storage: clean up tables
  • doc/storage/ceph: add information about remote storage
  • doc/storage/cephfs: clarify that the file system must exist
  • doc/instances: add link to NVIDIA video
  • lxd: Replace use of cluster "node" with "member" in user facing text
  • doc: add a more complete prometheus.yaml example
  • doc/networks: move load balancers documentation under OVN
  • lxd/db/generate/db/method/v2: Properly attach package name for external calls
  • lxd/db/generate/db/stmt: Allow overriding table name with config key
  • lxd/db/generate/db/method/v2: Limit generated method references to same package
  • doc/networks: small fixes to load balancer docs
  • lxd/resources: Better handle invalid VPD
  • doc/storage: add tip about volume.* configuration
  • doc/storage: remove limitation about XFS as file system for Ceph
  • doc/storage: remove mentions of ceph.osd.force_reuse
  • doc: Fix use of setup/set up
  • lxd-agent: Always close file
  • lxd-agent: Introduce CONNECTED state
  • shared/api: Add API10Put
  • lxd-agent: Add PUT /1.0 endpoint
  • lxd/endpoints: Add vsock endpoint
  • lxd/vsock: Add port argument to HTTPClient
  • lxd/instance: Add VM interface
  • lxd/instance/drivers: Add advertiseVsockAddress
  • lxd/instance/drivers: Add AgentCertificate
  • lxd/db/instances: Add GetLocalInstanceWithVsockID
  • shared/api: Add VsockServerGet
  • lxd/response: Add devLxdResponse
  • lxd/devlxd: Use response.DevLxdResponse
  • lxd/devlxd: Allow setting hoist function for devlxd server
  • lxd: Add vsock server
  • lxd-agent: Use vsock interface for devlxd
  • lxd/instance/drivers/qemu: Handle LXD-AGENT-READY event
  • lxd/instance/drivers/qmp: Call event handler if lxd-agent becomes ready
  • lxd/instance/drivers/qemu: Remove instance-data file
  • api: Add vsock_api
  • lxd/instance/drivers: Handle security.devlxd config change
  • lxd/endpoints: Update endpoints test
  • lxd/storage: Add poolAndVolumeCommonRules function
  • lxd/storage/drivers: Support common pool and volume configuration options
  • lxd/storage/drivers: Support for propagation of the volume.* configuration options to the new storage volume
  • doc: Update storage config keys propagation
  • tests: Test propagation volume.* config keys for new storage volumes
  • lxd/storage/drivers/driver/ceph: Mark ceph.osd.force_reuse as deprecated
  • scripts/bash/lxd-client: Remove ceph.osd.force_reuse
  • lxc/monitor: Clarify that --log-level can only be used with pretty formatting mode
  • i18n: Update translation templates
  • doc/storage: add a howto for launching instances in a specific pool
  • doc/storage: add howto for resizing storage
  • doc/storage: "size" option missing for Btrfs & LVM storage pools
  • lxd/storage/drivers/driver/lvm/utils: Fix parse errors when instance not running
  • doc/storage: move content from FAQ to storage section
  • lxd/resources: Better handle ethtool errors
  • lxd/instance/drivers: Handle QEMU I/O errors
  • lxd/db/cluster: Make config table value fields NOT NULL
  • client: Use 30s HTTP header timeout in GetImageFile and GetPrivateImageFile
  • lxd/daemon/images: Use 30s HTTP header timeout in ImageDownload
  • lxd/db/node: Make config table value fields NOT NULL
  • lxd/instance/drivers/driver/qemu: Fix instance reference leak in getMonitorEventHandler
  • doc: Update cloud-init.md with user-data examples
  • lxd/instance/drivers: Rename LXD-AGENT-READY to LXD-AGENT-STARTED
  • lxd/instance/drivers/qmp: Rename agentReady to agentStarted
  • lxd/instance/drivers: Rename AgenReady to AgentStarted
  • lxd/db/generate/db/method: Fix v1 generator code style
  • lxd/devices: Improve comments in devicesRegister
  • lxd/db/instances: Add support for instancetype.Any to InstanceList
  • lxd/instance/instance/utils: Updates LoadNodeAll to use InstanceList
  • lxd/instance: Updates instanceLoadNodeProjectAll to use InstanceList
  • lxd/cluster/config/config: Adds InstancesNICHostname function
  • lxd/device/device/common: Updates generateHostName to use d.state.GlobalConfig.InstancesNICHostname
  • lxd/cluster/config/config: Adds BackupsCompressionAlgorithm function
  • lxd/backup: Use s.GlobalConfig.BackupsCompressionAlgorithm
  • lxd/certificates: Updates certificatesPost to use config.TrustPassword
  • lxd/cluster/config/config: Adds NetworkOVNIntegrationBridge function
  • lxd/device/nic/ovn: Use d.state.GlobalConfig.NetworkOVNIntegrationBridge
  • lxd/cluster/config/config: Adds ImagesCompressionAlgorithm function
  • lxd/images: Updates imgPostInstanceInfo to use d.State().GlobalConfig.ImagesCompressionAlgorithm
  • lxd/cluster/config/config: Adds NetworkOVNNorthboundConnection function
  • lxd/network/openvswitch/ovn: Updates NewOVN to use s.GlobalConfig.NetworkOVNNorthboundConnection
  • lxd/instance/drivers/driver/common: Updates MAAS functions to use d.state.GlobalConfig.MAASController
  • lxd/cluster/config/config: Removes unused GetString function
  • lxd/cluster/config/config: Adds ImagesAutoUpdateCached function
  • lxd/instances/post: Updates createFromImage to use GlobalConfig.ImagesAutoUpdateCached
  • lxd/cluster/config/config: Removes unused GetBool function
  • lxd/cluster/config/config: Adds ImagesAutoUpdateIntervalHours function
  • lxd/daemon/images: Updates ImageDownload to use GlobalConfig.ImagesAutoUpdateIntervalHours
  • lxd/images: Updates autoUpdateImage to use GlobalConfig.ImagesAutoUpdateIntervalHours
  • lxd/cluster/config/config: Adds ImagesRemoteCacheExpiryDays function
  • lxd/images: Updates pruneExpiredImagesInProject to use GlobalConfig.ImagesRemoteCacheExpiryDays
  • lxd/cluster/config/config: Removes unused GetInt64 function
  • lxd/cluster/config/config: Removes unused configGet function
  • lxd/storage/utils: Remove unnecessary tx.GetLocalNodeName from VolumeUsedByExclusiveRemoteInstancesWithProfiles
  • lxd/network/network/utils/sriov: Remove unnecessary tx.GetLocalNodeName from SRIOVGetHostDevicesInUse
  • lxd/network/driver/bridge: Remove unnecessary tx.GetLocalNodeName from ForwardCreate
  • lxd/api/cluster: Remove unnecessary tx.GetLocalNodeName from clusterGet
  • lxd/db/node: Adds comment about usage to GetLocalNodeName
  • lxd/events: Remove unnecessary tx.GetLocalNodeName from eventsSocket
  • lxd/instance/instance/utils: Remove unnecessary tx.GetLocalNodeName from CreateInternal
  • lxd/instances/post: Remove unnecessary tx.GetLocalNodeName from createFromCopy
  • lxd/profiles/utils: Remove unnecessary tx.GetLocalNodeName from doProfileUpdate
  • lxd/profiles/utils: Remove unnecessary tx.GetLocalNodeName from doProfileUpdateCluster
  • lxd/storage/backend/lxd: Remove unnecessary tx.GetLocalNodeName from ImportInstance
  • lxd/storage/pools: Remove unnecessary tx.GetLocalNodeName from storagePoolsPostCluster
  • shared/api: Remove non-API structs
  • lxd-agent: Add API package
  • lxd-agent: Update for new API structs
  • lxd: Update for new API structs
  • gomod: Update dependencies
  • i18n: Update translations from weblate

試用環境

この新しい LXD リリースは私たちの デモサービス で利用できます。

ダウンロード

このリリースの tarball は ダウンロードページ から取得できます。

ビルド済みバイナリーは次のようにして使えます:

  • Linux: snap install lxd
  • MacOS: brew install lxc
  • Windows: choco install lxc

LXD 5.3 リリースのお知らせ

24th of June 2022

はじめに

LXD チームは LXD 5.3 のリリースをお知らせできることにとてもワクワクしています!

我々は多数の内部マイグレーションとストレージロジック再構築、テストの拡充、次の LXD 機能の初期調査に重点を置いているので、LXD 5.3 は主にバグフィックスといくつかの小さな機能のみのリリースになっています。

Enjoy!

新機能とハイライト

raw.qemu サポートの拡張

新たに raw.qemu.conf 設定キーを追加しました。これにより、生成された QEMU 設定の一部を個別に上書きしたり、生成された設定にデバイスやデバイス設定キーを追加したりできます。

この機能に関する更なる詳細はこちらをご覧ください: https://linuxcontainers.org/lxd/docs/latest/instances/#overriding-qemu-configuration

cephfs ストレージプールでの fscache サポート

Ceph ファイルシステムがカーネルの fscache の使用をサポートしました。
これは、NFS や他のネットワークファイルシステムと同様に、cachefilesd のようなユーザースペースのキャッシュデーモンとやりとりできます。

LXD が管理する cephfs プールで fscache が使用できるように、ストレージプールで cephfs.fscachetrue に設定できるようになりました。

lxd-migrate バイナリ

LXD 5.3 以降、ビルド済み lxd-migrate バイナリーが LXD Github releases ページからダウンロードできます。これで、手動でビルドしなくてもソースマシン上で lxd-migrate が使えます。

すべての変更点

このリリースでの完全な変更点のリストは次の通りです:

すべてのChangeLogを見る
  • lxd/db/cluster/profiles.mapper: Add cluster.Profile and generated methods
  • lxd/db/cluster/profiles: Add ToAPI and GetProfileIfEnabled
  • shared/api/profile: Add profile URL method
  • lxd/resources: Handle ethtool not supported
  • client: Move image profile override to ImageCopyArgs
  • lxc/image: Update for Profiles in ImageCopyArgs
  • lxc/profile: Fix bad target project handling
  • tests: Fix bad profile copy test
  • lxd/main_forkfile: Change counting model
  • lxd/instance/qemu: Implement qemuMemorySections
  • lxd/instance/qemu: Replace qemuMemory template with qemuMemorySections
  • lxd/instance/qemu: Implement qemuSerialSections
  • lxd/instance/qemu: Replace qemuSerial template with qemuSerialSections
  • lxd/instance/qemu: Implement qemuPCIeSections
  • lxd/instance/qemu: Replace qemuPCIe template with qemuPCIeSections
  • lxd/instance/qemu: Implement qemuSCSISections
  • lxd/instance/qemu: Replace qemuSCSI template with qemuSCSISections
  • lxd/instance/qemu: Implement qemuBalloonSections
  • lxd/instance/qemu: Replace qemuBalloon template with qemuBalloonSections
  • lxd/instance/qemu: Implement qemuRNGSections
  • lxd/instance/qemu: Replace qemuRNG template with qemuRNGSections
  • lxd/instance/qemu: Implement qemuVsockSections
  • lxd/instance/qemu: Replace qemuVsock template with qemuVsockSections
  • lxd/instance/qemu: Implement qemuGPUSections
  • lxd/instance/qemu: Replace qemuGPU template with qemuGPUSections
  • lxd/instance/qemu: Implement qemuKeyboardSections
  • lxd/instance/qemu: Replace qemuKeyboard template with qemuKeyboardSections
  • lxd/instance/qemu: Implement qemuTabletSections
  • lxd/instance/qemu: Replace qemuTablet template with qemuTabletSections
  • lxd/instance/qemu: Refactor qemuBaseSections to struct opts arg
  • lxd/events/common: Ignore connection close errors in Close
  • doc: move content around
  • lxd/instance/qemu: Implement qemuCPUSections
  • lxd/instance/qemu: Replace qemuCPU template with qemuCPUSections
  • lxd/instance/qemu: Implement qemuControlSocketSections
  • lxd/instance/qemu: Replace qemuControlSocket template with qemuControlSocketSections
  • lxd/instance/qemu: Implement qemuConsoleSections
  • lxd/instance/qemu: Replace qemuConsole template with qemuConsoleSections
  • lxd/instance/qemu: Implement qemuDriveFirmwareSections
  • lxd/instance/qemu: Replace qemuDriveFirmware template with qemuDriveFirmwareSections
  • lxd/events: Use cancel.Canceller for done indicator
  • doc: add and update content
  • doc: allow center-aligning table cells
  • doc: fix version numbers in the version switcher
  • lxd/db/profiles: Keep minimal db.Profile
  • lxd: Use new cluster.Profile methods
  • lxd/main/test: Update tests
  • lxd/db/cluster/instances.mapper: Generate cluster package methods for instances
  • shared/api/instance: Add Instance URL method
  • lxd/profiles: Add profileUsedBy
  • lxd/db/db: Fill cluster PreparedStmts in ForLocalInspection
  • lxd/instance/lxc: Stop forkfile on restore
  • lxd/operations/operations: Renames Run to Start
  • lxd: op.Start usage
  • lxd/operations/operations: Renames WaitFinal to Wait, and adds context support
  • lxd/operations: op.Wait usage
  • lxd/operations/operations: Fix possible races on accessing status property
  • lxd/operations/operations: Store operation error as error type rather than string
  • lxd/operations/operations: Use contextual logging
  • client/operations: Get error text verbatim in setupListener
  • lxd/images: Fix bug with operation run function returning empty error in imageExportPost
  • lxd/state: Adds ServerName field placeholder for non-cgo builds
  • lxd/operations/linux: Removes getServerName function
  • lxd/operations/operations: Used cached state.ServerName rather than looking up server name for every operation
  • lxd/db/node: Fix crash in nodes by avoiding reusing the rows var in defer
  • lxd/instance/qemu: Implement qemuDriveConfigSections
  • lxd/instance/qemu: Replace qemuDriveConfig template with qemuDriveConfigSections
  • lxd/instance/qemu: Implement qemuDriveDirSections
  • lxd/instance/qemu: Replace qemuDriveDir template with qemuDriveDirSections
  • lxd/instance/qemu: Implement qemuPCIPhysicalSections
  • lxd/instance/qemu: Replace qemuPCIPhysical template with qemuPCIPhysicalSections
  • lxd/instance/qemu: Implement qemuGPUDevPhysicalSections
  • lxd/instance/qemu: Replace qemuGPUDevPhysical template with qemuGPUDevPhysicalSections
  • lxd/storage/backend/lxd: Don't close migration socket on error
  • lxd/instance/qemu: Implement qemuUSBSections
  • lxd/instance/qemu: Replace qemuUSB template with qemuUSBSections
  • lxd/instance/qemu: Implement qemuTPMSections
  • lxd/instance/qemu: Replace qemuTPM template with qemuTPMSections
  • doc: update info on how to grow a ZFS pool
  • doc: use the same order for drivers
  • doc: storage: add a how-to for creating a storage pool
  • doc: storage: move examples for creating a storage pool
  • doc: storage: clean up and align examples
  • lxd/instance/drivers/driver/qemu: Don't reference absolute times in op.Reset comments
  • lxd/instance/operationlock/operationlock: Adds ResetTimeout for custom reset timeouts
  • lxd/instance/drivers/driver/lxc: Use ticker in Shutdown operation lock keepalive
  • lxd/instance/drivers/driver/qemu: Use ticker in Shutdown operation lock keepalive
  • lxd/instance/drivers/driver/lxc: Use operationlock.TimeoutShutdown in onStop
  • lxd/instance/drivers/driver/qemu: Use operationlock.TimeoutShutdown in onStop
  • lxd/storage/drivers/driver/zfs/volumes: Use operationlock.TimeoutShutdown in UnmountVolume
  • lxd/instance/drivers/driver/lxc: Reworks revert clean up in FileSFTPConn
  • lxd/instance/drivers/driver/lxc: Removes double call to defer in stopForkfile
  • lxd-agent: Consistent use of revert name
  • lxd: Consistent use of revert name
  • lxd-migrate: Consistent use of revert name
  • shared: Consistent use of revert name
  • lxd/instance/operationlock/operationlock: Adds ActionCreate constant
  • lxd/instance/instance/utils: Use ActionCreate operation lock constant in CreateInternal
  • lxd/instance/instance/interface: Adds LockExclusive definition
  • lxd/instance/drivers/driver/lxc: Log path in IdmappedStorage
  • lxd/instance/drivers/driver/lxc: Improve comment in FileSFTPConn
  • lxd/instance/drivers/driver/lxc: Implement LockExclusive
  • lxd/instance/drivers/driver/qemu: Whitespace in Restore
  • lxd/instance/drivers/driver/qemu: Implement LockExclusive
  • lxd/instance: Use inst.LockExclusive in instanceCreateAsCopy
  • lxd/instances/post: Use inst.LockExclusive in createFromMigration
  • lxd/instances/post: Removes duplicated in createFromCopy
  • lxd/storage/drivers/driver/zfs/volumes: Fix comment
  • lxd/daemon/images: Use contextual logging in imageOperationLock
  • lxd/instance/qemu: Move common test run code into a separate function
  • doc: storage: add examples for CephFS
  • doc: storage: add "source" option for all storage drivers
  • doc: storage: Clarify driver names
  • lxd/instance/qemu: Remove usage of a temporary strings.Builder instance
  • lxd/instance/qemu: Remove "Sections" suffix from config builders
  • lxd/storage/drivers/zfs: Fix VM migration
  • lxd-agent/events: Ensure connection is closed on function return in eventsSocket
  • lxd: Ensure events connection is closed on function return
  • lxd: Wait for operations to be finished in scheduled tasks
  • lxd/images: Adds imageTaskMu to prevent image related tasks from running concurrently with each other
  • lxd: Contextual logging
  • lxd/operations/operations: Improves comment on Wait
  • test: Rename FIX ME to FIXME for consistency with ther FIXMEs
  • lxd/storage/backend/lxd: Moves migration index header send/receive into own functions
  • lxd/migration/migration/volumes: Clarify that Config field only used for custom volumes
  • lxd/storage/backend/lxd: Improve error in CreateInstanceFromMigration
  • lxd/storage/backend/lxd: Fix bug in CreateCustomVolumeFromMigration that prevented refreshing volume with custom mount settings
  • doc: storage: add information about clustering
  • doc: storage: add instructions for adding storage volumes
  • shared: Export the Msg field in RunError
  • lxd/archive: Restore squashfs unpack behavior
  • doc/howto/ovn: Fix incorrect config syntax
  • lxd/events: Update API description
  • doc/rest-api: Refresh swagger YAML
  • doc: storage: clarification about sharing of storage volumes
  • lxd/instance/qemu: Support running inside a LXD container
  • lxd/operations: Fix crash on nil state
  • chore: Set permissions for GitHub actions
  • chore: Included githubactions in the dependabot config
  • lxd/instance/drivers: Moves away from accepting a revert argument
  • lxd/instance: Updates Create and create to return a revert.Hook rather than accept a revert.Reverter argument
  • lxd/instance: Updates CreateInternal to return a revert.Hook rather than accept a revert.Reverter argument
  • lxd: Use revert.Hook rather than func() where a revert hook is returned
  • lxd: instance.CreateInternal usage
  • lxd/network: Return revert.Hook rather than revert.Reverter for cleanup
  • lxd/device/nic/bridged: Improve comment on setupHostFilters
  • lxd/storage/drivers/driver/btrfs/volumes: Return revert.Hook rather than revert.Reverter for cleanup
  • lxd/device/device/utils/disk: Return revert.Hook after file handle in DiskVMVirtfsProxyStart
  • lxd: Use cleanup rather than revertExternal naming
  • lxd/api/internal/recover: Moves away from accepting a revert argument in internalRecoverImportInstance
  • lxd/device/nic/ovn: Moves away from accepting a reverter as an argument in setupHostNIC
  • lxd/storage/drivers: Don't defer calls to revert.Success
  • lxd/storage/drivers/driver/zfs/volumes: Return revert.Hook rather than revert.Reverter for cleanup
  • lxd: Change RunConfig.Revert to revert.Hook type
  • lxd: instance.CreateInternal usage in tests
  • lxd/instance/test: Update TestContainer_LoadFromDB to use RenderFull for equality check
  • lxd/storage/pool/load: Fix error handling bug in Patch
  • lxd/storage/utils: Better error in VolumeDBGet
  • lxd/storage/backend/lxd: Add logging to ApplyPatch
  • lxd/patches: Better logging in apply
  • lxd: Adds storage_missing_snapshot_records patch
  • test: Adds tests for instance volume snapshot DB record recovery
  • build(deps): bump actions/setup-go from 2 to 3
  • build(deps): bump actions/labeler from 3 to 4
  • build(deps): bump actions/checkout from 2 to 3
  • build(deps): bump actions/upload-artifact from 2 to 3
  • chore(deps): Included dependency review
  • github: Move depsreview to tests
  • github: Move woke test to ubuntu-latest
  • lxd/migrate/storage/volumes: Only choose source's index header version if target supports it
  • lxd/storage/backend/lxd: Fix index migration header format
  • lxd/storage/backend/lxd: Improve logging of index migration header send/receive
  • lxd/storage/drivers: Improve log and error messages related to driver specific migration frames
  • lxd/storage: Expand arg names in logging
  • lxd: Don't return migration error until after its been sent to remote
  • lxd/storage/backend/lxd: Improve pre migration checks in MigrateCustomVolume
  • lxd/migrate_storage_volumes: Make sender aware of refresh
  • doc: Update for new myst_parser
  • lxd-user: Move away from atomic
  • lxd-user: Use getent instead of os/user
  • lxd/certificates: Require an address for token issuance
  • lxd/instance/qemu: Drop bootIndex from PCI
  • lxc/network_forward: Fix example
  • i18n: Update translation templates
  • lxd/cgroup: Better handle broken CGroupV2 setups
  • lxd/migration: Add Refresh to InfoResponse
  • lxd/storage: Return InfoResponse from migrationIndexHeaderSend
  • lxd/storage: Use Refresh from InfoResponse
  • lxd/storage/backend: Add refresh arg to migrationIndexHeaderReceive
  • test/suites: Enable migration test for zfs
  • lxd/storage/drivers/btrfs: Fix volumeSnapshotsSorted
  • lxd/storage/drivers/btrfs: Don't rely on passed snapshots
  • lxd/storage/drivers/zfs: Handle MultiSync with optimized refresh
  • lxd/migration: Add VolumeOnly to source and target args
  • lxd: Use VolumeOnly field when migrating
  • lxd/storage/drivers/btrfs: Check VolumeOnly when migrating
  • lxd/storage: Use VolumeOnly field when migrating
  • lxd/storage/drivers/zfs: Use VolumeOnly migration field
  • lxd/instance/drivers: Improve error messages
  • lxd/instance/drivers/driver/qemu: Fix typo in qemuCreate
  • lxd/migrate/instance: Updates snapshotToProtobuf to accept api.InstanceSnapshot
  • lxd/migrate/instance: Updates migrationSink.Do to use updated snapshotToProtobuf
  • lxd/migrate/instance: snapshotToProtobuf usage
  • lxd/migrate/instance: Improve error handling and logging in migrationSourceWs.Do
  • lxd/migrate/instance: Improve error handling and logging in migrationSink.Do
  • lxd/backup: Don't allow writing backup index file for snapshot instances in backupWriteIndex
  • lxd/storage/backend/lxd: Relax validation in GenerateInstanceBackupConfig to allow generating config for instance snapshots
  • lxd/migrate/instance: Switch to using pool.GenerateInstanceBackupConfig in migrationSourceWs.Do
  • lxd/migrate/instance: Setup migration.VolumeSourceArgs in one go
  • lxd/storage/backend/lxd: Expand arg names in logging in migrationIndexHeaderSend
  • lxd/storage/backend/lxd: Additional logging in migrationIndexHeaderReceive
  • lxd/storage/backend/lxd: Fix error message in migrationIndexHeaderSend
  • lxd/storage/backend/lxd: Removes unnecessary/duplicated checks in CreateCustomVolumeFromMigration
  • lxd/storage/backend/lxd: Reduce indentation in CreateCustomVolumeFromMigration
  • lxd/storage/backend/lxd: CreateCustomVolumeFromMigration comment improvements
  • lxd/migrate/storage/volumes: Simplify snapshot config generation in migrationSourceWs.DoStorage
  • test: Add check that instance volume config is copied for both same pool and cross-pool copies
  • lxd/storage/backend/lxd: Adds index migration header support to CreateInstanceFromCopy
  • lxd/storage/backend/lxd: Adds index migration header support to RefreshInstance
  • lxd/storage/backend/lxd: Adds index migration header support to MigrateInstance and CreateInstanceFromMigration
  • lxd/migrate/instance: Update migrationSourceWs.Do to support migration index header
  • lxd/migrate/instance: Update migrationSink.Do to support migration index header
  • lxd/instance/post: Fix comment in instancePostClusteringMigrateWithCeph
  • lxd/instance/post: Include required migration source config in instancePostClusteringMigrateWithCeph
  • test: Updates incremental_copy to check for volume and snapshot volume config copying
  • github: Only run dependencies check on PR
  • tests: Skip EDITOR=cat when not a terminal
  • doc: fix indentation for commands
  • lxd/instance/qemu: Implement granular control of qemu.conf output
  • scripts/bash: Add raw.qemu.conf
  • api: qemu_raw_conf
  • doc/instances: Add raw.qemu.conf
  • doc/instances: Add section about raw.qemu.conf
  • fixup! doc/instances: Add section about raw.qemu.conf
  • fixup! doc/instances: Add section about raw.qemu.conf
  • doc: add link to video about network forwards
  • lxd/db/generate/db/method/v2: Expect collections for generated reference methods
  • lxd/db/generate/db/method/v2: Add newLine flag to ifErrNotNil
  • lxd/db/cluster/mapper: update generated code
  • lxd/profiles: Update usage of CreateProfileDevices
  • lxd/db/cluster/profiles: Make GetProfileIfEnabled GetProfilesIfEnabled
  • lxd/db/cluster/instances: cluster.Instance generator comments/helpers
  • lxd/db/cluster/instances.mapper: Update generated code
  • lxd/db/instances: Remove db.Instance and generator comments
  • lxd/db/instances.mapper: Remove unused generator files
  • lxd/db/cluster/snapshots: Minimal cluster.Snapshot
  • lxd/db/instances: Instance and Snapshot Conversions
  • lxd/db/instances: Use InstanceToArgs in InstanceList
  • lxd/db/instances: Reference cluster package for ClusterTx helpers
  • lxd/db/images: ClusterTx method for fetching images by fingerprint prefix
  • lxd/db/cluster/profiles: Add expanded config/devices helpers to cluster package
  • lxd/api/project: UsedBy and URIs for projects
  • lxd/backup/backup/config/utils: Fetch api.Profiles in ConfigToInstanceDBArgs
  • lxd/storage/volumes/utils: Update usages of InstanceList
  • lxd/storage/migration: Fetch api.Profiles for migration InstanceArgs
  • lxd/instance/instance/interface: Store api.Profile instead of profile names
  • lxd/instances/post: Update helper usages for new cluster package syntax/args
  • lxd/profiles/utils: Update remainining helper usages
  • lxd/project/permissions: Use api.Instance for instance info
  • lxd/instance/instance/utils: Explicit args to instance_profiles
  • lxd/db/db: Remove urlsToResourceNames
  • lxd/db/profiles: Remove unused functions
  • lxd/project/permissions/test: Fix tests
  • lxd/db/cluster/snapshots: Add missing build constraints
  • lxd/db/cluster/snapshots: Add full snapshot generator comments and ToInstance helper
  • lxd/db/cluster/snapshots.mapper: Update generated code
  • lxd/db/snapshots: Remove db.Snapshot and generator comments
  • lxd/db/snapshots.mapper: Remove generated code
  • lxd/db/cluster/images: Add cluster.Images
  • lxd/db/cluster/images.mapper: Update generated code
  • lxd/db/images: Remove db.Images and generator comments
  • lxd/db/images.mapper: Remove generated code
  • shared/api/image: Add URL method
  • lxd/api/project: Use api.URL for project usedBy images
  • lxd/sys: Add BootTime
  • lxd/seccomp: Align uptime with LXCFS
  • shared/util_linux: Refactor GetMeminfo
  • lxd/cgroup: Handle no swap limit
  • lxd: Update helper usages for cluster.Image syntax/args
  • lxd/db/images/test: Fix tests
  • lxd: Update usages for cluster.InstanceSnapshot
  • lxd/db/snapshots/test: Fix tests
  • lxd/db/node: Remove db.Config and db.Device types
  • lxd/db/generate/db/parse: Allow all types as columns
  • lxd/db/operationtype/operation/type: Create operationtype package
  • lxd/db/cluster/operations: Add cluster.Operations
  • lxd/db/cluster/operations.mapper: Update generated code
  • lxd/db/operations/types: Remove db.Operations and OperationType
  • lxd: Update OperationType usages
  • lxd: Update cluster.Operation usages
  • lxd/db/operations/test: Fix tests
  • lxd/instance/drivers/driver/common: Moves StoragePool into public section
  • lxd/instance/drivers: Moves deviceLoad into common
  • lxd/instance/drivers: Moves deviceAdd into common
  • lxd/instance/drivers: Moves deviceRemove into common
  • lxd/instance/drivers/driver/qemu: Bring deviceStop inline with lxc signature
  • lxd/instance/drivers: Removes updateDevice and moves updateDevices into common
  • lxd/instance/drivers: Rename updateDevices to devicesUpdate for consistency with other function names
  • lxd/instance/drivers: Deduplicates device add logic into common devicesAdd function
  • lxd/instance/drivers: Deduplicates RegisterDevices by adding devicesRegister to common
  • lxd/instance/drivers: Use consistent error messages for device load failures
  • lxd/instance/drivers: Deduplicates device remove logic by adding devicesRemove to common
  • lxd/instance/drivers/driver/common: If device is unsupported for instance don't return usable device in deviceLoad
  • lxd/instance/drivers: Simplify error checks in cleanupDevices
  • lxd/instance/drivers/driver/common: Simplify error checks in devicesRemove
  • lxd/instance/drivers/driver/common: Simplify error checks in devicesAdd
  • lxd/instance/drivers/driver/common: Simplify error checks in devicesRegister
  • lxd/instance/drivers/driver/common: Simplify error checks in devicesUpdate
  • lxc/storage_volume: Fix usage strings
  • i18n: Update translation templates
  • doc: storage: expand configuration documentation
  • doc: storage: clarify requirements for attaching volumes
  • doc: storage: add information on listing pools and volumes
  • doc: storage: add information about copying or moving volumes
  • lxd/profiles/utils: Add missing profiles slice check
  • lxd/network/zone: Add SOA
  • lxd/dns: Add support for SOA
  • lxd/daemon: Update for SOA support
  • client: Fixes gosimple lint errors.
  • lxc: Fixes gosimple lint errors.
  • lxd-agent: Fixes gosimple lint errors.
  • shared: Fixes gosimple lint errors.
  • test/syscall/sysinfo: Fixes gosimple lint errors.
  • lxd/cluster: Fixes gosimple lint errors.
  • lxd/db: Fixes gosimple lint errors.
  • lxd/device: Fixes gosimple lint errors.
  • lxd/dns: Fixes gosimple lint errors.
  • lxd/dnsmasq/dhcpalloc: Fixes gosimple lint errors.
  • lxd/events: Fixes gosimple lint errors.
  • lxd/firewall/drivers: Fixes gosimple lint errors.
  • lxd/fsmonitor/drivers: Fixes gosimple lint errors.
  • lxd/instance: Fixes gosimple lint errors.
  • lxd/ip: Fixes gosimple lint errors.
  • lxd/lifecycle: Fixes gosimple lint errors.
  • lxd/maas: Fixes gosimple lint errors.
  • lxd/migration: Fixes gosimple lint errors.
  • lxd/network: Fixes gosimple lint errors.
  • lxd/project: Fixes gosimple lint errors.
  • lxd/resources: Fixes gosimple lint errors.
  • lxd/revert: Fixes gosimple lint errors.
  • lxd/rsync: Fixes gosimple lint errors.
  • lxd/seccomp: Fixes gosimple lint errors.
  • lxd/storage: Fixes gosimple lint errors.
  • lxd/util: Fixes gosimple lint errors.
  • lxd: Fixes gosimple lint errors.
  • static-analysis: Enables gosimple linter.
  • lxd/instance/drivers: Fix potential LXD crash when starting device fails to load
  • lxd/device/nic/bridged: Moves address conflict detection into own checkAddressConflict function
  • lxd/device/nic/bridged: Update checkAddressConflict to return a conflict api.StatusError on conflicting address
  • lxd/instance/drivers/driver/common: Allow instances to be created and updated with conflicting devices
  • tests: Add tests for conflicting instance device validation behaviour
  • lxd/migrate/instance: Use the negotiated index migration header version on target
  • lxd/device/nic/bridged: Avoid loading already loaded parent network config in rebuildDnsmasqEntry
  • lxd/network/acl/driver/common: Fix ACL UsedBy Instance type assertion
  • lxd/instance/drivers/driver/common: Use per-loop contextual loggers in devicesUpdate
  • lxd/instance/drivers/driver/common: Remove device if non-user requested update validation fails
  • test: Update bridged NIC checks to expect device removal after non-user requested update validation fails
  • lxd/dnsmasq/dnsmasq: Add DHCPStaticAllocationPath function
  • lxd/device/nic/bridged: Make sure volatile hwaddr is used when writing static DHCP allocation file in Add
  • lxd/device/nic/bridged: Detect missing static DHCP lease file at start and create if needed
  • test: Add tests for creating missing bridged DHCP static lease file at NIC start time
  • lxd/device/disk: Fix ceph creds on custom volumes
  • build(deps): bump actions/dependency-review-action from 1 to 2
  • doc: fix instructions for substitutions
  • doc: storage: fix format for snapshots.schedule
  • github: Disable dependabot labels
  • api: storage_cephfs_fscache
  • doc: Add cephfs.fscache
  • scripts: Add cephfs.fscache
  • lxd/network/ovs: Add timeout to nbctl/sbctl
  • shared: Use DialContext.
  • client: Use DialContext.
  • lxd/endpoints: Use DialContext.
  • lxd/instance/drivers: Use DialContext.
  • lxd/util: Use DialContext.
  • lxd: Use DialContext.
  • test/deps: Use DialContext.
  • client: Remove dereferenced memory address.
  • client: Replace nil context with context.TODO.
  • lxc: Ignore deprecation warning for PEM encryption.
  • lxc: Use blank identifier for unused variable.
  • lxc-to-lxd: Replace deprecated GetContainerNames.
  • lxd/cluster: Ignore empty critical section lint error.
  • lxd-generate: Replace deprecated strings.Title.
  • lxd-generate: Uncomment error return for unexported fields.
  • lxd/device: Fix vgpu file permissions.
  • lxd/dnsmasq/dhcpalloc: Prefer net.IP.Equal over bytes.Equal.
  • lxd/endpoints: Use blank identifier for unused variable.
  • lxd/instance/drivers: Remove unnecessary fmt.Sprintf.
  • lxd/network/openvswitch: Remove unnecessary fmt.Sprintf.
  • doc: add link to the YouTube video about network zones
  • shared/logger: Filter event levels for syslog
  • lxd/storage/cephfs: Add cephfs.fscache
  • lxc: List volumes under used-by
  • lxc/storage: Show project and target on info
  • doc: Rename refquota config key name for proper one
  • doc: storage: add --refresh flag for copying volumes
  • doc: storage: how to back up storage volumes
  • doc: instances: clarify units for limits
  • doc: storage: move I/O limits section
  • doc: storage: fix wrong link
  • doc: storage: clarify doc about I/O limits
  • doc: instances: add links for I/O limits and clarifications
  • lxd/network: Fail peer validation if unable to get existing peers from DB.
  • lxd/resources: Use blank identifier for unused variable.
  • lxd/storage/drivers: Use -1 in strings.Replace.
  • lxd/sys: Use NewPid2 (NewPid is deprecated).
  • lxd/util/config: Move unconditional break statement.
  • lxd: Omit unused assignment.
  • lxd: Omit or use blank identifier for unused variables.
  • lxd: Ignore empty branch lint error.
  • lxd: Replace deprecated strings.Title.
  • lxd: Length of a slice cannot be < 0.
  • lxd-agent: Replace deprecated Temporary error.
  • shared/cancel: Use context instead of deprecated http.Request.Cancel.
  • shared/cmd: Replace deprecated terminal package.
  • shared/ioprogress: Remove int % 1 (any int mod 1 is zero).
  • shared/validate: Remove port < 0 (uint cannot be less than zero).
  • shared/version: Replace deprecated strings.Title.
  • shared: Remove unnecessary for loop.
  • shared: Exit test to avoid nil pointer dereference.
  • test/macaroon-identity: Remove assignment to tokenString.
  • test/static-analysis: Includes govet, ineffassign, and staticcheck linters.
  • doc: storage: clean up driver overview page
  • doc: storage: clean up general storage drivers reference
  • lxd/migration: Handle optimized refresh for older versions
  • lxc: Removes unused flags.
  • lxd/events: Removes unused pongsPending field.
  • lxd/response: Ignores lint errors for unused swagger types.
  • lxd/storage/drivers: Removes unused getSubVolumeUUID.
  • lxd: Removes unused struct field.
  • lxd: Removes unused kernelVersion from Daemon.
  • lxd: Removes unused field from cmdDaemon.
  • test/static-analysis: Removes golangci-lint flags.
  • lxd/vsock: Use DialContext in vsock HTTP client.
  • lxd-generate: Revert to deprecated strings.Title.
  • gomod: Update dependencies
  • i18n: Update translations from weblate
  • shared/api: Add event types
  • lxd: Use event type consts
  • shared/api: Add constants for lifecycle events
  • shared/osarch: Fix indirect lock copy

試用環境

この新しい LXD リリースは私たちの デモサービス で利用できます。

ダウンロード

このリリースの tarball は ダウンロードページ から取得できます。

ビルド済みバイナリーは次のようにして使えます:

  • Linux: snap install lxd
  • MacOS: brew install lxc
  • Windows: choco install lxc

Older news