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
1=== modified file 'lib/lp/buildmaster/model/buildfarmjob.py'
2--- lib/lp/buildmaster/model/buildfarmjob.py 2010-01-18 22:11:00 +0000
3+++ lib/lp/buildmaster/model/buildfarmjob.py 2010-01-21 02:16:16 +0000
4@@ -27,7 +27,7 @@
5
6 def getLogFileName(self):
7 """See `IBuildFarmJob`."""
8- raise NotImplementedError
9+ return 'buildlog.txt'
10
11 def getName(self):
12 """See `IBuildFarmJob`."""
13
14=== added file 'lib/lp/buildmaster/model/packagebuildfarmjob.py'
15--- lib/lp/buildmaster/model/packagebuildfarmjob.py 1970-01-01 00:00:00 +0000
16+++ lib/lp/buildmaster/model/packagebuildfarmjob.py 2010-01-21 02:16:16 +0000
17@@ -0,0 +1,30 @@
18+# Copyright 2010 Canonical Ltd. This software is licensed under the
19+# GNU Affero General Public License version 3 (see the file LICENSE).
20+
21+__metaclass__ = type
22+__all__ = ['PackageBuildFarmJob']
23+
24+
25+from canonical.database.constants import UTC_NOW
26+
27+from lp.buildmaster.model.buildfarmjob import BuildFarmJob
28+from lp.soyuz.interfaces.build import BuildStatus
29+
30+
31+class PackageBuildFarmJob(BuildFarmJob):
32+ """Mix-in class for `IBuildFarmJob` implementations for package builds."""
33+
34+ def jobStarted(self):
35+ """See `IBuildFarmJob`."""
36+ self.build.buildstate = BuildStatus.BUILDING
37+ # The build started, set the start time if not set already.
38+ if self.build.date_first_dispatched is None:
39+ self.build.date_first_dispatched = UTC_NOW
40+
41+ def jobReset(self):
42+ """See `IBuildFarmJob`."""
43+ self.build.buildstate = BuildStatus.NEEDSBUILD
44+
45+ def jobAborted(self):
46+ """See `IBuildFarmJob`."""
47+ self.build.buildstate = BuildStatus.BUILDING
48
49=== modified file 'lib/lp/soyuz/model/buildpackagejob.py'
50--- lib/lp/soyuz/model/buildpackagejob.py 2010-01-18 22:01:19 +0000
51+++ lib/lp/soyuz/model/buildpackagejob.py 2010-01-21 02:16:16 +0000
52@@ -15,12 +15,11 @@
53 from zope.interface import classProvides, implements
54 from zope.component import getUtility
55
56-from canonical.database.constants import UTC_NOW
57 from canonical.database.sqlbase import sqlvalues
58
59 from lp.buildmaster.interfaces.buildfarmjob import (
60 BuildFarmJobType, IBuildFarmJobDispatchEstimation)
61-from lp.buildmaster.model.buildfarmjob import BuildFarmJob
62+from lp.buildmaster.model.packagebuildfarmjob import PackageBuildFarmJob
63 from lp.registry.interfaces.sourcepackage import SourcePackageUrgency
64 from lp.registry.interfaces.pocket import PackagePublishingPocket
65 from lp.services.job.interfaces.job import JobStatus
66@@ -30,7 +29,7 @@
67 from lp.soyuz.interfaces.publishing import PackagePublishingStatus
68
69
70-class BuildPackageJob(Storm, BuildFarmJob):
71+class BuildPackageJob(PackageBuildFarmJob, Storm):
72 """See `IBuildPackageJob`."""
73 implements(IBuildPackageJob)
74 classProvides(IBuildFarmJobDispatchEstimation)
75@@ -162,25 +161,6 @@
76 """See `IBuildPackageJob`."""
77 return self.build.title
78
79- def jobStarted(self):
80- """See `IBuildPackageJob`."""
81- self.build.buildstate = BuildStatus.BUILDING
82- # The build started, set the start time if not set already.
83- if self.build.date_first_dispatched is None:
84- self.build.date_first_dispatched = UTC_NOW
85-
86- def jobReset(self):
87- """See `IBuildPackageJob`."""
88- self.build.buildstate = BuildStatus.NEEDSBUILD
89-
90- def jobAborted(self):
91- """See `IBuildPackageJob`."""
92- # XXX, al-maisan, Thu, 12 Nov 2009 16:38:52 +0100
93- # The setting below was "inherited" from the previous code. We
94- # need to investigate whether and why this is really needed and
95- # fix it.
96- self.build.buildstate = BuildStatus.BUILDING
97-
98 @staticmethod
99 def composePendingJobsQuery(min_score, processor, virtualized):
100 """See `IBuildFarmJob`."""
101
102=== modified file 'lib/lp/soyuz/model/sourcepackagerecipebuild.py'
103--- lib/lp/soyuz/model/sourcepackagerecipebuild.py 2010-01-20 02:02:02 +0000
104+++ lib/lp/soyuz/model/sourcepackagerecipebuild.py 2010-01-21 02:16:16 +0000
105@@ -23,7 +23,7 @@
106
107 from lp.buildmaster.interfaces.buildfarmjob import BuildFarmJobType
108 from lp.buildmaster.model.buildbase import BuildBase
109-from lp.buildmaster.model.buildfarmjob import BuildFarmJob
110+from lp.buildmaster.model.packagebuildfarmjob import PackageBuildFarmJob
111 from lp.registry.interfaces.pocket import PackagePublishingPocket
112 from lp.services.job.model.job import Job
113 from lp.soyuz.adapters.archivedependencies import (
114@@ -176,7 +176,7 @@
115 return
116
117
118-class SourcePackageRecipeBuildJob(BuildFarmJob, Storm):
119+class SourcePackageRecipeBuildJob(PackageBuildFarmJob, Storm):
120 classProvides(ISourcePackageRecipeBuildJobSource)
121 implements(ISourcePackageRecipeBuildJob)
122

Subscribers

People subscribed via source and target branches

to status/vote changes: