2019-09-25 16:28:32 |
Rodolfo Alonso |
description |
In "FdbInterfaceTestCase" test cases (no namespace scenario), can happen that two test cases are creating VXLAN interfaces in the kernel namespace (VTI) in the same VTEP and the same destination port (default=4789). In this case, the kernel will raise the exception errno.EEXIST (file already exists).
In order to avoid this problem, a random VNI could be used when creating the VXLAN interfaces.
How to test this:
from neutron.agent.linux import ip_lib
from neutron.privileged.agent.linux import ip_lib as priv_ip_lib
ns_name = 'ns_test'
try:
priv_ip_lib.remove_netns(ns_name)
except:
pass
priv_ip_lib.create_netns(ns_name)
dev = 'device'
dev2 = 'device2'
dev_vxlan = 'device_vxlan'
dev_vxlan2 = 'device_vxlan2'
ip_wrapper = ip_lib.IPWrapper(ns_name)
ip_wrapper.add_dummy(dev)
ip_wrapper.add_dummy(dev2)
ip_device1 = ip_lib.IPDevice(dev, ns_name)
ip_device2 = ip_lib.IPDevice(dev2, ns_name)
ip_device1.link.set_up()
ip_device2.link.set_up()
ip_wrapper.add_vxlan(dev_vxlan, 100, dev=dev)
try:
ip_wrapper.add_vxlan(dev_vxlan2, 100, dev=dev2)
except Exception as e:
print(str(e))
priv_ip_lib.remove_netns(ns_name) |
In "FdbInterfaceTestCase" test cases (no namespace scenario), can happen that two test cases are creating VXLAN interfaces in the kernel namespace (VTI) in the same VTEP and the same destination port (default=4789). In this case, the kernel will raise the exception errno.EEXIST (file already exists).
In order to avoid this problem, a random VNI could be used when creating the VXLAN interfaces.
LOGS:
[1]https://9722deaa313ebebb56dc-c08b881decb3106ff13d720dd4a26025.ssl.cf5.rackcdn.com/681846/5/check/neutron-functional-python27/c3dc48a/testr_results.html.gz
HOW TO TEST IT:
from neutron.agent.linux import ip_lib
from neutron.privileged.agent.linux import ip_lib as priv_ip_lib
ns_name = 'ns_test'
try:
priv_ip_lib.remove_netns(ns_name)
except:
pass
priv_ip_lib.create_netns(ns_name)
dev = 'device'
dev2 = 'device2'
dev_vxlan = 'device_vxlan'
dev_vxlan2 = 'device_vxlan2'
ip_wrapper = ip_lib.IPWrapper(ns_name)
ip_wrapper.add_dummy(dev)
ip_wrapper.add_dummy(dev2)
ip_device1 = ip_lib.IPDevice(dev, ns_name)
ip_device2 = ip_lib.IPDevice(dev2, ns_name)
ip_device1.link.set_up()
ip_device2.link.set_up()
ip_wrapper.add_vxlan(dev_vxlan, 100, dev=dev)
try:
ip_wrapper.add_vxlan(dev_vxlan2, 100, dev=dev2)
except Exception as e:
print(str(e))
priv_ip_lib.remove_netns(ns_name) |
|