[dev][goal][python3][qa][devstack][ptl] changing devstack's python 3 behavior

Doug Hellmann doug at doughellmann.com
Wed Jan 9 20:55:29 UTC 2019

Luigi Toscano <ltoscano at redhat.com> writes:

> On Wednesday, 9 January 2019 20:57:09 CET Doug Hellmann wrote:
>> Doug Hellmann <doug at doughellmann.com> writes:
>> > Doug Hellmann <doug at doughellmann.com> writes:
>> >> Today devstack requires each project to explicitly indicate that it can
>> >> be installed under python 3, even when devstack itself is running with
>> >> python 3 enabled.
>> >> 
>> >> As part of the python3-first goal, I have proposed a change to devstack
>> >> to modify that behavior [1]. With the change in place, when devstack
>> >> runs with python3 enabled all services are installed under python 3,
>> >> unless explicitly listed as not supporting python 3.
>> >> 
>> >> If your project has a devstack plugin or runs integration or functional
>> >> test jobs that use devstack, please test your project with the patch
>> >> (you can submit a trivial change to your project and use Depends-On to
>> >> pull in the devstack change).
>> >> 
>> >> [1] https://review.openstack.org/#/c/622415/
>> > 
>> > We have had a few +1 votes on the patch above with comments that
>> > indicate at least a couple of projects have taken the time to test and
>> > verify that things won't break for them with the change.
>> > 
>> > Are we ready to proceed with merging the change?
>> The patch mentioned above that changes the default version of Python in
>> devstack to 3 by default has merged. If this triggers a failure in your
>> devstack-based jobs, you can use the disable_python3_package function to
>> add your package to the list *not* installed using Python 3 until the
>> fixes are available.
> Isn't the purpose of the patch to make sure that all services are installed 
> using Python 3 when Python 3 is enabled, but that we still need to set 
> Ciao
> -- 
> Luigi

It is still necessary to set USE_PYTHON3=True in the job. The logic
enabled by that flag used to *also* require each service to individually
enable python 3 testing. Now that is no longer true, and services must
explicitly *disable* python 3 if it is not supported.

The USE_PYTHON3 flag allows us to have 2 jobs, with devstack running
under python 2 and python 3. When we drop python 2 support, we can drop
the USE_PYTHON3 flag from devstack and always run under python 3. (We
could do that before we drop support for 2, but we would have to modify
a lot of job configurations and I'm not sure it buys us much given the
amount of effort involved there.)


More information about the openstack-discuss mailing list