The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/1955
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) === Storage functions unfortunately have the habit of reading the daemon configuration, so we need to at least temporarily set daemonConfig to the right value... Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
From 92063e973fccce02cbced6a3d39591d87f14efd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com> Date: Wed, 27 Apr 2016 13:19:38 -0400 Subject: [PATCH] Fix daemonConfig handling of storage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Storage functions unfortunately have the habit of reading the daemon configuration, so we need to at least temporarily set daemonConfig to the right value... Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- lxd/daemon.go | 10 +++++----- lxd/daemon_config.go | 25 +++++++++++-------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/lxd/daemon.go b/lxd/daemon.go index 4e3f635..8a150cc 100644 --- a/lxd/daemon.go +++ b/lxd/daemon.go @@ -344,27 +344,27 @@ func (d *Daemon) createCmd(version string, c Command) { }) } -func (d *Daemon) SetupStorageDriver(driver string) error { +func (d *Daemon) SetupStorageDriver() error { var err error lvmVgName := daemonConfig["storage.lvm_vg_name"].Get() zfsPoolName := daemonConfig["storage.zfs_pool_name"].Get() - if driver == "lvm" || lvmVgName != "" { + if lvmVgName != "" { d.Storage, err = newStorage(d, storageTypeLvm) if err != nil { shared.Logf("Could not initialize storage type LVM: %s - falling back to dir", err) } else { return nil } - } else if driver == "zfs" || zfsPoolName != "" { + } else if zfsPoolName != "" { d.Storage, err = newStorage(d, storageTypeZfs) if err != nil { shared.Logf("Could not initialize storage type ZFS: %s - falling back to dir", err) } else { return nil } - } else if driver == "btrfs" || d.BackingFs == "btrfs" { + } else if d.BackingFs == "btrfs" { d.Storage, err = newStorage(d, storageTypeBtrfs) if err != nil { shared.Logf("Could not initialize storage type btrfs: %s - falling back to dir", err) @@ -743,7 +743,7 @@ func (d *Daemon) Init() error { /* Setup the storage driver */ if !d.MockMode { - err = d.SetupStorageDriver("") + err = d.SetupStorageDriver() if err != nil { return fmt.Errorf("Failed to setup storage: %s", err) } diff --git a/lxd/daemon_config.go b/lxd/daemon_config.go index e9ff6a5..1fda2cb 100644 --- a/lxd/daemon_config.go +++ b/lxd/daemon_config.go @@ -253,23 +253,20 @@ func daemonConfigSetPassword(d *Daemon, key string, value string) (string, error } func daemonConfigSetStorage(d *Daemon, key string, value string) (string, error) { - driver := "" - - // Guess the driver name from the key - switch key { - case "storage.lvm_vg_name": - driver = "lvm" - case "storage.zfs_pool_name": - driver = "zfs" - } + // The storage driver looks at daemonConfig so just set it temporarily + daemonConfigLock.Lock() + oldValue := daemonConfig[key].Get() + daemonConfig[key].currentValue = value + daemonConfigLock.Unlock() - // Should never actually hit this - if driver == "" { - return "", fmt.Errorf("Invalid storage key: %s", key) - } + defer func() { + daemonConfigLock.Lock() + daemonConfig[key].currentValue = oldValue + daemonConfigLock.Unlock() + }() // Update the current storage driver - err := d.SetupStorageDriver(driver) + err := d.SetupStorageDriver() if err != nil { return "", err }
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel