summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2014-08-27 17:24:42 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-08-29 13:56:50 +0100
commitfe2e53ba30ba679c038bd5b48b9a91a41af4c49e (patch)
tree2a86f1fa56d21c7c712f8723485d5a1e386ecc24 /bitbake
parent69955c7b4218c51e1905c683757788af883a421b (diff)
downloadpoky-fe2e53ba30ba679c038bd5b48b9a91a41af4c49e.tar.gz
bitbake: toaster: create Build methods for calculating progress and ETA
We move the code to calculate build progress as percent and the ETA of the build to the model, so that they can be reused across different pages. (Bitbake rev: c2ced09e7ea4a1762d2788bb12a761734d20fd8e) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/toaster/orm/models.py18
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py13
2 files changed, 19 insertions, 12 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 5a6dcd72f6..bb921fc98e 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -120,6 +120,24 @@ class Build(models.Model):
120 build_name = models.CharField(max_length=100) 120 build_name = models.CharField(max_length=100)
121 bitbake_version = models.CharField(max_length=50) 121 bitbake_version = models.CharField(max_length=50)
122 122
123 def completeper(self):
124 tf = Task.objects.filter(build = self)
125 tfc = tf.count()
126 if tfc > 0:
127 completeper = tf.exclude(order__isnull=True).count()*100/tf.count()
128 else:
129 completeper = 0
130 return completeper
131
132 def eta(self):
133 from django.utils import timezone
134 eta = 0
135 completeper = self.completeper()
136 if self.completeper() > 0:
137 eta = timezone.now() + ((timezone.now() - self.started_on)*(100-completeper)/completeper)
138 return eta
139
140
123 def get_sorted_target_list(self): 141 def get_sorted_target_list(self):
124 tgts = Target.objects.filter(build_id = self.id).order_by( 'target' ); 142 tgts = Target.objects.filter(build_id = self.id).order_by( 'target' );
125 return( tgts ); 143 return( tgts );
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index e68f8b002f..86a34adf24 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -224,17 +224,6 @@ def builds(request):
224 224
225 # build view-specific information; this is rendered specifically in the builds page, at the top of the page (i.e. Recent builds) 225 # build view-specific information; this is rendered specifically in the builds page, at the top of the page (i.e. Recent builds)
226 build_mru = Build.objects.filter(completed_on__gte=(timezone.now()-timedelta(hours=24))).order_by("-started_on")[:3] 226 build_mru = Build.objects.filter(completed_on__gte=(timezone.now()-timedelta(hours=24))).order_by("-started_on")[:3]
227 for b in [ x for x in build_mru if x.outcome == Build.IN_PROGRESS ]:
228 tf = Task.objects.filter(build = b)
229 tfc = tf.count()
230 if tfc > 0:
231 b.completeper = tf.exclude(order__isnull=True).count()*100/tf.count()
232 else:
233 b.completeper = 0
234
235 b.eta = 0
236 if b.completeper > 0:
237 b.eta = timezone.now() + ((timezone.now() - b.started_on)*(100-b.completeper)/b.completeper)
238 227
239 # set up list of fstypes for each build 228 # set up list of fstypes for each build
240 fstypes_map = {}; 229 fstypes_map = {};
@@ -1854,7 +1843,7 @@ if toastermain.settings.MANAGED:
1854 context = { 1843 context = {
1855 "project" : prj, 1844 "project" : prj,
1856 #"buildrequests" : prj.buildrequest_set.filter(state=BuildRequest.REQ_QUEUED), 1845 #"buildrequests" : prj.buildrequest_set.filter(state=BuildRequest.REQ_QUEUED),
1857 "buildrequests" : map(lambda x: (x, {"machine" : x.brvariable_set.filter(name="MACHINE")[0]}), prj.buildrequest_set.order_by("-pk")), 1846 "buildrequests" : map(lambda x: (x, {"machine" : x.brvariable_set.filter(name="MACHINE")[0]}), prj.buildrequest_set.filter(state__lt = BuildRequest.REQ_INPROGRESS).order_by("-pk")),
1858 "builds" : prj.build_set.all(), 1847 "builds" : prj.build_set.all(),
1859 "puser": puser, 1848 "puser": puser,
1860 } 1849 }