The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/6627
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) ===
From 0566477254af787e3002dfec97de15ae4af92fe9 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Mon, 16 Dec 2019 08:54:51 +0000 Subject: [PATCH 1/3] lxc/storage/utils: Updates validateVolumeCommonRules to accept volume argument This is so the common validation fields can be vol type, content type and block backing aware. Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/storage/utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lxd/storage/utils.go b/lxd/storage/utils.go index 1ec383dcbc..cd34c2c596 100644 --- a/lxd/storage/utils.go +++ b/lxd/storage/utils.go @@ -610,7 +610,7 @@ func VolumePropertiesTranslate(targetConfig map[string]string, targetParentPoolD } // validateVolumeCommonRules returns a map of volume config rules common to all drivers. -func validateVolumeCommonRules() map[string]func(string) error { +func validateVolumeCommonRules(vol drivers.Volume) map[string]func(string) error { return map[string]func(string) error{ "security.shifted": shared.IsBool, "security.unmapped": shared.IsBool, From 828ad32d8d07bcb4caeb81e6393ff4eb95e49596 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Mon, 16 Dec 2019 08:55:47 +0000 Subject: [PATCH 2/3] lxd/storage/drivers/volume: Exposes BlockBacking property from storage driver via IsBlockBacked() Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/storage/drivers/volume.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lxd/storage/drivers/volume.go b/lxd/storage/drivers/volume.go index 8cddd9fe8c..b04c3d3e4b 100644 --- a/lxd/storage/drivers/volume.go +++ b/lxd/storage/drivers/volume.go @@ -173,3 +173,8 @@ func (v Volume) Snapshots(op *operations.Operation) ([]Volume, error) { return snapVols, nil } + +// IsBlockBacked indicates whether storage device is block backed. +func (v Volume) IsBlockBacked() bool { + return v.driver.Info().BlockBacking +} From 5cbd3738a707bcf54ef6324e3ceaf3ed0b88e1f8 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Mon, 16 Dec 2019 08:56:31 +0000 Subject: [PATCH 3/3] lxd/storage: Updates commonVolRulesFunc usage Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/storage/drivers/driver_common.go | 18 +++++++++--------- lxd/storage/drivers/interface.go | 2 +- lxd/storage/drivers/load.go | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lxd/storage/drivers/driver_common.go b/lxd/storage/drivers/driver_common.go index 0cc95e996c..591577f5dd 100644 --- a/lxd/storage/drivers/driver_common.go +++ b/lxd/storage/drivers/driver_common.go @@ -16,19 +16,19 @@ import ( ) type common struct { - name string - config map[string]string - getVolID func(volType VolumeType, volName string) (int64, error) - getCommonRules func() map[string]func(string) error - state *state.State - logger logger.Logger + name string + config map[string]string + getVolID func(volType VolumeType, volName string) (int64, error) + getCommonVolumeRules func(vol Volume) map[string]func(string) error + state *state.State + logger logger.Logger } -func (d *common) init(state *state.State, name string, config map[string]string, logger logger.Logger, volIDFunc func(volType VolumeType, volName string) (int64, error), commonRulesFunc func() map[string]func(string) error) error { +func (d *common) init(state *state.State, name string, config map[string]string, logger logger.Logger, volIDFunc func(volType VolumeType, volName string) (int64, error), commonVolRulesFunc func(vol Volume) map[string]func(string) error) error { d.name = name d.config = config d.getVolID = volIDFunc - d.getCommonRules = commonRulesFunc + d.getCommonVolumeRules = commonVolRulesFunc d.state = state d.logger = logger @@ -47,7 +47,7 @@ func (d *common) validateVolume(vol Volume, driverRules map[string]func(value st checkedFields := map[string]struct{}{} // Get rules common for all drivers. - rules := d.getCommonRules() + rules := d.getCommonVolumeRules(vol) // Merge driver specific rules into common rules. for field, validator := range driverRules { diff --git a/lxd/storage/drivers/interface.go b/lxd/storage/drivers/interface.go index e0bad2ee89..c5f7d063ec 100644 --- a/lxd/storage/drivers/interface.go +++ b/lxd/storage/drivers/interface.go @@ -14,7 +14,7 @@ import ( type driver interface { Driver - init(state *state.State, name string, config map[string]string, logger logger.Logger, volIDFunc func(volType VolumeType, volName string) (int64, error), commonRulesFunc func() map[string]func(string) error) error + init(state *state.State, name string, config map[string]string, logger logger.Logger, volIDFunc func(volType VolumeType, volName string) (int64, error), commonRulesFunc func(vol Volume) map[string]func(string) error) error load() error } diff --git a/lxd/storage/drivers/load.go b/lxd/storage/drivers/load.go index 84e8dc2cc7..974dd17699 100644 --- a/lxd/storage/drivers/load.go +++ b/lxd/storage/drivers/load.go @@ -11,7 +11,7 @@ var drivers = map[string]func() driver{ } // Load returns a Driver for an existing low-level storage pool. -func Load(state *state.State, driverName string, name string, config map[string]string, logger logger.Logger, volIDFunc func(volType VolumeType, volName string) (int64, error), commonRulesFunc func() map[string]func(string) error) (Driver, error) { +func Load(state *state.State, driverName string, name string, config map[string]string, logger logger.Logger, volIDFunc func(volType VolumeType, volName string) (int64, error), commonVolRulesFunc func(vol Volume) map[string]func(string) error) (Driver, error) { // Locate the driver loader. driverFunc, ok := drivers[driverName] if !ok { @@ -19,7 +19,7 @@ func Load(state *state.State, driverName string, name string, config map[string] } d := driverFunc() - err := d.init(state, name, config, logger, volIDFunc, commonRulesFunc) + err := d.init(state, name, config, logger, volIDFunc, commonVolRulesFunc) if err != nil { return nil, err }
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel