Merge lp:~wgrant/launchpad/bug-507784 into lp:launchpad/db-devel

Proposed by William Grant
Status: Merged
Approved by: Julian Edwards
Approved revision: not available
Merged at revision: not available
Proposed branch: lp:~wgrant/launchpad/bug-507784
Merge into: lp:launchpad/db-devel
Diff against target: 121 lines (+35/-25)
4 files modified
lib/lp/buildmaster/model/buildfarmjob.py (+1/-1)
lib/lp/buildmaster/model/packagebuildfarmjob.py (+30/-0)
lib/lp/soyuz/model/buildpackagejob.py (+2/-22)
lib/lp/soyuz/model/sourcepackagerecipebuild.py (+2/-2)
To merge this branch: bzr merge lp:~wgrant/launchpad/bug-507784
Reviewer Review Type Date Requested Status
Julian Edwards (community) code Approve
Review via email: mp+17722@code.launchpad.net

Commit message

Move BuildFarmJob.job{Started,Reset,Aborted} to PackageBuildFarmJob so SourcePackageRecipeBuilds can use them.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) wrote :

BuildFarmJobs with builds have some common behaviours. This branch moves them (jobStarted, jobReset and jobAborted) into a new common base class, PackageBuildFarmJob. The name sucks, but neither I nor jml could think of anything much better.

I've also set a sane default build log filename, 'buildlog.txt'. Binary package builds will still use their insanely long custom variant.

Revision history for this message
Julian Edwards (julian-edwards) wrote :

