*** Settings ***
Documentation   This suite tests Vital Product Data (VPD) via busctl command.
...             Before running this suite, create a data/vpd_data.py file with
...             all VPD data to verify from system.
...
...             #!/usr/bin/python
...             VPD_DETAILS = {
...                 "/system/chassis/motherboard": {
...                     "DR": "SYSTEM BACKPLANE",
...                     "LocationCode": "ABCD.EF1.1234567-P0",
...                     "PN": "PN12345",
...                     "SN": "SN1234567890",
...                 },
...                 "/system/chassis/motherboard/base_op_panel_blyth": {
...                     "DR": "CEC OP PANEL",
...                     "LocationCode": "ABCD.EF1.1234567-D0",
...                     "PN": "PN12345",
...                     "SN": "SN1234567890",
...                 }
...             }

Variables       ../../data/vpd_data.py
Resource        ../../lib/openbmc_ffdc.robot

Test Teardown   FFDC On Test Case Fail


*** Variables ***

${CMD_INVENTORY_PREFIX}  busctl get-property xyz.openbmc_project.Inventory.Manager
...  /xyz/openbmc_project/inventory


*** Test Cases ***

Verify Vital Product Data
    [Documentation]  Verify VPD via busctl command.
    [Tags]  Verify_Vital_Product_Data

    ${components}=  Get Dictionary Keys  ${VPD_DETAILS}
    FOR  ${component}  IN  @{components}
        Verify VPD Via Busctl  ${component}
    END


*** Keywords ***

Verify VPD Via Busctl
    [Documentation]  Verify VPD details via busctl.
    [Arguments]  ${component}

    # Description of argument(s):
    # component       VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).

    # Verify Location code
    ${busctl_output}=  BMC Execute Command
    ...  ${CMD_INVENTORY_PREFIX}${component} com.ibm.ipzvpd.Location LocationCode
    Should Be Equal  ${busctl_output[0].split('"')[1].strip('"')}
    ...  ${VPD_DETAILS['${component}']['LocationCode']}

    # Skip check for other VPD fields if its an ethernet component.
    ${status}=  Run Keyword And Return Status  Should Contain  ${component}  ethernet
    Return From Keyword If  '${status}' == 'True'

    # Verify PrettyName
    ${busctl_output}=  BMC Execute Command
    ...  ${CMD_INVENTORY_PREFIX}${component} xyz.openbmc_project.Inventory.Item PrettyName
    Should Contain  ${busctl_output[0].split('"')[1].strip('"')}
    ...  ${VPD_DETAILS['${component}']['DR']}

    # Verify Part Number
    ${busctl_output}=  BMC Execute Command
    ...  ${CMD_INVENTORY_PREFIX}${component} xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
    Should Be Equal  ${busctl_output[0].split('"')[1].strip('"')}
    ...  ${VPD_DETAILS['${component}']['PN']}

    # Verify Serial Number
    ${busctl_output}=  BMC Execute Command
    ...  ${CMD_INVENTORY_PREFIX}${component} xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
    Should Be Equal  ${busctl_output[0].split('"')[1].strip('"')}
    ...  ${VPD_DETAILS['${component}']['SN']}
