*** Settings ***
Documentation   Module for testing BMC via XCAT.

Resource        ../lib/xcat/resource.txt
Resource        ../lib/xcat/xcat_utils.robot

Library         OperatingSystem
Library         String

Suite Setup  Validate XCAT Setup
Suite Teardown  Close All Connections

*** Variables ***

${poweron_flag}   ON
${poweroff_flag}  OFF
${NUM_POWER_STATUS_CHECKS}  1000

*** Test Cases ***

Add BMC Nodes To XCAT
    [Documentation]  Connect and add BMC nodes.
    [Tags]  Add_BMC_Nodes_To_XCAT

    # Add BMC nodes one by one and check whether it is successfully added.
    : FOR  ${bmc}  IN  @{BMC_LIST}
    \  Add Nodes To XCAT  ${bmc}
    \  Validate Added Node  ${bmc}

Power On Via XCAT And Validate
    [Documentation]  Power on via XCAT and validate.
    [Tags]  Power_On_Via_XCAT_And_Validate

    # Power on each BMC node and validate the power status.
    : FOR  ${bmc}  IN  @{BMC_LIST}
    \  Power On Via XCAT  ${bmc}
    \  Validate Power Status Via XCAT  ${bmc}  ${poweron_flag}

Power Off Via XCAT And Validate
    [Documentation]  Power off via XCAT and validate.
    [Tags]  Power_Off_Via_XCAT_And_Validate

    # Power off each BMC node and validate the power status.
    : FOR  ${bmc}  IN  @{BMC_LIST}
    \  Power Off Via XCAT  ${bmc}
    \  Validate Power Status Via XCAT  ${bmc}  ${poweroff_flag}

Add Nodes To Group List
    [Documentation]  Add BMC nodes into group.
    [Tags]  Move_Added_Nodes_To_Group

    # Add BMC nodes to group and validate.
    : FOR  ${bmc}  IN  @{BMC_LIST}
    \  Add Nodes To Group  ${bmc}  ${GROUP}
    \  Validate Node Added In Group  ${bmc}  ${GROUP}

Power On Group And Validate
    [Documentation]  Power on all BMCs in group and validate.
    [Tags]  Power_On_Group_And_Validate

    # Sample output of this keyword:
    # XXX.XXX.XXX.XXX
    # YYY.YYY.YYY.YYY
    # ZZZ.ZZZ.ZZZ.ZZZ

    ${nodes}=  Get List Of Nodes In Group  ${GROUP}
    Should Not Be Empty  ${nodes}  msg=Group is empty.
    Power On Via XCAT  ${GROUP}

    # List the BMC nodes.

    @{bmc_nodes}=  Split String  ${nodes}

    # Validate power status on each BMC node one by one.
    : FOR  ${bmc_node}  IN  @{bmc_nodes}
    \  Validate Power Status Via XCAT  ${bmc_node}  ${poweron_flag}

Power Off Group And Validate
    [Documentation]  Power off all BMCs in group and validate.
    [Tags]  Power_Off_Group_And_Validate

    # Sample output of this keyword:
    # XXX.XXX.XXX.XXX
    # YYY.YYY.YYY.YYY
    # ZZZ.ZZZ.ZZZ.ZZZ

    ${nodes}=  Get List Of Nodes In Group  ${GROUP}
    Should Not Be Empty  ${nodes}  msg=Group is empty.
    Power Off Via XCAT  ${GROUP}

    # List the BMC nodes.
    @{bmc_nodes}=  Split String  ${nodes}

    # Validate power status on each BMC node one by one.
    : FOR  ${bmc_node}  IN  @{bmc_nodes}
    \  Validate Power Status Via XCAT  ${bmc_node}  ${poweroff_flag}

Continuous Node Power Status
    [Documentation]  Continuously get the power status.
    # This keyword verifies the REST connectivity between XCAT and the BMC node.
    [Tags]  Continuos_Node_Power_Status

    # Performing this operation only on one BMC node.

    Power On Via XCAT  ${BMC_LIST[1]}

    # Get the power status of the node repeatedly.
    # By default it gets power status 1000 times.
    # It bascially stress the BMC node and test REST implementation
    # of the BMC node

    : FOR  ${index}  IN RANGE  1  ${NUM_POWER_STATUS_CHECKS}
    \  Validate Power Status Via XCAT  ${BMC_LIST[1]}  ${poweron_flag}

