X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=src%2Fbuildservice%2Fbuilders.py;h=942d546ec1556261a7a0d1419a8678914339a24a;hb=484533b634749627ebec445e076cfafea7d50d5b;hp=2ae6d62980f688c74a7d5c0fd9ffb1923e5fa174;hpb=e704b8e2d9453d569f29072c2490e93eaa6278d5;p=people%2Fjschlag%2Fpbs.git diff --git a/src/buildservice/builders.py b/src/buildservice/builders.py index 2ae6d62..942d546 100644 --- a/src/buildservice/builders.py +++ b/src/buildservice/builders.py @@ -237,74 +237,10 @@ class Builder(base.DataObject): return sorted(arches) - def get_build_release(self): - return self.data.build_release == "Y" + def set_testmode(self, testmode): + self._set_attribute("testmode", testmode) - def set_build_release(self, value): - if value: - value = "Y" - else: - value = "N" - - self.db.execute("UPDATE builders SET build_release = %s WHERE id = %s", - value, self.id) - - # Update the cache. - if self._data: - self._data["build_release"] = value - - build_release = property(get_build_release, set_build_release) - - def get_build_scratch(self): - return self.data.build_scratch == "Y" - - def set_build_scratch(self, value): - if value: - value = "Y" - else: - value = "N" - - self.db.execute("UPDATE builders SET build_scratch = %s WHERE id = %s", - value, self.id) - - # Update the cache. - if self._data: - self._data["build_scratch"] = value - - build_scratch = property(get_build_scratch, set_build_scratch) - - def get_build_test(self): - return self.data.build_test == "Y" - - def set_build_test(self, value): - if value: - value = "Y" - else: - value = "N" - - self.db.execute("UPDATE builders SET build_test = %s WHERE id = %s", - value, self.id) - - # Update the cache. - if self._data: - self._data["build_test"] = value - - build_test = property(get_build_test, set_build_test) - - @property - def build_types(self): - ret = [] - - if self.build_release: - ret.append("release") - - if self.build_scratch: - ret.append("scratch") - - if self.build_test: - ret.append("test") - - return ret + testmode = property(lambda s: s.data.testmode, set_testmode) def set_max_jobs(self, value): self._set_attribute("max_jobs", value) @@ -444,21 +380,28 @@ class Builder(base.DataObject): """ return len(self.active_jobs) >= self.max_jobs - def get_next_jobs(self, limit=None): - """ - Returns a list of jobs that can be built on this host. - """ - return self.pakfire.jobs.get_next(arches=self.buildable_arches, limit=limit) + @lazy_property + def jobqueue(self): + return self.backend.jobqueue.for_arches(self.supported_arches) def get_next_job(self): """ Returns the next job in line for this builder. """ - # Get the first item of all jobs in the list. - jobs = self.pakfire.jobs.get_next(builder=self, state="pending", limit=1) + # Don't send any jobs to disabled builders + if not self.enabled: + return + + # Don't return anything if the builder has already too many jobs running + if self.too_many_jobs: + return + + for job in self.jobqueue: + # Only allow building test jobs in test mode + if self.testmode and not job.test: + continue - if jobs: - return jobs[0] + return job def get_history(self, *args, **kwargs): kwargs["builder"] = self