# A YAML similar to this example would have to be generated, for eg with MRW
# inputs and system configuration, to depict IPMI Fru information.
#
# This file maps IPMI properties to phosphor dbus inventory properties
#
# This YAML could help generate C++ code.
# Format of the YAML:
# Fruid:
#   Associated Fru paths
#     d-bus Interfaces
#       d-bus Properties
#         IPMI Fru mapping
0:
  /system:
    xyz.openbmc_project.Inventory.Item:
      PrettyName:
        IPMIFruProperty: Product Name
        IPMIFruSection: Product
    xyz.openbmc_project.Inventory.Decorator.Asset:
      Manufacturer:
        IPMIFruProperty: Manufacturer
        IPMIFruSection: Product
      PartNumber:
        IPMIFruProperty: Part Number
        IPMIFruSection: Product
      SerialNumber:
        IPMIFruProperty: Serial Number
        IPMIFruSection: Product
      BuildDate:
        IPMIFruProperty: Mfg Date
        IPMIFruSection: Product
    xyz.openbmc_project.Inventory.Revision:
      Version:
        IPMIFruProperty: Version
        IPMIFruSection: Product
1:
  /system/chassis/motherboard/dimm0:
    xyz.openbmc_project.Inventory.Item:
      PrettyName:
        IPMIFruProperty: Product Name
        IPMIFruSection: Product
    xyz.openbmc_project.Inventory.Decorator.Asset:
      Manufacturer:
        IPMIFruProperty: Manufacturer
        IPMIFruSection: Product
      BuildDate:
        IPMIFruProperty: Mfg Date
        IPMIFruSection: Product
      SerialNumber:
        IPMIFruProperty: Serial Number
        IPMIFruSection: Product
      PartNumber:
        IPMIFruProperty: Part Number
        IPMIFruSection: Product
    xyz.openbmc_project.Inventory.Revision:
      Version:
        IPMIFruProperty: Version
        IPMIFruSection: Product
2:
  /system/chassis/motherboard/dimm1:
    xyz.openbmc_project.Inventory.Item:
      PrettyName:
        IPMIFruProperty: Product Name
        IPMIFruSection: Product
    xyz.openbmc_project.Inventory.Decorator.Asset:
      Manufacturer:
        IPMIFruProperty: Manufacturer
        IPMIFruSection: Product
      BuildDate:
        IPMIFruProperty: Mfg Date
        IPMIFruSection: Product
      SerialNumber:
        IPMIFruProperty: Serial Number
        IPMIFruSection: Product
      PartNumber:
        IPMIFruProperty: Part Number
        IPMIFruSection: Product
    xyz.openbmc_project.Inventory.Revision:
      Version:
        IPMIFruProperty: Version
        IPMIFruSection: Product
3:
  /system/chassis/motherboard/cpu0:
    xyz.openbmc_project.Inventory.Item:
      PrettyName:
        IPMIFruProperty: Product Name
        IPMIFruSection: Board
    xyz.openbmc_project.Inventory.Decorator.Asset:
      BuildDate:
        IPMIFruProperty: Mfg Date
        IPMIFruSection: Board
      SerialNumber:
        IPMIFruProperty: Serial Number
        IPMIFruSection: Board
      PartNumber:
        IPMIFruProperty: Part Number
        IPMIFruSection: Board
      Manufacturer:
        IPMIFruProperty: Manufacturer
        IPMIFruSection: Board
4:
  /system/chassis/motherboard/cpu1:
    xyz.openbmc_project.Inventory.Item:
      PrettyName:
        IPMIFruProperty: Product Name
        IPMIFruSection: Board
    xyz.openbmc_project.Inventory.Decorator.Asset:
      BuildDate:
        IPMIFruProperty: Mfg Date
        IPMIFruSection: Board
      SerialNumber:
        IPMIFruProperty: Serial Number
        IPMIFruSection: Board
      PartNumber:
        IPMIFruProperty: Part Number
        IPMIFruSection: Board
      Manufacturer:
        IPMIFruProperty: Manufacturer
        IPMIFruSection: Board
