I've been doing some work on neutron-dynamic-routing in OpenStack which uses
Ryu BGP. We are seeing some failures in python 3 check jobs when we run
against python 3. We are seeing the following error:
2016-05-18
04:52:07.038<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_038>
| Failed to import test module:
neutron_dynamic_routing.tests.unit.services.bgp.driver.ryu.test_driver
2016-05-18
04:52:07.038<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_038>
| Traceback (most recent call last):
2016-05-18
04:52:07.038<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_038>
| File
"/home/jenkins/workspace/gate-neutron-dynamic-routing-python34/.tox/py34/lib/python3.4/site-packages/unittest2/loader.py",
line 456, in _find_test_path
2016-05-18
04:52:07.038<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_038>
| module = self._get_module_from_name(name)
2016-05-18
04:52:07.038<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_038>
| File
"/home/jenkins/workspace/gate-neutron-dynamic-routing-python34/.tox/py34/lib/python3.4/site-packages/unittest2/loader.py",
line 395, in _get_module_from_name
2016-05-18
04:52:07.038<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_038>
| __import__(name)
2016-05-18
04:52:07.038<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_038>
| File
"/home/jenkins/workspace/gate-neutron-dynamic-routing-python34/neutron_dynamic_routing/tests/unit/services/bgp/driver/ryu/test_driver.py",
line 18, in <module>
2016-05-18
04:52:07.038<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_038>
| from ryu.services.protocols.bgp import bgpspeaker
2016-05-18
04:52:07.038<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_038>
| File
"/home/jenkins/workspace/gate-neutron-dynamic-routing-python34/.tox/py34/lib/python3.4/site-packages/ryu/services/protocols/bgp/bgpspeaker.py",
line 22, in <module>
2016-05-18
04:52:07.039<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_039>
| from ryu.services.protocols.bgp.core_manager import CORE_MANAGER
2016-05-18
04:52:07.039<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_039>
| File
"/home/jenkins/workspace/gate-neutron-dynamic-routing-python34/.tox/py34/lib/python3.4/site-packages/ryu/services/protocols/bgp/core_manager.py",
line 19, in <module>
2016-05-18
04:52:07.039<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_039>
| from ryu.services.protocols.bgp.base import Activity
2016-05-18
04:52:07.039<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_039>
| File
"/home/jenkins/workspace/gate-neutron-dynamic-routing-python34/.tox/py34/lib/python3.4/site-packages/ryu/services/protocols/bgp/base.py",
line 56, in <module>
2016-05-18
04:52:07.039<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_039>
| RF_IPv6_VPN
2016-05-18
04:52:07.039<http://logs.openstack.org/50/317550/1/gate/gate-neutron-dynamic-routing-python34/acf6560/console.html#_2016-05-18_04_52_07_039>
| TypeError: unhashable type: 'RouteFamily'
It appears that the class RouteFamily as defined in
https://github.com/osrg/ryu/blob/master/ryu/lib/packet/bgp.py does not
implement __hash__(). Because it implements __eq__(), I *think* this is
incompatible with python 3 which I think is the root cause of the issue I'm
seeing. Is someone more knowledgeable with Ryu able to take a look and confirm
either way? Thanks!
-Ryan
------------------------------------------------------------------------------
Mobile security can be enabling, not merely restricting. Employees who
bring their own devices (BYOD) to work are irked by the imposition of MDM
restrictions. Mobile Device Manager Plus allows you to control only the
apps on BYO-devices by containerizing them, leaving personal data untouched!
https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel