Ingredients Concepts
Ingredient Family
Ingredient Family represent a high level grouping of ingredients. This is list is pre-defined. As we move forward in time, the VDC product team may add new ingredient families as needed. The current values are :
Name | Examples |
---|---|
Firmware | *code, Unified-Patch, IFWI, ... |
Software | Python Packages, Debian Packages, ... |
Emulation | PPR |
Simulation | Simics Packages |
Out of this list, VDC actually have at the moment only Firmware related ingredients. |
Ingredient Schema
The Ingredient Schema represents the actual properties of each ingredient and its releases. For now, we have decided to have a single schema for all ingredients but different schemas for ingredient releases. All ingredient releases share the same Ingredient Release Schema.
For every new ingredient that we onboard into VDC, we examine the business properties of that new type. We try to use the existing base properties in the ingredient release. If we can't, we add new generic properties at the ingredient release level. If that is not possible, we create a new specific schema for the new ingredient that inherits all the existing release properties and adds new business-specific properties for the new type.
So far, we have onboarded two new ingredient schemas into VDC: *code Schema and *code Bundle Schema.
Ingredient Type
Ingredient Type is a specific instance of an Ingredient Schema defined with a unique name. It allows grouping many similar ingredients with different names under the same ingredient type. For example, the *code schema is the schema type for all *codes, while acode, pcode, ucode, s3m, and others are specific ingredient types. Another example is the *code bundle schema, where cores-fw and unified-patch are specific types of *code bundles.
Ingredient Type is an entity in the VDC and can be managed via API. Currently, only VDC Admins can add new ingredient types using the VDC API.
Ingredient
An Ingredient is a specific instance of an Ingredient Type with a unique name. It allows grouping many releases under the same ingredient. Each ingredient belongs to a specific project and a specific feed within that project. The ingredient's qualified name is determined by the project name and feed name, along with the ingredient name. This means that VDC could have many ingredients with the same name. The actual uniqueness comes from the project and feed association. Ingredients do not have a specific owner, but ownership is assumed by the associated project. The project users and admins are considered the ingredient owners, along with all the subsequent ingredient releases. VDC track the usage of each Ingredient by other Ingredients. The tracking at the Ingredient level is based on the Ingredient Release Used-By tracking.
Want to learn more ? - Read more on how to work with Ingredients, here.
Ingredient Release
An Ingredient Release (also known as a Release) is a specific instance of an Ingredient. Each release has a unique version. An ingredient cannot have two releases with the same version. Releases may have dependencies, artifacts, work-items and used-by tracking.
Dependencies are lists of other ingredient releases that are connected to the release either directly or indirectly. For example, in a typical unified patch release, the dependencies will include a list of all the *codes included inside the unified-patch release.
Artifacts are files associated with a release. For example, in a unified patch, the artifacts will be the result of the MUPPET build process, including the inc
files. The artifacts are uploaded to Azure Blob Storage. Artifacts can be downloaded directly from the VDC UI or API by using a single AGS group.
Work-Items are collection of HSD-ES and JIRA tickets that are associated directly or in directly with this release. These work-items can be Enhancement, Bugs, Workarounds, Sighting, Pre-Sightings from multiple HSD-ES tenants and JIRA projects. VDC knows how to parse the specific ingredient releases release notes and extract the list of tickets that was resolved for that release and associate the work-items with the release. These relationship can be used to search releases by work-item id or search work-item by ingredient name or name + version.
Used-By is our VDC usage tracking of specific release. Once a release has been published, VDC track which ingredient releases are using it, meaning which ingredient releases have this release in their dependency list. We track both direct dependencies and in direct dependencies. For example, for a *code release , Acode for example, you can track which Unified-Patchs are using it, then which IFWIs are using it and then which BKC are using it.
Want to learn more ? - Read more and learn how to work Ingredient Releases here. - Read mode about Feeds and the manage artifacts storage here here