blob: a587847fe32e0ade3bab0e6c3658a66ca59c4142 [file] [log] [blame]
*** Settings ***
Documentation This suite tests Vital Product Data (VPD) using Redfish.
Resource ../../lib/openbmc_ffdc.robot
Library ../../lib/vpd_utils.py
Suite Setup Redfish.Login
Suite Teardown Redfish.Logout
Test Teardown FFDC On Test Case Fail
*** Test Cases ***
Verify BMC VPD Data Via Redfish
[Documentation] Verify BMC VPD details via Redfish output.
[Tags] Verify_BMC_VPD_Data_Via_Redfish
[Template] Verify Redfish VPD Data
# Component Field
BMC Model
BMC PartNumber
BMC SerialNumber
BMC SparePartNumber
BMC Location
Verify Chassis VPD Data Via Redfish
[Documentation] Verify Chassis VPD details via Redfish output.
[Tags] Verify_Chassis_VPD_Data_Via_Redfish
[Template] Verify Redfish VPD Data
# Skipping chassis's spare part number test because it has issue.
# Component Field
Chassis Model
Chassis PartNumber
Chassis SerialNumber
#Chassis SparePartNumber
Chassis Location
Verify CPU VPD Data Via Redfish
[Documentation] Verify CPU VPD details via Redfish output.
[Tags] Verify_CPU_VPD_Data_Via_Redfish
[Template] Verify Redfish VPD Data
# Component Field
CPU Model
CPU PartNumber
CPU SerialNumber
CPU SparePartNumber
CPU Location
Verify TPM VPD Data Via Redfish
[Documentation] Verify TPM VPD details via Redfish output.
[Tags] Verify_TPM_VPD_Data_Via_Redfish
[Template] Verify Redfish VPD Data
# Component Field
TPM Model
TPM PartNumber
TPM SerialNumber
TPM SparePartNumber
TPM Location
Verify TOD Battery VPD Data Via Redfish
[Documentation] Verify TOD battery VPD details via Redfish output.
[Tags] Verify_TOD_Battery_VPD_Data_Via_Redfish
[Template] Verify Redfish VPD Data
# Component Field
TOD Battery Model
TOD Battery PartNumber
TOD Battery SerialNumber
TOD Battery SparePartNumber
TOD Battery Location
Verify VRM VPD Data Via Redfish
[Documentation] Verify voltage regulator module VPD details via Redfish output.
[Tags] Verify_VRM_VPD_Data_Via_Redfish
[Template] Verify Redfish VPD Data
# Component Field
VRM Model
VRM PartNumber
VRM SerialNumber
VRM SparePartNumber
VRM Location
Verify OP Panel VPD Data Via Redfish
[Documentation] Verify operator panel VPD details via Redfish output.
[Tags] Verify_OP_Panel_VPD_Data_Via_Redfish
[Template] Verify Redfish VPD Data
# Component Field
OP Panel Model
OP Panel PartNumber
OP Panel SerialNumber
OP Panel SparePartNumber
OP Panel Location
Verify OP Panel LCD VPD Data Via Redfish
[Documentation] Verify operator panel LCD VPD details via Redfish output.
[Tags] Verify_OP_Panel_LCD_VPD_Data_Via_Redfish
[Template] Verify Redfish VPD Data
# Component Field
OP Panel LCD Model
OP Panel LCD PartNumber
OP Panel LCD SerialNumber
OP Panel LCD SparePartNumber
OP Panel LCD Location
Verify Disk Backplane VPD Data Via Redfish
[Documentation] Verify disk backplane VPD details via Redfish output.
[Tags] Verify_Disk_Backplane_VPD_Data_Via_Redfish
[Template] Verify Redfish VPD Data
# Component Field
Disk Backplane Model
Disk Backplane PartNumber
Disk Backplane SerialNumber
Disk Backplane SparePartNumber
Disk Backplane Location
*** Keywords ***
Verify Redfish VPD Data
[Documentation] Verify Redfish VPD data of given component.
[Arguments] ${component} ${field}
# Description of arguments:
# component VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
# field VPD field (e.g. Model, PartNumber etc.).
${redfish_component_uri} ${redfish_component_name}= Run Keyword If
... '${component}' == 'BMC' Set Variable /redfish/v1/Managers/bmc OpenBmc Manager
... ELSE IF '${component}' == 'Chassis'
... Set Variable /redfish/v1/Chassis/chassis RackMount
... ELSE IF '${component}' == 'CPU'
... Set Variable /redfish/v1/Systems/system/Processors/cpu0 Processor
... ELSE IF '${component}' == 'TPM'
... Set Variable /redfish/v1/Chassis/chassis/Assembly TPM Card
... ELSE IF '${component}' == 'TOD Battery'
... Set Variable /redfish/v1/Chassis/chassis/Assembly Time Of Day Battery
... ELSE IF '${component}' == 'VRM'
... Set Variable /redfish/v1/Chassis/chassis/Assembly Voltage Regulator Module
... ELSE IF '${component}' == 'OP Panel'
... Set Variable /redfish/v1/Chassis/chassis/Assembly Operator Panel Base
... ELSE IF '${component}' == 'OP Panel LCD'
... Set Variable /redfish/v1/Chassis/chassis/Assembly Operator Panel LCD
... ELSE IF '${component}' == 'Disk Backplane'
... Set Variable /redfish/v1/Chassis/chassis/Assembly NVMe Backplane
${resp}= Run Keyword If '${redfish_component_uri}' == '/redfish/v1/Chassis/chassis/Assembly'
... Get Assembly Component VPD ${redfish_component_name}
... ELSE Redfish.Get Properties ${redfish_component_uri}
${vpd_field}= Set Variable If
... '${field}' == 'Model' CC
... '${field}' == 'PartNumber' PN
... '${field}' == 'SerialNumber' SN
... '${field}' == 'SparePartNumber' FN
... '${field}' == 'Location' LocationCode
${vpd_component}= Set Variable If
... '${component}' == 'CPU' /system/chassis/motherboard/dcm0/cpu0
... '${component}' == 'Chassis' /system/chassis
... '${component}' == 'BMC' /system/chassis/motherboard/bmc
... '${component}' == 'TPM' /system/chassis/motherboard/tpm
... '${component}' == 'TOD Battery' /system/chassis/motherboard/bmc/tod_battery
... '${component}' == 'VRM' /system/chassis/motherboard/vrm0
... '${component}' == 'OP Panel' /system/chassis/motherboard/dasd_backplane/panel0
... '${component}' == 'OP Panel LCD' /system/chassis/motherboard/dasd_backplane/panel1
... '${component}' == 'Disk Backplane' /system/chassis/motherboard/dasd_backplane
${vpd_records}= Vpdtool -o -O ${vpd_component}
Run Keyword if '${field}' == 'Location'
... Should Be Equal As Strings ${resp["Location"]["PartLocation"]["ServiceLabel"]}
... ${vpd_records['${vpd_component}']['${vpd_field}']}
... ELSE
... Should Be Equal As Strings ${resp["${field}"]} ${vpd_records['${vpd_component}']['${vpd_field}']}
Get Assembly Component VPD
[Documentation] Returns Redfish VPD data of given assembly component.
[Arguments] ${component_name}
# Description of argument(s):
# component_name Assembly's component name (e.g. tpm_wilson, tod_battery).
${resp}= Redfish.Get Properties /redfish/v1/Chassis/chassis/Assembly
FOR ${assembly_component} IN @{resp["Assemblies"]}
${output}= Set Variable If
... "${component_name}" == "${assembly_component["Name"]}" ${assembly_component}
Exit For Loop IF "${component_name}" == "${assembly_component["Name"]}"
END
[Return] ${output}