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 17Test 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 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 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 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 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 END 482 Delete Local Partition File ${Partition_file_list} 483 484 485Redfish Fail To Upload Partition File 486 [Documentation] Fail to upload the partition file. 487 [Arguments] ${file_name} ${status_code} ${partition_status} ${response_message}=${EMPTY} 488 489 # Description of argument(s): 490 # file_name Partition file name. 491 # status_code HTTPS status code. 492 # partition_status Partition status. 493 # response_message By default is set to EMPTY, 494 # else user provide the information when user upload the partition with file size 495 # below lower linit of allowed partition or more than of large allowed partition. 496 497 @{Partition_file_list} = Split String ${file_name} , 498 499 Create Partition File ${Partition_file_list} 500 Upload Partition File To BMC ${Partition_file_list} ${status_code} ${response_message} 501 Verify Partition File On BMC ${Partition_file_list} Partition_status=${partition_status} 502 503 IF ${partition_status} == 0 504 Delete BMC Partition File 505 ... ${Partition_file_list} ${HTTP_NOT_FOUND} ${RESOURCE_NOT_FOUND_MESSAGE} 506 Delete All BMC Partition File ${HTTP_OK} 507 Delete Local Server Partition File 508 END 509 510 Delete Local Partition File ${Partition_file_list} 511 512 513Redfish Upload Partition File In Loop 514 [Documentation] Upload the same partition file multiple times in loop to BMC. 515 [Arguments] ${file_name} 516 517 # Description of argument(s): 518 # file_name Partition file name. 519 520 @{Partition_file_list} = Split String ${file_name} , 521 Create Partition File ${Partition_file_list} 522 523 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 524 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 525 526 FOR ${count} IN RANGE 1 11 527 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} 528 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 529 END 530 531 Initialize OpenBMC 532 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 533 Delete Local Partition File ${Partition_file_list} 534 535 536Redfish Upload And Delete Partition File In Loop 537 [Documentation] Upload the same partition file multiple times in loop to BMC. 538 [Arguments] ${file_name} 539 540 # Description of argument(s): 541 # file_name Partition file name. 542 543 FOR ${count} IN RANGE 1 11 544 Redfish Upload Partition File ${file_name} 545 END 546 547 548Verify Partition File Upload Post BMC Reboot 549 [Documentation] Upload the partition file, after BMC reboot. 550 [Arguments] ${file_name} 551 552 # Description of argument(s): 553 # file_name Partition file name. 554 555 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 556 Redfish BMC Reset Operation 557 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 558 559 Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled 560 Is BMC Standby 561 562 Redfish Upload Partition File ${file_name} 563 564 565Redfish Partition File Persistency 566 [Documentation] Upload the partition file and check for persistency after reboot. 567 [Arguments] ${file_name} 568 569 # Description of argument(s): 570 # file_name Partition file name. 571 572 @{Partition_file_list} = Split String ${file_name} , 573 ${num_records}= Get Length ${Partition_file_list} 574 Create Partition File ${Partition_file_list} 575 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 576 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 577 578 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 579 Redfish BMC Reset Operation 580 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 581 582 Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled 583 Is BMC Standby 584 585 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 586 Initialize OpenBMC 587 IF ${num_records} == ${1} 588 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 589 ELSE 590 Delete All BMC Partition File ${HTTP_OK} 591 END 592 593 Delete Local Partition File ${Partition_file_list} 594 595 596Verify Redfish Partition File Content 597 [Documentation] Verify partition file content. 598 [Arguments] ${file_name} ${content_dict} ${status_code} 599 600 # Description of argument(s): 601 # file_name Partition file name. 602 # content_dict Dict contain the content. 603 # status_code HTTPS status code. 604 605 FOR ${conf_file} IN @{file_name} 606 ${resp}= GET On Session openbmc /ibm/v1/Host/ConfigFiles/${conf_file} 607 ... expected_status=any 608 Should Be Equal As Strings ${resp.status_code} ${status_code} 609 610 ${Partition_file_data}= Remove String ${resp.text} \\n 611 ${Partition_file_data}= Evaluate json.loads('''${Partition_file_data}''') json 612 Should Be Equal As Strings ${Partition_file_data["Data"]} ${content_dict['${conf_file}']} 613 END 614 615 616Add Content To Files 617 [Documentation] Add defined content in partition file. 618 [Arguments] ${file_name} ${index}=${0} 619 620 # Description of argument(s): 621 # file_name Partition file name. 622 # index Index 623 624 ${num_records}= Get Length ${file_name} 625 &{content_dict}= Create Dictionary 626 627 FOR ${conf_file} IN @{file_name} 628 ${index}= Get Index From List ${file_name} ${conf_file} 629 ${index}= Evaluate ${index} + 1 630 631 Run echo "${content-${index}}" > ${conf_file} 632 OperatingSystem.File Should Exist ${conf_file} 633 634 Set To Dictionary ${content_dict} ${conf_file} ${content-${index}} 635 END 636 637 RETURN &{content_dict} 638 639 640Redfish Read Partition File 641 [Documentation] Read partition file content. 642 [Arguments] ${file_name} ${reboot_flag}=False 643 644 # Description of argument(s): 645 # file_name Partition file name. 646 # reboot_flag Reboot flag. 647 648 @{Partition_file_list} = Split String ${file_name} , 649 ${content_dict}= Add Content To Files ${Partition_file_list} 650 651 ${num_records}= Get Length ${Partition_file_list} 652 653 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 654 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 655 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 656 657 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 658 659 IF ${True} == ${reboot_flag} 660 Redfish BMC Reset Operation 661 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 662 Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled 663 Is BMC Standby 664 Initialize OpenBMC 665 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 666 END 667 668 IF ${num_records} == ${1} 669 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 670 ELSE 671 Delete All BMC Partition File ${HTTP_OK} 672 END 673 674 Delete Local Partition File ${Partition_file_list} 675 676 677Redfish Update Partition File With Same Content 678 [Documentation] Update partition file with same content. 679 [Arguments] ${file_name} ${reboot_flag}=False 680 681 # Description of argument(s): 682 # file_name Partition file name. 683 # reboot_flag Reboot flag. 684 685 @{Partition_file_list} = Split String ${file_name} , 686 ${content_dict}= Add Content To Files ${Partition_file_list} ${0} 687 688 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 689 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 690 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 691 692 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 693 694 IF ${True} == ${reboot_flag} 695 Redfish BMC Reset Operation 696 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 697 Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled 698 Is BMC Standby 699 Initialize OpenBMC 700 END 701 702 ${content_dict}= Add Content To Files ${Partition_file_list} ${0} 703 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} 704 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 705 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 706 707 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 708 Delete Local Partition File ${Partition_file_list} 709 710 711Redfish Update Partition File With Different Content 712 [Documentation] Update partition file with different content. 713 [Arguments] ${file_name} ${reboot_flag}=False 714 715 # Description of argument(s): 716 # file_name Partition file name. 717 # reboot_flag Reboot flag. 718 719 @{Partition_file_list} = Split String ${file_name} , 720 ${content_dict}= Add Content To Files ${Partition_file_list} ${0} 721 722 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 723 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 724 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 725 726 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 727 728 IF ${True} == ${reboot_flag} 729 Redfish BMC Reset Operation 730 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 731 Wait Until Keyword Succeeds 3 min 10 sec Redfish BMC Match States match_state=Enabled 732 Is BMC Standby 733 Initialize OpenBMC 734 END 735 736 ${content_dict}= Add Content To Files ${Partition_file_list} ${1} 737 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} 738 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 739 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 740 741 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 742 Delete Local Partition File ${Partition_file_list} 743 744 745Create File Names 746 [Documentation] Create partition file names. 747 [Arguments] ${range} 748 749 # Description of argument(s): 750 # range Range in numbers. 751 752 @{file_name_list}= Create List 753 Set Test Variable ${file_name} rangefile 754 FOR ${count} IN RANGE ${range} 755 Append To List ${file_name_list} 1KB-file${count} 756 END 757 RETURN ${file_name_list} 758 759 760Redfish Upload Partition File With Range 761 [Documentation] Upload the partition file with the range of files. 762 [Arguments] ${range} 763 764 # Description of argument(s): 765 # range Range in numbers. 766 767 ${Partition_file_list}= Create File Names ${range} 768 Delete Local Partition File ${Partition_file_list} 769 Create Partition File ${Partition_file_list} 770 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 771 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 772 Delete All BMC Partition File ${HTTP_OK} 773 Delete Local Partition File ${Partition_file_list} 774 775 776Redfish Delete Non Existence Partition File 777 [Documentation] Delete the partition file if do not exists. 778 [Arguments] ${file_name} 779 780 # Description of argument(s): 781 # file_name Partition file name. 782 783 @{Partition_file_list} = Split String ${file_name} , 784 Delete BMC Partition File ${Partition_file_list} ${HTTP_NOT_FOUND} ${RESOURCE_NOT_FOUND_MESSAGE} 785 786 787Non Admin User To Upload Partition File 788 [Documentation] Non admin user to upload the partition file. 789 [Arguments] ${file_name} ${username} ${password} ${role} ${enabled}=${True} 790 791 # Description of argument(s): 792 # file_name Partition file name. 793 # username Username. 794 # password Password. 795 # role Role of user. 796 # enabled Value can be True or False. 797 798 Redfish Create User ${username} ${password} ${role} ${enabled} 799 Delete All Sessions 800 Initialize OpenBMC rest_username=${username} rest_password=${password} 801 @{Partition_file_list} = Split String ${file_name} , 802 Create Partition File ${Partition_file_list} 803 Upload Partition File To BMC ${Partition_file_list} ${HTTP_FORBIDDEN} ${FORBIDDEN_MESSAGE} ${False} 804 Delete Local Partition File ${Partition_file_list} 805 Redfish.Delete /redfish/v1/AccountService/Accounts/${username} 806 807 808Non Admin Delete Non Existence Partition File 809 [Documentation] Non admin user to upload the partition file. 810 [Arguments] ${file_name} ${username} ${password} ${role} ${enabled}=${True} 811 812 # Description of argument(s): 813 # file_name Partition file name. 814 # username Username. 815 # password Password. 816 # role Role of user. 817 # enabled Value can be True or False. 818 819 Redfish Create User ${username} ${password} ${role} ${enabled} 820 Delete All Sessions 821 Initialize OpenBMC rest_username=${username} rest_password=${password} 822 @{Partition_file_list} = Split String ${file_name} , 823 Delete BMC Partition File ${Partition_file_list} ${HTTP_FORBIDDEN} ${FORBIDDEN_MESSAGE} 824 825 826Verify Update Wrong Partition File To BMC 827 [Documentation] Upload the wrong partition file to BMC. 828 [Arguments] ${file_name} 829 830 # Description of argument(s): 831 # file_name Partition file name. 832 833 Redfish.Login 834 ${resp}= Run Keyword And Return Status 835 ... Redfish.Put /ibm/v1/Host/ConfigFiles/../../../../../etc/resolv.conf body={"data": "test string"} 836 Should Be Equal As Strings ${resp} False 837 838 839Check Redfish Upload Partition File Name With Character Limit To BMC 840 [Documentation] Upload the partition file to BMC with file name character limit. 841 [Arguments] ${file_name} ${status_code} ${message} 842 843 # Description of argument(s): 844 # file_name Partition file name. 845 # status_code HTTPS status code. 846 # message Expected message of from upload partition file URI. 847 848 @{Partition_file_list} = Split String ${file_name} , 849 ${num_records}= Get Length ${Partition_file_list} 850 Create Partition File ${Partition_file_list} 851 852 ${file_name_length}= Get Length ${Partition_file_list}[0] 853 854 IF ${file_name_length} == 20 855 Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} 856 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 857 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 858 ELSE 859 Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} 860 END 861 862 Delete Local Partition File ${Partition_file_list} 863 864 865Check Redfish Fail To Upload Partition File Name With Special Character To BMC 866 [Documentation] Upload the partition file to BMC with special character file name. 867 [Arguments] ${file_name} ${status_code} ${message} 868 869 # Description of argument(s): 870 # file_name Partition file name. 871 # status_code HTTPS status code. 872 # message Expected message from upload partition file URI. 873 874 @{Partition_file_list} = Split String ${file_name} , 875 ${num_records}= Get Length ${Partition_file_list} 876 877 Create Partition File ${Partition_file_list} 878 879 Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} 880 881 ${status}= Run Keyword And Return Status 882 ... Verify Partition File On BMC ${Partition_file_list} Partition_status=1 883 Should Be Equal As Strings ${status} False 884 885 Delete Local Partition File ${Partition_file_list} 886 887 888Redfish Upload Partition File From Path 889 [Documentation] Upload the partition file to BMC from file path. 890 [Arguments] ${PARTITION_FILE_PATH} 891 892 # Description of argument(s): 893 # PARTITION_FILE_PATH Partition file path. 894 895 ${file_list} = OperatingSystem.List Files In Directory ${PARTITION_FILE_PATH} 896 897 ${num_records}= Get Length ${file_list} 898 Should Not Be Equal As Integers ${num_records} 0 899 900 FOR ${file_name} IN @{file_list} 901 @{Partition_file_list} = Split String ${file_name} , 902 ${num_records}= Get Length ${Partition_file_list} 903 Upload Partition File To BMC file_name=${Partition_file_list} 904 ... status_code=${HTTP_OK} expected_message=${FILE_UPLOAD_MESSAGE} path=${PARTITION_FILE_PATH} 905 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 906 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 907 END 908 909