yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #93498
[Bug 2054203] [NEW] Default flag change in netaddr breaks (at least) unit tests
Public bug reported:
netaddr 1.0.0 changed the default parsing mode from INET_ATON to
INET_PTON[1]. This was initially added to netaddr.IPAddress and then
later was applied to netaddr.IPNetwork in 1.1.0 [2]
While we attempted to bump netaddr to 1.0.1, we noticed this change
broke some of the unit tests in neutron.
https://zuul.opendev.org/t/openstack/build/8cfad48dcfb84be893fe78a1f965c5e6
(example)
```
neutron.tests.unit.agent.l3.extensions.test_ndp_proxy.NDPProxyExtensionDVRTestCase.test__get_snat_idx_ipv4
----------------------------------------------------------------------------------------------------------
Captured traceback:
~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 346, in __init__
self._value = self._module.str_to_int(addr, flags)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/strategy/ipv4.py", line 120, in str_to_int
raise error
netaddr.core.AddrFormatError: '101.12.13.00' is not a valid IPv4 address string!
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 1019, in __init__
value, prefixlen = parse_ip_network(module, addr, flags)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 899, in parse_ip_network
ip = IPAddress(val1, module.version, flags=INET_PTON)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 348, in __init__
raise AddrFormatError(
netaddr.core.AddrFormatError: base address '101.12.13.00' is not IPv4
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/zuul/src/opendev.org/openstack/neutron/neutron/tests/base.py", line 178, in func
return f(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/neutron/tests/base.py", line 178, in func
return f(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/neutron/tests/unit/agent/l3/test_dvr_local_router.py", line 549, in test__get_snat_idx_ipv4
snat_idx = ri._get_snat_idx(ip_cidr)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/l3/dvr_local_router.py", line 412, in _get_snat_idx
net = netaddr.IPNetwork(ip_cidr)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 1028, in __init__
raise AddrFormatError('invalid IPNetwork %s' % (addr,))
netaddr.core.AddrFormatError: invalid IPNetwork 101.12.13.00/24
```
An "easy" fix is adding flags=INET_ATON to all places. (note that
INET_ATON was added in netaddr 0.10.0) but I'd like to ask someone from
the neutron team to look into this and check whether we really have to
use INET_ATON or fix unit test side to apply the more strict rule.
[1] https://netaddr.readthedocs.io/en/latest/changes.html#release-1-0-0
[2] https://netaddr.readthedocs.io/en/latest/changes.html#release-1-1-0
** Affects: neutron
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/2054203
Title:
Default flag change in netaddr breaks (at least) unit tests
Status in neutron:
New
Bug description:
netaddr 1.0.0 changed the default parsing mode from INET_ATON to
INET_PTON[1]. This was initially added to netaddr.IPAddress and then
later was applied to netaddr.IPNetwork in 1.1.0 [2]
While we attempted to bump netaddr to 1.0.1, we noticed this change
broke some of the unit tests in neutron.
https://zuul.opendev.org/t/openstack/build/8cfad48dcfb84be893fe78a1f965c5e6
(example)
```
neutron.tests.unit.agent.l3.extensions.test_ndp_proxy.NDPProxyExtensionDVRTestCase.test__get_snat_idx_ipv4
----------------------------------------------------------------------------------------------------------
Captured traceback:
~~~~~~~~~~~~~~~~~~~
Traceback (most recent call last):
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 346, in __init__
self._value = self._module.str_to_int(addr, flags)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/strategy/ipv4.py", line 120, in str_to_int
raise error
netaddr.core.AddrFormatError: '101.12.13.00' is not a valid IPv4 address string!
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 1019, in __init__
value, prefixlen = parse_ip_network(module, addr, flags)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 899, in parse_ip_network
ip = IPAddress(val1, module.version, flags=INET_PTON)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 348, in __init__
raise AddrFormatError(
netaddr.core.AddrFormatError: base address '101.12.13.00' is not IPv4
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/zuul/src/opendev.org/openstack/neutron/neutron/tests/base.py", line 178, in func
return f(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/neutron/tests/base.py", line 178, in func
return f(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/neutron/tests/unit/agent/l3/test_dvr_local_router.py", line 549, in test__get_snat_idx_ipv4
snat_idx = ri._get_snat_idx(ip_cidr)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/l3/dvr_local_router.py", line 412, in _get_snat_idx
net = netaddr.IPNetwork(ip_cidr)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zuul/src/opendev.org/openstack/neutron/.tox/py311/lib/python3.11/site-packages/netaddr/ip/__init__.py", line 1028, in __init__
raise AddrFormatError('invalid IPNetwork %s' % (addr,))
netaddr.core.AddrFormatError: invalid IPNetwork 101.12.13.00/24
```
An "easy" fix is adding flags=INET_ATON to all places. (note that
INET_ATON was added in netaddr 0.10.0) but I'd like to ask someone
from the neutron team to look into this and check whether we really
have to use INET_ATON or fix unit test side to apply the more strict
rule.
[1] https://netaddr.readthedocs.io/en/latest/changes.html#release-1-0-0
[2] https://netaddr.readthedocs.io/en/latest/changes.html#release-1-1-0
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/2054203/+subscriptions