Migrate hawkBit documentation to GitHub Pages Initial

Signed-off-by: Denislav Prinov <denislav.prinov@bosch.com>
This commit is contained in:
Denislav Prinov
2025-10-10 15:21:42 +03:00
parent b390a0f8ef
commit 9fdd87ca27
33 changed files with 7009 additions and 0 deletions

73
docs/datamodel.md Normal file
View File

@@ -0,0 +1,73 @@
# Data model
The hawkBit data model was designed to have enough flexibility to define complex software structures (e.g. operating
system, runtimes, apps, different kind of artifacts) on one side and simplicity compared to the capabilities of a full
blown configuration management on the other.
<!--more-->
It does define a hierarchy of software that starts with a distribution, which can have (sub-)modules and these may have
multiple artifacts. However, it does not consider any kind of dependency definitions between modules or artifacts. As a
result, dependency checks - if necessary - have to be done outside hawkBit, i.e. on the device itself or before the
entity creation in hawkBit by the origin.
---
## Provisioning Target Definition
A Provisioning Target is a neutral definition that may be an actual real device (e.g. gateway, embedded sensor) or a
virtual device (e.g. vehicle, smart home).
The definition in hawkBit might reflect the transactional behavior if necessary on the device side. A vehicle might be
updated device by device or as a whole. As a result one way of defining a vehicle in hawkBit could be to have one all
inclusive Software Module or one module per (sub-) device.
A Target can have, next to its defined properties (e.g. controller ID, target type, name, description, security token),
a generic set of attributes and meta data, both in key:value format. Target attributes are owned and managed by the
device whereas target meta data are managed by the operator. If a target is defined to be of a certain target type, then
during the assignment of a distribution set, a compatibility check will be performed between the target type and
distribution set type.
---
## Software Structure Definition
The structure defines the model of the supported software by the provisioning target
- Distribution Set Type:defines a package structure that is supported by certain devices
- Consists of Software Module Types both for
- Firmware - device can have only one module of that type (e.g. the operating system)
- Software - device can have multiple modules of that type (e.g. "Apps")
Software Content Definition:
- Distribution Set: can be deployed to a provisioning target
- Software Module: is a sub element of the distribution, e.g. OS, application, firmware X, firmware Y
- Artifact: binaries for a software module. Note: the decision which artifacts have to be downloaded are done on the
device side, e.g. Full package, signatures, binary deltas
---
## Entity Relationships
The public defined entities and their relation which are reflected by the Management API.
---
## Deleting and Archiving Software Modules
When a user deletes a Software Module, the update server cannot simply remove all the corresponding data. Because when
the Software Module is already assigned to a Distribution Set or was assigned to a Target in the past, the hawkBit
server has to make sure that remains a clean and full update history for every target. The history contains all
information (e.g. name, version) of the software, which was assigned to a specific Target. Obviously storing the binary
data of the artifacts is not necessary for the history purpose.
The delete process which is performed, when there are historical connections to targets is called SoftDelete. This
process marks the Software Module as deleted and removes the artifact, but it won't delete the meta data, which
describes the SoftwareModule and the associated Artifacts. SoftwareModules, which are marked as delete won't be visible
for the user, when he is requesting all SoftwareModules.
Just in case there are no connections to Distribution Sets and targets the server will perform a HardDelete. This
process deletes all stored data, including all meta information.
> In case of a SoftDelete the unique constraints are still in place, i.e. you cannot create an entity with the same
> name/key. This constraint might be removed in future versions because of the impact on the user experience (i.e. he does
> not see the soft deleted module but cannot create a new one).