diff options
Diffstat (limited to 'bitbake/lib/toaster/orm/models.py')
-rw-r--r-- | bitbake/lib/toaster/orm/models.py | 28 |
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 | ||
216 | class Build(models.Model): | 232 | class 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) |