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

Reply via email to