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