| commit | 9a5eec91664d61ed47630a616c2e187c7c6a69bc | [log] [tgz] | 
|---|---|---|
| author | Christopher Meis <christopher.meis@9elements.com> | Thu Aug 07 08:43:03 2025 +0200 | 
| committer | Christopher Meis <christopher.meis@9elements.com> | Tue Oct 21 06:06:51 2025 +0000 | 
| tree | e7f14b16ef26bfed807565c5bd260c3c04a09321 | |
| parent | 7276b5d431667fb30f676bab7f9fec8151d39a82 [diff] | 
entity-manager: Add probe associations
Probe associations provides a mapping between a probed path and the
inventory path of the board.
This may help in getting information about bus and address
values from the properties available via the aforementioned probed path.
Probed path of board 'probed_by' inventory board path.
Inventory board path 'probing' probe path.
A probe path can be valid statement found in the 'Probe' statement of a
EM configuration.
This change could require testing on real hardware from other reviewers
and maintainers to make sure, the feature works as intended.
Tested on QEMU/Yosemite4 with EEPROM data added to QEMU source code.
This allows loading configurations without changing the probe
statements.
Logs:
```
root@yosemite4:~# journalctl | grep entity-manager
Apr 03 13:35:05 yosemite4 entity-manager[464]: Clearing previous configuration
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 2
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 8
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 4 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 12 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 1 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 6
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 8 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 10 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 13 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 14 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 7 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 3 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 15 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 9 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 12 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 9 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 1
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 2 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Management Board
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 2 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 15 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 7
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 6 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 5
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 3
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 7 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 11 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 5 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 10 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 14 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 16 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 3 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 5 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 1 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 16 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Fan Board 1
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 6 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 11 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome T1 Slot 4
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 4 CPU
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Fan Board 0
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 8 Chassis
Apr 03 13:35:14 yosemite4 entity-manager[464]: Inventory Added: Yosemite 4 Sentinel Dome Slot 13 Chassis
root@yosemite4:~# busctl tree xyz.openbmc_project.EntityManager
`- /xyz
  `- /xyz/openbmc_project
    |- /xyz/openbmc_project/EntityManager
    `- /xyz/openbmc_project/inventory
      `- /xyz/openbmc_project/inventory/system
        |- /xyz/openbmc_project/inventory/system/board
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_ADC
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN0_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN0_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN1_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN1_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN4_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN4_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN5_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN5_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN8_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN8_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN9_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/FANBOARD0_FAN9_TACH_OUTLET_SPEED_RPM
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_0/Fan_Board_0_FRU
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_ADC
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN10_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN10_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN11_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN11_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN2_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN2_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN3_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN3_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN6_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN6_TACH_OUTLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN7_TACH_INLET_SPEED_RPM
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/FANBOARD1_FAN7_TACH_OUTLET_SPEED_RPM
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Fan_Board_1/Fan_Board_1_FRU
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/All_Fan
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P0V6_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P12V_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P1V0_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P1V2_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P1V8_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P2V5_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P3V3_RGM_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P3V3_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P3V_BAT_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P5V_USB_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_ADC_P5V_VOLT_V
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/MGNT_TEMP_C
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/PID_NIC_TEMP
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Stepwise_MGNT_TEMP
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Stepwise_NIC_TEMP
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Stepwise_SENTINEL_DOME_SLOT_PRESENT_PERCENTAGE
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Stepwise_VIRTUAL_NIC_TEMP_C
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board/Zone_1
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/PID_MB_CPU_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/PID_MB_DIMM_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/PID_MB_SSD_BOOT_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/PID_MB_VR_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_CALIBRATED_MB_FIO_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_CPU_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_DIMM_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_FIO_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_INLET_OUTLET_TEMP_Slot_1
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_SSD_BOOT_Slot_1
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_1/Stepwise_MB_VR_Slot_1
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/PID_MB_CPU_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/PID_MB_DIMM_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/PID_MB_SSD_BOOT_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/PID_MB_VR_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_CALIBRATED_MB_FIO_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_CPU_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_DIMM_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_FIO_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_INLET_OUTLET_TEMP_Slot_2
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_SSD_BOOT_Slot_2
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_2/Stepwise_MB_VR_Slot_2
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/PID_MB_CPU_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/PID_MB_DIMM_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/PID_MB_SSD_BOOT_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/PID_MB_VR_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_CALIBRATED_MB_FIO_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_CPU_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_DIMM_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_FIO_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_INLET_OUTLET_TEMP_Slot_3
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_SSD_BOOT_Slot_3
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_3/Stepwise_MB_VR_Slot_3
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/PID_MB_CPU_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/PID_MB_DIMM_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/PID_MB_SSD_BOOT_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/PID_MB_VR_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_CALIBRATED_MB_FIO_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_CPU_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_DIMM_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_FIO_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_INLET_OUTLET_TEMP_Slot_4
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_SSD_BOOT_Slot_4
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_4/Stepwise_MB_VR_Slot_4
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/PID_MB_CPU_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/PID_MB_DIMM_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/PID_MB_SSD_BOOT_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/PID_MB_VR_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_CALIBRATED_MB_FIO_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_CPU_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_DIMM_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_FIO_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_INLET_OUTLET_TEMP_Slot_5
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_SSD_BOOT_Slot_5
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_5/Stepwise_MB_VR_Slot_5
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/PID_MB_CPU_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/PID_MB_DIMM_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/PID_MB_SSD_BOOT_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/PID_MB_VR_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_CALIBRATED_MB_FIO_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_CPU_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_DIMM_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_FIO_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_INLET_OUTLET_TEMP_Slot_6
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_SSD_BOOT_Slot_6
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_6/Stepwise_MB_VR_Slot_6
        | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/PID_MB_CPU_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/PID_MB_DIMM_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/PID_MB_SSD_BOOT_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/PID_MB_VR_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_CALIBRATED_MB_FIO_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_CPU_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_DIMM_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_FIO_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_INLET_OUTLET_TEMP_Slot_7
        | | |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_SSD_BOOT_Slot_7
        | | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_7/Stepwise_MB_VR_Slot_7
        | `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/PID_MB_CPU_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/PID_MB_DIMM_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/PID_MB_SSD_BOOT_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/PID_MB_VR_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_CALIBRATED_MB_FIO_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_CPU_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_DIMM_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_FIO_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_INLET_OUTLET_TEMP_Slot_8
        |   |- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_SSD_BOOT_Slot_8
        |   `- /xyz/openbmc_project/inventory/system/board/Yosemite_4_Sentinel_Dome_T1_Slot_8/Stepwise_MB_VR_Slot_8
        |- /xyz/openbmc_project/inventory/system/chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_10_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_11_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_12_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_13_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_14_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_15_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_16_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_1_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_2_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_3_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_4_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_5_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_6_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_7_Chassis
        | |- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_8_Chassis
        | `- /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Sentinel_Dome_Slot_9_Chassis
        `- /xyz/openbmc_project/inventory/system/cpu
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_10_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_11_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_12_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_13_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_14_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_15_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_16_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_1_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_2_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_3_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_4_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_5_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_6_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_7_CPU
          |- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_8_CPU
          `- /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_9_CPU
