By default, all targets are compatible with all distribution sets. This means that every valid distribution set that has the required software modules assigned can be installed on all available targets. However, some targets might not support the distribution set's content; the assignment is possible with Bosch IoT Rollouts, nevertheless.

To avoid such incorrect assignments and for user guidance, it is possible to restrict general compatibility using target types and define, for presumably different target types, the specific distribution sets 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 is optional; 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.

Managing target types

Target types can be managed via the Management UI and 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 existing target types (2) becomes visible. Using the + icon (3), further target types can be created.

When creating a target type, a dialog appears that lets you select compatible distribution sets.

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).

All target-type-related operations can also be managed using the target type resource in 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 number 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. 
  • Assigning multiple selected targets to a distribution set is possible only if the distribution set supports all of them. 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 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.