Pantavisor Unified Configuration Format

Pantavisor has experienced some big changes in its configuration system during the last months. I’ll try to explain here some of the most important ones.

New configuration keys

Unlike the legacy system (which is still supported for backwards compatibility but deprecated), there is no need to add prefixes to the config keys anymore. This required a new convention for key names that would support a one key-for-all approach. You can see the new configuration list here.

Furthermore, the allowed levels for each key has been reviewed completely, trying to maximize what is allowed for each level. See this table to check what’s allowed and what’s not.

Env configuration level

The new configuration system has been designed to be compatible with Linux environment variables (case insensitive, no . character, spaces can be escaped with ").

This allows to configure Pantavisor using environment variables. It substitutes the old cmdline level via /proc/cmdline (still supported but deprecated and more limited).

OEM configuration level

In substitution of the BSP config level (again, still supported but deprecated), we offer now the OEM level.

THE OEM level is more flexible, as you will still be able to change config with a new revision but won’t have to change anything in the BSP artifacts themselves, and can be turned on by just adding the key PV_OEM_NAME at env level before booting up.

PVControl feedback

The pvcontrol interface has also been expanded to accomodate the new data that can be stored in the configuration system.

To get to it, just execute:

pvcontrol conf ls

This will return the configuration table that is stored in that moment in Pantavisor, including the new modified field, which is very handy for troubleshooting:

# pvcontrol conf ls | jq '.[] | select(.key == "PV_LOG_LEVEL")'
{
  "key": "PV_LOG_LEVEL",
  "value": "5",
  "modified": "metadata"
}