#include #include #include enum ipmi_fru_area_type { IPMI_FRU_AREA_INTERNAL_USE = 0x00, IPMI_FRU_AREA_CHASSIS_INFO, IPMI_FRU_AREA_BOARD_INFO, IPMI_FRU_AREA_PRODUCT_INFO, IPMI_FRU_AREA_MULTI_RECORD, IPMI_FRU_AREA_TYPE_MAX }; enum openbmc_vpd_key_id { OPENBMC_VPD_KEY_CHASSIS_TYPE = 1, OPENBMC_VPD_KEY_CHASSIS_PART_NUM, OPENBMC_VPD_KEY_CHASSIS_SERIAL_NUM, OPENBMC_VPD_KEY_CHASSIS_CUSTOM1, OPENBMC_VPD_KEY_CHASSIS_CUSTOM2, OPENBMC_VPD_KEY_CHASSIS_CUSTOM3, OPENBMC_VPD_KEY_CHASSIS_CUSTOM4, OPENBMC_VPD_KEY_CHASSIS_CUSTOM5, OPENBMC_VPD_KEY_CHASSIS_CUSTOM6, OPENBMC_VPD_KEY_CHASSIS_CUSTOM7, OPENBMC_VPD_KEY_CHASSIS_CUSTOM8, OPENBMC_VPD_KEY_CHASSIS_MAX = OPENBMC_VPD_KEY_CHASSIS_CUSTOM8, OPENBMC_VPD_KEY_BOARD_MFG_DATE, OPENBMC_VPD_KEY_BOARD_MFR, OPENBMC_VPD_KEY_BOARD_NAME, OPENBMC_VPD_KEY_BOARD_SERIAL_NUM, OPENBMC_VPD_KEY_BOARD_PART_NUM, OPENBMC_VPD_KEY_BOARD_FRU_FILE_ID, OPENBMC_VPD_KEY_BOARD_CUSTOM1, OPENBMC_VPD_KEY_BOARD_CUSTOM2, OPENBMC_VPD_KEY_BOARD_CUSTOM3, OPENBMC_VPD_KEY_BOARD_CUSTOM4, OPENBMC_VPD_KEY_BOARD_CUSTOM5, OPENBMC_VPD_KEY_BOARD_CUSTOM6, OPENBMC_VPD_KEY_BOARD_CUSTOM7, OPENBMC_VPD_KEY_BOARD_CUSTOM8, OPENBMC_VPD_KEY_BOARD_MAX = OPENBMC_VPD_KEY_BOARD_CUSTOM8, OPENBMC_VPD_KEY_PRODUCT_MFR, OPENBMC_VPD_KEY_PRODUCT_NAME, OPENBMC_VPD_KEY_PRODUCT_PART_MODEL_NUM, OPENBMC_VPD_KEY_PRODUCT_VER, OPENBMC_VPD_KEY_PRODUCT_SERIAL_NUM, OPENBMC_VPD_KEY_PRODUCT_ASSET_TAG, OPENBMC_VPD_KEY_PRODUCT_FRU_FILE_ID, OPENBMC_VPD_KEY_PRODUCT_CUSTOM1, OPENBMC_VPD_KEY_PRODUCT_CUSTOM2, OPENBMC_VPD_KEY_PRODUCT_CUSTOM3, OPENBMC_VPD_KEY_PRODUCT_CUSTOM4, OPENBMC_VPD_KEY_PRODUCT_CUSTOM5, OPENBMC_VPD_KEY_PRODUCT_CUSTOM6, OPENBMC_VPD_KEY_PRODUCT_CUSTOM7, OPENBMC_VPD_KEY_PRODUCT_CUSTOM8, OPENBMC_VPD_KEY_PRODUCT_MAX = OPENBMC_VPD_KEY_PRODUCT_CUSTOM8, OPENBMC_VPD_KEY_MAX, OPENBMC_VPD_KEY_CUSTOM_FIELDS_MAX=8, }; using IPMIFruInfo = std::array, OPENBMC_VPD_KEY_MAX>; using IPMIFruMetadata = std::string; using IPMIFruMetadataValue = std::string; using IPMIFruMap = std::map; using DbusProperty = std::string; using DbusPropertyMap = std::map; using DbusInterface = std::string; using DbusInterfaceMap = std::map; using FruInstancePath = std::string; using FruInstanceMap = std::map; using FruId = uint32_t; using FruMap = std::map; struct sd_bus_message; typedef struct sd_bus_message sd_bus_message; int parse_fru (const void* msgbuf, sd_bus_message* vpdtbl); int parse_fru_area (const uint8_t area, const void* msgbuf, const size_t len, IPMIFruInfo& info); extern const FruMap frus = { {1,{ {"/system/chassis/motherboard/cpu0",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"PartNumber",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Part Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Mfg Date"}, }}, {"Manufacturer",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Custom Field 2"}, {"IPMIFruValueDelimiter","58"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {2,{ {"/system/chassis/motherboard/cpu1",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"PartNumber",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Part Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Mfg Date"}, }}, {"Manufacturer",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Custom Field 2"}, {"IPMIFruValueDelimiter","58"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {3,{ {"/system",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Chassis"}, {"IPMIFruProperty","Type"}, }}, {"SerialNumber",{ {"IPMIFruSection","Chassis"}, {"IPMIFruProperty","Serial Number"}, }}, {"PartNumber",{ {"IPMIFruSection","Chassis"}, {"IPMIFruProperty","Part Number"}, }}, }}, }}, {"/system/chassis/motherboard",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"PartNumber",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Part Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Mfg Date"}, }}, {"Manufacturer",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Board"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {4,{ {"/system/chassis/motherboard/dimm0",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {5,{ {"/system/chassis/motherboard/dimm1",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {6,{ {"/system/chassis/motherboard/dimm2",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {7,{ {"/system/chassis/motherboard/dimm3",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {8,{ {"/system/chassis/motherboard/dimm4",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {9,{ {"/system/chassis/motherboard/dimm5",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {10,{ {"/system/chassis/motherboard/dimm6",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {11,{ {"/system/chassis/motherboard/dimm7",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {12,{ {"/system/chassis/motherboard/dimm8",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {13,{ {"/system/chassis/motherboard/dimm9",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {14,{ {"/system/chassis/motherboard/dimm10",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {15,{ {"/system/chassis/motherboard/dimm11",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {16,{ {"/system/chassis/motherboard/dimm12",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {17,{ {"/system/chassis/motherboard/dimm13",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {18,{ {"/system/chassis/motherboard/dimm14",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, {19,{ {"/system/chassis/motherboard/dimm15",{ {"xyz.openbmc_project.Inventory.Decorator.Asset",{ {"Model",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Model Number"}, }}, {"SerialNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Serial Number"}, }}, {"BuildDate",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Mfg Date"}, }}, {"PartNumber",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Part Number"}, }}, {"Manufacturer",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Manufacturer"}, }}, }}, {"xyz.openbmc_project.Inventory.Decorator.Revision",{ {"Version",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Version"}, }}, }}, {"xyz.openbmc_project.Inventory.Item",{ {"PrettyName",{ {"IPMIFruSection","Product"}, {"IPMIFruProperty","Name"}, }}, }}, }}, }}, };