<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hello Openstack Infra Team,<br>
<br>
<br>
Background<br>
=======<br>
<br>
It has been 3 years that we have been developing Puppet modules to
install OpenStack, and we know these modules are largely adopted by
many users.<br>
All modules are located on StackForge (1) and some of them are
distributed on Puppet Forge.<br>
Some statistics (2) show us the important adoption, which represent
~ 42% of current deployments (Source: OpenStack Foundation).<br>
We've reached a point where we can't continue without real
integration testing if we want to stabilize & bring more
dev/users to our modules.<br>
<br>
<br>
Current situation<br>
==========<br>
<br>
OpenStack Puppet modules support rspec & unit tests which is not
enough since there is no functional testing.<br>
Currently, only puppet-ceph (3) is doing integration testing (4) by
using Vagrant, puppet-rspec-system and gerritexec (5).<br>
A discussion has been started on the Puppet OpenStack mailing list
(6).<br>
As you can see, there has already been some initial proof of concept
work done by Spencer to make beaker-rspec work with the
puppet-openstack modules:
<div><a href="https://review.openstack.org/#/c/102020"
target="_blank"
onmousedown="this.href='https://www.google.com/url?q\75https%3A%2F%2Freview.openstack.org%2F%23%2Fc%2F102020\46sa\75D\46sntz\0751\46usg\75AFQjCNHRznILGZdMIF_Y36YKQGrDgnf7xA';return
true;"
onclick="this.href='https://www.google.com/url?q\75https%3A%2F%2Freview.openstack.org%2F%23%2Fc%2F102020\46sa\75D\46sntz\0751\46usg\75AFQjCNHRznILGZdMIF_Y36YKQGrDgnf7xA';return
true;">https://review.openstack.org/#<wbr>/c/102020</a> #
puppet-nova<br>
</div>
<a href="https://review.openstack.org/#/c/102071" target="_blank"
onmousedown="this.href='https://www.google.com/url?q\75https%3A%2F%2Freview.openstack.org%2F%23%2Fc%2F102071\46sa\75D\46sntz\0751\46usg\75AFQjCNFtgihslLBBfnYQ5JX7H-5bpCgF6g';return
true;"
onclick="this.href='https://www.google.com/url?q\75https%3A%2F%2Freview.openstack.org%2F%23%2Fc%2F102071\46sa\75D\46sntz\0751\46usg\75AFQjCNFtgihslLBBfnYQ5JX7H-5bpCgF6g';return
true;">https://review.openstack.org/#<wbr>/c/102071</a> #
openstack-infra/config (patch already in discussion with -infra
team)<br>
<br>
<br>
Design proposal<br>
==========<br>
<br>
Since puppet-rspec-system is going to be retired (8), it's suggested
to use beaker-rspec.<br>
A new bot would be created "Puppet OpenStack CI" which would put +1
or -1 depending if the integration pass or not. For starting, the
bot won't be part of voting process.<br>
The goal would be of course to bootstrap basic tests for all modules
and then call to contributors wanting to support most of deployments
use-cases by using puppet classes.<br>
<br>
<br>
Blockers<br>
=====<br>
<br>
We need resources to handle the CI bot system. puppet-ceph only uses
a single server + vagrant, but in the case of OpenStack modules, I'm
not sure that would be sufficient regarding to the number of patches
per day.<br>
I would like to ensure that OpenStack Infra could handle vagrant on
CI nodes.<br>
<br>
<br>
Steps & goals<br>
=========<br>
<br>
* First, we need to agree with -infra team at how we handle CI
resources (vagrant ?).<br>
* Patch Jenkins jobs (already WIP) for non-voting jobs in some
Puppet modules (core projects to start: nova, neutron, ...).<br>
* Push some patches in puppet-* modules with basic tests. The goal
here is to get feedback from this design.<br>
* Continue with more modules (non-core) and more testing scenarios.<br>
* After stabilization, make the CI bot voting.<br>
<br>
<br>
We really need to make progress on this topic if we want more
adoption of Puppet modules in OpenStack community. I'm thinking
about Puppet elements in TripleO (some work has already been done,
but not yet in TripleO though) (8).<br>
Having this CI would help people to stop forking the modules and
improve the trust at the work done.<br>
By the way, this topic will be one of main topics at the next
OpenStack summit (9).<br>
<br>
<br>
On behalf of Puppet OpenStack team, we are waiting for your
insights,<br>
Thanks.<br>
<br>
(1) <a class="moz-txt-link-freetext" href="https://github.com/stackforge?page=1&query=puppet">https://github.com/stackforge?page=1&query=puppet</a><br>
(2) <a class="moz-txt-link-freetext" href="http://getcloudify.org/2014/05/19/openstack-statistics.html">http://getcloudify.org/2014/05/19/openstack-statistics.html</a><br>
(3) <a class="moz-txt-link-freetext" href="https://github.com/stackforge/puppet-ceph">https://github.com/stackforge/puppet-ceph</a><br>
(4)
<a class="moz-txt-link-freetext" href="https://github.com/stackforge/puppet-ceph/blob/master/README.md#integration-tests">https://github.com/stackforge/puppet-ceph/blob/master/README.md#integration-tests</a><br>
(5) <a class="moz-txt-link-freetext" href="https://pypi.python.org/pypi/gerritexec">https://pypi.python.org/pypi/gerritexec</a><br>
(6)
htt6s://groups.google.com/a/puppetlabs.com/forum/#!topic/puppet-openstack/Mr2wNC4HuZU<br>
(7) <a class="moz-txt-link-freetext" href="https://github.com/puppetlabs/rspec-system-puppet#retired">https://github.com/puppetlabs/rspec-system-puppet#retired</a><br>
(8) <a class="moz-txt-link-freetext" href="https://github.com/agroup/tripleo-puppet-elements">https://github.com/agroup/tripleo-puppet-elements</a><br>
(9) <a class="moz-txt-link-freetext" href="https://etherpad.openstack.org/p/puppet-paris-summit-proposal">https://etherpad.openstack.org/p/puppet-paris-summit-proposal</a><br>
<br>
<pre class="moz-signature" cols="72">--
Emilien Macchi</pre>
</body>
</html>