Add a new dbus interface to get list of consoles

The "xyz.openbmc_project.Console.Access" interface will provide a
single property containing the name of the abstract socket for the
object hosting the interface. The caller can use mapper function to
find the list of registered consoles.  The bmcweb can exploit this
interface by putting console for each console object.

The SocketName attribute provides unix abstract socket name and it's
first character is always null, the attribute type is an array of bytes
types instead of string type. The byte array does not include a null
terminator.

For example, object path and property exposed for host console is as
follows:
Object:
    /xyz/openbmc_project/console/host
Property:
    SocketName  -> "\0obmc-console.host"

The tree for console0:
$ busctl tree xyz.openbmc_project.Console.console0
`-/xyz
  `-/xyz/openbmc_project
    `-/xyz/openbmc_project/console
      `-/xyz/openbmc_project/console/console0

The introspect for console0:
busctl introspect xyz.openbmc_project.Console.console0 /xyz/openbmc_project/console/console0
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.Console.Access  interface -         -                                        -
.SocketName                         property  ay        22 0 111 98 109 99 45 99 111 110 115 ... -

   Related commits:
        1) phosphor-dbus-interface: https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/61486
        2) obmc-console: https://gerrit.openbmc.org/c/openbmc/obmc-console/+/62496
        3) bmcweb: https://gerrit.openbmc.org/c/openbmc/bmcweb/+/62525

Change-Id: Ic50d311b327d9a4d917e4656af3ebeebfe95b5c9
Signed-off-by: Ninad Palsule <ninadpalsule@us.ibm.com>
4 files changed
tree: 25834a2faeb470562d31e2e6ec5cca322f744a2c
  1. gen/
  2. subprojects/
  3. yaml/
  4. .gitignore
  5. .markdownlint.yaml
  6. .prettierrc.yaml
  7. .shellcheck
  8. LICENSE
  9. meson.build
  10. meson_options.txt
  11. OWNERS
  12. README.md
  13. requirements.md
README.md

phosphor-dbus-interfaces

YAML descriptors of standard D-Bus interfaces. The format is described by the sdbusplus binding generation tool sdbus++.

Before defining a new D-Bus interface or modifying an existing one, please read through the documented set of the common requirements and expectations.

Building

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.

Configuration

Only the xyz/openbmc_project and org/freedesktop interfaces are built by default. Other interfaces can be enabled by meson options:

  • com/ibm - -Ddata_com_ibm=true
  • org/open_power - -Ddata_org_open_power=true

Example: meson builddir -Ddata_com_ibm=true && ninja -C builddir

References