*** Settings ***
Documentation  Set metadata for test suite.

Library          SSHLibrary
Resource         ../lib/connection_client.robot
Resource         ../lib/rest_client.robot
Resource         ../lib/utils.robot
Resource         ../lib/code_update_utils.robot

Suite Setup      System Driver Data

*** Variables ***

${DRIVER_CMD}    cat /etc/os-release | grep ^VERSION_ID=

*** Keyword ***

System Driver Data
    [Documentation]  System driver information and enable defaults settings.
    Run Keyword And Ignore Error  Clear System Entry From Knownhosts
    Wait Until Keyword Succeeds  2 min  30 sec  Open Connection And Log In
    Run Keyword And Ignore Error  Log BMC Driver Details
    Run Keyword And Ignore Error  Log PNOR Driver Details
    Run Keyword And Ignore Error  Log BMC Model
    Run Keyword And Ignore Error  Enable Core Dump On BMC

    Run Keyword If  ${REDFISH_SUPPORTED}
    ...    Redfish Default
    ...  ELSE
    ...    REST Default

REST Default
    [Documentation]  Set REST defaults.

    Run Keyword And Ignore Error  Set Boot Defaults
    Run Keyword And Ignore Error  Set BMC Power Policy  ${ALWAYS_POWER_OFF}
    Run Keyword If  ${FIELD_MODE} == ${True}
    ...  Enable Field Mode And Verify Unmount
    Run Keyword And Ignore Error  Clear BMC Gard Record


Redfish Default
    [Documentation]  Set REST defaults.

    Redfish.Login
    Run Keyword And Ignore Error  Redfish Set Boot Default  Disabled  None
    Run Keyword And Ignore Error  Redfish Set Power Restore Policy  AlwaysOff
    Redfish.Logout


Set Boot Defaults
    [Documentation]  Set boot defaults.
    Set Control Boot Mode  ${CONTROL_HOST_URI}/boot  ${BOOT_MODE_REGULAR}
    Set Control Boot Mode
    ...  ${CONTROL_HOST_URI}/boot/one_time  ${BOOT_MODE_REGULAR}

Log BMC Driver Details
    [Documentation]   Get BMC driver details and log.

    ${output}  ${stderr}=  Execute Command  ${DRIVER_CMD}
    ...  return_stderr=True
    Should Be Empty  ${stderr}
    Log  ${output}
    [Return]  ${output}

Log PNOR Driver Details
    [Documentation]   Get PNOR driver details and log.
    # Until the new REST interface is available using pflash to
    # capture the PNOR details.
    ${software}=  Get Host Software Objects Details
    Log  ${software}

Log BMC Model
    [Documentation]  Fetch BMC Model name from system and log.
    ${bmc_model}=  Get BMC System Model
    Log  BMC Model=${bmc_model}
