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