Spec for testing Newton on Xenial transition

This spec covers the details involved in transitioning our default test
platform to Ubuntu Xenial during the Newton release cycle.

Change-Id: I8e85eb64ede5fa7836b294177f870844d9c53ac4
This commit is contained in:
Clark Boylan 2016-07-05 15:14:11 -07:00
parent 571b46eefd
commit 9ec9061ab5
2 changed files with 159 additions and 2 deletions

View File

@ -18,12 +18,13 @@ infrastructure developers.
specs/nodepool-zookeeper-workers
specs/task-tracker
specs/zuulv3
specs/newton-on-xenial
Gerrit query for all changes related to priority efforts::
status:open AND (topic:puppet-apply OR topic:infra-cloud OR topic:downstream-puppet OR topic:nodepool-zk OR topic:storyboard-migration OR branch:feature/zuulv3)
status:open AND (topic:puppet-apply OR topic:infra-cloud OR topic:downstream-puppet OR topic:nodepool-zk OR topic:storyboard-migration OR branch:feature/zuulv3 OR topic:newton-xenial)
https://review.openstack.org/#/q/status:open+AND+%28topic:puppet-apply+OR+topic:infra-cloud+OR+topic:downstream-puppet+OR+topic:nodepool-zk+OR+topic:storyboard-migration+OR+branch:feature/zuulv3%29,n,z
https://review.openstack.org/#/q/status:open+AND+%28topic:puppet-apply+OR+topic:infra-cloud+OR+topic:downstream-puppet+OR+topic:nodepool-zk+OR+topic:storyboard-migration+OR+branch:feature/zuulv3+OR+topic:newton-xenial%29,n,z
Approved Design Specifications
==============================

156
specs/newton-on-xenial.rst Normal file
View File

@ -0,0 +1,156 @@
::
Copyright 2016 OpenStack Foundation
This work is licensed under a Creative Commons Attribution 3.0
Unported License.
http://creativecommons.org/licenses/by/3.0/legalcode
..
This template should be in ReSTructured text. Please do not delete
any of the sections in this template. If you have nothing to say
for a whole section, just write: "None". For help with syntax, see
http://sphinx-doc.org/rest.html To test out your formatting, see
http://www.tele3.cz/jbar/rest/rest.html
========================
Newton testing on Xenial
========================
Include the URL of your StoryBoard story:
https://storyboard.openstack.org/#!/story/2000668
A new Ubuntu LTS release has happened and in order to keep up with the
TC's assertion that we support latest Ubuntu LTS and RHEL release we
need to shift our testing onto this new release. General plan is move the
default test image type from Ubuntu Trusty to Ubuntu Xenial for all testing
on branches >= Newton (currently Newton is called master).
Problem Description
===================
This poses a couple of issues. First we need a way to have Zuul instruct
Zuul launchers on using the appropriate image type for jobs based on the
branch. Second we need to do this in a way that avoids exploding the total
number of Gearman function registrations as there are scaling limits there.
Proposed Change
===============
Using JJB create jobs that are image type unique. This means instead of
having::
gate-tempest-dsvm-full
we will have::
gate-tempest-dsvm-full-ubuntu-trusty
gate-tempest-dsvm-full-ubuntu-xenial
We can build these jobs from the same JJB job template ensuring the actual
content of the jobs is shared.
Going this route and using a default Zuul Launcher or Jenkins with Gearman
plugin will result in the following job registrations::
gate-tempest-dsvm-full-ubuntu-trusty
gate-tempest-dsvm-full-ubuntu-trusty:ubuntu-trusty
gate-tempest-dsvm-full-ubuntu-xenial
gate-tempest-dsvm-full-ubuntu-xenial:ubuntu-xenial
which is problematic because it will double our total number of Gearman
function registrations on an already stressed system. We can address that
by updating Zuul Launcher to optionally drop the label specific function
registrations. This has been implemented in
https://review.openstack.org/#/c/336311/
Alternatives
------------
An alternative solution would be to do what we did during the Precise to
Trusty transition. During that transition we used Zuul parameter functions
to introspect the branch under test then set the ZUUL_NODE parameter to
choose the correct test node type. The problem with this method was that
it hid away a lot of the node selection logic in the parameter function
where people did not expect to find it. On top of that any test not wanting
to use this default split (eg anything wanting to use centos) needed an
explicit override in that parameter function.
General consensus seems to be that we should try something different even
if we know there are other deficiencies with the other options as this
particular option was painful.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
clarkb
Gerrit Topic
------------
Use Gerrit topic "newton-xenial" for all patches related to this spec.
.. code-block:: bash
git-review -t newton-xenial
Work Items
----------
Update Zuul Launcher code to optionally prevent label registrations.
Update Zuul Launcher installs and config to prevent label registrations.
Notify dev mailing list of switch.
Convert groups of jobs over to being run in a split setup. Likely we
will want to do this with a common set at a time. pep8, docs, unittests,
functional tests, tempest/integration tests. We can perform tests of
these jobs ahead of time as well to ensure that things work well.
Repositories
------------
No new repos required.
Servers
-------
This will make use of the existing ubuntu-xenial test images and instances.
We will also be taking advantage of the Xenial Ubuntu apt mirror and the
Xenial wheel mirror.
DNS Entries
-----------
No new DNS entries.
Documentation
-------------
The biggest impact here should just be in notifying the developers of the
switch. If we do this switchover like we have done it in the past it will
happen in a controlled manner after we have tested that things generally
work. It is possible that we will run into another major bug like the
Trusty python34 garbage collection bug so we should notify people that
this change is happening.
Security
--------
No new security issues as this only affects single use test instances that
already hand out root.
Testing
-------
For previous distro release transitions we have held test instances
and run unittests and integration tests on them to ensure that the new
platform works as expected.
Dependencies
============
- Just the new Zuul Launcher config being merged and deployed.