launchpad-dev team mailing list archive
-
launchpad-dev team
-
Mailing list archive
-
Message #01628
Immediate plan for Build Farm generic jobs
Howdy folks
Next week is UDS, which I am attending, so I won't be spending much time on
the generic build farm jobs work.
Muharem has been working on a branch to convert the schema (which jml approved
today) and to change our code that uses it to work with the new schema. It is
largely done, and we hope to land it today.
https://code.edge.launchpad.net/~al-maisan/launchpad/bqim-479079
Once it has landed, this opens the door for some Translations and Code work.
Namely:
* New tables, BuildPackageBranchJob, BuildPackageRecipeJob and
BuildTranslationsJob (or similar names as you prefer)
* Model code for new tables
The new tables should reference the Job table, other than that you are free to
have whatever data you need for this build job type. I expect you'll need to
spend some time working this out.
The model code should implement the interface ISoyuzJob (although this is a
terrible name, it will be changed) which is declared in
lib/lp/soyuz/interfaces/soyuzjob.py.
See lib/lp/soyuz/model/buildpackagejob.py for an example of something that
implements it.
Tim and Danilo, I think you're putting mwh and jtv on these tasks?
Michael N, who is at UDS for the first 2 days, will start the refactoring work
on IBuilder when he gets back (Hi Michael!). The current implementation is
very Soyuz-specific and references Builds and the like. We need to separate
it into a basic IBuilder and more specific IPackageBuilder non-model class.
Once that is done, we can start writing IPackageBranchBuilder etc which will
deal with the specifics of handing off and receiving jobs of other types
to/from the build farm. The underlying IBuilder should be doing most of this
work and it's up to Michael to figure out how it will work, exactly.
There is one nightmare part to this - the implementation of
IBuilder.findBuildCandidate(). This is currently a very ugly query that
decides which job to dispatch next, based on a few criteria about the jobs. I
expect it to get to troll-like ugliness by the time we finish and I'm not sure
how it will work yet, it depends on how Michael re-factors IBuilder and sets
up an interface that other builders must implement.
See more details here:
https://dev.launchpad.net/Soyuz/Specs/BuilddGeneralisation
which includes the project plan as a Planner attachment.
Cheers
J
Follow ups