Good refactoring, thanks. Class wars in the build farm...

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/buildmaster/model/buildfarmjob.py'
--- lib/lp/buildmaster/model/buildfarmjob.py 2010-01-18 22:11:00 +0000
+++ lib/lp/buildmaster/model/buildfarmjob.py 2010-01-21 02:16:16 +0000
@@ -27,7 +27,7 @@
2727
28 def getLogFileName(self):28 def getLogFileName(self):
29 """See `IBuildFarmJob`."""29 """See `IBuildFarmJob`."""
30 raise NotImplementedError30 return 'buildlog.txt'
3131
32 def getName(self):32 def getName(self):
33 """See `IBuildFarmJob`."""33 """See `IBuildFarmJob`."""
3434
=== added file 'lib/lp/buildmaster/model/packagebuildfarmjob.py'
--- lib/lp/buildmaster/model/packagebuildfarmjob.py 1970-01-01 00:00:00 +0000
+++ lib/lp/buildmaster/model/packagebuildfarmjob.py 2010-01-21 02:16:16 +0000
@@ -0,0 +1,30 @@
1# Copyright 2010 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).
3
4__metaclass__ = type
5__all__ = ['PackageBuildFarmJob']
6
7
8from canonical.database.constants import UTC_NOW
9
10from lp.buildmaster.model.buildfarmjob import BuildFarmJob
11from lp.soyuz.interfaces.build import BuildStatus
12
13
14class PackageBuildFarmJob(BuildFarmJob):
15 """Mix-in class for `IBuildFarmJob` implementations for package builds."""
16
17 def jobStarted(self):
18 """See `IBuildFarmJob`."""
19 self.build.buildstate = BuildStatus.BUILDING
20 # The build started, set the start time if not set already.
21 if self.build.date_first_dispatched is None:
22 self.build.date_first_dispatched = UTC_NOW
23
24 def jobReset(self):
25 """See `IBuildFarmJob`."""
26 self.build.buildstate = BuildStatus.NEEDSBUILD
27
28 def jobAborted(self):
29 """See `IBuildFarmJob`."""
30 self.build.buildstate = BuildStatus.BUILDING
031
=== modified file 'lib/lp/soyuz/model/buildpackagejob.py'
--- lib/lp/soyuz/model/buildpackagejob.py 2010-01-18 22:01:19 +0000
+++ lib/lp/soyuz/model/buildpackagejob.py 2010-01-21 02:16:16 +0000
@@ -15,12 +15,11 @@
15from zope.interface import classProvides, implements15from zope.interface import classProvides, implements
16from zope.component import getUtility16from zope.component import getUtility
1717
18from canonical.database.constants import UTC_NOW
19from canonical.database.sqlbase import sqlvalues18from canonical.database.sqlbase import sqlvalues
2019
21from lp.buildmaster.interfaces.buildfarmjob import (20from lp.buildmaster.interfaces.buildfarmjob import (
22 BuildFarmJobType, IBuildFarmJobDispatchEstimation)21 BuildFarmJobType, IBuildFarmJobDispatchEstimation)
23from lp.buildmaster.model.buildfarmjob import BuildFarmJob22from lp.buildmaster.model.packagebuildfarmjob import PackageBuildFarmJob
24from lp.registry.interfaces.sourcepackage import SourcePackageUrgency23from lp.registry.interfaces.sourcepackage import SourcePackageUrgency
25from lp.registry.interfaces.pocket import PackagePublishingPocket24from lp.registry.interfaces.pocket import PackagePublishingPocket
26from lp.services.job.interfaces.job import JobStatus25from lp.services.job.interfaces.job import JobStatus
@@ -30,7 +29,7 @@
30from lp.soyuz.interfaces.publishing import PackagePublishingStatus29from lp.soyuz.interfaces.publishing import PackagePublishingStatus
3130
3231
33class BuildPackageJob(Storm, BuildFarmJob):32class BuildPackageJob(PackageBuildFarmJob, Storm):
34 """See `IBuildPackageJob`."""33 """See `IBuildPackageJob`."""
35 implements(IBuildPackageJob)34 implements(IBuildPackageJob)
36 classProvides(IBuildFarmJobDispatchEstimation)35 classProvides(IBuildFarmJobDispatchEstimation)
@@ -162,25 +161,6 @@
162 """See `IBuildPackageJob`."""161 """See `IBuildPackageJob`."""
163 return self.build.title162 return self.build.title
164163
165 def jobStarted(self):
166 """See `IBuildPackageJob`."""
167 self.build.buildstate = BuildStatus.BUILDING
168 # The build started, set the start time if not set already.
169 if self.build.date_first_dispatched is None:
170 self.build.date_first_dispatched = UTC_NOW
171
172 def jobReset(self):
173 """See `IBuildPackageJob`."""
174 self.build.buildstate = BuildStatus.NEEDSBUILD
175
176 def jobAborted(self):
177 """See `IBuildPackageJob`."""
178 # XXX, al-maisan, Thu, 12 Nov 2009 16:38:52 +0100
179 # The setting below was "inherited" from the previous code. We
180 # need to investigate whether and why this is really needed and
181 # fix it.
182 self.build.buildstate = BuildStatus.BUILDING
183
184 @staticmethod164 @staticmethod
185 def composePendingJobsQuery(min_score, processor, virtualized):165 def composePendingJobsQuery(min_score, processor, virtualized):
186 """See `IBuildFarmJob`."""166 """See `IBuildFarmJob`."""
187167
=== modified file 'lib/lp/soyuz/model/sourcepackagerecipebuild.py'
--- lib/lp/soyuz/model/sourcepackagerecipebuild.py 2010-01-20 02:02:02 +0000
+++ lib/lp/soyuz/model/sourcepackagerecipebuild.py 2010-01-21 02:16:16 +0000
@@ -23,7 +23,7 @@
2323
24from lp.buildmaster.interfaces.buildfarmjob import BuildFarmJobType24from lp.buildmaster.interfaces.buildfarmjob import BuildFarmJobType
25from lp.buildmaster.model.buildbase import BuildBase25from lp.buildmaster.model.buildbase import BuildBase
26from lp.buildmaster.model.buildfarmjob import BuildFarmJob26from lp.buildmaster.model.packagebuildfarmjob import PackageBuildFarmJob
27from lp.registry.interfaces.pocket import PackagePublishingPocket27from lp.registry.interfaces.pocket import PackagePublishingPocket
28from lp.services.job.model.job import Job28from lp.services.job.model.job import Job
29from lp.soyuz.adapters.archivedependencies import (29from lp.soyuz.adapters.archivedependencies import (
@@ -176,7 +176,7 @@
176 return176 return
177177
178178
179class SourcePackageRecipeBuildJob(BuildFarmJob, Storm):179class SourcePackageRecipeBuildJob(PackageBuildFarmJob, Storm):
180 classProvides(ISourcePackageRecipeBuildJobSource)180 classProvides(ISourcePackageRecipeBuildJobSource)
181 implements(ISourcePackageRecipeBuildJob)181 implements(ISourcePackageRecipeBuildJob)
182182

Subscribers

People subscribed via source and target branches

to status/vote changes: