]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
toaster: update Task classification fields
authorAlexandru DAMIAN <alexandru.damian@intel.com>
Tue, 14 Jan 2014 12:35:12 +0000 (12:35 +0000)
committerAlexandru DAMIAN <alexandru.damian@intel.com>
Mon, 27 Jan 2014 15:19:49 +0000 (15:19 +0000)
This patch updates the task classification fields (outcome, etc)
as to

* Changes outcome names from SSTATE to CACHED and
from EXISTING to PREBUILT

* NoExec tasks now recorded as Not Executed / script type NA instead
of Executed / script type NOEXEC. Script type NOEXEC is deleted.

* SetScene tasks do not get order numbers

* New task method that returns a QuerySet for setscene tasks related
to this task: Task.get_related_setscene()

* New custom TaskManager that allows searching for setscene tasks
related to a certain task: Task.objects.related_setscene(task)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
lib/bb/ui/buildinfohelper.py
lib/toaster/bldviewer/templates/simple_task.html
lib/toaster/bldviewer/views.py
lib/toaster/orm/models.py

index 3d5f1c8609aa4fc903f0ef4841518d5074f22a5e..b90e915a1a0bdc3eef91e93a43b0e4bf03521ca0 100644 (file)
@@ -91,9 +91,9 @@ class ORMWrapper(object):
         for v in vars(task_object):
             if v in task_information.keys():
                 vars(task_object)[v] = task_information[v]
-        # if we got covered by a setscene task, we're SSTATE
-        if task_object.outcome == Task.OUTCOME_COVERED and 1 == Task.objects.filter(task_executed=True, build = task_object.build, recipe = task_object.recipe, task_name=task_object.task_name+"_setscene").count():
-            task_object.outcome = Task.OUTCOME_SSTATE
+        # if we got covered by a setscene task, we're CACHED
+        if task_object.outcome == Task.OUTCOME_COVERED and 1 == Task.objects.related_setscene(task_object).count():
+            task_object.outcome = Task.OUTCOME_CACHED
             outcome_task_setscene = Task.objects.get(task_executed=True, build = task_object.build,
                                     recipe = task_object.recipe, task_name=task_object.task_name+"_setscene").outcome
             if outcome_task_setscene == Task.OUTCOME_SUCCESS:
@@ -442,14 +442,19 @@ class BuildInfoHelper(object):
             if event.reason == "covered":
                 task_information['outcome'] = Task.OUTCOME_COVERED
             if event.reason == "existing":
-                task_information['outcome'] = Task.OUTCOME_EXISTING
+                task_information['outcome'] = Task.OUTCOME_PREBUILT
         else:
             task_information['task_executed'] = True
             if 'noexec' in vars(event) and event.noexec == True:
-                task_information['script_type'] = Task.CODING_NOEXEC
+                task_information['task_executed'] = False
+                task_information['outcome'] = Task.OUTCOME_NA
+                task_information['script_type'] = Task.CODING_NA
+
+        # do not assign order numbers to scene tasks
+        if not isinstance(event, bb.runqueue.sceneQueueTaskStarted):
+            self.task_order += 1
+            task_information['order'] = self.task_order
 
-        self.task_order += 1
-        task_information['order'] = self.task_order
         task_obj = self.orm_wrapper.get_update_task_object(task_information)
 
         self.internal_state[identifier] = {'start_time': datetime.datetime.now()}
index cb6f309fefa0bd834fd86c37687a30c8e6131d79..a5ed5295ea26556652de34db871b39317320f22b 100644 (file)
                 {% if task.task_executed %}
                 <td>Executed</td>
                 {% else %}
-                <td>Prebuilt</td>
+                <td>Not Executed</td>
                 {% endif %}
 
                 <td>{{task.sstate_checksum}}</td>
