[node-patches] Change in ovirt-node[master]: Sometimes BridgedNIC gets called with a bridge. Be smarter

rbarry at redhat.com rbarry at redhat.com
Fri Jan 8 16:50:25 UTC 2016


Ryan Barry has uploaded a new change for review.

Change subject: Sometimes BridgedNIC gets called with a bridge. Be smarter
......................................................................

Sometimes BridgedNIC gets called with a bridge. Be smarter

Previously, if BridgedNIC was called with an actual bridge as the
argument (ovirtmgmt, for example), it set null values for some
fields, such as the bridge nic, which caused the network to show
unconfigured when it actually was.

Parameterize BridgedNIC so we can let it know whether it's a slave
or not, and if it isn't, check /sys to find the actual slave nic,
then assign that to snic so the rest of the logic stays the same,
and networking resolves properly.

Change-Id: I8e99a015ff5904bfccd4c0d1655d5489776a28dd
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1280241
Signed-off-by: Ryan Barry <rbarry at redhat.com>
---
M src/ovirt/node/utils/network.py
1 file changed, 12 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/60/51560/1

diff --git a/src/ovirt/node/utils/network.py b/src/ovirt/node/utils/network.py
index fa742d0..c96b9fc 100755
--- a/src/ovirt/node/utils/network.py
+++ b/src/ovirt/node/utils/network.py
@@ -356,8 +356,17 @@
     bridge_nic = None
     slave_nic = None
 
-    def __init__(self, snic):
+    def __init__(self, snic, master=False):
         super(BridgedNIC, self).__init__(snic.ifname)
+        if master:
+            try:
+                slave = os.listdir("/sys/class/net/%s/brif" % snic.ifname)[0]
+                snic = NIC(slave)
+            except IndexError:
+                # No slaves. ;vdsmdummy; ?
+                # leave snic as it is with the old behavior
+                self.logger.info("Couldn't find a slave for BridgedNIC %s" %
+                                 snic.ifname)
         self.slave_nic = snic
         self.bridge_nic = NIC(snic.config.bridge)
         self.config = self.bridge_nic.config
@@ -584,12 +593,12 @@
                 self.logger.debug(" Has tag")
                 nic = TaggedNIC(nic, vlanid)
 
-            if layout == "bridged":
+            if layout == "bridged" and not nic.typ == "bridge":
                 self.logger.debug(" Is bridged")
                 nic = BridgedNIC(nic)
 
         if nic.typ == "bridge":
-            nic = BridgedNIC(nic)
+            nic = BridgedNIC(nic, master=True)
 
         if nic.is_configured() and filter_configured:
             # Don not return configured NICs


-- 
To view, visit https://gerrit.ovirt.org/51560
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8e99a015ff5904bfccd4c0d1655d5489776a28dd
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-node
Gerrit-Branch: master
Gerrit-Owner: Ryan Barry <rbarry at redhat.com>



More information about the node-patches mailing list