*** Settings ***
Documentation       BMC server health, collect VPD and hardware status.

# Test Parameters:
# OPENBMC_HOST      The BMC host name or IP address.

Resource            ../../lib/bmc_redfish_resource.robot
Resource            ../../lib/openbmc_ffdc.robot

Suite Setup         Suite Setup Execution
Suite Teardown      Suite Teardown Execution
Test Setup          Printn

*** Variables ***
${QUIET}  ${1}
${rest_collected_values}  Rest collection excluded
${redfish_collected_values}  Redfish collection excluded

*** Test Cases ***

Rest Collect VPD And Hardware Status
    [Documentation]  Collect VPD and hardware status using the OpenBMC Rest API.
    [Tags]  Rest_Collect_VPD_And_Hardware_Status  rest
    [Teardown]  FFDC On Test Case Fail

    ${system_properties}=  OpenBMC Get Request  ${HOST_INVENTORY_URI}system
    ${system_properties}=  Evaluate  $system_properties.json()
    ${Type}=  Read Attribute  ${CHASSIS_INVENTORY_URI}  Type
    ${WaterCooled}=  Read Attribute  ${CHASSIS_INVENTORY_URI}  WaterCooled
    ${AirCooled}=  Read Attribute  ${CHASSIS_INVENTORY_URI}  AirCooled
    ${system_chassis}=  OpenBMC Get Request  ${MOTHERBOARD_INVENTORY_URI}enumerate
    ${system_chassis}=  Evaluate  $system_chassis.json()
    Rprint Vars  system_properties  Type  WaterCooled  AirCooled  system_chassis
    ${rest_collected_values}=  gen_robot_print.Sprint Vars
    ...  system_properties  Type  WaterCooled  AirCooled  system_chassis
    Set Global Variable  ${rest_collected_values}


Redfish Collect VPD And Hardware Status
    [Documentation]  Collect VPD and hardware status using Redfish.
    [Tags]  Redfish_Collect_VPD_And_Hardware_Status  redfish
    [Setup]  Redfish.Login
    [Teardown]  Redfish Test Teardown Execution

    ${system_properties}=  Redfish_Utils.Get Properties  ${SYSTEM_BASE_URI}
    ${system_memory_info}=  Redfish_Utils.Enumerate Request  ${SYSTEM_BASE_URI}/Memory
    ${system_processors_info}=  Redfish_Utils.Enumerate Request  ${SYSTEM_BASE_URI}/Processors
    ${system_fans_info}=  Redfish_Utils.Get Attribute  ${REDFISH_CHASSIS_THERMAL_URI}  Fans
    Rprint Vars  system_properties  system_memory_info  system_processors_info  system_fans_info
    ${redfish_collected_values}=  gen_robot_print.Sprint Vars
    ...  system_properties  system_memory_info  system_processors_info  system_fans_info
    Set Global Variable  ${redfish_collected_values}


*** Keywords ***

Suite Setup Execution
    [Documentation]  Do test case setup tasks.

    Set Log Level  DEBUG
    REST Power On  stack_mode=skip


Suite Teardown Execution
    [Documentation]  Do suite teardown tasks. Log values and data collected.

    Log  Rest collected values:${\n}${rest_collected_values}
    Log  Redfish collected values:${\n}${redfish_collected_values}


Redfish Test Teardown Execution
    [Documentation]  Do the post test teardown for redfish.

    Redfish.Logout
    FFDC On Test Case Fail