commit | ae1cf7b02df1e44e857bd9f7167fbaf062a8e9a7 | [log] [tgz] |
---|---|---|
author | Paul Fertser <fercerpav@gmail.com> | Mon Apr 11 09:18:39 2022 +0000 |
committer | Patrick Williams <patrick@stwcx.xyz> | Tue Apr 12 21:13:04 2022 +0000 |
tree | 68168143ffd8e42874b32396371bbed01afc6e17 | |
parent | d85f391e9878b44f6401f393075910f74f9a0e73 [diff] |
Syslog: introduce interfaces for e-mail sending Interfaces to configure multiple e-mail destinations, each with an individual threshold for the priority level of the syslog messages. The idea is to provide facilities to implement a minimally useful subset of Redfish Event Destinations for e-mail with ability to add additional properties if the need arises. D-Bus object path for each destination contains 8 digits of a mailto hash, so Level can be changed later but for another URI a new object needs to be created. Current set of properties is made on assumption that organisation has an SMTP smarthost (that BMC is allowed to use without authentication) which takes care of dispatching messages; rsyslog's ommail module is considered for the initial implementation. Example session: root@qemuarm:~# busctl tree xyz.openbmc_project.Syslog.Config └─/xyz └─/xyz/openbmc_project └─/xyz/openbmc_project/logging └─/xyz/openbmc_project/logging/config ├─/xyz/openbmc_project/logging/config/mail │ ├─/xyz/openbmc_project/logging/config/mail/2dc1e699 │ ├─/xyz/openbmc_project/logging/config/mail/5d43d672 │ ├─/xyz/openbmc_project/logging/config/mail/b4dc9055 │ ├─/xyz/openbmc_project/logging/config/mail/d5d4db03 │ └─/xyz/openbmc_project/logging/config/mail/e0974603 └─/xyz/openbmc_project/logging/config/remote root@qemuarm:~# busctl introspect xyz.openbmc_project.Syslog.Config /xyz/openbmc_project/logging/config/mail NAME TYPE SIGNATURE RESULT/VALUE FLAGS org.freedesktop.DBus.Introspectable interface - - - .Introspect method - s - org.freedesktop.DBus.Peer interface - - - .GetMachineId method - s - .Ping method - - - org.freedesktop.DBus.Properties interface - - - .Get method ss v - .GetAll method s a{sv} - .Set method ssv - - .PropertiesChanged signal sa{sv}as - - xyz.openbmc_project.Collection.DeleteAll interface - - - .DeleteAll method - - - xyz.openbmc_project.Logging.Syslog.Destination.Mail interface - - - .From property s "from@some.domain" emits-change writable xyz.openbmc_project.Logging.Syslog.Destination.Mail.Create interface - - - .Create method ss o - xyz.openbmc_project.Network.Client interface - - - .Address property s "smarthost.lan" emits-change writable .Port property q 25 emits-change writable xyz.openbmc_project.Object.Enable interface - - - .Enabled property b true emits-change writable root@qemuarm:~# busctl introspect xyz.openbmc_project.Syslog.Config /xyz/openbmc_project/logging/config/mail/d5d4db03 NAME TYPE SIGNATURE RESULT/VALUE FLAGS org.freedesktop.DBus.Introspectable interface - - - .Introspect method - s - org.freedesktop.DBus.Peer interface - - - .GetMachineId method - s - .Ping method - - - org.freedesktop.DBus.Properties interface - - - .Get method ss v - .GetAll method s a{sv} - .Set method ssv - - .PropertiesChanged signal sa{sv}as - - xyz.openbmc_project.Logging.Syslog.Destination.Mail.Entry interface - - - .Level property s "xyz.openbmc_project.Logging.Entry.Leve… emits-change writable .Mailto property s "mailto://someone2@otherdomain.test" emits-change xyz.openbmc_project.Object.Delete interface - - - .Delete method - - - Signed-off-by: Paul Fertser <fercerpav@gmail.com> Change-Id: Ic78fc2bf3608c1dd7ec0c962412e69062dde48d4
YAML descriptors of standard D-Bus interfaces. The format is described by the sdbusplus binding generation tool sdbus++.
This project can be built with meson
. The typical meson
workflow is: meson builddir && ninja -C builddir
.
The meson files used to handle the YAML files are automatically generated and found under the gen
subdirectory. When adding or removing YAML files, this must be regenerated. This can be done with the helper script found in the gen
subdirectory: cd gen && ./regenerate-meson
.
Only the xyz/openbmc_project and org/freedesktop interfaces are built by default. Other interfaces can be enabled by meson options:
-Ddata_com_ibm=true
-Ddata_org_open_power=true
Example: meson builddir -Ddata_com_ibm=true && ninja -C builddir