[lxc-devel] [lxd/master] Drop the storage_pool_id filter from the WHERE clause of StoragePoolsConfig
freeekanayaka on Github
lxc-bot at linuxcontainers.org
Thu Jun 14 12:32:47 UTC 2018
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 828 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180614/c75df2af/attachment.bin>
-------------- next part --------------
From 009493ce0d4027b1c2673426629317a4e2e53f91 Mon Sep 17 00:00:00 2001
From: Free Ekanayaka <free.ekanayaka at canonical.com>
Date: Thu, 14 Jun 2018 12:28:18 +0000
Subject: [PATCH] Drop the storage_pool_id filter from the WHERE clause of
StoragePoolsConfig
The filter was broken since it should have been "storage_pools_config.node_id=?"
instead.
However, the filter is not necessary since the only call site that this method
has (in cluster/membership.go) already filters out any config key which is not
node-specific.
Since this method is going to have a new call site for the new join API, that
requires all config keys (not only the node-specific ones), I dropped the filter
altogher.
Signed-off-by: Free Ekanayaka <free.ekanayaka at canonical.com>
---
lxd/db/storage_pools.go | 8 +-------
lxd/db/storage_pools_test.go | 38 +++++++++++++++++++++++++++++++++++++-
2 files changed, 38 insertions(+), 8 deletions(-)
diff --git a/lxd/db/storage_pools.go b/lxd/db/storage_pools.go
index 00f5160e8..c4795e2fb 100644
--- a/lxd/db/storage_pools.go
+++ b/lxd/db/storage_pools.go
@@ -14,10 +14,6 @@ import (
// StoragePoolConfigs returns a map associating each storage pool name to its
// config values.
-//
-// The config values are the ones defined for the node this function is run
-// on. They are used by cluster.Join when a new node joins the cluster and its
-// configuration needs to be migrated to the cluster database.
func (c *ClusterTx) StoragePoolConfigs() (map[string]map[string]string, error) {
names, err := query.SelectStrings(c.tx, "SELECT name FROM storage_pools")
if err != nil {
@@ -28,9 +24,7 @@ func (c *ClusterTx) StoragePoolConfigs() (map[string]map[string]string, error) {
table := `
storage_pools_config JOIN storage_pools ON storage_pools.id=storage_pools_config.storage_pool_id
`
- config, err := query.SelectConfig(
- c.tx, table, "storage_pools.name=? AND storage_pools_config.storage_pool_id=?",
- name, c.nodeID)
+ config, err := query.SelectConfig(c.tx, table, "storage_pools.name=?", name)
if err != nil {
return nil, err
}
diff --git a/lxd/db/storage_pools_test.go b/lxd/db/storage_pools_test.go
index 11e503f08..d455a64b3 100644
--- a/lxd/db/storage_pools_test.go
+++ b/lxd/db/storage_pools_test.go
@@ -8,6 +8,42 @@ import (
"github.com/stretchr/testify/require"
)
+// The StoragePoolsConfigs method returns only node-specific config values.
+func TestStoragePoolConfigs(t *testing.T) {
+ cluster, cleanup := db.NewTestCluster(t)
+ defer cleanup()
+
+ // Create a storage pool named "local" (like the default LXD clustering
+ // one), then delete it and create another one.
+ _, err := cluster.StoragePoolCreate("local", "", "dir", map[string]string{
+ "source": "/foo/bar",
+ })
+ require.NoError(t, err)
+
+ _, err = cluster.StoragePoolDelete("local")
+ require.NoError(t, err)
+
+ _, err = cluster.StoragePoolCreate("BTRFS", "", "dir", map[string]string{
+ "source": "/egg/baz",
+ })
+ require.NoError(t, err)
+
+ // Check that the config map returned by StoragePoolsConfigs actually
+ // contains the value of the "BTRFS" storage pool.
+ var config map[string]map[string]string
+
+ err = cluster.Transaction(func(tx *db.ClusterTx) error {
+ var err error
+ config, err = tx.StoragePoolConfigs()
+ return err
+ })
+ require.NoError(t, err)
+
+ assert.Equal(t, config, map[string]map[string]string{
+ "BTRFS": map[string]string{"source": "/egg/baz"},
+ })
+}
+
func TestStoragePoolsCreatePending(t *testing.T) {
tx, cleanup := db.NewTestClusterTx(t)
defer cleanup()
@@ -116,7 +152,7 @@ func TestStoragePoolVolume_Ceph(t *testing.T) {
cluster, cleanup := db.NewTestCluster(t)
defer cleanup()
- // Create a second no (beyond the default one).
+ // Create a second node (beyond the default one).
err := cluster.Transaction(func(tx *db.ClusterTx) error {
_, err := tx.NodeAdd("n1", "1.2.3.4:666")
return err
More information about the lxc-devel
mailing list