Toaster database
Toaster Uses Django and it's ORM for database interaction. this means that we can support
Classes of data in Toaster
Build data
Build data is Layers, Layer_Versions, Recipes, Machines, Packages, Dependencies and so on. Once it is created it is never edited or updated. Unless deleted by the user.
Configuration data
Configuration data is data which is used to configure a project
Important objects
Layer and Layer_Version
A Layer_Version is the object in which most other objects relate to in Toaster. Every Layer_Version belongs to a Layer object which contains the common metadata for each 'version' or revision of the Layer.
An example would be that we have a Layer called 'meta-openembedded' which has 3 Layer_Versions; one Layer_Version which is set to the release 'dizzy' one on 'fido' and one on 'master' (in most cases these correspond to git branch names)
Layer 1 - N Layer_Version Layer_Version 1 - N Recipe
Recipe
Recipes contain the information about a collection or particular piece of software. This can be the name, version and description and what distribution packages are created by the recipe. Layer_Versions are the containers of recipes and Recipes are the containers of packages.
When a recipe that belongs to a Layer_Version is built the build property for the Layer_Version is set. When this is set this object is considered part of the "build history" and should never be changed or edited after this point. When the Build is not set this data is considered configuration data i.e. data which is used to configure a project using the openembedded metadata. An example of such data is data that has come from the openembedded Layer index or an imported layer.
Recipe N - 1 Layer_Version
Recipe 1 - N Package
CustomImageRecipe
This is a special kind of Recipe which has two additional fields; base_recipe and project. base_recipe is the Recipe in which the Custom recipe has been based on and will translate to the 'required' recipe to inherit recipe metadata from and project because this custom recipe belongs to a certain project that has been created.
Target
When you build a recipe a Target object is created which contains the Recipe name, Build object for the build data and the Task that you're asking bitbake to do (default is build the recipe).