Skip to content

0.3.0M8

Compare
Choose a tag to compare
@laverman laverman released this 20 Apr 12:16
· 311 commits to master since this release
328ded7

๐Ÿš€ New Features

User Consent Flow

This new feature facilitates the implementation of user consent requirements (e.g. as mandated by the European Tangible Goods Directive) by enhancing the action state machine with a new state WAITING_FOR_CONFIRMATION. Whenever a new deployment action is initiated (e.g. through a rollout or a manual assignment), it needs to be confirmed first before it enters the state RUNNING. If the confirmation is rejected, the action continues to be in state WAITING_FOR_CONFIRMATION until it is confirmed at a later point in time or cancelled. To accept or reject a pending confirmation, device implementors can use the Direct Device Integration API (DDI) or the Device Management Federation API (DMF). In case of DDI, a new "confirmationBase" resource has been introduced providing the information about pending confirmations and the associated updates. For DMF, a new "CONFIRM" message has been introduced, informing the target device about open confirmations.

In addition, a target device can also be set into an auto-confirm state to indicate that all future actions of this device shall be confirmed automatically. This enables two use cases: Operators might want to disable the confirmation phase for specific test devices, whereas end-users might want to enable automatic updates and give their consent for all future updates (until revoked). The auto-confirm state can either be set by target devices via DDI and DMF, or by operators via Management API and UI.

This feature was contributed by @dimitar-shterev, @strailov, @ramannas, and @herdt-michael in #1293

Target Types

By default, all targets are compatible to all distribution sets. This means, every valid distribution set, that has the required software modules assigned, can be assigned for installation to all available targets. However, some targets might not support the content of the distribution set, but the assignment of it is possible with Eclipse hawkBit, nevertheless. To avoid such wrong assignments and for the sake of user guidance, it is possible to restrict the general compatibility using target types and define for presumably different types of targets the specific types of distribution sets that they are compatible with.

Invalidation of Distribution Sets

Imagine following scenario: A new software update was distributed to many thousand devices using the auto assignment feature. After a few hundred devices have downloaded the update, a major issue within the software is detected and any further software rollout needs to be stopped immediately. The mass-canceling of running update actions can be achieved by invalidating the distribution set the major issue was detected on. The invalidation can be done either via the Management API or the UI.

  • Introduce basic functionality for invalidation of distributionsets by @sebastian-firsching in #1179
  • Feature invalidation of distribution sets [UI part] by @blomark in #1176
  • Feature mass cancel running actions on ds invalidation by @Nkyn in #1177

Manually Trigger the Next Rollout Group

This new rollout feature gives you more flexibility in controlling the execution of your rollout groups. Typically, the cascaded execution of rollout groups is controlled by the so-called "trigger threshold". The trigger threshold specifies a percentage of target devices which have finished their installation of the assigned firmware update. When the trigger threshold is exceeded, the next rollout group will be executed.

There are cases, however, when the trigger threshold of a rollout group is never met, for example, if too many target devices are offline. As a consequence, the execution of your rollout, in particular the execution of the remaining rollout groups, might be stuck. To overcome this state, you can now manually trigger the next rollout group, without waiting for the trigger threshold to be reached. The new feature is offered as part of the Management API and Management UI.

Artifact Encryption

Management API: New Resource Collection /rest/v1/actions

This new Management API feature provides read-only access to the collection of deployment actions via the context path "/rest/v1/actions". Furthermore, it allows you to filter this collection in a very flexible way by defining FIQL queries (request parameter 'q'). For example, you can define the following queries:

  • Find all actions that match a certain action status (e.g. downloaded, finished, error, scheduled etc.).
  • Find all actions that were spawned by a certain rollout.
  • Find all actions that failed with a certain status code.
  • Find all actions that refer to a certain distribution set.

So far, the collection of deployment actions could only be accessed for a specific target device ("action history"). With this new API, you can retrieve the data that is relevant for your specific scenario and feed it into your own custom UIs (e.g. dashboards) to monitor and troubleshoot your firmware updates.

  • Add resource collection /rest/v1/actions to Management REST API by @stefbehl in #1299
  • Management API: Allow to filter actions by last status code by @stefbehl in #1311
  • Add new endpoint for single action by @strailov in #1316

DDI-API: InstalledBase

Installed Base is a new feature which extends the DDI API with the "installedBase" endpoint that behaves similar to "deploymentBase" but instead of providing the latest on-going assignment, it provides the latest installed Distribution Set information. It can be used in multiple scenarios of a factory reset, device sync, etc.

  • DDI API: /controller/v1/{controllerid}/installedBase/{actionId} by @Nkyn in #1220

DMF-API: Optional ControllerAttributes in THING_CREATED

The "attributeUpdate" property provides the attributes of the thing, for details see UPDATE_ATTRIBUTES message. This property is optional.

{
    "name": "String",
    "attributeUpdate": {
        "attributes": {
            "exampleKey1" : "exampleValue1",
            "exampleKey2" : "exampleValue2"
        },
        "mode": "String"
    }
}

UI Deep-Linking for Targets and Target Quicklinks in Management UI

To improve the usability of the Management UI of Eclipse Hawkbit, the target list views that are displayed on the Rollout and Target Filter views provide target quicklinks which take a user back to the Deployment view and, at the same time, select a specific target. This is useful if a user wants to take closer look at a certain target which is listed for a rollout group or target filter. By clicking the target quicklink, the user is taken back to the Deployment view and is immediately presented with the details of that specific target, in particular its action history.

The quicklinks are based on a new target deep-linking concept.
Example: <hawkbit-server-url>/UI/#!deployment/target=<target_id>

Support for Action Status Codes

This new feature enables targets to optionally include a status code into their action status feedback messages that are sent to Eclipse Hawkbit. The feature is supported via DDI and DMF. Annotating action status entries with status code simplifies the troubleshooting of software updates, e.g. by detecting error clusters matching a specific status code.

  • Introduce action status scoped custom code by @herdt-michael in #1277
  • Introduce action status scoped custom code - part 2 by @stefbehl in #1281
  • Adding last action status code in view Rolloutgroup targets by @blomark in #1295
  • Management API: Allow to filter actions by last status code by @stefbehl in #1311
  • Management API: Expose lastStatusCode property of action entities by @stefbehl in #1313

Management UI: Enhanced List Sorting

Various lists which are displayed in the different views of the Management UI can be sorted now by using the sorting controls that are exposed via the table columns. This is in particular useful for lists displaying many items. For example, a user might want to sort the targets of a rollout group based on their software update status to bring those targets with status 'Error' to the top of the list.

โš ๏ธ Required Migrations

๐Ÿ‘๐Ÿป Improvements

๐Ÿž Bugs fixed

โฌ†๏ธ Version Upgrades

๐Ÿ‘‹๐Ÿป New Contributors