mapper: Add GetAssociatedSubTreePathsById and GetAssociatedSubTreeById

dbus-interface change in:
https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/69999

This commit implements two new methods: GetAssociatedSubTreePathsById
and GetAssociatedSubTreeById. These methods retrieve the paths of
associated endpoints corresponding to the provided identifier, filtering
based on their association with specified endpoint interfaces.

GetAssociatedSubTreePathsById returns the D-Bus paths of associated
endpoints, while GetAssociatedSubTreeById retrieves a dictionary of
D-Bus paths of associated endpoints mapped to corresponding services
associated with the provided identifier.

Tested:
'''
busctl call -j  "xyz.openbmc_project.ObjectMapper"   "/xyz/openbmc_project/object_mapper" \
  "xyz.openbmc_project.ObjectMapper" "GetAssociatedSubTreePathsById" ssassas \
   "chassis" \
   "/xyz/openbmc_project/inventory"  \
   1 "xyz.openbmc_project.Inventory.Item.Chassis" \
    "powered_by" \
   1  "xyz.openbmc_project.Inventory.Item.PowerSupply"
{
        "type" : "as",
        "data" : [
                [
                        "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0",
                        "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1",
                        "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply2",
                        "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply3"
                ]
        ]
}
'''

Another example.

```
busctl call -j xyz.openbmc_project.ObjectMapper   /xyz/openbmc_project/object_mapper \
     xyz.openbmc_project.ObjectMapper GetAssociatedSubTreePathsById ssassas \
     disk_backplane0  \
     /xyz/openbmc_project/inventory \
     1 xyz.openbmc_project.Inventory.Item.FabricAdapter \
     connecting \
     1 xyz.openbmc_project.Inventory.Connector.Port
{
	"type" : "as",
	"data" : [
		[
			"/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector0",
			"/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector1",
			"/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector2",
			"/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector3",
			"/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector4",
			"/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0/dp0_connector5"
		]
	]
}
```

Change-Id: Id55a9b41fe70f7204543d92b5396888f6914a1d4
Signed-off-by: Lakshmi Yadlapati <lakshmiy@us.ibm.com>
Signed-off-by: Myung Bae <myungbae@us.ibm.com>
4 files changed
tree: 7f764ae61e929d4d3b5f5899d37b333aa4766016
  1. fail-monitor/
  2. libmapper/
  3. src/
  4. subprojects/
  5. .clang-format
  6. .gitignore
  7. LICENSE
  8. meson.build
  9. meson.options
  10. OWNERS
  11. README.md
README.md

The Mapper

This repository contains the mapper, which assists in finding things on D-Bus. There is documentation about it here.

Prerequisites

Non-OpenBMC build dependencies are:

  • meson/ninja
  • boost
  • libsystemd
  • systemd
  • tinyxml2

Build

meson build && ninja -C build

Run Unit Tests

meson build && ninja -C build test

Clean the repository

rm -rf build