Overrides
Thus far, we’ve defined config schemas, uploaded them to Miru, and stored configuration data in devices and tags. The next step is using overrides to render configuration data conforming to the config schema used by devices.
Override
An override references tag metadata to “override” the default configuration values of a config schema. Here is a hardware
override example.
The default values in the config schema are shown on the left. On the right is the
hardware override, which references the supports_jump
, supports_spin
, and
supports_backflip
fields in the metadata schema for the hardware
tag type.
Overrides are completely named and defined by you. An override does not need to specify all the fields in a config schema, only a subset of the config schema fields. However, it cannot specify fields not present in the config schema.
Overrides can only be evaluated given a particular tag. For instance, the
features.jump
, features.spin
, and features.backflip
fields in the hardware
override reference the supports_jump
, supports_spin
, and supports_backflip
fields
in the metadata schema for the hardware
tag type.
Given the NVIDIA Jetson Orin Nano
tag, the hardware override would use
features.jump: true
features.spin: true
features.backflip: false
since the NVIDIA Jetson Orin Nano
tag has
supports_jump: true
supports_spin: true
supports_backflip: false
This would override the default values in the config schema, changing features.spin
from false
to true
.
Overrides are hierarchically evaluated to determine the config instance for a particular device. The device’s tags determine the specific values referenced by overrides.
Combining tags with overrides provides a flexible method for rendering configuration data unique to each device that is assured to conform to a given config schema.