The get_devices() method in neutron/agent/linux/ip_lib.py chokes if 'iproute2' presents interface names containing '@', such as ipip tunnels:
513: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default
link/ipip 0.0.0.0 brd 0.0.0.0
And macvlan devices:
4: clone@eth0: <BROADCAST,MULTICAST> mtu 1454 qdisc noop state DOWN mode DEFAULT group default
link/ether c6:dd:66:a5:f6:5c brd ff:ff:ff:ff:ff:ff
Consider the follow sample code:
from neutron.agent.linux.ip_lib import IPWrapper
ip = IPWrapper()
for iface in ip.get_devices():
print iface.name, iface.addr.list()
The mere presence of one of the above interface names will cause the
code to fail with:
RuntimeError:
Command: ['ip', 'addr', 'show', 'tunl0@NONE']
Exit code: 1
Stdout: ''
Stderr: 'Device "tunl0@NONE" does not exist.\n'
This can cause failures in, e.g.,
neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py, which
performs almost exactly the same iteration in the
get_interface_by_ip() method.
The get_devices() method in neutron/ agent/linux/ ip_lib. py chokes if 'iproute2' presents interface names containing '@', such as ipip tunnels:
513: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default
link/ipip 0.0.0.0 brd 0.0.0.0
And macvlan devices:
4: clone@eth0: <BROADCAST, MULTICAST> mtu 1454 qdisc noop state DOWN mode DEFAULT group default
link/ether c6:dd:66:a5:f6:5c brd ff:ff:ff:ff:ff:ff
Consider the follow sample code:
from neutron. agent.linux. ip_lib import IPWrapper
ip = IPWrapper()
for iface in ip.get_devices():
print iface.name, iface.addr.list()
The mere presence of one of the above interface names will cause the
code to fail with:
RuntimeError:
Command: ['ip', 'addr', 'show', 'tunl0@NONE']
Exit code: 1
Stdout: ''
Stderr: 'Device "tunl0@NONE" does not exist.\n'
This can cause failures in, e.g., plugins/ linuxbridge/ agent/linuxbrid ge_neutron_ agent.py, which by_ip() method.
neutron/
performs almost exactly the same iteration in the
get_interface_