Ignore non-existent units

In systemd, if a non-existent unit is referenced by other unit, it will
be listed in ListUnits response. This commit ignores these non-existent
entries to prevent performing operations on them.

Tested:
In dropbear.socket, there is a Conflicts=dropbear.service which creates
a non-existent service entry. With this commit, it will not be added to
the service object path in /etc/srvcfg-mgr.json.

Change-Id: I2ce360ea3a0b10f527672d1601ae4d6234c1a9aa
Signed-off-by: Jiaqing Zhao <jiaqing.zhao@intel.com>
2 files changed
tree: 0ffb667680c773bc547e4f14038d63eca8e057a7
  1. inc/
  2. src/
  3. subprojects/
  4. .clang-format
  5. .gitignore
  6. LICENSE
  7. MAINTAINERS
  8. meson.build
  9. meson_options.txt
  10. OWNERS
  11. README.md
  12. srvcfg-manager.service
README.md

Service config manager

The service config manager provides a D-Bus interface to manage BMC services as described by the service management D-Bus interfaces.

The configuration settings are intended to persist across BMC reboots.

An example use case for this service is BMCWeb's implementation of the Redfish NetworkProtocol schema.

Design

Implementation details are described in the D-Bus interface README.

The service config manager generally makes configuration changes to systemd units via D-Bus interfaces.

The design pattern to add new services or controls is:

  • Determine if the service you want to control is socket activated.
  • To control the Running and Enabled properties of a service:
    • For a service which uses socket activation, control the socket.
    • For other services, control the service unit itself.