Bosch IoT Rollouts

Type compatibility

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 Bosch IoT Rollouts, 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.

Table of contents:

Target types in general

A target type is an abstract definition for targets. It defines which types of distribution sets the target is compatible with. A target type specification of a target is optional and if the type is not defined, the target is compatible with every distribution set. However, if a target has a target type, assigning a distribution set to that target is not possible if the target type does not support the distribution set type.

images/confluence/download/attachments/1968341893/type-compatibility-diagram-version-5-modificationdate-1635152069000-api-v2.png

Managing target types

Target types can be managed via the Management UI as well as the Management API.

In the Management UI, the target type can be managed as part of the Targets UI feature. By selecting Types (1) from the sub-navigation, a list of the existing target types becomes visible (2). Using the + icon (3), further target types can be created.

When creating a target type, a dialog appears, where the compatible distribution sets can be selected.

Selecting a target type from the list will open its Target type details view (3). You can delete a target type by clicking the actions icon, and then Delete (5).

images/confluence/download/attachments/1968341893/roUI-targets-targetType-delete-version-1-modificationdate-1697807422000-api-v2.png

All target types related operations can also be managed using the target type resource of the Management API, see Target types - HTTP API.


Effects of using target types

Considering that the usage of target types restricts the compatibility between targets and distribution sets, an effect is noticeable wherever those two models interact and the compatibility is verified, i.e. during assignments. Especially, when looking at the amount of affected entities during an assignment, the displayed number might be unexpected.

Deployment view: Manual assignments

  • When assigning a distribution set to a target that is not compatible, the assignment is rejected with an error.

  • The assignment of multiple selected targets to a distribution set, is only possible if the distribution set supports all of the targets. Otherwise the whole assignment is rejected with an error.

  • When multi-assignment is enabled, all assigned distribution sets have to be compatible with the target.

Rollout view: Campaigns

  • When creating a rollout, only compatible targets are considered and are part of the campaign. This is also represented by the the number of total targets in the rollout creation dialog.

  • A warning indicates when the rollout is created and there are no compatible targets. The rollout cannot be created in such a case.

Target Filter view: Auto-assignments

  • When assigning a distribution set to a target filter in the Target Filter view, only compatible targets are considered during the auto-assignment. This is also represented by the number of affected entities in the consequences dialog.


Example

Let's assume, in a first setup, there is a set of first generation devices that don't have a target type assigned. As there are no other types of devices, every device supports every distribution set. On further development, a security issue is identified and a fix has to be applied to all devices. An auto-assignment is created with filter query name==* to have the new software automatically assigned to all devices, also to those, that are not registered yet.

devices (1st Gen)

software (1st Gen)

created auto-assignment

controller Id: "Gen1-Device79", ...
target type: -

distribution set: "SecurityFix:1.0"
distribution set type: "Application"

filter query: "name==*"
distribution set: "SecurityFix:1.0"

Will affect all existing devices.


Later, a next generation device is released that is not affected by the security vulnerability anymore and does not support the distribution set of the existing auto-assignment. To keep the auto-assignment alive for the older generation, but avoid the distribution of the software to the new generation, a target type is created, that restricts the compatibility for newer generations to just the newer generation's software.

devices (Next Gen)

target type (Next Gen)

existing auto-assignment

controller Id: "NextGen-Device19", ...
target type: "NextGen"

target type: "NextGen"
compatible ds type: "NextGen-Apps"

Not compatible with ds type "Application"

filter query: "name==*"
distribution set: "SecurityFix:1.0"

Will not affect NexGen devices.


When the devices of the next generation are registered with the specified target type, they are not affected by the auto-assignment, although the filter applies to all devices regardless of its generation. As the type of the next generation devices restricts the compatibility of the old package, they won't get it assigned. The older generation devices are still able to receive the update.