For bionic, the provided test case needs some tweaks as the neutron
version on bionic does not have the provided functions. Instead, I've
written a quick test script that will exercise the pyroute2 code path to
exercise the errors. Still requires enabling vfs as James did.

Simple script is:

#!/usr/bin/python3
import pyroute2

ip = pyroute2.IPRoute()
devname = 'enp3s0f0'
link_idx = ip.link_lookup(ifname=devname)[0]
link = ip.link('get', index=link_idx, ext_mask=1)[0]

num_vfs = link.get_attr('IFLA_NUM_VF')
print(num_vfs)


Running test on bionic without this fix to prove its enough to show the error:

$ dpkg -l | grep python3-pyroute2
ii  python3-pyroute2                               0.4.21-0.1ubuntu2            
all                          Python3 Netlink library

$ sudo ./lp1904730-test.py 
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pyroute2/netlink/__init__.py", line 
1232, in _ft_decode_generic
    self.decode_nlas(offset)
  File "/usr/lib/python3/dist-packages/pyroute2/netlink/__init__.py", line 
1357, in decode_nlas
    offset)
struct.error: unpack_from requires a buffer of at least 4 bytes

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./lp1904730-test.py", line 7, in <module>
    link = ip.link('get', index=link_idx, ext_mask=1)[0]
  File "/usr/lib/python3/dist-packages/pyroute2/iproute.py", line 1310, in link
    msg_flags=msg_flags)
  File "/usr/lib/python3/dist-packages/pyroute2/netlink/nlsocket.py", line 804, 
in nlm_request
    return do_try()
  File "/usr/lib/python3/dist-packages/pyroute2/netlink/nlsocket.py", line 783, 
in do_try
    callback=callback)
  File "/usr/lib/python3/dist-packages/pyroute2/netlink/nlsocket.py", line 648, 
in get
    raise msg['header']['error']
  File "/usr/lib/python3/dist-packages/pyroute2/netlink/nlsocket.py", line 171, 
in parse
    msg.decode()
  File "/usr/lib/python3/dist-packages/pyroute2/netlink/__init__.py", line 941, 
in decode
    self._ft_decode(self, offset)
  File "/usr/lib/python3/dist-packages/pyroute2/netlink/__init__.py", line 
1235, in _ft_decode_generic
    raise NetlinkNLADecodeError(e)
pyroute2.netlink.exceptions.NetlinkNLADecodeError: unpack_from requires a 
buffer of at least 4 bytes


Running with the proposed patch:

$ dpkg -l | grep python3-pyroute2
ii  python3-pyroute2                       0.4.21-0.1ubuntu2.1                  
           all          Python3 Netlink library
$ sudo ./lp1904730-test.py 
63


** Tags removed: verification-needed
** Tags added: verification-done verification-done-bionic

** Tags removed: verification-needed-bionic

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1904730

Title:
  neutron-agent-sriov fails to create port

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/+bug/1904730/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to