~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/buildmaster/model/buildqueue.py

  • Committer: Curtis Hovey
  • Date: 2011-12-18 15:13:07 UTC
  • mto: This revision was merged to the branch mainline in revision 14547.
  • Revision ID: curtis.hovey@canonical.com-20111218151307-sdm2gzobt5tplbe0
Moved badges to lp.app.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
    datetime,
17
17
    timedelta,
18
18
    )
19
 
from itertools import groupby
20
19
import logging
21
 
from operator import attrgetter
22
20
 
23
21
import pytz
24
22
from sqlobject import (
35
33
    )
36
34
from zope.interface import implements
37
35
 
 
36
from canonical.database.constants import DEFAULT
 
37
from canonical.database.enumcol import EnumCol
 
38
from canonical.database.sqlbase import (
 
39
    SQLBase,
 
40
    sqlvalues,
 
41
    )
 
42
from canonical.launchpad.webapp.interfaces import (
 
43
    DEFAULT_FLAVOR,
 
44
    IStoreSelector,
 
45
    MAIN_STORE,
 
46
    )
38
47
from lp.app.errors import NotFoundError
39
48
from lp.buildmaster.enums import BuildFarmJobType
40
49
from lp.buildmaster.interfaces.buildfarmjob import IBuildFarmJob
45
54
    IBuildQueue,
46
55
    IBuildQueueSet,
47
56
    )
48
 
from lp.services.database.constants import DEFAULT
49
 
from lp.services.database.enumcol import EnumCol
50
 
from lp.services.database.sqlbase import (
51
 
    SQLBase,
52
 
    sqlvalues,
53
 
    )
54
57
from lp.services.job.interfaces.job import JobStatus
55
58
from lp.services.job.model.job import Job
56
 
from lp.services.webapp.interfaces import (
57
 
    DEFAULT_FLAVOR,
58
 
    IStoreSelector,
59
 
    MAIN_STORE,
60
 
    )
61
59
 
62
60
 
63
61
def normalize_virtualization(virtualized):
144
142
        specific_class = specific_job_classes()[self.job_type]
145
143
        return specific_class.getByJob(self.job)
146
144
 
147
 
    @staticmethod
148
 
    def preloadSpecificJobData(queues):
149
 
        key = attrgetter('job_type')
150
 
        for job_type, grouped_queues in groupby(queues, key=key):
151
 
            specific_class = specific_job_classes()[job_type]
152
 
            queue_subset = list(grouped_queues)
153
 
            # We need to preload the build farm jobs early to avoid
154
 
            # the call to _set_build_farm_job to look up BuildFarmBuildJobs
155
 
            # one by one.
156
 
            specific_class.preloadBuildFarmJobs(queue_subset)
157
 
            specific_jobs = specific_class.getByJobs(queue_subset)
158
 
            if len(list(specific_jobs)) == 0:
159
 
                continue
160
 
            specific_class.preloadJobsData(specific_jobs)
161
 
 
162
145
    @property
163
146
    def date_started(self):
164
147
        """See `IBuildQueue`."""