[openstack-dev] [all] Deprecating exceptions

Jakub Ruzicka jruzicka at redhat.com
Tue Dec 9 15:50:48 UTC 2014

On 22.9.2014 17:24, Ihar Hrachyshka wrote:
> On 22/09/14 17:07, Radomir Dopieralski wrote:
>> Horizon's tests were recently broken by a change in the Ceilometer 
>> client that removed a deprecated exception. The exception was
>> deprecated for a while already, but as it often is, nobody did the 
>> work of removing all references to it from Horizon before it was
>> too late. Sure, in theory we should all be reading the release
>> notes of all versions of all dependencies and acting upon things
>> like this. In practice, if there is no warning generated in the
>> unit tests, nobody is going to do anything about it.
>> So I sat down and started thinking about how to best generate a
>> warning when someone is trying to catch a deprecated exception. I
>> came up with this code:
>> http://paste.openstack.org/show/114170/
>> It's not pretty -- it is based on the fact that the `except`
>> statement has to do a subclass check on the exceptions it is
>> catching. It requires a metaclass and a class decorator to work,
>> and it uses a global variable. I'm sure it would be possible to do
>> it in a little bit cleaner way. But at least it gives us the
>> warning (sure, only if an exception is actually being thrown, but
>> that's test coverage problem).
>> I propose to do exception deprecating in this way in the future.
> Aren't clients supposed to be backwards compatible? Isn't it the exact
> reason why we don't maintain stable branches for client modules?

Supposed, yes. However, it's not ensured/enforced any way, so it's as
good as an empty promise.

> So, another reason to actually start maintaining those stable branches
> for clients. We already do it in RDO (Red Hat backed Openstack
> distribution) anyway.

We kinda do that in RHOSP as well, no? Each rhos-X.Y-rhel-Z branch was
forked from RDO stable client branch (redhat-openstack)...


More information about the OpenStack-dev mailing list