1*** Settings *** 2 3Documentation Test Save Area feature of Management Console on BMC. 4 5Resource ../../lib/rest_client.robot 6Resource ../../lib/openbmc_ffdc.robot 7Resource ../../lib/resource.robot 8Resource ../../lib/bmc_redfish_utils.robot 9Resource ../../lib/utils.robot 10Resource ../../lib/bmc_redfish_resource.robot 11Resource ../../lib/external_intf/management_console_utils.robot 12 13Suite Setup Suite Setup Execution 14Test Teardown Test Teardown Execution 15Suite Teardown Suite Teardown Execution 16 17Force Tags Savearea_Management 18 19*** Variables *** 20 21${MAXIMUM_FILE_SIZE_MESSAGE} File size exceeds maximum allowed size[25MB] 22${MAXIMUM_DIR_SIZE_MESSAGE} 23... File size does not fit in the savearea directory maximum allowed size[25MB] 24${FILE_UPLOAD_MESSAGE} File Created 25${FILE_DELETED_MESSAGE} File Deleted 26${FILE_UPDATED_MESSAGE} File Updated 27${FORBIDDEN_MESSAGE} Forbidden 28${ERROR_MESSAGE} Error while creating the file 29${RESOURCE_NOT_FOUND_MESSAGE} Resource Not Found 30${MINIMUM_FILE_SIZE_MESSAGE} File size is less than minimum allowed size[100B] 31${MAXIMUM_FILE_NAME_MESSAGE} Filename must be maximum 20 characters 32${UNSUPPORTED_FILE_NAME_MESSAGE} Unsupported character in filename 33 34${content-1} Sample Content to test partition file upload 35... Sample Content to test partition file upload 36... Sample Content to test partition file upload 37${content-2} Sample Content to test partition file upload after reboot 38... Sample Content to test partition file upload after reboot 39... Sample Content to test partition file upload after reboot 40 41${LOOP_COUNT} 10 42 43*** Test Cases *** 44 45Redfish Upload Lower Limit Partition File To BMC 46 [Documentation] Upload lower limit of allowed partition file to BMC using Redfish. 47 [Tags] Redfish_Upload_Lower_Limit_Partition_File_To_BMC 48 [Template] Redfish Upload Partition File 49 50 # file_name 51 100-file 52 53 54Redfish Upload Partition File To BMC 55 [Documentation] Upload partition file to BMC using Redfish. 56 [Tags] Redfish_Upload_Partition_File_To_BMC 57 [Template] Redfish Upload Partition File 58 59 # file_name 60 500KB-file 61 2000KB-file 62 10000KB-file 63 25000KB-file 64 65 66Test Upload Lower Limit Partition File To BMC And Expect Failure 67 [Documentation] Fail to upload partition file to BMC with file size 68 ... below the lower limit of allowed partition file size using Redfish. 69 [Tags] Test_Upload_Lower_Limit_Partition_File_To_BMC_And_Expect_Failure 70 [Template] Redfish Fail To Upload Partition File 71 72 # file_name status_code partition_status response_message 73 99-file ${HTTP_BAD_REQUEST} 0 ${MINIMUM_FILE_SIZE_MESSAGE} 74 75 76Test Upload Upper Limit Partition File To BMC And Expect Failure 77 [Documentation] Fail to upload partition file to BMC with file size 78 ... more than upper limit of allowed partition file size using Redfish. 79 [Tags] Test_Upload_Upper_Limit_Partition_File_To_BMC_And_Expect_Failure 80 [Template] Redfish Fail To Upload Partition File 81 82 # file_name status_code partition_status response_message 83 25001KB-file ${HTTP_BAD_REQUEST} 0 ${MAXIMUM_FILE_SIZE_MESSAGE} 84 85 86Redfish Upload Multiple Partition File To BMC 87 [Documentation] Upload multiple partition file to BMC using Redfish. 88 [Tags] Redfish_Upload_Multiple_Partition_File_To_BMC 89 [Template] Redfish Upload Partition File 90 91 # file_name 92 250KB-file,500KB-file 93 94 95Test Upload Partition File When BMC Space Reach Max And Expect Failure 96 [Documentation] Fail to upload multiple partition file to BMC 97 ... as BMC directory reach to upper limit using Redfish. 98 [Tags] Test_Upload_Partition_File_When_BMC_Space_Reach_Max_And_Expect_Failure 99 [Template] Redfish Fail To Upload Partition File 100 101 # file_name status_code partition_status response_message 102 15000KB-file ${HTTP_OK} 1 ${FILE_UPLOAD_MESSAGE} 103 16000KB-file ${HTTP_BAD_REQUEST} 0 ${MAXIMUM_DIR_SIZE_MESSAGE} 104 25000KB-file ${HTTP_OK} 1 ${FILE_UPLOAD_MESSAGE} 105 100-file ${HTTP_BAD_REQUEST} 0 ${MAXIMUM_DIR_SIZE_MESSAGE} 106 107 108Redfish Upload Same Partition File To BMC In Loop 109 [Documentation] Upload same partition file to BMC using Redfish in loop. 110 [Tags] Redfish_Upload_Same_Partition_File_To_BMC_In_Loop 111 [Template] Redfish Upload Partition File In Loop 112 113 # file_name 114 500KB-file 115 116 117Redfish Upload And Delete Same Partition File To BMC In Loop 118 [Documentation] Upload same partition file to BMC using Redfish in loop. 119 [Tags] Redfish_Upload_And_Delete_Same_Partition_File_To_BMC_In_Loop 120 [Template] Redfish Upload And Delete Partition File In Loop 121 122 # file_name 123 500KB-file 124 125 126Redfish Partition File Upload Post BMC Reboot 127 [Documentation] Upload partition file to BMC using Redfish, after the BMC reboot. 128 [Tags] Redfish_Partition_File_Upload_Post_BMC_Reboot 129 [Template] Verify Partition File Upload Post BMC Reboot 130 131 # file_name 132 500KB-file 133 134 135Redfish Partition File Persistency On BMC Reboot 136 [Documentation] Upload partition file to BMC using Redfish and is same after reboot. 137 [Tags] Redfish_Partition_File_Persistency_On_BMC_Reboot 138 [Template] Redfish Partition File Persistency 139 140 # file_name 141 500KB-file 142 143 144Redfish Multiple Partition File Persistency On BMC Reboot 145 [Documentation] Upload multiple partition file to BMC using Redfish and is same after reboot. 146 [Tags] Redfish_Multiple_Partition_File_Persistency_On_BMC_Reboot 147 [Template] Redfish Partition File Persistency 148 149 # file_name 150 250KB-file,500KB-file 151 152 153Redfish Read Partition File From BMC 154 [Documentation] Upload partition file to BMC using Redfish and verify the content. 155 [Tags] Redfish_Read_Partition_File_From_BMC 156 [Template] Redfish Read Partition File 157 158 # file_name reboot_flag 159 testfile01-file False 160 testfile01-file,testfile02-file False 161 162 163Redfish Read Partition File Post BMC Reboot 164 [Documentation] Upload partition file to BMC using Redfish and verify the content after reboot. 165 [Tags] Redfish_Read_Partition_File_Post_BMC_Reboot 166 [Template] Redfish Read Partition File 167 168 # file_name reboot_flag 169 testfile01-file True 170 testfile01-file,testfile02-file True 171 172 173Redfish Update Partition File On BMC 174 [Documentation] Upload partition file to BMC using Redfish and verify the content. 175 [Tags] Redfish_Update_Partition_File_On_BMC 176 [Template] Redfish Update Partition File With Different Content 177 178 # file_name reboot_flag 179 testfile01-file False 180 181 182Redfish Update Partition File On BMC Reboot 183 [Documentation] Upload partition file to BMC using Redfish and verify the content after the reboot. 184 [Tags] Redfish_Update_Partition_File_On_BMC_Reboot 185 [Template] Redfish Update Partition File With Different Content 186 187 # file_name reboot_flag 188 testfile01-file True 189 190 191Redfish Persistency Update Partition File On BMC 192 [Documentation] Upload partition file to BMC using Redfish and verify the content. 193 [Tags] Redfish_Persistency_Update_Partition_File_On_BMC 194 [Template] Redfish Update Partition File With Same Content 195 196 # file_name reboot_flag 197 testfile01-file False 198 199 200Redfish Delete Non Existence Of Partition File 201 [Documentation] Delete the partition file if do not exists. 202 [Tags] Redfish_Delete_Non_Existence_Of_Partition_File 203 [Template] Redfish Delete Non Existence Partition File 204 205 # file_name 206 testfile01-file 207 208 209Verify One Thousand Partitions File Upload 210 [Documentation] Upload 1000 partition file to BMC. 211 [Tags] Verify_One_Thousand_Partitions_File_Upload 212 [Template] Redfish Upload Partition File With Range 213 214 # range 215 1000 216 217 218Non Admin Users Fail To Upload Partition File 219 [Documentation] Non admin user will fail to upload the partition file. 220 [Tags] Non_Admin_Users_Fail_To_Upload_Partition_File 221 [Template] Non Admin User To Upload Partition File 222 223 # file_name username password role_id 224 500KB-file operator_user TestPwd123 Operator 225 226 227Non Admin User Delete Non Existence Of Partition File 228 [Documentation] Delete the partition file if does not exists. 229 [Tags] Non_Admin_User_Delete_Non_Existence_Of_Partition_File 230 [Template] Non Admin Delete Non Existence Partition File 231 232 # file_name username password role_id 233 500KB-file operator_user TestPwd123 Operator 234 235 236Redfish Update Wrong Partition File To BMC 237 [Documentation] Upload partition file to BMC by wrong URI using Redfish. 238 [Tags] Redfish_Update_Wrong_Partition_File_To_BMC 239 [Template] Verify Update Wrong Partition File To BMC 240 241 # file_name 242 500KB-file 243 244 245Test Redfish Upload Partition File Name With Character Limit To BMC 246 [Documentation] Upload partition file to BMC with file name character allowed limit 247 ... and above allowed limit using Redfish. 248 [Tags] Test_Redfish_Upload_Partition_File_Name_With_Character_Limit_To_BMC 249 [Template] Check Redfish Upload Partition File Name With Character Limit To BMC 250 251 # file_name status_code message 252 50KB-testfilesavfile ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 253 50KB-testsaveareafile ${HTTP_BAD_REQUEST} ${MAXIMUM_FILE_NAME_MESSAGE} 254 255 256Test Redfish Fail To Upload Partition File Name With Special Character To BMC 257 [Documentation] Upload partition file to BMC with special character file name and 258 ... Redfish through an error. 259 [Tags] Test_Redfish_Fail_To_Upload_Partition_File_Name_With_Special_Character_To_BMC 260 [Template] Check Redfish Fail To Upload Partition File Name With Special Character To BMC 261 262 # file_name status_code message 263 1KB-*filename ${HTTP_BAD_REQUEST} ${UNSUPPORTED_FILE_NAME_MESSAGE} 264 1KB-!filename ${HTTP_BAD_REQUEST} ${UNSUPPORTED_FILE_NAME_MESSAGE} 265 1KB-@filename ${HTTP_BAD_REQUEST} ${UNSUPPORTED_FILE_NAME_MESSAGE} 266 267 268Redfish Persistency Update Partition File Post BMC Reboot 269 [Documentation] Upload partition file to BMC using Redfish and verify the content after the reboot. 270 [Tags] Redfish_Persistency_Update_Partition_File_Post_BMC_Reboot 271 [Template] Redfish Update Partition File With Same Content 272 273 # file_name reboot_flag 274 testfile01-file True 275 276 277Redfish Upload Validated Partition File From Path To BMC 278 [Documentation] Upload valid partition file to BMC from file path define by user in loop. 279 ... By default loop count values is 10 times. 280 [Tags] Redfish_Upload_Validated_Partition_File_From_Path_To_BMC 281 282 Log To Console ${EMPTY} 283 FOR ${count} IN RANGE 1 ${LOOP_COUNT} + 1 284 Log To Console ************************************** 285 Log To Console * The Current Loop Count is ${count} of ${LOOP_COUNT} * 286 Log To Console ************************************** 287 288 Redfish Upload Partition File From Path ${PARTITION_FILE_PATH} 289 END 290 291*** Keywords *** 292 293Suite Setup Execution 294 [Documentation] Suite setup execution. 295 296 Redfish.Login 297 298 299Test Teardown Execution 300 [Documentation] Test teardown execution. 301 302 Delete All BMC Partition File ${HTTP_OK} 303 FFDC On Test Case Fail 304 305 306Suite Teardown Execution 307 [Documentation] Suite teardown execution. 308 309 Delete All Sessions 310 311 312Delete Local Partition File 313 [Documentation] Delete local partition file. 314 [Arguments] ${file_name} 315 316 # Description of argument(s): 317 # file_name Partition file name. 318 319 FOR ${conf_file} IN @{file_name} 320 ${file_exist}= Run Keyword And Return Status OperatingSystem.File Should Exist ${conf_file} 321 Run Keyword If 'True' == '${file_exist}' Remove File ${conf_file} 322 END 323 324 325Delete Local Server Partition File 326 [Documentation] Local partition files which is getting uploaded to BMC, 327 ... will get deleted after the uploads. If partition file name consist 328 ... of “-file” then partition file gets deleted. 329 330 @{conf_file_list} = OperatingSystem.List Files In Directory ${EXECDIR} 331 ${match_conf_file_list}= Get Matches ${conf_file_list} regexp=.*-file case_insensitive=${True} 332 333 ${num_records}= Get Length ${match_conf_file_list} 334 Return From Keyword If ${num_records} == ${0} ${EMPTY} 335 336 FOR ${conf_file} IN @{match_conf_file_list} 337 ${file_exist}= Run Keyword And Return Status OperatingSystem.File Should Exist ${conf_file} 338 Run Keyword If 'True' == '${file_exist}' Remove File ${conf_file} 339 END 340 341 342Create Partition File 343 [Documentation] Create Partition file. 344 [Arguments] ${file_name} 345 346 # Description of argument(s): 347 # file_name Partition file name. 348 349 Delete Local Partition File ${file_name} 350 351 FOR ${conf_file} IN @{file_name} 352 @{words}= Split String ${conf_file} - 353 Run dd if=/dev/zero of=${conf_file} bs=${words}[-0] count=1 354 OperatingSystem.File Should Exist ${conf_file} 355 END 356 357 358Delete BMC Partition File 359 [Documentation] Delete single partition file on BMC via Redfish. 360 [Arguments] ${file_name} ${status_code} ${expected_message} 361 362 # Description of argument(s): 363 # file_name Partition file name. 364 # status_code HTTPS status code. 365 # expected_message Expected message of URI. 366 367 FOR ${conf_file} IN @{file_name} 368 ${data}= Create Dictionary 369 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN} 370 Set To Dictionary ${data} headers ${headers} 371 372 ${resp}= DELETE On Session openbmc /ibm/v1/Host/ConfigFiles/${conf_file} &{data} 373 ... expected_status=any 374 Should Be Equal As Strings ${resp.status_code} ${status_code} 375 376 ${description}= Return Description Of Response ${resp.text} 377 Should Be Equal As Strings ${description} ${expected_message} 378 END 379 380 381Delete All BMC Partition File 382 [Documentation] Delete multiple partition file on BMC via Redfish. 383 [Arguments] ${status_code} 384 385 # Description of argument(s): 386 # status_code HTTPS status code. 387 388 Initialize OpenBMC 389 ${data}= Create Dictionary 390 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN} 391 Set To Dictionary ${data} headers ${headers} 392 393 ${resp}= POST On Session openbmc /ibm/v1/Host/ConfigFiles/Actions/IBMConfigFiles.DeleteAll &{data} 394 ... expected_status=any 395 Should Be Equal As Strings ${resp.status_code} ${status_code} 396 397 398Return Description Of Response 399 [Documentation] Return description of REST response. 400 [Arguments] ${resp_text} 401 402 # Description of argument(s): 403 # resp_text REST response body. 404 405 # resp_text after successful partition file upload looks like: 406 # { 407 # "Description": "File Created" 408 # } 409 410 ${status}= Run Keyword And Return Status Evaluate isinstance(${resp_text}, dict) 411 Return From Keyword If '${status}' == 'False' ${resp_text} 412 ${message}= Evaluate json.loads('''${resp_text}''') json 413 414 [Return] ${message["Description"]} 415 416 417Upload Partition File To BMC 418 [Documentation] Upload partition file to BMC. 419 [Arguments] ${file_name} ${status_code} ${expected_message} ${flag}=${True} ${path}=${EMPTY} 420 421 # Description of argument(s): 422 # file_name Partition file name. 423 # status_code HTTPS status code. 424 # expected_message Expected message of URI. 425 # flag If True run part of program, else skip. 426 # path Partition file path. 427 428 Run Keyword If '${flag}' == '${True}' Initialize OpenBMC 429 FOR ${conf_file} IN @{file_name} 430 # Get the content of the file and upload to BMC. 431 ${image_data}= OperatingSystem.Get Binary File ${path}${conf_file} 432 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN} Content-Type=application/octet-stream 433 434 ${kwargs}= Create Dictionary data=${image_data} 435 Set To Dictionary ${kwargs} headers ${headers} 436 ${resp}= PUT On Session openbmc /ibm/v1/Host/ConfigFiles/${conf_file} &{kwargs} timeout=10 437 ... expected_status=any 438 Should Be Equal As Strings ${resp.status_code} ${status_code} 439 440 ${description}= Return Description Of Response ${resp.text} 441 Should Be Equal As Strings ${description} ${expected_message} 442 END 443 444 445Verify Partition File On BMC 446 [Documentation] Verify partition file on BMC. 447 [Arguments] ${file_name} ${Partition_status} 448 449 # Description of argument(s): 450 # file_name Partition file name. 451 # Partition_status Partition file status on BMC. 452 453 FOR ${conf_file} IN @{file_name} 454 ${status} ${stderr} ${rc}= BMC Execute Command 455 ... ls -l /var/lib/bmcweb/ibm-management-console/configfiles/${conf_file} | wc -l 456 Valid Value ${status} [${Partition_status}] 457 END 458 459 460Redfish Upload Partition File 461 [Documentation] Upload the partition file. 462 [Arguments] ${file_name} ${file_size}=${EMPTY} 463 464 # Description of argument(s): 465 # file_name Partition file name. 466 # file_size By Default is set to EMPTY, 467 # if user pass small_file_size the create file with small 468 # size keyword gets executed. 469 470 @{Partition_file_list} = Split String ${file_name} , 471 ${num_records}= Get Length ${Partition_file_list} 472 473 Create Partition File ${Partition_file_list} 474 475 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 476 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 477 Run Keyword If ${num_records} == ${1} 478 ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 479 ... ELSE 480 ... Delete All BMC Partition File ${HTTP_OK} 481 Delete Local Partition File ${Partition_file_list} 482 483 484Redfish Fail To Upload Partition File 485 [Documentation] Fail to upload the partition file. 486 [Arguments] ${file_name} ${status_code} ${partition_status} ${response_message}=${EMPTY} 487 488 # Description of argument(s): 489 # file_name Partition file name. 490 # status_code HTTPS status code. 491 # partition_status Partition status. 492 # response_message By default is set to EMPTY, 493 # else user provide the information when user upload the partition with file size 494 # below lower linit of allowed partition or more than of large allowed partition. 495 496 @{Partition_file_list} = Split String ${file_name} , 497 498 Create Partition File ${Partition_file_list} 499 Upload Partition File To BMC ${Partition_file_list} ${status_code} ${response_message} 500 Verify Partition File On BMC ${Partition_file_list} Partition_status=${partition_status} 501 502 Run Keyword If ${partition_status} == 0 503 ... Run Keywords 504 ... Delete BMC Partition File 505 ... ${Partition_file_list} ${HTTP_NOT_FOUND} ${RESOURCE_NOT_FOUND_MESSAGE} AND 506 ... Delete All BMC Partition File ${HTTP_OK} AND 507 ... Delete Local Server Partition File 508 509 Delete Local Partition File ${Partition_file_list} 510 511 512Redfish Upload Partition File In Loop 513 [Documentation] Upload the same partition file multiple times in loop to BMC. 514 [Arguments] ${file_name} 515 516 # Description of argument(s): 517 # file_name Partition file name. 518 519 @{Partition_file_list} = Split String ${file_name} , 520 Create Partition File ${Partition_file_list} 521 522 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 523 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 524 525 FOR ${count} IN RANGE 1 11 526 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} 527 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 528 END 529 530 Initialize OpenBMC 531 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 532 Delete Local Partition File ${Partition_file_list} 533 534 535Redfish Upload And Delete Partition File In Loop 536 [Documentation] Upload the same partition file multiple times in loop to BMC. 537 [Arguments] ${file_name} 538 539 # Description of argument(s): 540 # file_name Partition file name. 541 542 FOR ${count} IN RANGE 1 11 543 Redfish Upload Partition File ${file_name} 544 END 545 546 547Verify Partition File Upload Post BMC Reboot 548 [Documentation] Upload the partition file, after BMC reboot. 549 [Arguments] ${file_name} 550 551 # Description of argument(s): 552 # file_name Partition file name. 553 554 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 555 Redfish BMC Reset Operation 556 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 557 558 Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled 559 Is BMC Standby 560 561 Redfish Upload Partition File ${file_name} 562 563 564Redfish Partition File Persistency 565 [Documentation] Upload the partition file and check for persistency after reboot. 566 [Arguments] ${file_name} 567 568 # Description of argument(s): 569 # file_name Partition file name. 570 571 @{Partition_file_list} = Split String ${file_name} , 572 ${num_records}= Get Length ${Partition_file_list} 573 Create Partition File ${Partition_file_list} 574 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 575 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 576 577 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 578 Redfish BMC Reset Operation 579 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 580 581 Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled 582 Is BMC Standby 583 584 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 585 Initialize OpenBMC 586 Run Keyword If ${num_records} == ${1} 587 ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 588 ... ELSE 589 ... Delete All BMC Partition File ${HTTP_OK} 590 Delete Local Partition File ${Partition_file_list} 591 592 593Verify Redfish Partition File Content 594 [Documentation] Verify partition file content. 595 [Arguments] ${file_name} ${content_dict} ${status_code} 596 597 # Description of argument(s): 598 # file_name Partition file name. 599 # content_dict Dict contain the content. 600 # status_code HTTPS status code. 601 602 FOR ${conf_file} IN @{file_name} 603 ${resp}= GET On Session openbmc /ibm/v1/Host/ConfigFiles/${conf_file} 604 ... expected_status=any 605 Should Be Equal As Strings ${resp.status_code} ${status_code} 606 607 ${Partition_file_data}= Remove String ${resp.text} \\n 608 ${Partition_file_data}= Evaluate json.loads('''${Partition_file_data}''') json 609 Should Be Equal As Strings ${Partition_file_data["Data"]} ${content_dict['${conf_file}']} 610 END 611 612 613Add Content To Files 614 [Documentation] Add defined content in partition file. 615 [Arguments] ${file_name} ${index}=${0} 616 617 # Description of argument(s): 618 # file_name Partition file name. 619 # index Index 620 621 ${num_records}= Get Length ${file_name} 622 &{content_dict}= Create Dictionary 623 624 FOR ${conf_file} IN @{file_name} 625 ${index}= Get Index From List ${file_name} ${conf_file} 626 ${index}= Evaluate ${index} + 1 627 628 Run echo "${content-${index}}" > ${conf_file} 629 OperatingSystem.File Should Exist ${conf_file} 630 631 Set To Dictionary ${content_dict} ${conf_file} ${content-${index}} 632 END 633 634 [Return] &{content_dict} 635 636 637Redfish Read Partition File 638 [Documentation] Read partition file content. 639 [Arguments] ${file_name} ${reboot_flag}=False 640 641 # Description of argument(s): 642 # file_name Partition file name. 643 # reboot_flag Reboot flag. 644 645 @{Partition_file_list} = Split String ${file_name} , 646 ${content_dict}= Add Content To Files ${Partition_file_list} 647 648 ${num_records}= Get Length ${Partition_file_list} 649 650 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 651 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 652 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 653 654 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 655 656 Run Keyword If ${True} == ${reboot_flag} 657 ... Run Keywords Redfish BMC Reset Operation AND 658 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND 659 ... Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled AND 660 ... Is BMC Standby AND 661 ... Initialize OpenBMC AND 662 ... Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 663 664 Run Keyword If ${num_records} == ${1} 665 ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 666 ... ELSE 667 ... Delete All BMC Partition File ${HTTP_OK} 668 669 Delete Local Partition File ${Partition_file_list} 670 671 672Redfish Update Partition File With Same Content 673 [Documentation] Update partition file with same content. 674 [Arguments] ${file_name} ${reboot_flag}=False 675 676 # Description of argument(s): 677 # file_name Partition file name. 678 # reboot_flag Reboot flag. 679 680 @{Partition_file_list} = Split String ${file_name} , 681 ${content_dict}= Add Content To Files ${Partition_file_list} ${0} 682 683 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 684 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 685 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 686 687 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 688 689 Run Keyword If ${True} == ${reboot_flag} 690 ... Run Keywords Redfish BMC Reset Operation AND 691 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND 692 ... Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled AND 693 ... Is BMC Standby AND 694 ... Initialize OpenBMC 695 696 ${content_dict}= Add Content To Files ${Partition_file_list} ${0} 697 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} 698 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 699 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 700 701 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 702 Delete Local Partition File ${Partition_file_list} 703 704 705Redfish Update Partition File With Different Content 706 [Documentation] Update partition file with different content. 707 [Arguments] ${file_name} ${reboot_flag}=False 708 709 # Description of argument(s): 710 # file_name Partition file name. 711 # reboot_flag Reboot flag. 712 713 @{Partition_file_list} = Split String ${file_name} , 714 ${content_dict}= Add Content To Files ${Partition_file_list} ${0} 715 716 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 717 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 718 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 719 720 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 721 722 Run Keyword If ${True} == ${reboot_flag} 723 ... Run Keywords Redfish BMC Reset Operation AND 724 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND 725 ... Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled AND 726 ... Is BMC Standby AND 727 ... Initialize OpenBMC 728 729 ${content_dict}= Add Content To Files ${Partition_file_list} ${1} 730 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} 731 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 732 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 733 734 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 735 Delete Local Partition File ${Partition_file_list} 736 737 738Create File Names 739 [Documentation] Create partition file names. 740 [Arguments] ${range} 741 742 # Description of argument(s): 743 # range Range in numbers. 744 745 @{file_name_list}= Create List 746 Set Test Variable ${file_name} rangefile 747 FOR ${count} IN RANGE ${range} 748 Append To List ${file_name_list} 1KB-file${count} 749 END 750 [Return] ${file_name_list} 751 752 753Redfish Upload Partition File With Range 754 [Documentation] Upload the partition file with the range of files. 755 [Arguments] ${range} 756 757 # Description of argument(s): 758 # range Range in numbers. 759 760 ${Partition_file_list}= Create File Names ${range} 761 Delete Local Partition File ${Partition_file_list} 762 Create Partition File ${Partition_file_list} 763 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 764 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 765 Delete All BMC Partition File ${HTTP_OK} 766 Delete Local Partition File ${Partition_file_list} 767 768 769Redfish Delete Non Existence Partition File 770 [Documentation] Delete the partition file if do not exists. 771 [Arguments] ${file_name} 772 773 # Description of argument(s): 774 # file_name Partition file name. 775 776 @{Partition_file_list} = Split String ${file_name} , 777 Delete BMC Partition File ${Partition_file_list} ${HTTP_NOT_FOUND} ${RESOURCE_NOT_FOUND_MESSAGE} 778 779 780Non Admin User To Upload Partition File 781 [Documentation] Non admin user to upload the partition file. 782 [Arguments] ${file_name} ${username} ${password} ${role} ${enabled}=${True} 783 784 # Description of argument(s): 785 # file_name Partition file name. 786 # username Username. 787 # password Password. 788 # role Role of user. 789 # enabled Value can be True or False. 790 791 Redfish Create User ${username} ${password} ${role} ${enabled} 792 Delete All Sessions 793 Initialize OpenBMC rest_username=${username} rest_password=${password} 794 @{Partition_file_list} = Split String ${file_name} , 795 Create Partition File ${Partition_file_list} 796 Upload Partition File To BMC ${Partition_file_list} ${HTTP_FORBIDDEN} ${FORBIDDEN_MESSAGE} ${False} 797 Delete Local Partition File ${Partition_file_list} 798 Redfish.Delete /redfish/v1/AccountService/Accounts/${username} 799 800 801Non Admin Delete Non Existence Partition File 802 [Documentation] Non admin user to upload the partition file. 803 [Arguments] ${file_name} ${username} ${password} ${role} ${enabled}=${True} 804 805 # Description of argument(s): 806 # file_name Partition file name. 807 # username Username. 808 # password Password. 809 # role Role of user. 810 # enabled Value can be True or False. 811 812 Redfish Create User ${username} ${password} ${role} ${enabled} 813 Delete All Sessions 814 Initialize OpenBMC rest_username=${username} rest_password=${password} 815 @{Partition_file_list} = Split String ${file_name} , 816 Delete BMC Partition File ${Partition_file_list} ${HTTP_FORBIDDEN} ${FORBIDDEN_MESSAGE} 817 818 819Verify Update Wrong Partition File To BMC 820 [Documentation] Upload the wrong partition file to BMC. 821 [Arguments] ${file_name} 822 823 # Description of argument(s): 824 # file_name Partition file name. 825 826 Redfish.Login 827 ${resp}= Run Keyword And Return Status 828 ... Redfish.Put /ibm/v1/Host/ConfigFiles/../../../../../etc/resolv.conf body={"data": "test string"} 829 Should Be Equal As Strings ${resp} False 830 831 832Check Redfish Upload Partition File Name With Character Limit To BMC 833 [Documentation] Upload the partition file to BMC with file name character limit. 834 [Arguments] ${file_name} ${status_code} ${message} 835 836 # Description of argument(s): 837 # file_name Partition file name. 838 # status_code HTTPS status code. 839 # message Expected message of from upload partition file URI. 840 841 @{Partition_file_list} = Split String ${file_name} , 842 ${num_records}= Get Length ${Partition_file_list} 843 Create Partition File ${Partition_file_list} 844 845 ${file_name_length}= Get Length ${Partition_file_list}[0] 846 847 Run Keyword If ${file_name_length} == 20 848 ... Run Keywords 849 ... Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} AND 850 ... Verify Partition File On BMC ${Partition_file_list} Partition_status=1 AND 851 ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 852 ... ELSE 853 ... Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} 854 855 Delete Local Partition File ${Partition_file_list} 856 857 858Check Redfish Fail To Upload Partition File Name With Special Character To BMC 859 [Documentation] Upload the partition file to BMC with special character file name. 860 [Arguments] ${file_name} ${status_code} ${message} 861 862 # Description of argument(s): 863 # file_name Partition file name. 864 # status_code HTTPS status code. 865 # message Expected message from upload partition file URI. 866 867 @{Partition_file_list} = Split String ${file_name} , 868 ${num_records}= Get Length ${Partition_file_list} 869 870 Create Partition File ${Partition_file_list} 871 872 Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} 873 874 ${status}= Run Keyword And Return Status 875 ... Verify Partition File On BMC ${Partition_file_list} Partition_status=1 876 Should Be Equal As Strings ${status} False 877 878 Delete Local Partition File ${Partition_file_list} 879 880 881Redfish Upload Partition File From Path 882 [Documentation] Upload the partition file to BMC from file path. 883 [Arguments] ${PARTITION_FILE_PATH} 884 885 # Description of argument(s): 886 # PARTITION_FILE_PATH Partition file path. 887 888 ${file_list} = OperatingSystem.List Files In Directory ${PARTITION_FILE_PATH} 889 890 ${num_records}= Get Length ${file_list} 891 Should Not Be Equal As Integers ${num_records} 0 892 893 FOR ${file_name} IN @{file_list} 894 @{Partition_file_list} = Split String ${file_name} , 895 ${num_records}= Get Length ${Partition_file_list} 896 Upload Partition File To BMC file_name=${Partition_file_list} 897 ... status_code=${HTTP_OK} expected_message=${FILE_UPLOAD_MESSAGE} path=${PARTITION_FILE_PATH} 898 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 899 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 900 END 901 902