-                <td>{{task.get_outcome_display}}{% if task.provider %}</br>(by <a href="#{{task.provider.recipe.name}}.{{task.provider.task_name}}">{{task.provider.recipe.name}}.{{task.provider.task_name}}</a>){% endif %}</td>
+                <td>{{task.get_outcome_display}}{% if task.provider %}</br>(by <a href="#{{task.provider.recipe.name}}.{{task.provider.task_name}}">{{task.provider.recipe.name}}.{{task.provider.task_name}}</a>){% endif %}
+                       {% if task.outcome == task.OUTCOME_CACHED %}{% for t in task.get_related_setscene %}
+                       <br/>({{t.task_name}} {{t.get_outcome_display}})
+                       {% endfor %}{%endif%}
+               </td>
                 <td><p>{{task.message}}</td>
                 <td>{{task.elapsed_time}}</td>
                 <td>{{task.cpu_usage}}</td>
index 22b42d39cead1ddaa343d513deaeb47449f739e8..6a90ed7b5aaf56a61a759ef6ea921a64fa15bd4a 100644 (file)
@@ -84,7 +84,7 @@ def _find_task_provider(task):
 def task(request, build_id):
     template = 'simple_task.html'
 
-    tasks = _build_page_range(Paginator(Task.objects.filter(build=build_id), 100),request.GET.get('page', 1))
+    tasks = _build_page_range(Paginator(Task.objects.filter(build=build_id, order__gt=0), 100),request.GET.get('page', 1))
 
     for t in tasks:
         if t.outcome == Task.OUTCOME_COVERED:
index ff26c7d436970ed48cd438e5aa966cc3d62e7ab2..7c439487e9ea567de71894459a6690ba0578a81d 100644 (file)
@@ -60,6 +60,11 @@ class Target(models.Model):
         return self.target
 
 
+
+class TaskManager(models.Manager):
+    def related_setscene(self, task_object):
+        return Task.objects.filter(task_executed=True, build = task_object.build, recipe = task_object.recipe, task_name=task_object.task_name+"_setscene")
+
 class Task(models.Model):
 
     SSTATE_NA = 0
@@ -75,38 +80,41 @@ class Task(models.Model):
     )
 
     CODING_NA = 0
-    CODING_NOEXEC = 1
     CODING_PYTHON = 2
     CODING_SHELL = 3
 
     TASK_CODING = (
         (CODING_NA, 'N/A'),
-        (CODING_NOEXEC, 'NoExec'),
         (CODING_PYTHON, 'Python'),
         (CODING_SHELL, 'Shell'),
     )
 
     OUTCOME_SUCCESS = 0
     OUTCOME_COVERED = 1
-    OUTCOME_SSTATE = 2
-    OUTCOME_EXISTING = 3
+    OUTCOME_CACHED = 2
+    OUTCOME_PREBUILT = 3
     OUTCOME_FAILED = 4
     OUTCOME_NA = 5
 
     TASK_OUTCOME = (
         (OUTCOME_SUCCESS, 'Succeeded'),
         (OUTCOME_COVERED, 'Covered'),
-        (OUTCOME_SSTATE, 'Sstate'),
-        (OUTCOME_EXISTING, 'Existing'),
+        (OUTCOME_CACHED, 'Cached'),
+        (OUTCOME_PREBUILT, 'Prebuilt'),
         (OUTCOME_FAILED, 'Failed'),
         (OUTCOME_NA, 'Not Available'),
     )
 
     search_allowed_fields = [ "recipe__name", "task_name" ]
 
+    objects = TaskManager()
+
+    def get_related_setscene(self):
+        return Task.objects.related_setscene(self)
+
     build = models.ForeignKey(Build, related_name='task_build')
     order = models.IntegerField(null=True)
-    task_executed = models.BooleanField(default=False) # True means Executed, False means Prebuilt
+    task_executed = models.BooleanField(default=False) # True means Executed, False means Not/Executed
     outcome = models.IntegerField(choices=TASK_OUTCOME, default=OUTCOME_NA)
     sstate_checksum = models.CharField(max_length=100, blank=True)
     path_to_sstate_obj = models.FilePathField(max_length=500, blank=True)