# 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.Decorator.Revision:
      Version:
        IPMIFruProperty: Version
        IPMIFruSection: Product
    xyz.openbmc_project.Inventory.Item.System:
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.Decorator.Revision:
      Version:
        IPMIFruProperty: Version
        IPMIFruSection: Product
    xyz.openbmc_project.Inventory.Item.Dimm:
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.Decorator.Revision:
      Version:
        IPMIFruProperty: Version
        IPMIFruSection: Product
    xyz.openbmc_project.Inventory.Item.Dimm:
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
    xyz.openbmc_project.Inventory.Item.Cpu:
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
    xyz.openbmc_project.Inventory.Item.Cpu:
