summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortomsou <soth@intracom-telecom.com>2017-05-02 12:25:58 +0000
committerNikolas Hermanns <nikolas.hermanns@ericsson.com>2017-05-03 14:36:17 +0000
commit6b2a7d15d61e76da0bbaf5f60134119fd9b23cbe (patch)
tree7462336ade79cb192d07ac7126d1e8e5bcc1465d
parent0a4bbb334ba31bccfab92d01deebb8e0ab4ccbfd (diff)
Cleanup br-ex/br-quagga from testcase_3
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> (cherry picked from commit 0d8f3bf930bdd945d34188fb591a6deb03a999c5)
-rw-r--r--sdnvpn/lib/utils.py31
-rw-r--r--sdnvpn/test/functest/testcase_3.py2
2 files changed, 33 insertions, 0 deletions
diff --git a/sdnvpn/lib/utils.py b/sdnvpn/lib/utils.py
index 03fea54..788e456 100644
--- a/sdnvpn/lib/utils.py
+++ b/sdnvpn/lib/utils.py
@@ -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))
diff --git a/sdnvpn/test/functest/testcase_3.py b/sdnvpn/test/functest/testcase_3.py
index 2e6d6b0..1a23c56 100644
--- a/sdnvpn/test/functest/testcase_3.py
+++ b/sdnvpn/test/functest/testcase_3.py
@@ -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: