The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/7917
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) === Fixes single node OVN network creation. Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com>
From 8db55cde37fa40df1b8dfb04329615a60018fd19 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Tue, 22 Sep 2020 16:14:30 +0100 Subject: [PATCH] lxd/network: Only adding pseudo pending node records when in cluster in networksPost Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/networks.go | 52 +++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/lxd/networks.go b/lxd/networks.go index 960bc46b39..4e63f182de 100644 --- a/lxd/networks.go +++ b/lxd/networks.go @@ -229,31 +229,6 @@ func networksPost(d *Daemon, r *http.Request) response.Response { } return resp - } else if !netTypeInfo.NodeSpecificConfig && clientType != cluster.ClientTypeJoiner { - // Simulate adding pending node network config when the driver doesn't support per-node config. - revert.Add(func() { - d.cluster.DeleteNetwork(projectName, req.Name) - }) - - // Create pending entry for each node. - err = d.cluster.Transaction(func(tx *db.ClusterTx) error { - nodes, err := tx.GetNodes() - if err != nil { - return err - } - - for _, node := range nodes { - err = tx.CreatePendingNetwork(node.Name, projectName, req.Name, netType.DBType(), req.Config) - if err != nil { - return errors.Wrapf(err, "Failed creating pending network for node %q", node.Name) - } - } - - return nil - }) - if err != nil { - return response.SmartError(err) - } } // Check if we're clustered. @@ -263,6 +238,33 @@ func networksPost(d *Daemon, r *http.Request) response.Response { } if count > 1 { + // Simulate adding pending node network config when the driver doesn't support per-node config. + if !netTypeInfo.NodeSpecificConfig && clientType != cluster.ClientTypeJoiner { + revert.Add(func() { + d.cluster.DeleteNetwork(projectName, req.Name) + }) + + // Create pending entry for each node. + err = d.cluster.Transaction(func(tx *db.ClusterTx) error { + nodes, err := tx.GetNodes() + if err != nil { + return err + } + + for _, node := range nodes { + err = tx.CreatePendingNetwork(node.Name, projectName, req.Name, netType.DBType(), req.Config) + if err != nil { + return errors.Wrapf(err, "Failed creating pending network for node %q", node.Name) + } + } + + return nil + }) + if err != nil { + return response.SmartError(err) + } + } + err = networksPostCluster(d, projectName, req, clientType, netType) if err != nil { return response.SmartError(err)
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel