summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/orm/models.py')
-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)