Comment 0 for bug 1845354

Revision history for this message
Rodolfo Alonso (rodolfo-alonso-hernandez) wrote :

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)