]> git.ipfire.org Git - pbs.git/commitdiff
builders: Fix counting active jobs.
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 13 Dec 2012 21:03:52 +0000 (22:03 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 13 Dec 2012 21:03:52 +0000 (22:03 +0100)
backend/builders.py
data/templates/builder-list.html

index 9a8415bb0e38ed0825da065ef08ce5e880c0428a..e132d404837febe50e59e57e7503913cdc8bf0de 100644 (file)
@@ -537,16 +537,28 @@ class Builder(base.Object):
 
                return "online"
 
-       @property
-       def active_jobs(self):
-               jobs = self.get_active_jobs()
-
-               return len(jobs)
-
-       def get_active_jobs(self, uploads=True):
+       def get_active_jobs(self, count=False):
+               query = self.db.query("\
+                       SELECT * FROM jobs \
+                       WHERE \
+                               jobs.builder_id = %s AND \
+                               (jobs.state = 'dispatching' OR jobs.state = 'running' OR jobs.state = 'uploading') \
+                       ORDER BY time_started ASC",
+                       self.id)
+
+               if count:
+                       return len(query)
+
+               jobs = []
+               for job in query:
+                       job = self.pakfire.jobs.get_by_id(job.id, job)
+                       jobs.append(job)
+
+               return jobs
+
+       def count_active_jobs(self):
                if self._active_jobs is None:
-                       self._active_jobs = \
-                               self.pakfire.jobs.get_active(host_id=self.id, uploads=uploads)
+                       self._active_jobs = self.get_active_jobs(count=True)
 
                return self._active_jobs
 
index f89d1c9c8363b48fcd60983e82c269e909268823..0106c583ebfcb43ef6bc2feea0db2e10448acc99 100644 (file)
@@ -60,8 +60,8 @@
                                                                {% end %}
                                                        </td>
                                                        <td>
-                                                               <p class="{% if builder.active_jobs == 0 %}text-success{% elif builder.active_jobs >= builder.max_jobs %}text-error{% else %}text-warning{% end %}">
-                                                                       {{ len(builder.get_active_jobs()) }}/{{ builder.max_jobs }}
+                                                               <p class="{% if builder.count_active_jobs() == 0 %}text-success{% elif builder.count_active_jobs() >= builder.max_jobs %}text-error{% else %}text-warning{% end %}">
+                                                                       {{ builder.count_active_jobs() }}/{{ builder.max_jobs }}
                                                                </p>
                                                        </td>
                                                </tr>