Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-05-29 Thread Jeremy Stanley
On 2018-05-29 15:51:31 -0400 (-0400), Doug Hellmann wrote:
[...]
> Could we, for example, look at the set of packages installed under
> python2 and report errors if any OpenStack packages end up there?
[...]

This sounds like a marvellous solution.
-- 
Jeremy Stanley


signature.asc
Description: PGP signature
__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-05-29 Thread Doug Hellmann
Excerpts from Matthew Treinish's message of 2018-05-29 16:16:50 -0400:
> On Tue, May 29, 2018 at 03:51:31PM -0400, Doug Hellmann wrote:
> > Following up on this topic, at the Forum discussion last week (see
> > https://etherpad.openstack.org/p/YVR-python-2-deprecation-timeline) the
> > general plan outlined below was acceptable to most of the folks in the
> > room with a few small changes (included below).
> > 
> > Excerpts from Doug Hellmann's message of 2018-04-25 16:54:46 -0400:
> > > It's time to talk about the next steps in our migration from python
> > > 2 to python 3.
> > > 
> > > Up to this point we have mostly focused on reaching a state where
> > > we support both versions of the language. We are not quite there
> > > with all projects, as you can see by reviewing the test coverage
> > > status information at
> > > https://wiki.openstack.org/wiki/Python3#Python_3_Status_of_OpenStack_projects
> > > 
> > > Still, we need to press on to the next phase of the migration, which
> > > I have been calling "Python 3 first". This is where we use python
> > > 3 as the default, for everything, and set up the exceptions we need
> > > for anything that still requires python 2.
> > > 
> > > To reach that stage, we need to:
> > > 
> > > 1. Change the documentation and release notes jobs to use python 3.
> > >(The Oslo team recently completed this, and found that we did
> > >need to make a few small code changes to get them to work.)
> > > 2. Change (or duplicate) all functional test jobs to run under
> > >python 3.
> > > 3. Change the packaging jobs to use python 3.
> > > 4. Update devstack to use 3 by default and require setting a flag to
> > >use 2. (This may trigger other job changes.)
> > 
> > Also:
> > 
> > - Ensure that devstack configures mod_wsgi (or whatever WSGI service) to
> >   use Python 3 when deploying API components.
> 
> The python 3 dsvm jobs already do this for the most part. All API services 
> that
> support running as a wsgi application run under uwsgi with a single apache
> redirecting traffic to those. This is the supported model for running wsgi
> services on devstack. Currently keystone, glance, nova, placement, and cinder
> run their API servers this way. Neutron doesn't run under as wsgi app (I
> don't recall why this was never implemented for neutron) and swift doesn't run
> in the py3 jobs at all. You can see an example of this here:

OK, good, thank you for clarifying that. I think the folks in the room
weren't 100% sure, so the point was to double check. And it sounds like
we still need to do that for projects using devstack plugins, based on
your next comment.

> 
> http://logs.openstack.org/08/550108/3/gate/tempest-full-py3/df744ef/controller/logs/
> 
> For other services it depends on how they implemented their devstack plugin. I
> haven't done an inventory on how all the plugins are running things, so I 
> don't
> know what the status of each project is there.
> 
> > - Test "python version skew" within a service during a rolling upgrade
> >   across multiple hosts.
> > - Add an integration test job that does not include python2 on the host
> >   at all.
> > 
> > That last item may block us from using other tools, such as ansible,
> > that rely on python2. If the point of such a test is to ensure that
> > we are properly installing (and running) our tools under python3,
> > maybe *that's* what we want to check, instead of forbidding a python2
> > package at all? Could we, for example, look at the set of packages
> > installed under python2 and report errors if any OpenStack packages end
> > up there?
> > 
> > > 
> > > At that point, all of our deliverables will be produced using python
> > > 3, and we can be relatively confident that if we no longer had
> > > access to python 2 we could still continue operating. We could also
> > > start updating deployment tools to use either python 3 or 2, so
> > > that users could actually deploy using the python 3 versions of
> > > services.
> > > 
> > > Somewhere in that time frame our third-party CI systems will need
> > > to ensure they have python 3 support as well.
> > > 
> > > After the "Python 3 first" phase is completed we should release
> > > one series using the packages built with python 3. Perhaps Stein?
> > > Or is that too ambitious?
> > > 
> > > Next, we will be ready to address the prerequisites for "Python 3
> > > only," which will allow us to drop Python 2 support.
> > > 
> > > We need to wait to drop python 2 support as a community, rather
> > > than going one project at a time, to avoid doubling the work of
> > > downstream consumers such as distros and independent deployers. We
> > > don't want them to have to package all (or even a large number) of
> > > the dependencies of OpenStack twice because they have to install
> > > some services running under python 2 and others under 3. Ideally
> > > they would be able to upgrade all of the services on a node together
> > > as part of their transition to the 

Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-05-29 Thread Matthew Treinish
On Tue, May 29, 2018 at 03:51:31PM -0400, Doug Hellmann wrote:
> Following up on this topic, at the Forum discussion last week (see
> https://etherpad.openstack.org/p/YVR-python-2-deprecation-timeline) the
> general plan outlined below was acceptable to most of the folks in the
> room with a few small changes (included below).
> 
> Excerpts from Doug Hellmann's message of 2018-04-25 16:54:46 -0400:
> > It's time to talk about the next steps in our migration from python
> > 2 to python 3.
> > 
> > Up to this point we have mostly focused on reaching a state where
> > we support both versions of the language. We are not quite there
> > with all projects, as you can see by reviewing the test coverage
> > status information at
> > https://wiki.openstack.org/wiki/Python3#Python_3_Status_of_OpenStack_projects
> > 
> > Still, we need to press on to the next phase of the migration, which
> > I have been calling "Python 3 first". This is where we use python
> > 3 as the default, for everything, and set up the exceptions we need
> > for anything that still requires python 2.
> > 
> > To reach that stage, we need to:
> > 
> > 1. Change the documentation and release notes jobs to use python 3.
> >(The Oslo team recently completed this, and found that we did
> >need to make a few small code changes to get them to work.)
> > 2. Change (or duplicate) all functional test jobs to run under
> >python 3.
> > 3. Change the packaging jobs to use python 3.
> > 4. Update devstack to use 3 by default and require setting a flag to
> >use 2. (This may trigger other job changes.)
> 
> Also:
> 
> - Ensure that devstack configures mod_wsgi (or whatever WSGI service) to
>   use Python 3 when deploying API components.

The python 3 dsvm jobs already do this for the most part. All API services that
support running as a wsgi application run under uwsgi with a single apache
redirecting traffic to those. This is the supported model for running wsgi
services on devstack. Currently keystone, glance, nova, placement, and cinder
run their API servers this way. Neutron doesn't run under as wsgi app (I
don't recall why this was never implemented for neutron) and swift doesn't run
in the py3 jobs at all. You can see an example of this here:

http://logs.openstack.org/08/550108/3/gate/tempest-full-py3/df744ef/controller/logs/

For other services it depends on how they implemented their devstack plugin. I
haven't done an inventory on how all the plugins are running things, so I don't
know what the status of each project is there.

> - Test "python version skew" within a service during a rolling upgrade
>   across multiple hosts.
> - Add an integration test job that does not include python2 on the host
>   at all.
> 
> That last item may block us from using other tools, such as ansible,
> that rely on python2. If the point of such a test is to ensure that
> we are properly installing (and running) our tools under python3,
> maybe *that's* what we want to check, instead of forbidding a python2
> package at all? Could we, for example, look at the set of packages
> installed under python2 and report errors if any OpenStack packages end
> up there?
> 
> > 
> > At that point, all of our deliverables will be produced using python
> > 3, and we can be relatively confident that if we no longer had
> > access to python 2 we could still continue operating. We could also
> > start updating deployment tools to use either python 3 or 2, so
> > that users could actually deploy using the python 3 versions of
> > services.
> > 
> > Somewhere in that time frame our third-party CI systems will need
> > to ensure they have python 3 support as well.
> > 
> > After the "Python 3 first" phase is completed we should release
> > one series using the packages built with python 3. Perhaps Stein?
> > Or is that too ambitious?
> > 
> > Next, we will be ready to address the prerequisites for "Python 3
> > only," which will allow us to drop Python 2 support.
> > 
> > We need to wait to drop python 2 support as a community, rather
> > than going one project at a time, to avoid doubling the work of
> > downstream consumers such as distros and independent deployers. We
> > don't want them to have to package all (or even a large number) of
> > the dependencies of OpenStack twice because they have to install
> > some services running under python 2 and others under 3. Ideally
> > they would be able to upgrade all of the services on a node together
> > as part of their transition to the new version, without ending up
> > with a python 2 version of a dependency along side a python 3 version
> > of the same package.
> > 
> > The remaining items could be fixed earlier, but this is the point
> > at which they would block us:
> > 
> > 1. Fix oslo.service functional tests -- the Oslo team needs help
> >maintaining this library. Alternatively, we could move all
> >services to use cotyledon (https://pypi.org/project/cotyledon/).
> > 
> > 2. Finish the unit test and 

Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-05-29 Thread Doug Hellmann
Following up on this topic, at the Forum discussion last week (see
https://etherpad.openstack.org/p/YVR-python-2-deprecation-timeline) the
general plan outlined below was acceptable to most of the folks in the
room with a few small changes (included below).

Excerpts from Doug Hellmann's message of 2018-04-25 16:54:46 -0400:
> It's time to talk about the next steps in our migration from python
> 2 to python 3.
> 
> Up to this point we have mostly focused on reaching a state where
> we support both versions of the language. We are not quite there
> with all projects, as you can see by reviewing the test coverage
> status information at
> https://wiki.openstack.org/wiki/Python3#Python_3_Status_of_OpenStack_projects
> 
> Still, we need to press on to the next phase of the migration, which
> I have been calling "Python 3 first". This is where we use python
> 3 as the default, for everything, and set up the exceptions we need
> for anything that still requires python 2.
> 
> To reach that stage, we need to:
> 
> 1. Change the documentation and release notes jobs to use python 3.
>(The Oslo team recently completed this, and found that we did
>need to make a few small code changes to get them to work.)
> 2. Change (or duplicate) all functional test jobs to run under
>python 3.
> 3. Change the packaging jobs to use python 3.
> 4. Update devstack to use 3 by default and require setting a flag to
>use 2. (This may trigger other job changes.)

Also:

- Ensure that devstack configures mod_wsgi (or whatever WSGI service) to
  use Python 3 when deploying API components.
- Test "python version skew" within a service during a rolling upgrade
  across multiple hosts.
- Add an integration test job that does not include python2 on the host
  at all.

That last item may block us from using other tools, such as ansible,
that rely on python2. If the point of such a test is to ensure that
we are properly installing (and running) our tools under python3,
maybe *that's* what we want to check, instead of forbidding a python2
package at all? Could we, for example, look at the set of packages
installed under python2 and report errors if any OpenStack packages end
up there?

> 
> At that point, all of our deliverables will be produced using python
> 3, and we can be relatively confident that if we no longer had
> access to python 2 we could still continue operating. We could also
> start updating deployment tools to use either python 3 or 2, so
> that users could actually deploy using the python 3 versions of
> services.
> 
> Somewhere in that time frame our third-party CI systems will need
> to ensure they have python 3 support as well.
> 
> After the "Python 3 first" phase is completed we should release
> one series using the packages built with python 3. Perhaps Stein?
> Or is that too ambitious?
> 
> Next, we will be ready to address the prerequisites for "Python 3
> only," which will allow us to drop Python 2 support.
> 
> We need to wait to drop python 2 support as a community, rather
> than going one project at a time, to avoid doubling the work of
> downstream consumers such as distros and independent deployers. We
> don't want them to have to package all (or even a large number) of
> the dependencies of OpenStack twice because they have to install
> some services running under python 2 and others under 3. Ideally
> they would be able to upgrade all of the services on a node together
> as part of their transition to the new version, without ending up
> with a python 2 version of a dependency along side a python 3 version
> of the same package.
> 
> The remaining items could be fixed earlier, but this is the point
> at which they would block us:
> 
> 1. Fix oslo.service functional tests -- the Oslo team needs help
>maintaining this library. Alternatively, we could move all
>services to use cotyledon (https://pypi.org/project/cotyledon/).
> 
> 2. Finish the unit test and functional test ports so that all of
>our tests can run under python 3 (this implies that the services
>all run under python 3, so there is no more porting to do).
> 
> Finally, after we have *all* tests running on python 3, we can
> safely drop python 2.

We clarified that we would only drop python 2 support on master.
That clarification also raised the point that eventually backports
may become more difficult if master is using python 3 features, but
Matt and Tony agreed that we could potentially have rebasing issues
with fixes today so while this is a new source of such issues it
isn't a completely new problem and our stable backport policies
already address it.

> 
> We have previously discussed the end of the T cycle as the point
> at which we would have all of those tests running, and if that holds
> true we could reasonably drop python 2 during the beginning of the
> U cycle, in late 2019 and before the 2020 cut-off point when upstream
> python 2 support will be dropped.

This date as the earliest point at which existing 

Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-30 Thread Doug Hellmann
Excerpts from Clark Boylan's message of 2018-04-26 11:22:15 -0700:
> On Thu, Apr 26, 2018, at 7:27 AM, Sean McGinnis wrote:
> > On Wed, Apr 25, 2018 at 04:54:46PM -0400, Doug Hellmann wrote:
> > > It's time to talk about the next steps in our migration from python
> > > 2 to python 3.
> > > 
> > > [...]
> > > 
> > > 2. Change (or duplicate) all functional test jobs to run under
> > >python 3.
> > 
> > As a test I ran Cinder functional and unit test jobs on bionic using 3.6. 
> > All
> > went well.
> > 
> > That made me realize something though - right now we have jobs that 
> > explicitly
> > say py35, both for unit tests and functional tests. But I realized setting 
> > up
> > these test jobs that it works to just specify "basepython = python3" or run
> > unit tests with "tox -e py3". Then with that, it just depends on whether the
> > job runs on xenial or bionic as to whether the job is run with py35 or py36.
> > 
> > It is less explicit, so I see some downside to that, but would it make 
> > sense to
> > change jobs to drop the minor version to make it more flexible and easy to 
> > make
> > these transitions?
> 
> One reason to use it would be local user simplicity. Rather than need to 
> explicitly add new python3 releases to the default env list so that it does 
> what we want every year or two we can just list py3,py2,linters in the 
> default list and get most of the way there for local users. Then we can 
> continue to be more specific in the CI jobs if that is desirable.
> 
> I do think we likely want to be explicit about the python versions we are 
> using in CI testing. This makes it clear to developers who may need to 
> reproduce or just understand why failures happen what platform is used. It 
> also makes it explicit that "openstack runs on $pythonversion".
> 
> Clark
> 

Including support for local users to refer to "py3" makes sense, as long
as we don't come to rely on it in CI. Users can also always be more
explicit if they need to be when running tests locally.

Doug

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-26 Thread Clark Boylan
On Thu, Apr 26, 2018, at 7:27 AM, Sean McGinnis wrote:
> On Wed, Apr 25, 2018 at 04:54:46PM -0400, Doug Hellmann wrote:
> > It's time to talk about the next steps in our migration from python
> > 2 to python 3.
> > 
> > [...]
> > 
> > 2. Change (or duplicate) all functional test jobs to run under
> >python 3.
> 
> As a test I ran Cinder functional and unit test jobs on bionic using 3.6. All
> went well.
> 
> That made me realize something though - right now we have jobs that explicitly
> say py35, both for unit tests and functional tests. But I realized setting up
> these test jobs that it works to just specify "basepython = python3" or run
> unit tests with "tox -e py3". Then with that, it just depends on whether the
> job runs on xenial or bionic as to whether the job is run with py35 or py36.
> 
> It is less explicit, so I see some downside to that, but would it make sense 
> to
> change jobs to drop the minor version to make it more flexible and easy to 
> make
> these transitions?

One reason to use it would be local user simplicity. Rather than need to 
explicitly add new python3 releases to the default env list so that it does 
what we want every year or two we can just list py3,py2,linters in the default 
list and get most of the way there for local users. Then we can continue to be 
more specific in the CI jobs if that is desirable.

I do think we likely want to be explicit about the python versions we are using 
in CI testing. This makes it clear to developers who may need to reproduce or 
just understand why failures happen what platform is used. It also makes it 
explicit that "openstack runs on $pythonversion".

Clark

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-26 Thread Jeremy Stanley
On 2018-04-26 13:17:33 -0400 (-0400), Paul Belanger wrote:
[...]
> This maybe okay, will allow others to comment, but the main reason
> I am not a fan, is we can no longer infer the nodeset by looking
> at the job name. tox-py3 could be xenial or bionic.

This brings back a question we've struggled with for years: are we
testing against "Python X.Y" or are we testing against "Python as
provided by distro Z"? Depending on how you think about that, one
solution or the other is technically a more accurate reflection of
our choice here.
-- 
Jeremy Stanley


signature.asc
Description: PGP signature
__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-26 Thread Paul Belanger
On Thu, Apr 26, 2018 at 09:27:31AM -0500, Sean McGinnis wrote:
> On Wed, Apr 25, 2018 at 04:54:46PM -0400, Doug Hellmann wrote:
> > It's time to talk about the next steps in our migration from python
> > 2 to python 3.
> > 
> > [...]
> > 
> > 2. Change (or duplicate) all functional test jobs to run under
> >python 3.
> 
> As a test I ran Cinder functional and unit test jobs on bionic using 3.6. All
> went well.
> 
> That made me realize something though - right now we have jobs that explicitly
> say py35, both for unit tests and functional tests. But I realized setting up
> these test jobs that it works to just specify "basepython = python3" or run
> unit tests with "tox -e py3". Then with that, it just depends on whether the
> job runs on xenial or bionic as to whether the job is run with py35 or py36.
> 
> It is less explicit, so I see some downside to that, but would it make sense 
> to
> change jobs to drop the minor version to make it more flexible and easy to 
> make
> these transitions?
> 
I still think using tox-py35 / tox-py36 makes sense, as those jobs are already
setup to use the specific nodeset of ubuntu-xenial or ubuntu-bionic.  If we did
move to just tox-py3, it would actually result if more code projects would need
to add to their .zuul.yaml files:

  -project:
  check:
jobs:
  - tox-py35


  -project:
  check:
jobs:
  - tox-py3:
  nodeset: ubuntu-xenial

This maybe okay, will allow others to comment, but the main reason I am not a
fan, is we can no longer infer the nodeset by looking at the job name.
tox-py3 could be xenial or bionic.

Paul

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-26 Thread Sean McGinnis
On Wed, Apr 25, 2018 at 04:54:46PM -0400, Doug Hellmann wrote:
> It's time to talk about the next steps in our migration from python
> 2 to python 3.
> 
> [...]
> 
> 2. Change (or duplicate) all functional test jobs to run under
>python 3.

As a test I ran Cinder functional and unit test jobs on bionic using 3.6. All
went well.

That made me realize something though - right now we have jobs that explicitly
say py35, both for unit tests and functional tests. But I realized setting up
these test jobs that it works to just specify "basepython = python3" or run
unit tests with "tox -e py3". Then with that, it just depends on whether the
job runs on xenial or bionic as to whether the job is run with py35 or py36.

It is less explicit, so I see some downside to that, but would it make sense to
change jobs to drop the minor version to make it more flexible and easy to make
these transitions?

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-26 Thread Thomas Goirand
On 04/25/2018 11:40 PM, Jeremy Stanley wrote:
> It may be worth considering how this interacts with the switch of
> our default test platform from Ubuntu 16.04 (which provides Python
> 3.5) to 18.04 (which provides Python 3.6). If we switch from 3.5 to
> 3.6 before we change most remaining jobs over to Python 3.x versions
> then it gives us a chance to spot differences between 3.5 and 3.6 at
> that point.

I don't think you'll find lots of issues, as all Debian and Gentoo
packages were built against Python 3.6, and hopefully, prometheanfire
and myself have reported the issues.

> So I guess that raises the question: switch to Python 3.5 by default
> for most jobs in Rocky and then have a potentially more disruptive
> default platform switch with Python 3.5->3.6 at the beginning of
> Stein, or wait until the default platform switch to move from Python
> 2.7 to 3.6 as the job default? I can see some value in each option.

I'd love to see gating on both Python 3.5 and 3.6 if possible.

Also, can we restart the attempts (non-voting) gating jobs with Debian
Sid? That's always were we get all updates first.

Cheers,

Thomas Goirand (zigo)

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-25 Thread Jeremy Stanley
On 2018-04-25 18:25:24 -0400 (-0400), Doug Hellmann wrote:
[...]
> Does 18.04 include a python 2 option?

Yes, 2.7.15 if packages.ubuntu.com is to be believed.

> What is the target for completing the changeover? The first or
> second milestone for Stein, or the end of the cycle?

I would expect us to want to pull the trigger after whatever grace
period the cycle-trailing projects are comfortable with (but
certainly before the first milestone I would think?).

> It would be useful to have some input from the project teams who
> have no unit or functional test jobs running for 3.5, since they
> will have the most work to do to cope with the upgrade overall.

Yes, it would in my opinion anyway.

> Who is coordinating Ubuntu upgrade work and setting up the
> experimental jobs?

We have preliminary ubuntu-bionic images available already
(officially it doesn't release until tomorrow), and some teams have
started to use them for experimental or non-voting jobs:

http://codesearch.openstack.org/?q=ubuntu-bionic

-- 
Jeremy Stanley


signature.asc
Description: PGP signature
__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-25 Thread Clark Boylan
On Wed, Apr 25, 2018, at 3:25 PM, Doug Hellmann wrote:
> Excerpts from Jeremy Stanley's message of 2018-04-25 21:40:37 +:
> > On 2018-04-25 16:54:46 -0400 (-0400), Doug Hellmann wrote:
> > [...]
> > > Still, we need to press on to the next phase of the migration, which
> > > I have been calling "Python 3 first". This is where we use python
> > > 3 as the default, for everything, and set up the exceptions we need
> > > for anything that still requires python 2.
> > [...]
> > 
> > It may be worth considering how this interacts with the switch of
> > our default test platform from Ubuntu 16.04 (which provides Python
> > 3.5) to 18.04 (which provides Python 3.6). If we switch from 3.5 to
> > 3.6 before we change most remaining jobs over to Python 3.x versions
> > then it gives us a chance to spot differences between 3.5 and 3.6 at
> > that point. Given that the 14.04 to 16.04 migration, where we
> > attempted to allow projects to switch at their own pace, didn't go
> > so well we're hoping to do a "big bang" migration instead for 18.04
> > and expect teams who haven't set up experimental jobs ahead of time
> > to work out remaining blockers after the flag day before they can go
> > back to business as usual. Since the 18.04 release is happening so
> > far into the Rocky cycle, we're likely to want to do that at the
> > start of Stein instead when it will be less disruptive.
> > 
> > So I guess that raises the question: switch to Python 3.5 by default
> > for most jobs in Rocky and then have a potentially more disruptive
> > default platform switch with Python 3.5->3.6 at the beginning of
> > Stein, or wait until the default platform switch to move from Python
> > 2.7 to 3.6 as the job default? I can see some value in each option.
> 
> Does 18.04 include a python 2 option?

It does, https://packages.ubuntu.com/bionic/python2.7.

> 
> What is the target for completing the changeover? The first or
> second milestone for Stein, or the end of the cycle?

Previously we've tried to do the transition in OpenStack release that is under 
development when the LTS releases. However we've offset things a bit now so 
that may not be as feasible. I would expect that if we waited for the next 
cycle we would do it very early in that cycle.

For the transition from python 3.5 on Xenial to 3.6 on Bionic we may want to 
keep the python 3.5 jobs on Xenial but add in non voting python 3.6 jobs to 
every project running Xenial python3.5 jobs. Then those projects can toggle 
them to voting 3.6 jobs if/when they start working. Then we can decide at a 
later time if continuing to support python 3.5 (and testing it) is worthwhile.

> 
> It would be useful to have some input from the project teams who
> have no unit or functional test jobs running for 3.5, since they
> will have the most work to do to cope with the upgrade overall.
> 
> Who is coordinating Ubuntu upgrade work and setting up the experimental
> jobs?

Paul Belanger has been doing much of the work to get the images up and running 
and helping some projects start to run early jobs on the beta images. I expect 
Paul would want to continue to carry the transition through to the end.

Clark

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-25 Thread Doug Hellmann
Excerpts from Jeremy Stanley's message of 2018-04-25 21:40:37 +:
> On 2018-04-25 16:54:46 -0400 (-0400), Doug Hellmann wrote:
> [...]
> > Still, we need to press on to the next phase of the migration, which
> > I have been calling "Python 3 first". This is where we use python
> > 3 as the default, for everything, and set up the exceptions we need
> > for anything that still requires python 2.
> [...]
> 
> It may be worth considering how this interacts with the switch of
> our default test platform from Ubuntu 16.04 (which provides Python
> 3.5) to 18.04 (which provides Python 3.6). If we switch from 3.5 to
> 3.6 before we change most remaining jobs over to Python 3.x versions
> then it gives us a chance to spot differences between 3.5 and 3.6 at
> that point. Given that the 14.04 to 16.04 migration, where we
> attempted to allow projects to switch at their own pace, didn't go
> so well we're hoping to do a "big bang" migration instead for 18.04
> and expect teams who haven't set up experimental jobs ahead of time
> to work out remaining blockers after the flag day before they can go
> back to business as usual. Since the 18.04 release is happening so
> far into the Rocky cycle, we're likely to want to do that at the
> start of Stein instead when it will be less disruptive.
> 
> So I guess that raises the question: switch to Python 3.5 by default
> for most jobs in Rocky and then have a potentially more disruptive
> default platform switch with Python 3.5->3.6 at the beginning of
> Stein, or wait until the default platform switch to move from Python
> 2.7 to 3.6 as the job default? I can see some value in each option.

Does 18.04 include a python 2 option?

What is the target for completing the changeover? The first or
second milestone for Stein, or the end of the cycle?

It would be useful to have some input from the project teams who
have no unit or functional test jobs running for 3.5, since they
will have the most work to do to cope with the upgrade overall.

Who is coordinating Ubuntu upgrade work and setting up the experimental
jobs?

Doug

__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [all][tc] final stages of python 3 transition

2018-04-25 Thread Jeremy Stanley
On 2018-04-25 16:54:46 -0400 (-0400), Doug Hellmann wrote:
[...]
> Still, we need to press on to the next phase of the migration, which
> I have been calling "Python 3 first". This is where we use python
> 3 as the default, for everything, and set up the exceptions we need
> for anything that still requires python 2.
[...]

It may be worth considering how this interacts with the switch of
our default test platform from Ubuntu 16.04 (which provides Python
3.5) to 18.04 (which provides Python 3.6). If we switch from 3.5 to
3.6 before we change most remaining jobs over to Python 3.x versions
then it gives us a chance to spot differences between 3.5 and 3.6 at
that point. Given that the 14.04 to 16.04 migration, where we
attempted to allow projects to switch at their own pace, didn't go
so well we're hoping to do a "big bang" migration instead for 18.04
and expect teams who haven't set up experimental jobs ahead of time
to work out remaining blockers after the flag day before they can go
back to business as usual. Since the 18.04 release is happening so
far into the Rocky cycle, we're likely to want to do that at the
start of Stein instead when it will be less disruptive.

So I guess that raises the question: switch to Python 3.5 by default
for most jobs in Rocky and then have a potentially more disruptive
default platform switch with Python 3.5->3.6 at the beginning of
Stein, or wait until the default platform switch to move from Python
2.7 to 3.6 as the job default? I can see some value in each option.
-- 
Jeremy Stanley


signature.asc
Description: PGP signature
__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


[openstack-dev] [all][tc] final stages of python 3 transition

2018-04-25 Thread Doug Hellmann
It's time to talk about the next steps in our migration from python
2 to python 3.

Up to this point we have mostly focused on reaching a state where
we support both versions of the language. We are not quite there
with all projects, as you can see by reviewing the test coverage
status information at
https://wiki.openstack.org/wiki/Python3#Python_3_Status_of_OpenStack_projects

Still, we need to press on to the next phase of the migration, which
I have been calling "Python 3 first". This is where we use python
3 as the default, for everything, and set up the exceptions we need
for anything that still requires python 2.

To reach that stage, we need to:

1. Change the documentation and release notes jobs to use python 3.
   (The Oslo team recently completed this, and found that we did
   need to make a few small code changes to get them to work.)
2. Change (or duplicate) all functional test jobs to run under
   python 3.
3. Change the packaging jobs to use python 3.
4. Update devstack to use 3 by default and require setting a flag to
   use 2. (This may trigger other job changes.)

At that point, all of our deliverables will be produced using python
3, and we can be relatively confident that if we no longer had
access to python 2 we could still continue operating. We could also
start updating deployment tools to use either python 3 or 2, so
that users could actually deploy using the python 3 versions of
services.

Somewhere in that time frame our third-party CI systems will need
to ensure they have python 3 support as well.

After the "Python 3 first" phase is completed we should release
one series using the packages built with python 3. Perhaps Stein?
Or is that too ambitious?

Next, we will be ready to address the prerequisites for "Python 3
only," which will allow us to drop Python 2 support.

We need to wait to drop python 2 support as a community, rather
than going one project at a time, to avoid doubling the work of
downstream consumers such as distros and independent deployers. We
don't want them to have to package all (or even a large number) of
the dependencies of OpenStack twice because they have to install
some services running under python 2 and others under 3. Ideally
they would be able to upgrade all of the services on a node together
as part of their transition to the new version, without ending up
with a python 2 version of a dependency along side a python 3 version
of the same package.

The remaining items could be fixed earlier, but this is the point
at which they would block us:

1. Fix oslo.service functional tests -- the Oslo team needs help
   maintaining this library. Alternatively, we could move all
   services to use cotyledon (https://pypi.org/project/cotyledon/).

2. Finish the unit test and functional test ports so that all of
   our tests can run under python 3 (this implies that the services
   all run under python 3, so there is no more porting to do).

Finally, after we have *all* tests running on python 3, we can
safely drop python 2.

We have previously discussed the end of the T cycle as the point
at which we would have all of those tests running, and if that holds
true we could reasonably drop python 2 during the beginning of the
U cycle, in late 2019 and before the 2020 cut-off point when upstream
python 2 support will be dropped.

I need some info from the deployment tool teams to understand whether
they would be ready to take the plunge during T or U and start
deploying only the python 3 version. Are there other upgrade issues
that need to be addressed to support moving from 2 to 3? Something
that might be part of the platform(s), rather than OpenStack itself?

What else have I missed in these phases? Other jobs? Other blocking
conditions?

Doug


__
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev