From: Yunping Zheng <[email protected]>

Now when add a tap device will call the decorator @__init_openvswitch,
even if the tap is add to a normal bridge, that will call error if
the host not support openvswitch, this patch modify this behavior,
init done only when the bridge is not normal bridge.

Signed-off-by: Yunping Zheng <[email protected]>
---
 virttest/utils_net.py | 43 ++++++++++++++++++++++++-------------------
 1 file changed, 24 insertions(+), 19 deletions(-)

diff --git a/virttest/utils_net.py b/virttest/utils_net.py
index 49dbe10..9c622dc 100644
--- a/virttest/utils_net.py
+++ b/virttest/utils_net.py
@@ -595,8 +595,17 @@ def change_iface_bridge(ifname, new_bridge, ovs=None):
         raise error.AutotestError("Network interface %s is wrong type %s." %
                                   (ifname, new_bridge))
 
-
 @__init_openvswitch
+def add_to_openvswitch(ifname, brname, ovs=None):
+    if ovs is None:
+        ovs = __ovs
+    if ovs is None:
+        raise BRAddIfError(ifname, brname, "There is no ovs bridge in system.")
+    #Try add port to OpenVSwitch bridge.
+    if brname in ovs.list_br():
+        ovs.add_port(brname, ifname)
+
+
 def add_to_bridge(ifname, brname, ovs=None):
     """
     Add a TAP device to bridge
@@ -605,9 +614,6 @@ def add_to_bridge(ifname, brname, ovs=None):
     @param brname: Name of the bridge
     @param ovs: OpenVSwitch object.
     """
-    if ovs is None:
-        ovs = __ovs
-
     _ifname = None
     if type(ifname) is str:
         _ifname = ifname
@@ -617,16 +623,24 @@ def add_to_bridge(ifname, brname, ovs=None):
     if brname in __bridge.list_br():
         #Try add port to standard bridge or openvswitch in compatible mode.
         __bridge.add_port(brname, _ifname)
-        return
+    else:
+        add_to_openvswitch(_ifname, brname)
 
+
+@__init_openvswitch
+def del_from_ovs_bridge(ifname, brname, ovs=None):
+    """
+    delte port form OpenVSwitch
+    """
+    if ovs is None:
+        ovs = __ovs
     if ovs is None:
-        raise BRAddIfError(ifname, brname, "There is no bridge in system.")
+        raise BRDelIfError(ifname, brname, "There is no ovs bridge in system.")
     #Try add port to OpenVSwitch bridge.
     if brname in ovs.list_br():
-        ovs.add_port(brname, ifname)
+        ovs.del_port(brname, ifname)
 
 
-@__init_openvswitch
 def del_from_bridge(ifname, brname, ovs=None):
     """
     Del a TAP device to bridge
@@ -635,26 +649,17 @@ def del_from_bridge(ifname, brname, ovs=None):
     @param brname: Name of the bridge
     @param ovs: OpenVSwitch object.
     """
-    if ovs is None:
-        ovs = __ovs
-
     _ifname = None
     if type(ifname) is str:
         _ifname = ifname
     elif issubclass(type(ifname), VirtIface):
         _ifname = ifname.ifname
 
-    if ovs is None:
-        raise BRDelIfError(ifname, brname, "There is no bridge in system.")
-
     if brname in __bridge.list_br():
         #Try add port to standard bridge or openvswitch in compatible mode.
         __bridge.del_port(brname, _ifname)
-        return
-
-    #Try add port to OpenVSwitch bridge.
-    if brname in ovs.list_br():
-        ovs.del_port(brname, _ifname)
+    else:
+        del_from_ovs_bridge(_ifname, brname)
 
 
 def bring_up_ifname(ifname):
-- 
1.7.11.7

_______________________________________________
Virt-test-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/virt-test-devel

Reply via email to