~launchpad-pqm/launchpad/devel

« back to all changes in this revision

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

  • Committer: Launchpad Patch Queue Manager
  • Date: 2012-01-06 12:11:50 UTC
  • mfrom: (14625.2.7 gina-dsc-binaries)
  • Revision ID: launchpad@pqm.canonical.com-20120106121150-e0bucmb5qeyytnn9
[r=wgrant][bug=911943] Fix SourcePackageReleaseDscBinariesUpdater:
        round chunk_size to int (and document this issue).

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
19
20
import logging
 
21
from operator import attrgetter
20
22
 
21
23
import pytz
22
24
from sqlobject import (
33
35
    )
34
36
from zope.interface import implements
35
37
 
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 lp.services.webapp.interfaces import (
43
 
    DEFAULT_FLAVOR,
44
 
    IStoreSelector,
45
 
    MAIN_STORE,
46
 
    )
47
38
from lp.app.errors import NotFoundError
48
39
from lp.buildmaster.enums import BuildFarmJobType
49
40
from lp.buildmaster.interfaces.buildfarmjob import IBuildFarmJob
54
45
    IBuildQueue,
55
46
    IBuildQueueSet,
56
47
    )
 
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
    )
57
54
from lp.services.job.interfaces.job import JobStatus
58
55
from lp.services.job.model.job import Job
 
56
from lp.services.webapp.interfaces import (
 
57
    DEFAULT_FLAVOR,
 
58
    IStoreSelector,
 
59
    MAIN_STORE,
 
60
    )
59
61
 
60
62
 
61
63
def normalize_virtualization(virtualized):
142
144
        specific_class = specific_job_classes()[self.job_type]
143
145
        return specific_class.getByJob(self.job)
144
146
 
 
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
 
145
162
    @property
146
163
    def date_started(self):
147
164
        """See `IBuildQueue`."""