← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1374663] [NEW] agent/linux/ip_lib.py does not correctly handle output from 'iproute2' command

 

Public bug reported:

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.

** Affects: neutron
     Importance: Undecided
     Assignee: Lars Kellogg-Stedman (larsks)
         Status: In Progress

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1374663

Title:
  agent/linux/ip_lib.py does not correctly handle output from 'iproute2'
  command

Status in OpenStack Neutron (virtual network service):
  In Progress

Bug description:
  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.

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1374663/+subscriptions


Follow ups

References