[lxc-devel] [lxd/master] network: Only adding pseudo pending node records when in cluster in networksPost
tomponline on Github
lxc-bot at linuxcontainers.org
Tue Sep 22 15:15:34 UTC 2020
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 404 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200922/0ecc9abd/attachment.bin>
-------------- next part --------------
From 8db55cde37fa40df1b8dfb04329615a60018fd19 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott at 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.parrott at 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)
More information about the lxc-devel
mailing list