1# Settings Manager 2 3## Introduction 4 5The settings manager has the following design goals: 6 7- Each setting should be a distinct D-Bus object. 8 9- The above makes it possible to not even create settings objects that do not 10 apply to a specific system. 11 12- It should be possible, for example, for host0/ and host1/ on a system with two 13 hosts to not only have different values for certain settings, but have 14 different applicable settings as well. 15 16- It should be possible to specify default settings for a system at build-time, 17 based on which the settings manager should at run-time create appropriate 18 D-Bus objects and place them on the bus. 19 20## Settings policy file 21 22Some of the design goals above are achieved via a policy file, which is written 23in YAML. Based on this policy file, the settings manager code is generated to be 24able to create only relevant settings D-Bus objects along with specifying their 25defaults. 26 27Here's an example of how entries in the YAML would look: 28 29```yaml 30/xyz/openbmc_project/control/host0/boot_mode: 31 Interface: xyz.openbmc_project.Control.Boot.Mode 32 Defaults: 33 BootMode: Mode::Modes::Regular 34 35/xyz/openbmc_project/control/host1/boot_mode: 36 Interface: xyz.openbmc_project.Control.Boot.Mode 37 Defaults: 38 BootMode: Mode::Modes::Safe 39``` 40 41It is possible to specify this policy file via a bitbake recipe for a system 42specific policy. 43