Event Logger Data Interfaces
Documenting the event logger data interfaces and action models.
- The EVT is the Event Translation Layer, which receive a set of events from a Bitbake build run, and builds a in-memory record set describing the build.
- The DSI is the Data Store Interface that will poll new records from each of the EVTs assigned to it, and write them in permanent record.
- The AAM is the Artifacts Analysis Module. This module is run on build complete, scans the build/ directory for artifacts, and generates records sets about the build artifacts that will be stored in the data store.
EVT
Bitbake uses a push-event model where it sends pickled Python objects over XMLRPC to an event sink. EVT receives Python objects describing the progress of a build run, and updates its internal state to match the state of the Bitbake server. It will generate a set of records describing the statistics and results of the build run, e.g. task records for all the tasks that did run, build records for all targets, etc.
interface with bitbake
The bitbake server runs at IP:PORT location. A event server controller lives at IP:(PORT+2) accepting a XMLRPC interface with two commands: registerEventHandler and unregisterEventHandler.
EVT will run resident in memory, connecting to the bitbake server and accepting events. It will have an internal state that will follow the internal state of the bitbake server. This allows the EVT to infer information about the server state, and export this information to the DSI.
The event list that it receives from Bitbake is documented here, together with standard actions being taken in Knotty and what should happen in EVT.
Event object type | action taken in Knotty | action in EVT | |
---|---|---|---|
bb.runqueue.runQueueExitWait |
|
||
bb.event.LogExecTTY |
|
||
logging.LogRecord |
|
||
bb.build.TaskFailed |
|
||
bb.build.TaskBase |
|
||
bb.event.ParseStarted |
| ||
bb.event.ParseProgress |
|
||
bb.event.ParseCompleted |
|
||
bb.event.CacheLoadStarted |
|
||
bb.event.CacheLoadProgress |
|
||
bb.event.CacheLoadCompleted |
|
||
bb.command.CommandFailed |
|
||
bb.command.CommandExit |
|
||
bb.command.CommandCompleted |
|
||
bb.cooker.CookerExit |
|
||
bb.event.MultipleProviders |
|
||
bb.event.NoProvider |
|
||
bb.runqueue.sceneQueueTaskStarted |
|
||
bb.runqueue.runQueueTaskStarted |
|
||
bb.runqueue.runQueueTaskFailed |
|
||
bb.runqueue.sceneQueueTaskFailed |
|
||
bb.event.BuildBase | ignored | ignored | |
bb.event.StampUpdate | ignored | ignored | |
bb.event.ConfigParsed | ignored | timestamp entry | |
bb.event.RecipeParsed | ignored | timestamp entry | |
bb.event.RecipePreFinalise | ignored | ignored | |
bb.runqueue.runQueueEvent | ignored | ||
bb.runqueue.runQueueExitWait | ignored | ||
bb.event.OperationStarted | ignored | timestamp | |
bb.event.OperationCompleted | ignored | timestamp, operation complete, timing | |
bb.event.OperationProgress | ignored | ignored | |
bb.event.DiskFull | ignored | error |
interface with DSI
DSI
interface with EVT
interface with the Data Store system
The data interface is based on the Django ORM. A definition of Django models for build and task information is available.
A list with the Event information we currently have and the things we need to have is also available.
Artifacts analysis module
Once a Bitbake build is completed, it's artifacts are available for usage, inspection and download. The artifacts analysis module (AAM) will be launched by EVT at the end of a build, parse the generated artifacts and insert relevant data into the DSI.