summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2015-06-11 18:27:53 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-06-26 09:27:32 +0100
commitd7c8d9558c8b600be1507212c78dde833b2bb57e (patch)
tree941c11d7e4aeca7f0c1106a39d1b8006264fbd16 /bitbake/lib/toaster/orm
parent160563532f87bd901e1cc6972fe238be87a8b63c (diff)
downloadpoky-d7c8d9558c8b600be1507212c78dde833b2bb57e.tar.gz
bitbake: toaster: fill in build data from buildrequest
This patch adds logic to complete changing the interface from showing BuildRequests to showing Build data. The BuildRequest data is now transformed in Build data with proper Toaster exceptions being recorded instead of listing problems during startup as build errors. (Bitbake rev: 51a41172d0b390370f9a38696b1ac65666ada4d2) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/orm')
-rw-r--r--bitbake/lib/toaster/orm/models.py28
1 files changed, 25 insertions, 3 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 422f2bfd93..d97eadb592 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -201,16 +201,32 @@ class Project(models.Model):
201 commit = l.layercommit.get_vcs_reference() 201 commit = l.layercommit.get_vcs_reference()
202 print("ii Building layer ", l.layercommit.layer.name, " at vcs point ", commit) 202 print("ii Building layer ", l.layercommit.layer.name, " at vcs point ", commit)
203 BRLayer.objects.create(req = br, name = l.layercommit.layer.name, giturl = l.layercommit.layer.vcs_url, commit = commit, dirpath = l.layercommit.dirpath) 203 BRLayer.objects.create(req = br, name = l.layercommit.layer.name, giturl = l.layercommit.layer.vcs_url, commit = commit, dirpath = l.layercommit.dirpath)
204
205 br.state = BuildRequest.REQ_QUEUED
206 now = timezone.now()
207 br.build = Build.objects.create(project = self,
208 completed_on=now,
209 started_on=now,
210 )
204 for t in self.projecttarget_set.all(): 211 for t in self.projecttarget_set.all():
205 BRTarget.objects.create(req = br, target = t.target, task = t.task) 212 BRTarget.objects.create(req = br, target = t.target, task = t.task)
213 Target.objects.create(build = br.build, target = t.target)
214
206 for v in self.projectvariable_set.all(): 215 for v in self.projectvariable_set.all():
207 BRVariable.objects.create(req = br, name = v.name, value = v.value) 216 BRVariable.objects.create(req = br, name = v.name, value = v.value)
208 217
209 br.state = BuildRequest.REQ_QUEUED 218
219 try:
220 br.build.machine = self.projectvariable_set.get(name = 'MACHINE').value
221 br.build.save()
222 except ProjectVariable.DoesNotExist:
223 pass
210 br.save() 224 br.save()
211 except Exception as e: 225 except Exception as e:
212 br.delete() 226 br.delete()
213 raise e 227 import sys
228 et, ei, tb = sys.exc_info()
229 raise type(e), e, tb
214 return br 230 return br
215 231
216class Build(models.Model): 232class Build(models.Model):
@@ -250,7 +266,6 @@ class Build(models.Model):
250 return completeper 266 return completeper
251 267
252 def eta(self): 268 def eta(self):
253 from django.utils import timezone
254 eta = timezone.now() 269 eta = timezone.now()
255 completeper = self.completeper() 270 completeper = self.completeper()
256 if self.completeper() > 0: 271 if self.completeper() > 0:
@@ -266,6 +281,12 @@ class Build(models.Model):
266 def toaster_exceptions(self): 281 def toaster_exceptions(self):
267 return self.logmessage_set.filter(level=LogMessage.EXCEPTION) 282 return self.logmessage_set.filter(level=LogMessage.EXCEPTION)
268 283
284
285 def get_current_status(self):
286 if self.outcome == Build.IN_PROGRESS and self.build_name == "":
287 return "Queued"
288 return self.get_outcome_display()
289
269 def __str__(self): 290 def __str__(self):
270 return "%d %s %s" % (self.id, self.project, ",".join([t.target for t in self.target_set.all()])) 291 return "%d %s %s" % (self.id, self.project, ",".join([t.target for t in self.target_set.all()]))
271 292
@@ -299,6 +320,7 @@ class Target(models.Model):
299 search_allowed_fields = ['target', 'file_name'] 320 search_allowed_fields = ['target', 'file_name']
300 build = models.ForeignKey(Build) 321 build = models.ForeignKey(Build)
301 target = models.CharField(max_length=100) 322 target = models.CharField(max_length=100)
323 task = models.CharField(max_length=100, null=True)
302 is_image = models.BooleanField(default = False) 324 is_image = models.BooleanField(default = False)
303 image_size = models.IntegerField(default=0) 325 image_size = models.IntegerField(default=0)
304 license_manifest_path = models.CharField(max_length=500, null=True) 326 license_manifest_path = models.CharField(max_length=500, null=True)