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