]> git.ipfire.org Git - pbs.git/commitdiff
jobs: Introduce designated builder property
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 31 Oct 2017 18:27:15 +0000 (18:27 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 31 Oct 2017 18:27:15 +0000 (18:27 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builders.py
src/buildservice/jobs.py

index 9e5cdf63575d92d6a7706f01062032608d3d1ee5..dc5a50a0de9f7f7cf0d8cd78c63c3f49559bc5de 100644 (file)
@@ -428,18 +428,15 @@ class Builder(base.DataObject):
 
                for job in self.jobqueue:
                        logging.debug("Looking at %s..." % job)
+
                        # Only allow building test jobs in test mode
                        if self.testmode and not job.test:
                                continue
 
-                       # If we are the fastest builder to handle this job, we will
-                       # get it.
-                       if job.candidate_builders:
-                               fastest_builder = job.candidate_builders.pop(0)
-
-                               if not self == fastest_builder:
-                                       logging.debug("We are not the fastest builder for this job (%s is)" % fastest_builder)
-                                       continue
+                       # We will skip this job if we are not the designated builder
+                       if job.designated_builder and not job.designated_builder == self:
+                               logging.debug("We are not the designated builder for this job (%s is)" % job.designated_builder)
+                               continue
 
                        return job
 
index b0022c43297ede5bca8959aa38caf5fd9b5196f5..3489122770dbf5ab9cb5b03e2949a5c57d9d6727 100644 (file)
@@ -349,7 +349,7 @@ class Job(base.DataObject):
 
        builder = lazy_property(get_builder, set_builder)
 
-       @lazy_property
+       @property
        def candidate_builders(self):
                """
                        Returns all active builders that could build this job
@@ -362,6 +362,14 @@ class Job(base.DataObject):
                # Sort them by the fastest builder first
                return sorted(builders, key=lambda b: -b.performance_index)
 
+       @property
+       def designated_builder(self):
+               """
+                       Returns the fastest candidate builder builder
+               """
+               if self.candidate_builders:
+                       return self.candidate_builders[0]
+
        @property
        def arch(self):
                return self.data.arch