1# Service config manager
2
3The service config manager provides a D-Bus interface to manage BMC services
4as described by the [service management D-Bus interfaces][].
5
6The configuration settings are intended to persist across BMC reboots.
7
8An example use case for this service is BMCWeb's implementation of the Redfish
9NetworkProtocol schema.
10
11[service management D-Bus interfaces]: https://github.com/openbmc/phosphor-dbus-interfaces/tree/master/yaml/xyz/openbmc_project/Control/Service
12[BMCWeb's implementation of the Redfish NetworkProtocol schema]: https://github.com/openbmc/bmcweb/blob/master/redfish-core/lib/network_protocol.hpp
13
14## Design
15
16Implementation details are described in the [D-Bus interface README].
17
18The service config manager generally makes configuration changes to `systemd` units via D-Bus interfaces.
19
20The design pattern to add new services or controls is:
21- Determine if the service you want to control is socket activated.
22- To control the `Running` and `Enabled` properties of a service:
23   - For a service which uses socket activation, control the socket.
24   - For other services, control the service unit itself.
25
26[D-Bus interface README]: https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Control/Service/README.md
27