busctl introspect xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_10_CPU
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.AddObject                 interface -         -                                        -
.AddObject                                    method    a{sv}     -                                        -
xyz.openbmc_project.Association.Definitions   interface -         -                                        -
.Associations                                 property  a(sss)    1 "probed_by" "probing" "/xyz/openbmc... emits-change
xyz.openbmc_project.Inventory.Decorator.Asset interface -         -                                        -
.Manufacturer                                 property  s         "N/A"                                    emits-change
.Model                                        property  s         "N/A"                                    emits-change
.PartNumber                                   property  s         "N/A"                                    emits-change
.SerialNumber                                 property  s         "$CHASSIS_INFO_AM1"                      emits-change
xyz.openbmc_project.Inventory.Decorator.Slot  interface -         -                                        -
.SlotNumber                                   property  t         10                                       emits-change
xyz.openbmc_project.Inventory.Item.CPU        interface -         -                                        -
.Name                                         property  s         "Yosemite 4 Sentinel Dome Slot 10 CPU"   emits-change
.Probe                                        property  s         "xyz.openbmc_project.FruDevice({\'BOA... emits-change
.Type                                         property  s         "CPU"                                    emits-change
root@yosemite4:~# busctl get-property xyz.openbmc_project.EntityManager /xyz/openbmc_project/inventory/system/chassis/Yosemite_4_Chassis xyz.openbmc_project.Association.Definitions Associations
a(sss) 2 "probed_by" "probed" "/xyz/openbmc_project/inventory/system/board/Yosemite_4_Management_Board" "probed_by" "probed" "/xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome"
busctl get-property xyz.openbmc_project.ObjectMapper /xyz/openbmc_project/inventory/system/cpu/Yosemite_4_Sentinel_Dome_Slot_10_CPU/probed_by xyz.openbmc_project.Association endpoints
as 1 "/xyz/openbmc_project/FruDevice/Sentinel_Dome_without_Retimer_0"
```
Change-Id: Id5f2564a38327e029b7e5c6faef75b2547b42527
Signed-off-by: Christopher Meis <christopher.meis@9elements.com>
Entity manager is a design for managing physical system components, and mapping them to software resources within the BMC. Said resources are designed to allow the flexible adjustment of the system at runtime, as well as the reduction in the number of independent system configurations one needs to create.
A server component that is physically separate, detectable through some means, and can be added or removed from a given OpenBMC system. Said component can, and likely does contain multiple sub-components, but the component itself as a whole is referred to as an entity.
Note, this term is needed because most other terms that could've been used (Component, Field Replaceable Unit, or Assembly) are already overloaded in the industry, and have a distinct definition already, which is a subset of what an entity encompasses.
A particular feature of an Entity. An Entity generally will have multiple Exposes records for the various features that component supports. Some examples of features include, LM75 sensors, PID control parameters, or CPU information.
A set of rules for detecting a given entity. Said rules generally take the form of a D-Bus interface definition.
Entity manager has the following goals (unless you can think of better ones):
A full BMC setup using Entity Manager consists of a few parts:
A detection daemon This is something that can be used to detect components at runtime. The most common of these, fru-device, is included in the Entity-Manager repo, and scans all available I2C buses for IPMI FRU EEPROM devices. Other examples of detection daemons include: peci-pcie: A daemon that utilizes the CPU bus to read in a list of PCIe devices from the processor. smbios-mdr: A daemon that utilizes the x86 SMBIOS table specification to detect the available systems dependencies from BIOS.
In many cases, the existing detection daemons are sufficient for a single system, but in cases where there is a superseding inventory control system in place (such as in a large datacenter) they can be replaced with application specific daemons that speak the protocol information of their controller, and expose the inventory information, such that failing devices can be detected more readily, and system configurations can be "verified" rather than detected.
An entity manager configuration file Entity manager configuration files are located in the ./configurations directory in the entity manager repository, and include one file per device supported. Entities are detected based on the "Probe" key in the json file. The intention is that this folder contains all hardware configurations that OpenBMC supports, to allows an easy answer to "Is X device supported". An EM configuration contains a number of Exposes records that specify the specific features that this Entity supports. Once a component is detected, entity manager will publish these Exposes records to D-Bus.
A reactor The reactors are things that take the entity manager configurations, and use them to execute and enable the features that they describe. One example of this is dbus-sensors, which contains a suite of applications that input the Exposes records for sensor devices, then connect to the filesystem to create the sensors and scan loops to scan sensors for those devices. Other examples of reactors could include: CPU management daemons and Hot swap backplane management daemons, or drive daemons.
note: In some cases, a given daemon could be both a detection daemon and a reactor when architectures are multi-tiered. An example of this might include a hot swap backplane daemon, which both reacts to the hot swap being detected, and also creates detection records of what drives are present.
Entity Manager will automatically create associations between its entities in certain cases. For details see the associations doc.
Entity manager shall support the dynamic discovery of hardware at runtime, using inventory interfaces. The types of devices include, but are not limited to hard drives, hot swap backplanes, baseboards, power supplies, CPUs, and PCIe Add-in-cards.
Entity manager shall support the ability to add or remove support for particular devices in a given binary image. By default, entity manager will support all available and known working devices for all platforms.
Entity manager shall provide data to D-Bus about a particular device such that other daemons can create instances of the features being exposed.
Entity manager shall support multiple detection runs, and shall do the minimal number of changes necessary when new components are detected or no longer detected. Some examples of re-detection events might include host power on, drive plug/unplug, PSU plug/unplug.
Entity manager shall have exactly one configuration file per supported device model. In some cases this will cause duplicated information between files, but the ability to list and see all supported device models in a single place, as well as maintenance when devices do differ in the future is determined to be more important than duplication of configuration files.
bmcweb A webserver implementation that uses the inventory information from entity-manager to produce a Redfish compliant REST API. intel-ipmi-oem An implementation of the IPMI SDR, FRU, and Storage commands that utilize Entity Manager as the source of information.