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 Request openbmc /ibm/v1/Host/ConfigFiles/${conf_file} &{data} 370 Should Be Equal As Strings ${resp.status_code} ${status_code} 371 372 ${description}= Return Description Of Response ${resp.text} 373 Should Be Equal As Strings ${description} ${expected_message} 374 END 375 376 377Delete All BMC Partition File 378 [Documentation] Delete multiple partition file on BMC via Redfish. 379 [Arguments] ${status_code} 380 381 # Description of argument(s): 382 # status_code HTTPS status code. 383 384 Initialize OpenBMC 385 ${data}= Create Dictionary 386 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN} 387 Set To Dictionary ${data} headers ${headers} 388 389 ${resp}= Post Request openbmc /ibm/v1/Host/ConfigFiles/Actions/IBMConfigFiles.DeleteAll &{data} 390 Should Be Equal As Strings ${resp.status_code} ${status_code} 391 392 393Return Description Of Response 394 [Documentation] Return description of REST response. 395 [Arguments] ${resp_text} 396 397 # Description of argument(s): 398 # resp_text REST response body. 399 400 # resp_text after successful partition file upload looks like: 401 # { 402 # "Description": "File Created" 403 # } 404 405 ${status}= Run Keyword And Return Status Evaluate isinstance(${resp_text}, dict) 406 Return From Keyword If '${status}' == 'False' ${resp_text} 407 ${message}= Evaluate json.loads('''${resp_text}''') json 408 409 [Return] ${message["Description"]} 410 411 412Upload Partition File To BMC 413 [Documentation] Upload partition file to BMC. 414 [Arguments] ${file_name} ${status_code} ${expected_message} ${flag}=${True} ${path}=${EMPTY} 415 416 # Description of argument(s): 417 # file_name Partition file name. 418 # status_code HTTPS status code. 419 # expected_message Expected message of URI. 420 # flag If True run part of program, else skip. 421 # path Partition file path. 422 423 Run Keyword If '${flag}' == '${True}' Initialize OpenBMC 424 FOR ${conf_file} IN @{file_name} 425 # Get the content of the file and upload to BMC. 426 ${image_data}= OperatingSystem.Get Binary File ${path}${conf_file} 427 ${headers}= Create Dictionary X-Auth-Token=${XAUTH_TOKEN} Content-Type=application/octet-stream 428 429 ${kwargs}= Create Dictionary data=${image_data} 430 Set To Dictionary ${kwargs} headers ${headers} 431 ${resp}= Put Request openbmc /ibm/v1/Host/ConfigFiles/${conf_file} &{kwargs} timeout=10 432 Should Be Equal As Strings ${resp.status_code} ${status_code} 433 434 ${description}= Return Description Of Response ${resp.text} 435 Should Be Equal As Strings ${description} ${expected_message} 436 END 437 438 439Verify Partition File On BMC 440 [Documentation] Verify partition file on BMC. 441 [Arguments] ${file_name} ${Partition_status} 442 443 # Description of argument(s): 444 # file_name Partition file name. 445 # Partition_status Partition file status on BMC. 446 447 FOR ${conf_file} IN @{file_name} 448 ${status} ${stderr} ${rc}= BMC Execute Command 449 ... ls -l /var/lib/bmcweb/ibm-management-console/configfiles/${conf_file} | wc -l 450 Valid Value ${status} [${Partition_status}] 451 END 452 453 454Redfish Upload Partition File 455 [Documentation] Upload the partition file. 456 [Arguments] ${file_name} ${file_size}=${EMPTY} 457 458 # Description of argument(s): 459 # file_name Partition file name. 460 # file_size By Default is set to EMPTY, 461 # if user pass small_file_size the create file with small 462 # size keyword gets executed. 463 464 @{Partition_file_list} = Split String ${file_name} , 465 ${num_records}= Get Length ${Partition_file_list} 466 467 Create Partition File ${Partition_file_list} 468 469 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 470 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 471 Run Keyword If ${num_records} == ${1} 472 ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 473 ... ELSE 474 ... Delete All BMC Partition File ${HTTP_OK} 475 Delete Local Partition File ${Partition_file_list} 476 477 478Redfish Fail To Upload Partition File 479 [Documentation] Fail to upload the partition file. 480 [Arguments] ${file_name} ${status_code} ${partition_status} ${response_message}=${EMPTY} 481 482 # Description of argument(s): 483 # file_name Partition file name. 484 # status_code HTTPS status code. 485 # partition_status Partition status. 486 # response_message By default is set to EMPTY, 487 # else user provide the information when user upload the partition with file size 488 # below lower linit of allowed partition or more than of large allowed partition. 489 490 @{Partition_file_list} = Split String ${file_name} , 491 492 Create Partition File ${Partition_file_list} 493 Upload Partition File To BMC ${Partition_file_list} ${status_code} ${response_message} 494 Verify Partition File On BMC ${Partition_file_list} Partition_status=${partition_status} 495 496 Run Keyword If ${partition_status} == 0 497 ... Run Keywords 498 ... Delete BMC Partition File 499 ... ${Partition_file_list} ${HTTP_NOT_FOUND} ${RESOURCE_NOT_FOUND_MESSAGE} AND 500 ... Delete All BMC Partition File ${HTTP_OK} AND 501 ... Delete Local Server Partition File 502 503 Delete Local Partition File ${Partition_file_list} 504 505 506Redfish Upload Partition File In Loop 507 [Documentation] Upload the same partition file multiple times in loop to BMC. 508 [Arguments] ${file_name} 509 510 # Description of argument(s): 511 # file_name Partition file name. 512 513 @{Partition_file_list} = Split String ${file_name} , 514 Create Partition File ${Partition_file_list} 515 516 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 517 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 518 519 FOR ${count} IN RANGE 1 11 520 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} 521 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 522 END 523 524 Initialize OpenBMC 525 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 526 Delete Local Partition File ${Partition_file_list} 527 528 529Redfish Upload And Delete Partition File In Loop 530 [Documentation] Upload the same partition file multiple times in loop to BMC. 531 [Arguments] ${file_name} 532 533 # Description of argument(s): 534 # file_name Partition file name. 535 536 FOR ${count} IN RANGE 1 11 537 Redfish Upload Partition File ${file_name} 538 END 539 540 541Verify Partition File Upload Post BMC Reboot 542 [Documentation] Upload the partition file, after BMC reboot. 543 [Arguments] ${file_name} 544 545 # Description of argument(s): 546 # file_name Partition file name. 547 548 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 549 Redfish BMC Reset Operation 550 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 551 552 Is BMC Standby 553 554 Redfish Upload Partition File ${file_name} 555 556 557Redfish Partition File Persistency 558 [Documentation] Upload the partition file and check for persistency after reboot. 559 [Arguments] ${file_name} 560 561 # Description of argument(s): 562 # file_name Partition file name. 563 564 @{Partition_file_list} = Split String ${file_name} , 565 ${num_records}= Get Length ${Partition_file_list} 566 Create Partition File ${Partition_file_list} 567 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 568 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 569 570 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 571 Redfish BMC Reset Operation 572 Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} 573 574 Is BMC Standby 575 576 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 577 Initialize OpenBMC 578 Run Keyword If ${num_records} == ${1} 579 ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 580 ... ELSE 581 ... Delete All BMC Partition File ${HTTP_OK} 582 Delete Local Partition File ${Partition_file_list} 583 584 585Verify Redfish Partition File Content 586 [Documentation] Verify partition file content. 587 [Arguments] ${file_name} ${content_dict} ${status_code} 588 589 # Description of argument(s): 590 # file_name Partition file name. 591 # content_dict Dict contain the content. 592 # status_code HTTPS status code. 593 594 FOR ${conf_file} IN @{file_name} 595 ${resp}= Get Request openbmc /ibm/v1/Host/ConfigFiles/${conf_file} 596 Should Be Equal As Strings ${resp.status_code} ${status_code} 597 598 ${Partition_file_data}= Remove String ${resp.text} \\n 599 ${Partition_file_data}= Evaluate json.loads('''${Partition_file_data}''') json 600 Should Be Equal As Strings ${Partition_file_data["Data"]} ${content_dict['${conf_file}']} 601 END 602 603 604Add Content To Files 605 [Documentation] Add defined content in partition file. 606 [Arguments] ${file_name} ${index}=${0} 607 608 # Description of argument(s): 609 # file_name Partition file name. 610 # index Index 611 612 ${num_records}= Get Length ${file_name} 613 &{content_dict}= Create Dictionary 614 615 FOR ${conf_file} IN @{file_name} 616 ${index}= Get Index From List ${file_name} ${conf_file} 617 ${index}= Evaluate ${index} + 1 618 619 Run echo "${content-${index}}" > ${conf_file} 620 OperatingSystem.File Should Exist ${conf_file} 621 622 Set To Dictionary ${content_dict} ${conf_file} ${content-${index}} 623 END 624 625 [Return] &{content_dict} 626 627 628Redfish Read Partition File 629 [Documentation] Read partition file content. 630 [Arguments] ${file_name} ${reboot_flag}=False 631 632 # Description of argument(s): 633 # file_name Partition file name. 634 # reboot_flag Reboot flag. 635 636 @{Partition_file_list} = Split String ${file_name} , 637 ${content_dict}= Add Content To Files ${Partition_file_list} 638 639 ${num_records}= Get Length ${Partition_file_list} 640 641 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 642 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 643 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 644 645 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 646 647 Run Keyword If ${True} == ${reboot_flag} 648 ... Run Keywords Redfish BMC Reset Operation AND 649 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND 650 ... Is BMC Standby AND 651 ... Initialize OpenBMC AND 652 ... Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 653 654 Run Keyword If ${num_records} == ${1} 655 ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 656 ... ELSE 657 ... Delete All BMC Partition File ${HTTP_OK} 658 659 Delete Local Partition File ${Partition_file_list} 660 661 662Redfish Update Partition File With Same Content 663 [Documentation] Update partition file with same content. 664 [Arguments] ${file_name} ${reboot_flag}=False 665 666 # Description of argument(s): 667 # file_name Partition file name. 668 # reboot_flag Reboot flag. 669 670 @{Partition_file_list} = Split String ${file_name} , 671 ${content_dict}= Add Content To Files ${Partition_file_list} ${0} 672 673 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 674 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 675 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 676 677 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 678 679 Run Keyword If ${True} == ${reboot_flag} 680 ... Run Keywords Redfish BMC Reset Operation AND 681 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND 682 ... Is BMC Standby AND 683 ... Initialize OpenBMC 684 685 ${content_dict}= Add Content To Files ${Partition_file_list} ${0} 686 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} 687 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 688 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 689 690 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 691 Delete Local Partition File ${Partition_file_list} 692 693 694Redfish Update Partition File With Different Content 695 [Documentation] Update partition file with different content. 696 [Arguments] ${file_name} ${reboot_flag}=False 697 698 # Description of argument(s): 699 # file_name Partition file name. 700 # reboot_flag Reboot flag. 701 702 @{Partition_file_list} = Split String ${file_name} , 703 ${content_dict}= Add Content To Files ${Partition_file_list} ${0} 704 705 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 706 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 707 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 708 709 ${before_reboot_xauth_token}= Set Variable ${XAUTH_TOKEN} 710 711 Run Keyword If ${True} == ${reboot_flag} 712 ... Run Keywords Redfish BMC Reset Operation AND 713 ... Set Global Variable ${XAUTH_TOKEN} ${before_reboot_xauth_token} AND 714 ... Is BMC Standby AND 715 ... Initialize OpenBMC 716 717 ${content_dict}= Add Content To Files ${Partition_file_list} ${1} 718 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPDATED_MESSAGE} 719 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 720 Verify Redfish Partition File Content ${Partition_file_list} ${content_dict} ${HTTP_OK} 721 722 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 723 Delete Local Partition File ${Partition_file_list} 724 725 726Create File Names 727 [Documentation] Create partition file names. 728 [Arguments] ${range} 729 730 # Description of argument(s): 731 # range Range in numbers. 732 733 @{file_name_list}= Create List 734 Set Test Variable ${file_name} rangefile 735 FOR ${count} IN RANGE ${range} 736 Append To List ${file_name_list} 1KB-file${count} 737 END 738 [Return] ${file_name_list} 739 740 741Redfish Upload Partition File With Range 742 [Documentation] Upload the partition file with the range of files. 743 [Arguments] ${range} 744 745 # Description of argument(s): 746 # range Range in numbers. 747 748 ${Partition_file_list}= Create File Names ${range} 749 Delete Local Partition File ${Partition_file_list} 750 Create Partition File ${Partition_file_list} 751 Upload Partition File To BMC ${Partition_file_list} ${HTTP_OK} ${FILE_UPLOAD_MESSAGE} 752 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 753 Delete All BMC Partition File ${HTTP_OK} 754 Delete Local Partition File ${Partition_file_list} 755 756 757Redfish Delete Non Existence Partition File 758 [Documentation] Delete the partition file if do not exists. 759 [Arguments] ${file_name} 760 761 # Description of argument(s): 762 # file_name Partition file name. 763 764 @{Partition_file_list} = Split String ${file_name} , 765 Delete BMC Partition File ${Partition_file_list} ${HTTP_NOT_FOUND} ${RESOURCE_NOT_FOUND_MESSAGE} 766 767 768Non Admin User To Upload Partition File 769 [Documentation] Non admin user to upload the partition file. 770 [Arguments] ${file_name} ${username} ${password} ${role} ${enabled}=${True} 771 772 # Description of argument(s): 773 # file_name Partition file name. 774 # username Username. 775 # password Password. 776 # role Role of user. 777 # enabled Value can be True or False. 778 779 Redfish Create User ${username} ${password} ${role} ${enabled} 780 Delete All Sessions 781 Initialize OpenBMC rest_username=${username} rest_password=${password} 782 @{Partition_file_list} = Split String ${file_name} , 783 Create Partition File ${Partition_file_list} 784 Upload Partition File To BMC ${Partition_file_list} ${HTTP_FORBIDDEN} ${FORBIDDEN_MESSAGE} ${False} 785 Delete Local Partition File ${Partition_file_list} 786 Redfish.Delete /redfish/v1/AccountService/Accounts/${username} 787 788 789Non Admin Delete Non Existence Partition File 790 [Documentation] Non admin user to upload the partition file. 791 [Arguments] ${file_name} ${username} ${password} ${role} ${enabled}=${True} 792 793 # Description of argument(s): 794 # file_name Partition file name. 795 # username Username. 796 # password Password. 797 # role Role of user. 798 # enabled Value can be True or False. 799 800 Redfish Create User ${username} ${password} ${role} ${enabled} 801 Delete All Sessions 802 Initialize OpenBMC rest_username=${username} rest_password=${password} 803 @{Partition_file_list} = Split String ${file_name} , 804 Delete BMC Partition File ${Partition_file_list} ${HTTP_FORBIDDEN} ${FORBIDDEN_MESSAGE} 805 806 807Verify Update Wrong Partition File To BMC 808 [Documentation] Upload the wrong partition file to BMC. 809 [Arguments] ${file_name} 810 811 # Description of argument(s): 812 # file_name Partition file name. 813 814 Redfish.Login 815 ${resp}= Run Keyword And Return Status 816 ... Redfish.Put /ibm/v1/Host/ConfigFiles/../../../../../etc/resolv.conf body={"data": "test string"} 817 Should Be Equal As Strings ${resp} False 818 819 820Check Redfish Upload Partition File Name With Character Limit To BMC 821 [Documentation] Upload the partition file to BMC with file name character limit. 822 [Arguments] ${file_name} ${status_code} ${message} 823 824 # Description of argument(s): 825 # file_name Partition file name. 826 # status_code HTTPS status code. 827 # message Expected message of from upload partition file URI. 828 829 @{Partition_file_list} = Split String ${file_name} , 830 ${num_records}= Get Length ${Partition_file_list} 831 Create Partition File ${Partition_file_list} 832 833 ${file_name_length}= Get Length ${Partition_file_list}[0] 834 835 Run Keyword If ${file_name_length} == 20 836 ... Run Keywords 837 ... Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} AND 838 ... Verify Partition File On BMC ${Partition_file_list} Partition_status=1 AND 839 ... Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 840 ... ELSE 841 ... Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} 842 843 Delete Local Partition File ${Partition_file_list} 844 845 846Check Redfish Fail To Upload Partition File Name With Special Character To BMC 847 [Documentation] Upload the partition file to BMC with special character file name. 848 [Arguments] ${file_name} ${status_code} ${message} 849 850 # Description of argument(s): 851 # file_name Partition file name. 852 # status_code HTTPS status code. 853 # message Expected message from upload partition file URI. 854 855 @{Partition_file_list} = Split String ${file_name} , 856 ${num_records}= Get Length ${Partition_file_list} 857 858 Create Partition File ${Partition_file_list} 859 860 Upload Partition File To BMC ${Partition_file_list} ${status_code} ${message} 861 862 ${status}= Run Keyword And Return Status 863 ... Verify Partition File On BMC ${Partition_file_list} Partition_status=1 864 Should Be Equal As Strings ${status} False 865 866 Delete Local Partition File ${Partition_file_list} 867 868 869Redfish Upload Partition File From Path 870 [Documentation] Upload the partition file to BMC from file path. 871 [Arguments] ${PARTITION_FILE_PATH} 872 873 # Description of argument(s): 874 # PARTITION_FILE_PATH Partition file path. 875 876 ${file_list} = OperatingSystem.List Files In Directory ${PARTITION_FILE_PATH} 877 878 ${num_records}= Get Length ${file_list} 879 Should Not Be Equal As Integers ${num_records} 0 880 881 FOR ${file_name} IN @{file_list} 882 @{Partition_file_list} = Split String ${file_name} , 883 ${num_records}= Get Length ${Partition_file_list} 884 Upload Partition File To BMC file_name=${Partition_file_list} 885 ... status_code=${HTTP_OK} expected_message=${FILE_UPLOAD_MESSAGE} path=${PARTITION_FILE_PATH} 886 Verify Partition File On BMC ${Partition_file_list} Partition_status=1 887 Delete BMC Partition File ${Partition_file_list} ${HTTP_OK} ${FILE_DELETED_MESSAGE} 888 END 889 890