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

Reply via email to