Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions docs/datamodel.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,38 @@ Software Content Definition:

The public defined entities and their relation which are reflected by the Management API.

<p align="center">
<img src="images/domain_model.png" alt="Domain Model Entity Relationship" width="1100"/>
</p>

| Entity | Role |
|---|---|
| Action | Action delivered from backend to target side and potentially executed on a target. Can have an execution status of `closed`, `proceeding`, `canceled`, `scheduled`, `rejected`, `resumed`, `downloaded`, `download`. Can have a result of `success`, `failure`, `none`. |
| Artifact | Update data + metadata delivered to targets. |
| Distribution Set | Subset of targets used during a rollout. |
| Software Module | Child entity of distribution set. |
| Rollout | Root entity (overall backend side state machine). |
| Target | A physical device. |

Information about the Rollout related behavior can be found in
[Rollout management](https://eclipse.dev/hawkbit/concepts/rollout-management/).
Information about target side behavior can be found in
[Target State Machine](https://eclipse.dev/hawkbit/concepts/targetstate/).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we are migrating the documentation from eclipse.dev/hawkbit to GitHub Pages, you should reference the current .md files from the docs/ folder instead of the eclipse.dev/hawkbit documentation urls.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll adjust as soon as the migration has been completed.

The behavior shown in *Target State Machine* needs to be implemented in the
update client used on target side (behavioral interface specification for
update clients).

Additional information required to understand the high level functionality:

| Type | Role |
|---|---|
| Action Type | Type of the action (`SOFT`, `FORCED`, `TIMEFORCED`, `DOWNLOAD_ONLY`). |
| Action Cancelation Type | Type of action cancelation responded from target to backend side via a DDI API feedback endpoint `SOFT`, `FORCE`, `NONE`. |
| Distribution Set Tag | Allows classification of distribution set. |
| Distribution Set Type | Allows classification of distribution set (according to type). Builtin are `os_app`, `os`, `app`. |
| Target Tag | Allows classification of target (e.g. for grouping, indicating target roles, ...). |
| Target Type | Allows classification of target (optional). |

---

## Deleting and Archiving Software Modules
Expand Down
121 changes: 121 additions & 0 deletions docs/graphics-source/domain_model.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
<mxfile host="65bd71144e">
<diagram id="eyUuQZLw1PRravp7j5Nf" name="Page-1">
<mxGraphModel dx="1403" dy="609" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="Rollout" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="80" y="40" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="3" value="Distribution Set" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="80" y="160" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="4" value="Software Module" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="80" y="280" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="5" value="Artifact" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="80" y="400" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="6" value="Target" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="280" y="40" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="7" value="Target Filter (Query)" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="280" y="160" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="8" value="&amp;lt;&amp;lt;considers&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="3" target="6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="230" y="200" as="sourcePoint"/>
<mxPoint x="280" y="150" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="9" value="&amp;lt;&amp;lt;uses&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="2" target="3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="290" y="210" as="sourcePoint"/>
<mxPoint x="120" y="170" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="10" value="&amp;lt;&amp;lt;filters&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="7" target="6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="280" y="310" as="sourcePoint"/>
<mxPoint x="330" y="260" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="11" value="&amp;lt;&amp;lt;uses&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="3" target="7">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="180" y="250" as="sourcePoint"/>
<mxPoint x="230" y="200" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="12" value="&amp;lt;&amp;lt;references&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="4" target="5">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="210" y="380" as="sourcePoint"/>
<mxPoint x="260" y="330" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="13" value="&amp;lt;&amp;lt;contains&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="3" target="4">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="280" y="350" as="sourcePoint"/>
<mxPoint x="330" y="300" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="14" value="Action" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-120" y="40" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="15" value="Target Type" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="480" y="40" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="16" value="&amp;lt;&amp;lt;classifies&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="15" target="6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="440" y="270" as="sourcePoint"/>
<mxPoint x="490" y="220" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="17" value="Distribution Set Type" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-120" y="160" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="18" value="&amp;lt;&amp;lt;classifies&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="17" target="3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-40" y="300" as="sourcePoint"/>
<mxPoint x="10" y="250" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="19" value="Target Tags" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="480" y="240" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="20" value="&amp;lt;&amp;lt;uses&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="7" target="15">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="360" y="250" as="sourcePoint"/>
<mxPoint x="410" y="200" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="21" value="&amp;lt;&amp;lt;uses&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="7" target="19">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="350" y="290" as="sourcePoint"/>
<mxPoint x="400" y="240" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="22" value="Distribution Set Tag" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="-120" y="240" width="80" height="40" as="geometry"/>
</mxCell>
<mxCell id="23" value="&amp;lt;&amp;lt;classifies&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="19" target="6">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="500" y="290" as="sourcePoint"/>
<mxPoint x="550" y="240" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="24" value="&amp;lt;&amp;lt;classifies&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="22" target="3">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="-40" y="370" as="sourcePoint"/>
<mxPoint x="10" y="320" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="25" value="&amp;lt;&amp;lt;creates&amp;gt;&amp;gt;" style="endArrow=classic;html=1;" edge="1" parent="1" source="2" target="14">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint y="150" as="sourcePoint"/>
<mxPoint x="50" y="100" as="targetPoint"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file added docs/images/domain_model.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.