Cleanup br-ex/br-quagga from testcase_3 53/34053/1
authortomsou <soth@intracom-telecom.com>
Tue, 2 May 2017 12:25:58 +0000 (12:25 +0000)
committertomsou <soth@intracom-telecom.com>
Tue, 2 May 2017 12:25:58 +0000 (12:25 +0000)
After the peering between Quagga and ODL within testcase 3
cleanup br-ex (for fuel) or br-quagga (for apex) interfaces

JIRA: SDNVPN-13

Change-Id: I3e7bf91d4e47dfd7fe2a5068ed40ea4b2be48c6d
Signed-off-by: tomsou <soth@intracom-telecom.com>
sdnvpn/lib/utils.py
sdnvpn/test/functest/testcase_3.py

index 03fea54..788e456 100644 (file)
@@ -502,3 +502,34 @@ def attach_instance_to_ext_br(instance, compute_node):
 
     compute_node.run_cmd("sudo virsh attach-interface %s"
                          " bridge %s" % (libvirt_instance_name, bridge))
+
+
+def detach_instance_from_ext_br(instance, compute_node):
+    libvirt_instance_name = getattr(instance, "OS-EXT-SRV-ATTR:instance_name")
+    installer_type = str(os.environ['INSTALLER_TYPE'].lower())
+    if installer_type == "fuel":
+        bridge = "br-ex"
+    elif installer_type == "apex":
+        # In Apex, br-ex is an ovs bridge and virsh attach-interface
+        # won't just work. We work around it by creating a linux
+        # bridge, attaching that to br-ex with a veth pair
+        # and virsh-attaching the instance to the linux-bridge
+        bridge = "br-quagga"
+        cmd = """
+            sudo brctl delif {bridge} quagga-tap &&
+            sudo ovs-vsctl del-port br-ex ovs-quagga-tap &&
+            sudo ip link set dev quagga-tap down &&
+            sudo ip link set dev ovs-quagga-tap down &&
+            sudo ip link del quagga-tap type veth peer name ovs-quagga-tap &&
+            sudo ip link set {bridge} down &&
+            sudo brctl delbr {bridge}
+        """
+        compute_node.run_cmd(cmd.format(bridge=bridge))
+
+    mac = compute_node.run_cmd("for vm in $(sudo virsh list | "
+                               "grep running | awk '{print $2}'); "
+                               "do echo -n ; sudo virsh dumpxml $vm| "
+                               "grep -oP '52:54:[\da-f:]+' ;done")
+    compute_node.run_cmd("sudo virsh detach-interface --domain %s"
+                         " --type bridge --mac %s"
+                         % (libvirt_instance_name, mac))
index 2e6d6b0..1a23c56 100644 (file)
@@ -254,6 +254,8 @@ def main():
                                        controller)
     peer = quagga.check_for_peering(controller)
 
+    test_utils.detach_instance_from_ext_br(quagga_vm, compute)
+
     if neighbor and peer:
         results.add_success("Peering with quagga")
     else: