Build fuel library packages from upstream modules

Registered by Bogdan Dobrelya on 2015-06-15

In order to improve Fuel development and OpenStack puppet community experience, in order to reduce the cost of maintaining forks of upstream puppet modules for OpenStack, the Fuel build system should be switched on upstream puppet modules plus custom Fuel library patches bundled as packages. The upstream modules like puppet-nova, puppet-neutron and so on, should be bundled as fuel-puppet-nova, fuel-puppet-neutron etc. packages. All custom changes in Fuel library should be applied atop of these builds and maintained (rebase, if build failed) by dev team until got contributed upstream and removed from custom patches.

This will allow the Fuel dev team to be auto-notified on upstream changes related to custom patches and will motivate them to contribute custom patches upstream to reduce the maintenance burden.

Acceptance criteria:
- As a first part, make packages for fuel-puppet-nova, *keystone, *cinder, *glance, *neutron, *swift, *ceilometer, * horizon to be build from upstream puppet modules plus custom patches for Fuel library:
- As a second step, set up CI to track upstream master branch and post non-voting Fuel CI
   test results to upstream gerrit.

Mandatory design review: Vladimir Kuklin, Dmitry Borodaenko

Blueprint information

Status:
Not started
Approver:
Vladimir Kuklin
Priority:
Undefined
Drafter:
Bogdan Dobrelya
Direction:
Needs approval
Assignee:
Fuel Library (Deprecated)
Definition:
Discussion
Series goal:
None
Implementation:
Unknown
Milestone target:
milestone icon next

Related branches

Sprints

Whiteboard

http://lists.openstack.org/pipermail/openstack-dev/2015-June/067060.html
All we need is to package fuel-library core into a set of binary
packages (rpm or deb), one per Puppet module.
Start with a single git repo used as source package for all such binary
packages, with primary fuel-library package depending on module
packages.

Then, one at a time, extract a module into its own git-buildpackage [0]
repo and use gbp-pq [1] to convert Fuel specific patches into a quilt
patch queue (tell me if there are better ways to do that for RPMs).

[0] http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html
[1] http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/man.gbp.pq.html

After that:

1. Fix fuel-library dependency to the first post-split revision of the
   module (which matches the pre-split code).

2. Set up CI to track upstream master branch and post non-voting Fuel CI
   test results to upstream gerrit.

3. Commit changes to Fuel core and upstream to get the Fuel test results
   to pass.

4. Turn on voting for Fuel CI tests in upstream.

5. Relax fuel-library dependency to unversioned, so that it takes the
   latest available revision of the module.

At that point, transition to full upstream integration is completed, for
that particular module.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.