*** Settings ***
Resource                ../lib/utils.robot
Resource                ../lib/connection_client.robot
Resource                ../lib/boot_utils.robot

*** Variables ***
# User defined path to do the cleanup.
${CLEANUP_DIR_PATH}  ${EMPTY}
# List that holds space separated filepaths to skip from cleanup.
${SKIP_LIST}  ${EMPTY}

*** Keywords ***

###############################################################################

Cleanup Dir
    [Documentation]  Remove leftover files in cleanup directory path.
    [Arguments]      ${cleanup_dir_path}=${CLEANUP_DIR_PATH}
    ...              ${skip_list}=${SKIP_LIST}

    # Description of argument(s):
    # cleanup_dir_path  Directory path to do the cleanup.
    # skip_list  List of files to skip from cleanup.

    Should Not Be Empty  ${cleanup_dir_path}
    Should Not Be Empty  ${SKIP_LIST}
    Open Connection And Log In
    @{skip_list}=  Set Variable  ${skip_list.split()}
    ${skip_list_string}=  Set Variable  ${EMPTY}
    :FOR  ${file}  IN  @{skip_list}
    \  ${skip_list_string}=   Set Variable  ${skip_list_string} ! -path "${file}"

    ${file_count1}=  Execute Command On BMC  find ${cleanup_dir_path} | wc -l
    Set Global Variable  ${file_count1}
    Write  find ${cleanup_dir_path} \\( ${skip_list_string} \\) | xargs rm
    Write  find ${cleanup_dir_path} \\( ${skip_list_string} \\) | xargs rmdir
    ${file_count2}=  Execute Command On BMC  find ${cleanup_dir_path} | wc -l

    Run Keyword If  ${file_count2} < ${file_count1}
    ...  Reboot And Verify

Reboot And Verify
    [Documentation]  Reboot BMC and verify cleanup.
    [Arguments]      ${cleanup_dir_path}=${CLEANUP_DIR_PATH}

    # Description of argument(s):
    # cleanup_dir_path  Directory path to do the cleanup.

    OBMC Reboot (off)
    # Take SSH session post BMC reboot before executing command.
    Open Connection And Log In
    ${file_count2}=  Execute Command On BMC  find ${cleanup_dir_path} | wc -l
    Should Be True  ${file_count2} < ${file_count1}
