[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lxc-devel
Subject:    [lxc-devel] [lxd/master] Network: Don't apply node changes when network is in pending state
From:       tomponline on Github <lxc-bot () linuxcontainers ! org>
Date:       2020-12-17 9:31:16
Message-ID: 5fdb2564.1c69fb81.1c22e.b8f4SMTPIN_ADDED_MISSING () mx ! google ! com
[Download RAW message or body]

[Attachment #2 (text/x-mailbox)]

The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/8266

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) ===
Only apply to DB.

This is a commit from the stable-4.0 branch ported to the master branch for the \
bridge driver, and then a subsequent commit to align the non-stable-4.0 drivers with \
the bridge driver.


[Attachment #3 (text/plain)]

From 5409511b8014938594684d4d5625a31e6f1415ed Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott@canonical.com>
Date: Thu, 17 Dec 2020 09:25:43 +0000
Subject: [PATCH 1/2] lxd/network/driver/bridge: Don't apply updates to node
 when network is pending

If no network create attempt has been attempted then we should just update the DB and \
await the global create attempt.

Signed-off-by: Thomas Parrott <thomas.parrott@canonical.com>
---
 lxd/network/driver_bridge.go | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lxd/network/driver_bridge.go b/lxd/network/driver_bridge.go
index a733e5afc1..440b97dc35 100644
--- a/lxd/network/driver_bridge.go
+++ b/lxd/network/driver_bridge.go
@@ -1557,8 +1557,10 @@ func (n *bridge) Update(newNetwork api.NetworkPut, targetNode \
string, clientType  return nil // Nothing changed.
 	}
 
-	if n.LocalStatus() == api.NetworkStatusPending {
-		// Apply DB change to local node only.
+	// If the network as a whole has not had any previous creation attempts, or the \
node itself is still +	// pending, then don't apply the new settings to the node, \
just to the database record (ready for the +	// actual global create request to be \
initiated). +	if n.Status() == api.NetworkStatusPending || n.LocalStatus() == \
api.NetworkStatusPending {  return n.common.update(newNetwork, targetNode, \
clientType)  }
 

From f0a4beb75365d2e5e78ab596aa2602cc5edc5c66 Mon Sep 17 00:00:00 2001
From: Thomas Parrott <thomas.parrott@canonical.com>
Date: Thu, 17 Dec 2020 09:28:50 +0000
Subject: [PATCH 2/2] lxd/network/driver: Don't apply changes to node if
 network is pending

Aligns with 5409511b8 change for bridge driver from stable-4.0 branch.

Signed-off-by: Thomas Parrott <thomas.parrott@canonical.com>
---
 lxd/network/driver_macvlan.go  | 6 ++++--
 lxd/network/driver_ovn.go      | 6 ++++--
 lxd/network/driver_physical.go | 6 ++++--
 lxd/network/driver_sriov.go    | 6 ++++--
 4 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/lxd/network/driver_macvlan.go b/lxd/network/driver_macvlan.go
index bba6d06369..7dededfd83 100644
--- a/lxd/network/driver_macvlan.go
+++ b/lxd/network/driver_macvlan.go
@@ -90,8 +90,10 @@ func (n *macvlan) Update(newNetwork api.NetworkPut, targetNode \
string, clientTyp  return nil // Nothing changed.
 	}
 
-	if n.LocalStatus() == api.NetworkStatusPending {
-		// Apply DB change to local node only.
+	// If the network as a whole has not had any previous creation attempts, or the \
node itself is still +	// pending, then don't apply the new settings to the node, \
just to the database record (ready for the +	// actual global create request to be \
initiated). +	if n.Status() == api.NetworkStatusPending || n.LocalStatus() == \
api.NetworkStatusPending {  return n.common.update(newNetwork, targetNode, \
clientType)  }
 
diff --git a/lxd/network/driver_ovn.go b/lxd/network/driver_ovn.go
index 3e68e6018d..db9b7366d2 100644
--- a/lxd/network/driver_ovn.go
+++ b/lxd/network/driver_ovn.go
@@ -2002,8 +2002,10 @@ func (n *ovn) Update(newNetwork api.NetworkPut, targetNode \
string, clientType re  return nil // Nothing changed.
 	}
 
-	if n.LocalStatus() == api.NetworkStatusPending {
-		// Apply DB change to local node only.
+	// If the network as a whole has not had any previous creation attempts, or the \
node itself is still +	// pending, then don't apply the new settings to the node, \
just to the database record (ready for the +	// actual global create request to be \
initiated). +	if n.Status() == api.NetworkStatusPending || n.LocalStatus() == \
api.NetworkStatusPending {  return n.common.update(newNetwork, targetNode, \
clientType)  }
 
diff --git a/lxd/network/driver_physical.go b/lxd/network/driver_physical.go
index 173fbfc774..6c019c628b 100644
--- a/lxd/network/driver_physical.go
+++ b/lxd/network/driver_physical.go
@@ -232,8 +232,10 @@ func (n *physical) Update(newNetwork api.NetworkPut, targetNode \
string, clientTy  return nil // Nothing changed.
 	}
 
-	if n.LocalStatus() == api.NetworkStatusPending {
-		// Apply DB change to local node only.
+	// If the network as a whole has not had any previous creation attempts, or the \
node itself is still +	// pending, then don't apply the new settings to the node, \
just to the database record (ready for the +	// actual global create request to be \
initiated). +	if n.Status() == api.NetworkStatusPending || n.LocalStatus() == \
api.NetworkStatusPending {  return n.common.update(newNetwork, targetNode, \
clientType)  }
 
diff --git a/lxd/network/driver_sriov.go b/lxd/network/driver_sriov.go
index 2300a573c5..dff8b53b36 100644
--- a/lxd/network/driver_sriov.go
+++ b/lxd/network/driver_sriov.go
@@ -90,8 +90,10 @@ func (n *sriov) Update(newNetwork api.NetworkPut, targetNode \
string, clientType  return nil // Nothing changed.
 	}
 
-	if n.LocalStatus() == api.NetworkStatusPending {
-		// Apply DB change to local node only.
+	// If the network as a whole has not had any previous creation attempts, or the \
node itself is still +	// pending, then don't apply the new settings to the node, \
just to the database record (ready for the +	// actual global create request to be \
initiated). +	if n.Status() == api.NetworkStatusPending || n.LocalStatus() == \
api.NetworkStatusPending {  return n.common.update(newNetwork, targetNode, \
clientType)  }
 


[Attachment #4 (text/plain)]

_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic