Patchwork [bitbake-devel,8/9] toaster: add project related models

login
register
mail settings
Submitter Alexandru DAMIAN
Date June 3, 2014, 3:26 p.m.
Message ID <174ac007ddb06d9cfba6a248e9477a09c783a162.1401808899.git.alexandru.damian@intel.com>
Download mbox | patch
Permalink /patch/73145/
State New
Headers show

Comments

Alexandru DAMIAN - June 3, 2014, 3:26 p.m.
From: Alexandru DAMIAN <alexandru.damian@intel.com>

We introduce the notion of a project in Toaster as the item
that holds the specification for triggering a build: the set
of layers used, the set of configuration variable values, and
the set of targets to be build.

Builds triggered through Toaster will be associated with a
Project, and they will be configured based on the project
settings at the moment when the build is ordered.

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
---
 lib/toaster/orm/models.py | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

Patch

diff --git a/lib/toaster/orm/models.py b/lib/toaster/orm/models.py
index 8aa7126..8d4f21b 100644
--- a/lib/toaster/orm/models.py
+++ b/lib/toaster/orm/models.py
@@ -23,6 +23,10 @@  from django.db import models
 from django.db.models import F
 from django.utils.encoding import python_2_unicode_compatible
 
+class Project(models.Model):
+    name = models.CharField(max_length=100)
+    created     = models.DateTimeField(auto_now_add = True)
+    updated     = models.DateTimeField(auto_now = True)
 
 class Build(models.Model):
     SUCCEEDED = 0
@@ -37,6 +41,7 @@  class Build(models.Model):
 
     search_allowed_fields = ['machine', 'cooker_log_path', "target__target", "target__target_image_file__file_name"]
 
+    project = models.ForeignKey(Project)
     machine = models.CharField(max_length=100)
     distro = models.CharField(max_length=100)
     distro_version = models.CharField(max_length=100)
@@ -54,6 +59,9 @@  class Build(models.Model):
         tgts = Target.objects.filter(build_id = self.id).order_by( 'target' );
         return( tgts );
 
+class ProjectTarget(models.Model):
+    project = models.ForeignKey(Project)
+    target = models.CharField(max_length=100)
 
 @python_2_unicode_compatible
 class Target(models.Model):
@@ -324,6 +332,12 @@  class Recipe_Dependency(models.Model):
     dep_type = models.IntegerField(choices=DEPENDS_TYPE)
     objects = Recipe_DependencyManager()
 
+class ProjectLayer(models.Model):
+    project = models.ForeignKey(Project)
+    name = models.CharField(max_length = 100)
+    giturl = models.CharField(max_length = 254)
+    commit = models.CharField(max_length = 254)
+
 class Layer(models.Model):
     name = models.CharField(max_length=100)
     local_path = models.FilePathField(max_length=255)
@@ -338,6 +352,11 @@  class Layer_Version(models.Model):
     priority = models.IntegerField()
 
 
+class ProjectVariable(models.Model):
+    project = models.ForeignKey(Project)
+    name = models.CharField(max_length=100)
+    value = models.TextField(blank = True)
+
 class Variable(models.Model):
     search_allowed_fields = ['variable_name', 'variable_value',
                              'vhistory__file_name', "description"]