[bitbake-devel] [PATCH 28/94] bitbake: webhob: use defined constants for models

Alex DAMIAN alexandru.damian at intel.com
Tue Sep 24 16:51:57 UTC 2013


From: Alexandru DAMIAN <alexandru.damian at intel.com>

We change the models to use constants to improve
the legibility of the code.

Signed-off-by: Alexandru DAMIAN <alexandru.damian at intel.com>
---
 bitbake/lib/bb/ui/buildinfohelper.py | 13 +++++----
 bitbake/lib/webhob/orm/models.py     | 55 ++++++++++++++++++++++++------------
 2 files changed, 44 insertions(+), 24 deletions(-)

diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py
index f5e3f25..d489c87 100644
--- a/bitbake/lib/bb/ui/buildinfohelper.py
+++ b/bitbake/lib/bb/ui/buildinfohelper.py
@@ -47,9 +47,9 @@ class ORMWrapper(object):
 
     def update_build_object(self, build_obj, errors, warnings, taskfailures):
 
-        outcome = 0
+        outcome = Build.SUCCEEDED
         if errors or taskfailures:
-            outcome = 1
+            outcome = Build.FAILED
 
         build = Build.objects.get(uuid=build_obj.uuid)
         build.completed_on = datetime.datetime.now()
@@ -230,13 +230,13 @@ class BuildInfoHelper(object):
 
         task_information = {}
         task_information['build'] = self.internal_state['build']
-        task_information['outcome'] = 4
+        task_information['outcome'] = Task.OUTCOME_NA
         if isinstance(event, bb.runqueue.runQueueTaskSkipped):
             task_information['task_executed'] = False
             if event._skip == "covered":
-                task_information['outcome'] = 2
+                task_information['outcome'] = Task.OUTCOME_COVERED
             if event._skip == "existing":
-                task_information['outcome'] = 0
+                task_information['outcome'] = Task.OUTCOME_EXISTING
         else:
             task_information['task_executed'] = True
         task_information['recipe'] = recipe
@@ -363,6 +363,7 @@ class BuildInfoHelper(object):
 
         self.task_order += 1
         task_information['order'] = self.task_order
+        task_information['outcome'] = Task.OUTCOME_NA
         task_obj = self.orm_wrapper.get_update_task_object(task_information)
 
         self.internal_state[identifier] = {'start_time': datetime.datetime.now()}
@@ -378,7 +379,7 @@ class BuildInfoHelper(object):
             pass
 
         if isinstance(event, bb.runqueue.runQueueTaskCompleted):
-            task_information['outcome'] = 3     # TODO: needs to use constants
+            task_information['outcome'] = Task.OUTCOME_SUCCESS     # TODO: needs to use constants
             task_build_stats = self._get_task_build_stats(self.orm_wrapper.get_update_task_object(task_information))
             task_information['cpu_usage'] = task_build_stats['cpu_usage']
             task_information['disk_io'] = task_build_stats['disk_io']
diff --git a/bitbake/lib/webhob/orm/models.py b/bitbake/lib/webhob/orm/models.py
index dfbc0ae..83126d8 100644
--- a/bitbake/lib/webhob/orm/models.py
+++ b/bitbake/lib/webhob/orm/models.py
@@ -2,11 +2,14 @@ from django.db import models
 
 
 class Build(models.Model):
+    SUCCEEDED = 0
+    FAILED = 1
+    IN_PROGRESS = 2
 
     BUILD_OUTCOME = (
-        (0, 'Succeeded'),
-        (1, 'Failed'),
-        (2, 'In Progress'),
+        (SUCCEEDED, 'Succeeded'),
+        (FAILED, 'Failed'),
+        (IN_PROGRESS, 'In Progress'),
     )
 
     uuid = models.CharField(max_length=100, unique=True)
@@ -16,7 +19,7 @@ class Build(models.Model):
     distro_version = models.CharField(max_length=100)
     started_on = models.DateTimeField()
     completed_on = models.DateTimeField()
