[openstack-dev] [oslo] oslo.messaging dispatching into private/protected methods?

Doug Hellmann doug at doughellmann.com
Fri Mar 18 19:22:08 UTC 2016


Excerpts from Joshua Harlow's message of 2016-03-17 15:44:06 -0700:
> In a follow-up to this.
> 
> Seems like the patch to disable/disallow this itself found some 
> 'violations' @ 
> http://logs.openstack.org/24/289624/3/check/gate-oslo.messaging-src-dsvm-full-amqp1-centos7/e3b485c/console.html.gz#_2016-03-11_00_06_56_177
> 
> Details: {u'message': u'Unable to associate floating IP 172.24.5.1 to 
> fixed IP 10.1.14.255 for instance 3660f872-a8c2-4469-99c3-062ed1a90131. 
> Error: Remote error: NoSuchMethod Endpoint does not support RPC method 
> _associate_floating_ip\n[u\'Traceback (most recent call last):\\n\', u\' 
>   File "/opt/stack/new/oslo.messaging/oslo_messaging/rpc/dispatcher.py", 
> line 138, in _dispatch_and_reply\\n    incoming.message))\\n\', u\' 
> File "/opt/stack/new/oslo.messaging/oslo_messaging/rpc/dispatcher.py", 
> line 170, in _dispatch\\n    raise NoSuchMethod(method)\\n\', 
> u\'NoSuchMethod: Endpoint does not support RPC method 
> _associate_floating_ip\\n\'].', u'code': 400}
> 
> I believe this is a nova error as the test name is 
> 'tempest.api.compute.floating_ips.test_floating_ips_actions'
> 
> So I guess the question becomes, should we start warning using 
> warnings.warn (instead of raising a NoSuchMethod error) and at a later 
> point in the future stop using warnings.warn and switch to NoSuchMethod, 
> giving people ample enough time to stop dispatching into 
> protected/private methods.

We need the warning to show up in the calling side, so if we can look
at the name there and emit the warning that would be a good start. Then
changing oslo.messaging to not allow calling private methods would be an
API break, and require raising the major version for that release of the
library.

Doug

> 
> Thoughts?
> 
> -Josh
> 
> On 03/08/2016 09:43 AM, Joshua Harlow wrote:
> > Hi all,
> >
> > As I was working through https://review.openstack.org/#/c/288719/ for
> > kevin benton to do some things with in neutron it came to my
> > understanding that this code (the dispatcher code that is) can dispatch
> > into nearly arbitrary callables of any object (or that is what it looks
> > like it can do):
> >
> > https://github.com/openstack/oslo.messaging/blob/4.5.0/oslo_messaging/rpc/dispatcher.py#L169
> >
> >
> > So during this exploration of this code for the above review it made me
> > wonder if this is a feature or bug, or if we should at least close the
> > hole of allowing calling into nearly any endpoint method/attribute (even
> > non-callable ones to?).
> >
> > So before doing much more of this (which I started in review
> > https://review.openstack.org/#/c/289624/) I wanted to see if people are
> > actually using this 'ability' (for lack of better words) to call into
> > private/protected methods before pursuing 289624 much more...
> >
> > Thoughts?
> >
> > -Josh
> 



More information about the OpenStack-dev mailing list