# 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:
        entityID: 23
        entityInstance: 1
        interfaces:
            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:
        entityID: 32
        entityInstance: 1
        interfaces:
            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:
        entityID: 32
        entityInstance: 2
        interfaces:
            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:
        entityID: 3
        entityInstance: 1
        interfaces:
            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:
        entityID: 3
        entityInstance: 2
        interfaces:
            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:
