Files
poky/bitbake/lib/toaster/bldcontrol/models.py
Alexandru DAMIAN e163522205 bitbake: toaster: build control functionality
We add the build control functionality to toaster.

* The bldcontrol application gains bbcontroller classes
that know how to manage a localhost build environment.

* The toaster UI now detects it is running under build
environment controller, and update the build controller
database and will shut down the bitbake server once
the build is complete.

* The toaster script can now run in standalone mode,
launching the build controller and the web interface instead
of just monitoring the build, as in the interactive mode.

* A fixture with the default build controller entry for
localhost is provided.

[YOCTO #5490]
[YOCTO #5491]
[YOCTO #5492]
[YOCTO #5493]
[YOCTO #5494]
[YOCTO #5537]

(Bitbake rev: 10988bd77c8c7cefad3b88744bc5d8a7e3c1f4cf)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-06-13 11:55:34 +01:00

84 lines
2.8 KiB
Python

from django.db import models
from django.core.validators import MaxValueValidator, MinValueValidator
from orm.models import Project, ProjectLayer, ProjectVariable, ProjectTarget, Build
# a BuildEnvironment is the equivalent of the "build/" directory on the localhost
class BuildEnvironment(models.Model):
SERVER_STOPPED = 0
SERVER_STARTED = 1
SERVER_STATE = (
(SERVER_STOPPED, "stopped"),
(SERVER_STARTED, "started"),
)
TYPE_LOCAL = 0
TYPE_SSH = 1
TYPE = (
(TYPE_LOCAL, "local"),
(TYPE_SSH, "ssh"),
)
LOCK_FREE = 0
LOCK_LOCK = 1
LOCK_RUNNING = 2
LOCK_STATE = (
(LOCK_FREE, "free"),
(LOCK_LOCK, "lock"),
(LOCK_RUNNING, "running"),
)
address = models.CharField(max_length = 254)
betype = models.IntegerField(choices = TYPE)
bbaddress = models.CharField(max_length = 254, blank = True)
bbport = models.IntegerField(default = -1)
bbtoken = models.CharField(max_length = 126, blank = True)
bbstate = models.IntegerField(choices = SERVER_STATE, default = SERVER_STOPPED)
lock = models.IntegerField(choices = LOCK_STATE, default = LOCK_FREE)
created = models.DateTimeField(auto_now_add = True)
updated = models.DateTimeField(auto_now = True)
# a BuildRequest is a request that the scheduler will build using a BuildEnvironment
# the build request queue is the table itself, ordered by state
class BuildRequest(models.Model):
REQ_CREATED = 0
REQ_QUEUED = 1
REQ_INPROGRESS = 2
REQ_COMPLETED = 3
REQUEST_STATE = (
(REQ_CREATED, "created"),
(REQ_QUEUED, "queued"),
(REQ_INPROGRESS, "in progress"),
(REQ_COMPLETED, "completed"),
)
project = models.ForeignKey(Project)
build = models.ForeignKey(Build, null = True) # TODO: toasterui should set this when Build is created
state = models.IntegerField(choices = REQUEST_STATE, default = REQ_CREATED)
created = models.DateTimeField(auto_now_add = True)
updated = models.DateTimeField(auto_now = True)
# These tables specify the settings for running an actual build.
# They MUST be kept in sync with the tables in orm.models.Project*
class BRLayer(models.Model):
req = models.ForeignKey(BuildRequest)
name = models.CharField(max_length = 100)
giturl = models.CharField(max_length = 254)
commit = models.CharField(max_length = 254)
class BRVariable(models.Model):
req = models.ForeignKey(BuildRequest)
name = models.CharField(max_length=100)
value = models.TextField(blank = True)
class BRTarget(models.Model):
req = models.ForeignKey(BuildRequest)
target = models.CharField(max_length=100)
task = models.CharField(max_length=100, null=True)