diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2015-06-11 18:27:53 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-06-26 09:27:32 +0100 |
commit | d7c8d9558c8b600be1507212c78dde833b2bb57e (patch) | |
tree | 941c11d7e4aeca7f0c1106a39d1b8006264fbd16 /bitbake/lib/toaster/orm | |
parent | 160563532f87bd901e1cc6972fe238be87a8b63c (diff) | |
download | poky-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.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) |