-    outcome = models.IntegerField(choices=BUILD_OUTCOME, default=2)
+    outcome = models.IntegerField(choices=BUILD_OUTCOME, default=IN_PROGRESS)
     errors_no = models.IntegerField(default=0)
     warnings_no = models.IntegerField(default=0)
     image_fstypes = models.CharField(max_length=100)
@@ -27,30 +30,46 @@ class Build(models.Model):
 
 class Task(models.Model):
 
+    SSTATE_NA = 0
+    SSTATE_MISS = 1
+    SSTATE_FAILED = 2
+    SSTATE_RESTORED = 3
+
     SSTATE_RESULT = (
-        (0, 'Not Applicable'), # For rest of tasks, but they still need checking.
-        (1, 'Unavailable'), # it is a miss
-        (2, 'Failed'), # there was a pkg, but the script failed
-        (3, 'Restored'), # succesfully restored
+        (SSTATE_NA, 'Not Applicable'), # For rest of tasks, but they still need checking.
+        (SSTATE_MISS, 'Missing'), # it is a miss
+        (SSTATE_FAILED, 'Failed'), # there was a pkg, but the script failed
+        (SSTATE_RESTORED, 'Restored'), # succesfully restored
     )
 
+    CODING_PYTHON = 0
+    CODING_SHELL = 1
+
     TASK_CODING = (
-        (0, 'Python'),
-        (1, 'Shell'),
+        (CODING_PYTHON, 'Python'),
+        (CODING_SHELL, 'Shell'),
     )
 
+    OUTCOME_SUCCESS = 0
+    OUTCOME_COVERED = 1
+    OUTCOME_SSTATE = 2
+    OUTCOME_EXISTING = 3
+    OUTCOME_FAILED = 4
+    OUTCOME_NA = 5
+
     TASK_OUTCOME = (
-        (0, 'Covered'),
-        (1, 'Sstate'),
-        (2, 'Existing'),
-        (3, 'Succeeded'),
-        (4, 'Failed'),
+        (OUTCOME_SUCCESS, 'Succeeded'),
+        (OUTCOME_COVERED, 'Covered'),
+        (OUTCOME_SSTATE, 'Sstate'),
+        (OUTCOME_EXISTING, 'Existing'),
+        (OUTCOME_FAILED, 'Failed'),
+        (OUTCOME_NA, 'Not Available'),
     )
 
     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
-    outcome = models.IntegerField(choices=TASK_OUTCOME, default=4)
+    outcome = models.IntegerField(choices=TASK_OUTCOME, default=OUTCOME_NA)
     sstate_checksum = models.CharField(max_length=100, null=True)
     path_to_sstate_obj = models.FilePathField(max_length=500, blank=True)
     recipe = models.ForeignKey('Recipe', related_name='build_recipe')
@@ -58,7 +77,7 @@ class Task(models.Model):
     source_url = models.FilePathField(max_length=255, null=True)
     log_file = models.FilePathField(max_length=255, blank=True)
     work_directory = models.FilePathField(max_length=255, null=True)
-    script_type = models.IntegerField(choices=TASK_CODING, default=0)
+    script_type = models.IntegerField(choices=TASK_CODING, default=CODING_PYTHON)
     line_number = models.IntegerField(default=0)
     py_stack_trace = models.TextField(null=True)
     disk_io = models.IntegerField(default=0)
@@ -68,7 +87,7 @@ class Task(models.Model):
     warnings_no = models.IntegerField(default=0)
     error = models.TextField(null=True)
     warning = models.TextField(null=True)
-    sstate_result = models.IntegerField(choices=SSTATE_RESULT, default=0)
+    sstate_result = models.IntegerField(choices=SSTATE_RESULT, default=SSTATE_NA)
 
     class Meta:
         ordering = ('order', 'recipe' ,)
-- 
1.8.1.2




More information about the bitbake-devel mailing list