*** Settings *** Documentation Test Save Area feature of Management Console on BMC. Resource ../../lib/rest_client.robot Resource ../../lib/openbmc_ffdc.robot Resource ../../lib/resource.robot Resource ../../lib/bmc_redfish_utils.robot Resource ../../lib/utils.robot Resource ../../lib/bmc_redfish_resource.robot Resource ../../lib/external_intf/management_console_utils.robot Suite Setup Suite Setup Execution Test Teardown Test Teardown Execution Suite Teardown Suite Teardown Execution Test Tags Savearea_Management *** Variables *** ${MAXIMUM_FILE_SIZE_MESSAGE} File size exceeds maximum allowed size[25MB] ${MAXIMUM_DIR_SIZE_MESSAGE} ... File size does not fit in the savearea directory maximum allowed size[25MB] ${FILE_UPLOAD_MESSAGE} File Created ${FILE_DELETED_MESSAGE} File Deleted ${FILE_UPDATED_MESSAGE} File Updated ${FORBIDDEN_MESSAGE} Forbidden ${ERROR_MESSAGE} Error while creating the file ${RESOURCE_NOT_FOUND_MESSAGE} Resource Not Found ${MINIMUM_FILE_SIZE_MESSAGE} File size is less than minimum allowed size[100B] ${MAXIMUM_FILE_NAME_MESSAGE} Filename must be maximum 20 characters ${UNSUPPORTED_FILE_NAME_MESSAGE} Unsupported character in filename ${content-1} Sample Content to test partition file upload ... Sample Content to test partition file upload ... Sample Content to test partition file upload ${content-2} Sample Content to test partition file upload after reboot ... Sample Content to test partition file upload after reboot ... Sample Content to test partition file upload after reboot ${LOOP_COUNT} 10 *** Test Cases *** Redfish Upload Lower Limit Partition File To BMC [Documentation] Upload lower limit of allowed partition file to BMC using Redfish. [Tags] Redfish_Upload_Lower_Limit_Partition_File_To_BMC [Template] Redfish Upload Partition File # file_name 100-file Redfish Upload Partition File To BMC [Documentation] Upload partition file to BMC using Redfish. [Tags] Redfish_Upload_Partition_File_To_BMC [Template] Redfish Upload Partition File # file_name 500KB-file 2000KB-file 10000KB-file 25000KB-file Test Upload Lower Limit Partition File To BMC And Expect Failure [Documentation] Fail to upload partition file to BMC with file size ... below the lower limit of allowed partition file size using Redfish. [Tags] Test_Upload_Lower_Limit_Partition_File_To_BMC_And_Expect_Failure [Template] Redfish Fail To Upload Partition File # file_name status_code partition_status response_message 99-file ${HTTP_BAD_REQUEST} 0 ${MINIMUM_FILE_SIZE_MESSAGE} Test Upload Upper Limit Partition File To BMC And Expect Failure [Documentation] Fail to upload partition file to BMC with file size ... more than upper limit of allowed partition file size using Redfish. [Tags] Test_Upload_Upper_Limit_Partition_File_To_BMC_And_Expect_Failure [Template] Redfish Fail To Upload Partition File # file_name status_code partition_status response_message 25001KB-file ${HTTP_BAD_REQUEST} 0 ${MAXIMUM_FILE_SIZE_MESSAGE} Redfish Upload Multiple Partition File To BMC [Documentation] Upload multiple partition file to BMC using Redfish. [Tags] Redfish_Upload_Multiple_Partition_File_To_BMC [Template] Redfish Upload Partition File # file_name 250KB-file,500KB-file Test Upload Partition File When BMC Space Reach Max And Expect Failure [Documentation] Fail to upload multiple partition file to BMC ... as BMC directory reach to upper limit using Redfish. [Tags] Test_Upload_Partition_File_When_BMC_Space_Reach_Max_And_Expect_Failure [Template] Redfish Fail To Upload Partition File # file_name status_code partition_status response_message 15000KB-file ${HTTP_OK} 1 ${FILE_UPLOAD_MESSAGE} 16000KB-file ${HTTP_BAD_REQUEST} 0 ${MAXIMUM_DIR_SIZE_MESSAGE} 25000KB-file ${HTTP_OK} 1 ${FILE_UPLOAD_MESSAGE} 100-file ${HTTP_BAD_REQUEST} 0 ${MAXIMUM_DIR_SIZE_MESSAGE} Redfish Upload Same Partition File To BMC In Loop [Documentation] Upload same partition file to BMC using Redfish in loop. [Tags] Redfish_Upload_Same_Partition_File_To_BMC_In_Loop [Template] Redfish Upload Partition File In Loop # file_name 500KB-file Redfish Upload And Delete Same Partition File To BMC In Loop [Documentation] Upload same partition file to BMC using Redfish in loop. [Tags] Redfish_Upload_And_Delete_Same_Partition_File_To_BMC_In_Loop [Template] Redfish Upload And Delete Partition File In Loop # file_name 500KB-file Redfish Partition File Upload Post BMC Reboot [Documentation] Upload partition file to BMC using Redfish, after the BMC reboot. [Tags] Redfish_Partition_File_Upload_Post_BMC_Reboot [Template] Verify Partition File Upload Post BMC Reboot # file_name 500KB-file Redfish Partition File Persistency On BMC Reboot [Documentation] Upload partition file to BMC using Redfish and is same after reboot. [Tags] Redfish_Partition_File_Persistency_On_BMC_Reboot [Template] Redfish Partition File Persistency # file_name 500KB-file Redfish Multiple Partition File Persistency On BMC Reboot [Documentation] Upload multiple partition file to BMC using Redfish and is same after reboot. [Tags] Redfish_Multiple_Partition_File_Persistency_On_BMC_Reboot [Template] Redfish Partition File Persistency # file_name 250KB-file,500KB-file Redfish Read Partition File From BMC [Documentation] Upload partition file to BMC using Redfish and verify the content. [Tags] Redfish_Read_Partition_File_From_BMC [Template] Redfish Read Partition File # file_name reboot_flag testfile01-file False testfile01-file,testfile02-file False Redfish Read Partition File Post BMC Reboot [Documentation] Upload partition file to BMC using Redfish and verify the content after reboot. [Tags] Redfish_Read_Partition_File_Post_BMC_Reboot [Template] Redfish Read Partition File # file_name reboot_flag testfile01-file True testfile01-file,testfile02-file True Redfish Update Partition File On BMC [Documentation] Upload partition file to BMC using Redfish and verify the content. [Tags] Redfish_Update_Partition_File_On_BMC [Template] Redfish Update Partition File With Different Content # file_name reboot_flag testfile01-file False Redfish Update Partition File On BMC Reboot [Documentation] Upload partition file to BMC using Redfish and verify the content after the reboot. [Tags] Redfish_Update_Partition_File_On_BMC_Reboot [Template] Redfish Update Partition File With Different Content # file_name reboot_flag testfile01-file True Redfish Persistency Update Partition File On BMC [Documentation] Upload partition file to BMC using Redfish and verify the content. [Tags] Redfish_Persistency_Update_Partition_File_On_BMC [Template] Redfish Update Partition File With Same Content # file_name reboot_flag testfile01-file False Redfish Delete Non Existence Of Partition File [Documentation] Delete the partition file if do not exists. [Tags] Redfish_Delete_Non_Existence_Of_Partition_File [Template] Redfish Delete Non Existence Partition File # file_name testfile01-file Verify One Thousand Partitions File Upload [Documentation] Upload 1000 partition file to BMC. [Tags] Verify_One_Thousand_Partitions_File_Upload [Template] Redfish Upload Partition File With Range # range 1000 Non Admin Users Fail To Upload Partition File [Documentation] Non admin user will fail to upload the partition file. [Tags] Non_Admin_Users_Fail_To_Upload_Partition_File [Template] Non Admin User To Upload Partition File # file_name username password role_id 500KB-file operator_user TestPwd123 Operator Non Admin User Delete Non Existence Of Partition File [Documentation] Delete the partition file if does not exists. [Tags] Non_Admin_User_Delete_Non_Existence_Of_Partition_File [Template] Non Admin Delete Non Existence Partition File # file_name username password role_id 500KB-file operator_user TestPwd123 Operator Redfish Update Wrong Partition File To BMC [Documentation] Upload partition file to BMC by wrong URI using Redfish. [Tags] Redfish_Update_Wrong_Partition_File_To_BMC [Template] Verify Update Wrong Partition File To BMC # file_name 500KB-file Test Redfish Upload Partition File Name With Character Limit To BMC [Documentation] Upload partition file to BMC with file name character allowed limit ... and above allowed limit using Redfish. [Tags] Test_Redfish_Upload_Partition_File_Name_With_Character_Limit_To_BMC [Template] Check Redfish Upload Partition File Name With Character Limit To BMC # file_name status_code message 50KB-testfilesavfile ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 50KB-testsaveareafile ${HTTP_BAD_REQUEST} ${MAXIMUM_FILE_NAME_MESSAGE} Test Redfish Fail To Upload Partition File Name With Special Character To BMC [Documentation] Upload partition file to BMC with special character file name and ... Redfish through an error. [Tags] Test_Redfish_Fail_To_Upload_Partition_File_Name_With_Special_Character_To_BMC [Template] Check Redfish Fail To Upload Partition File Name With Special Character To BMC # file_name status_code message 1KB-*filename ${HTTP_BAD_REQUEST} ${UNSUPPORTED_FILE_NAME_MESSAGE} 1KB-!filename ${HTTP_BAD_REQUEST} ${UNSUPPORTED_FILE_NAME_MESSAGE} 1KB-@filename ${HTTP_BAD_REQUEST} ${UNSUPPORTED_FILE_NAME_MESSAGE} Redfish Persistency Update Partition File Post BMC Reboot [Documentation] Upload partition file to BMC using Redfish and verify the content after the reboot. [Tags] Redfish_Persistency_Update_Partition_File_Post_BMC_Reboot [Template] Redfish Update Partition File With Same Content # file_name reboot_flag testfile01-file True Redfish Upload Validated Partition File From Path To BMC [Documentation] Upload valid partition file to BMC from file path define by user in loop. ... By default loop count values is 10 times. [Tags] Redfish_Upload_Validated_Partition_File_From_Path_To_BMC Log To Console ${EMPTY} FOR ${count} IN RANGE 1 ${LOOP_COUNT} + 1 Log To Console ************************************** Log To Console * The Current Loop Count is ${count} of ${LOOP_COUNT} * Log To Console ************************************** Redfish Upload Partition File From Path ${PARTITION_FILE_PATH} END *** Keywords *** Suite Setup Execution [Documentation] Suite setup execution. Redfish.Login Test Teardown Execution [Documentation] Test teardown execution. Delete All BMC Partition File ${HTTP_OK} FFDC On Test Case Fail Suite Teardown Execution [Documentation] Suite teardown execution. Delete All Sessions Delete Local Partition File [Documentation] Delete local partition file. [Arguments] ${file_name} # Description of argument(s): # file_name Partition file name. FOR ${conf_file} IN @{file_name} ${file_exist}= Run Keyword And Return Status OperatingSystem.File Should Exist ${conf_file} Run Keyword If 'True' == '${file_exist}' Remove File ${conf_file} END Delete Local Server Partition File [Documentation] Local partition files which is getting uploaded to BMC, ... will get deleted after the uploads. If partition file name consist ... of “-file” then partition file gets deleted. @{conf_file_list} = OperatingSystem.List Files In Directory ${EXECDIR} ${match_conf_file_list}= Get Matches ${conf_file_list} regexp=.*-file case_insensitive=${True} ${num_records}= Get Length ${match_conf_file_list} Return From Keyword If ${num_records} == ${0} ${EMPTY} FOR ${conf_file} IN @{match_conf_file_list} ${file_exist}= Run Keyword And Return Status OperatingSystem.File Should Exist ${conf_file} Run Keyword If 'True' == '${file_exist}' Remove File ${conf_file} END Create Partition File [Documentation] Create Partition file. [Arguments] ${file_name} # Description of argument(s): # file_name Partition file name. Delete Local Partition File ${file_name} FOR ${conf_file} IN @{file_name} @{words}= Split String ${conf_file} - Run dd if=/dev/zero of=${conf_file} bs=${words}[-0] count=1 OperatingSystem.File Should Exist ${conf_file} END Delete BMC Partition File [Documentation] Delete single partition file on BMC via Redfish. [Arguments] ${file_name} ${status_code} ${expected_message} # Description of argument(s): # file_name Partition file name. # status_code HTTPS status code. # expected_message Expected message of URI. FOR ${conf_file} IN @{file_name} ${data}= Create Dictionary ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN} Set To Dictionary ${data} headers ${headers} ${resp}= DELETE On Session openbmc /ibm/v1/Host/ConfigFiles/${conf_file} &{data} ... expected_status=any Should Be Equal As Strings ${resp.status_code} ${status_code} ${description}= Return Description Of Response ${resp.text} Should Be Equal As Strings ${description} ${expected_message} END Delete All BMC Partition File [Documentation] Delete multiple partition file on BMC via Redfish. [Arguments] ${status_code} # Description of argument(s): # status_code HTTPS status code. Initialize OpenBMC ${data}= Create Dictionary ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN} Set To Dictionary ${data} headers ${headers} ${resp}= POST On Session openbmc /ibm/v1/Host/ConfigFiles/Actions/IBMConfigFiles.DeleteAll &{data} ... expected_status=any Should Be Equal As Strings ${resp.status_code} ${status_code} Return Description Of Response [Documentation] Return description of REST response. [Arguments] ${resp_text} # Description of argument(s): # resp_text REST response body. # resp_text after successful partition file upload looks like: # { # "Description": "File Created" # } ${status}= Run Keyword And Return Status Evaluate isinstance(${resp_text}, dict) Return From Keyword If '${status}' == 'False' ${resp_text} ${message}= Evaluate json.loads('''${resp_text}''') json RETURN ${message["Description"]} Upload Partition File To BMC [Documentation] Upload partition file to BMC. [Arguments] ${file_name} ${status_code} ${expected_message} ${flag}=${True} ${path}=${EMPTY} # Description of argument(s): # file_name Partition file name. # status_code HTTPS status code. # expected_message Expected message of URI. # flag If True run part of program, else skip. # path Partition file path. Run Keyword If '${flag}' == '${True}' Initialize OpenBMC FOR ${conf_file} IN @{file_name} # Get the content of the file and upload to BMC. ${image_data}= OperatingSystem.Get Binary File ${path}${conf_file} ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN} Content-Type=application/octet-stream ${kwargs}= Create Dictionary data=${image_data} Set To Dictionary ${kwargs} headers ${headers} ${resp}= PUT On Session openbmc /ibm/v1/Host/ConfigFiles/${conf_file} &{kwargs} timeout=10 ... expected_status=any Should Be Equal As Strings ${resp.status_code} ${status_code} ${description}= Return Description Of Response ${resp.text} Should Be Equal As Strings ${description} ${expected_message} END Verify Partition File On BMC [Documentation] Verify partition file on BMC. [Arguments] ${file_name} ${Partition_status} # Description of argument(s): # file_name Partition file name. # Partition_status Partition file status on BMC. FOR ${conf_file} IN @{file_name} ${status} ${stderr} ${rc}= BMC Execute Command ... ls -l /var/lib/bmcweb/ibm-management-console/configfiles/${conf_file} | wc -l Valid Value ${status} [${Partition_status}] END Redfish Upload Partition File [Documentation] Upload the partition file. [Arguments] ${file_name} ${file_size}=${EMPTY} # Description of argument(s): # file_name Partition file name. # file_size By Default is set to EMPTY, # if user pass small_file_size the create file with small # size keyword gets executed. @{Partition_file_list} = Split String ${file_name} , ${num_records}= Get Length ${Partition_file_list} Create Partition File ${Partition_file_list} Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Run Keyword If ${num_records} == ${1} ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} ... ELSE ... Delete All BMC Partition File ${HTTP_OK} Delete Local Partition File ${Partition_file_list} Redfish Fail To Upload Partition File [Documentation] Fail to upload the partition file. [Arguments] ${file_name} ${status_code} ${partition_status} ${response_message}=${EMPTY} # Description of argument(s): # file_name Partition file name. # status_code HTTPS status code. # partition_status Partition status. # response_message By default is set to EMPTY, # else user provide the information when user upload the partition with file size # below lower linit of allowed partition or more than of large allowed partition. @{Partition_file_list} = Split String ${file_name} , Create Partition File ${Partition_file_list} Upload Partition File To BMC ${Partition_file_list} ${status_code} ${response_message} Verify Partition File On BMC ${Partition_file_list} Partition_status=${partition_status} Run Keyword If ${partition_status} == 0 ... Run Keywords ... Delete BMC Partition File ... ${Partition_file_list} ${HTTP_NOT_FOUND} ${RESOURCE_NOT_FOUND_MESSAGE} AND ... Delete All BMC Partition File ${HTTP_OK} AND ... Delete Local Server Partition File Delete Local Partition File ${Partition_file_list} Redfish Upload Partition File In Loop [Documentation] Upload the same partition file multiple times in loop to BMC. [Arguments] ${file_name} # Description of argument(s): # file_name Partition file name. @{Partition_file_list} = Split String ${file_name} , Create Partition File ${Partition_file_list} Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 FOR ${count} IN RANGE 1 11 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 END Initialize OpenBMC Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} Delete Local Partition File ${Partition_file_list} Redfish Upload And Delete Partition File In Loop [Documentation] Upload the same partition file multiple times in loop to BMC. [Arguments] ${file_name} # Description of argument(s): # file_name Partition file name. FOR ${count} IN RANGE 1 11 Redfish Upload Partition File ${file_name} END Verify Partition File Upload Post BMC Reboot [Documentation] Upload the partition file, after BMC reboot. [Arguments] ${file_name} # Description of argument(s): # file_name Partition file name. ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} Redfish BMC Reset Operation Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled Is BMC Standby Redfish Upload Partition File ${file_name} Redfish Partition File Persistency [Documentation] Upload the partition file and check for persistency after reboot. [Arguments] ${file_name} # Description of argument(s): # file_name Partition file name. @{Partition_file_list} = Split String ${file_name} , ${num_records}= Get Length ${Partition_file_list} Create Partition File ${Partition_file_list} Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} Redfish BMC Reset Operation Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled Is BMC Standby Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Initialize OpenBMC Run Keyword If ${num_records} == ${1} ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} ... ELSE ... Delete All BMC Partition File ${HTTP_OK} Delete Local Partition File ${Partition_file_list} Verify Redfish Partition File Content [Documentation] Verify partition file content. [Arguments] ${file_name} ${content_dict} ${status_code} # Description of argument(s): # file_name Partition file name. # content_dict Dict contain the content. # status_code HTTPS status code. FOR ${conf_file} IN @{file_name} ${resp}= GET On Session openbmc /ibm/v1/Host/ConfigFiles/${conf_file} ... expected_status=any Should Be Equal As Strings ${resp.status_code} ${status_code} ${Partition_file_data}= Remove String ${resp.text} \\n ${Partition_file_data}= Evaluate json.loads('''${Partition_file_data}''') json Should Be Equal As Strings ${Partition_file_data["Data"]} ${content_dict['${conf_file}']} END Add Content To Files [Documentation] Add defined content in partition file. [Arguments] ${file_name} ${index}=${0} # Description of argument(s): # file_name Partition file name. # index Index ${num_records}= Get Length ${file_name} &{content_dict}= Create Dictionary FOR ${conf_file} IN @{file_name} ${index}= Get Index From List ${file_name} ${conf_file} ${index}= Evaluate ${index} + 1 Run echo "${content-${index}}" > ${conf_file} OperatingSystem.File Should Exist ${conf_file} Set To Dictionary ${content_dict} ${conf_file} ${content-${index}} END RETURN &{content_dict} Redfish Read Partition File [Documentation] Read partition file content. [Arguments] ${file_name} ${reboot_flag}=False # Description of argument(s): # file_name Partition file name. # reboot_flag Reboot flag. @{Partition_file_list} = Split String ${file_name} , ${content_dict}= Add Content To Files ${Partition_file_list} ${num_records}= Get Length ${Partition_file_list} Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} Run Keyword If ${True} == ${reboot_flag} ... Run Keywords Redfish BMC Reset Operation AND ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND ... Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled AND ... Is BMC Standby AND ... Initialize OpenBMC AND ... Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} Run Keyword If ${num_records} == ${1} ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} ... ELSE ... Delete All BMC Partition File ${HTTP_OK} Delete Local Partition File ${Partition_file_list} Redfish Update Partition File With Same Content [Documentation] Update partition file with same content. [Arguments] ${file_name} ${reboot_flag}=False # Description of argument(s): # file_name Partition file name. # reboot_flag Reboot flag. @{Partition_file_list} = Split String ${file_name} , ${content_dict}= Add Content To Files ${Partition_file_list} ${0} Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} Run Keyword If ${True} == ${reboot_flag} ... Run Keywords Redfish BMC Reset Operation AND ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND ... Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled AND ... Is BMC Standby AND ... Initialize OpenBMC ${content_dict}= Add Content To Files ${Partition_file_list} ${0} Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} Delete Local Partition File ${Partition_file_list} Redfish Update Partition File With Different Content [Documentation] Update partition file with different content. [Arguments] ${file_name} ${reboot_flag}=False # Description of argument(s): # file_name Partition file name. # reboot_flag Reboot flag. @{Partition_file_list} = Split String ${file_name} , ${content_dict}= Add Content To Files ${Partition_file_list} ${0} Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} Run Keyword If ${True} == ${reboot_flag} ... Run Keywords Redfish BMC Reset Operation AND ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND ... Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled AND ... Is BMC Standby AND ... Initialize OpenBMC ${content_dict}= Add Content To Files ${Partition_file_list} ${1} Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} Delete Local Partition File ${Partition_file_list} Create File Names [Documentation] Create partition file names. [Arguments] ${range} # Description of argument(s): # range Range in numbers. @{file_name_list}= Create List Set Test Variable ${file_name} rangefile FOR ${count} IN RANGE ${range} Append To List ${file_name_list} 1KB-file${count} END RETURN ${file_name_list} Redfish Upload Partition File With Range [Documentation] Upload the partition file with the range of files. [Arguments] ${range} # Description of argument(s): # range Range in numbers. ${Partition_file_list}= Create File Names ${range} Delete Local Partition File ${Partition_file_list} Create Partition File ${Partition_file_list} Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Delete All BMC Partition File ${HTTP_OK} Delete Local Partition File ${Partition_file_list} Redfish Delete Non Existence Partition File [Documentation] Delete the partition file if do not exists. [Arguments] ${file_name} # Description of argument(s): # file_name Partition file name. @{Partition_file_list} = Split String ${file_name} , Delete BMC Partition File ${Partition_file_list} ${HTTP_NOT_FOUND} ${RESOURCE_NOT_FOUND_MESSAGE} Non Admin User To Upload Partition File [Documentation] Non admin user to upload the partition file. [Arguments] ${file_name} ${username} ${password} ${role} ${enabled}=${True} # Description of argument(s): # file_name Partition file name. # username Username. # password Password. # role Role of user. # enabled Value can be True or False. Redfish Create User ${username} ${password} ${role} ${enabled} Delete All Sessions Initialize OpenBMC rest_username=${username} rest_password=${password} @{Partition_file_list} = Split String ${file_name} , Create Partition File ${Partition_file_list} Upload Partition File To BMC ${Partition_file_list} ${HTTP_FORBIDDEN} ${FORBIDDEN_MESSAGE} ${False} Delete Local Partition File ${Partition_file_list} Redfish.Delete /redfish/v1/AccountService/Accounts/${username} Non Admin Delete Non Existence Partition File [Documentation] Non admin user to upload the partition file. [Arguments] ${file_name} ${username} ${password} ${role} ${enabled}=${True} # Description of argument(s): # file_name Partition file name. # username Username. # password Password. # role Role of user. # enabled Value can be True or False. Redfish Create User ${username} ${password} ${role} ${enabled} Delete All Sessions Initialize OpenBMC rest_username=${username} rest_password=${password} @{Partition_file_list} = Split String ${file_name} , Delete BMC Partition File ${Partition_file_list} ${HTTP_FORBIDDEN} ${FORBIDDEN_MESSAGE} Verify Update Wrong Partition File To BMC [Documentation] Upload the wrong partition file to BMC. [Arguments] ${file_name} # Description of argument(s): # file_name Partition file name. Redfish.Login ${resp}= Run Keyword And Return Status ... Redfish.Put /ibm/v1/Host/ConfigFiles/../../../../../etc/resolv.conf body={"data": "test string"} Should Be Equal As Strings ${resp} False Check Redfish Upload Partition File Name With Character Limit To BMC [Documentation] Upload the partition file to BMC with file name character limit. [Arguments] ${file_name} ${status_code} ${message} # Description of argument(s): # file_name Partition file name. # status_code HTTPS status code. # message Expected message of from upload partition file URI. @{Partition_file_list} = Split String ${file_name} , ${num_records}= Get Length ${Partition_file_list} Create Partition File ${Partition_file_list} ${file_name_length}= Get Length ${Partition_file_list}[0] Run Keyword If ${file_name_length} == 20 ... Run Keywords ... Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} AND ... Verify Partition File On BMC ${Partition_file_list} Partition_status=1 AND ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} ... ELSE ... Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} Delete Local Partition File ${Partition_file_list} Check Redfish Fail To Upload Partition File Name With Special Character To BMC [Documentation] Upload the partition file to BMC with special character file name. [Arguments] ${file_name} ${status_code} ${message} # Description of argument(s): # file_name Partition file name. # status_code HTTPS status code. # message Expected message from upload partition file URI. @{Partition_file_list} = Split String ${file_name} , ${num_records}= Get Length ${Partition_file_list} Create Partition File ${Partition_file_list} Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} ${status}= Run Keyword And Return Status ... Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Should Be Equal As Strings ${status} False Delete Local Partition File ${Partition_file_list} Redfish Upload Partition File From Path [Documentation] Upload the partition file to BMC from file path. [Arguments] ${PARTITION_FILE_PATH} # Description of argument(s): # PARTITION_FILE_PATH Partition file path. ${file_list} = OperatingSystem.List Files In Directory ${PARTITION_FILE_PATH} ${num_records}= Get Length ${file_list} Should Not Be Equal As Integers ${num_records} 0 FOR ${file_name} IN @{file_list} @{Partition_file_list} = Split String ${file_name} , ${num_records}= Get Length ${Partition_file_list} Upload Partition File To BMC file_name=${Partition_file_list} ... status_code=${HTTP_OK} expected_message=${FILE_UPLOAD_MESSAGE} path=${PARTITION_FILE_PATH} Verify Partition File On BMC ${Partition_file_list} Partition_status=1 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} END