Get Temperature Reading Via XCAT
    [Documentation]  Get temperature reading via XCAT.
    [Tags]  Get_Temperature_Reading_Via_XCAT

    # Sample output of the keyword:
    # node1: Ambient: 28.62 C
    # node1: P0 Vcs Temp: 35 C
    # node1: P0 Vdd Temp: 35 C
    # node1: P0 Vddr Temp: 35 C
    # node1: P0 Vdn Temp: 35 C
    # node1: P1 Vcs Temp: 33 C
    # node1: P1 Vdd Temp: 33 C
    # node1: P1 Vddr Temp: 34 C
    # node1: P1 Vdn Temp: 34 C

    # Get temperature reading from each BMC node.

    : FOR  ${bmc}  IN  @{BMC_LIST}
    \  ${temp_reading}=  Get Hardware Vitals Via XCAT  ${bmc}  temp
    \  Should Match  ${temp_reading}  ${bmc}* C
    \  Log  \n Temperature reading on $[bmc}\n ${temp_reading}

Get Fanspeed Via XCAT
    [Documentation]  Get fanspeed via XCAT.
    [Tags]  Get_Fanspeed_Reading_Via_XCAT

    # Sample output of the keyword:
    # node1: Fan0 0: 10714 RPMS
    # node1: Fan1 0: 10216 RPMS
    # node1: Fan2 0: 14124 RPMS
    # node1: Fan3 0: 11114 RPMS

    # Get fanspeed from each BMC node.

    : FOR  ${bmc}  IN  @{BMC_LIST}
    \  ${fanspeed}=  Get Hardware Vitals Via XCAT  ${bmc}  fanspeed
    \  Should Match  ${fanspeed}  ${bmc}* RPMS
    \  Log  \n fanspeed on $[bmc}\n ${fanspeed}


Get Voltage Reading Via XCAT
    [Documentation]  Get voltage via XCAT.
    [Tags]  Get_Voltage_Via_XCAT

    # Sample output of the keyword:
    # node1: No attributes returned from the BMC.
    # BMC node is not returning anything, this will fail at present.

    # Get voltage reading from each BMC node.

    : FOR  ${bmc}  IN  @{BMC_LIST}
    \  ${voltage}=  Get Hardware Vitals Via XCAT  ${bmc}  voltage
    \  Log  \n Voltage reading on $[bmc}\n ${voltage}

Get Wattage Via XCAT
    [Documentation]  Get wattage via XCAT.
    [Tags]  Get_Wattage_Via_XCAT

    # Sample output of the keyword:
    # node1: No attributes returned from the BMC.
    # BMC node is not returning anything, this will fail at present.

    # Get wattage reading from each BMC node.

    : FOR  ${bmc}  IN  @{BMC_LIST}
    \  ${wattage}=  Get Hardware Vitals Via XCAT  ${bmc}  wattage
    \  Log  \n Wattage reading on $[bmc}\n ${wattage}


*** Keywords ***

Validate XCAT Setup
    [Documentation]  Validate XCAT setup.

    Open Connection And Login To XCAT

    # Check if XCAT is installed.
    ${cmd_output}=  Execute Command  ${XCAT_DIR_PATH}/lsxcatd -v
    Should Not Be Empty  ${cmd_output}  msg=XCAT not installed.

    Log  \n XCAT Version is: \n${cmd_output}

    # Get all the BMC nodes from the config file.
    ${nodes}=  Get List Of BMC Nodes
    # Make a list of BMC nodes.
    @{BMC_LIST}=  Split To Lines  ${nodes}
    Log To Console  BMC nodes to be added:\n ${BMC_LIST}
    Set Suite Variable  @{BMC_LIST}

    # GROUP should not be empty.
    Should Not Be EMPTY  ${GROUP}  msg=Group does not exist.

Validate Power Status Via XCAT
    [Documentation]  Validate power status.
    [Arguments]  ${node}  ${flag}=ON

    ${status}=  Get Power Status  ${node}
    Run Keyword If  '${flag}' == 'ON'
    ...  Should Contain  ${status}  on  msg=Host is off.
    ...  ELSE  Should Contain  ${status}  off  msg=Host is on.
