Thanks for the link Vikram.  Good to know there's a fix out there.

-Ryan

From: Vikram Choudhary [mailto:[email protected]]
Sent: Wednesday, May 18, 2016 3:02 AM
To: Tidwell, Ryan <[email protected]>; [email protected]
Subject: RE: Potential python 3 incompatibility with Ryu BGP?

Hi Ryan,

I can find the fix is merged in the master 
https://github.com/osrg/ryu/commit/7f383974424e7080dabca217da607dcea2c64e9f

Thanks
Vikram

From: Tidwell, Ryan [mailto:[email protected]]
Sent: Wednesday, May 18, 2016 12:36 PM
To: [email protected]<mailto:[email protected]>
Subject: [Ryu-devel] Potential python 3 incompatibility with Ryu BGP?


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