1*** Settings *** 2Documentation Test suite for OpenBMC IPMI user management. 3 4Resource ../lib/ipmi_client.robot 5Resource ../lib/openbmc_ffdc.robot 6Resource ../lib/bmc_network_utils.robot 7Library ../lib/ipmi_utils.py 8Test Setup Printn 9 10Suite Setup Suite Setup Execution 11Test Teardown Test Teardown Execution 12 13*** Variables *** 14 15${invalid_username} user% 16${invalid_password} abc123 17${new_username} newuser 18${root_userid} 1 19${operator_level_priv} 0x3 20${user_priv} 2 21${operator_priv} 3 22${admin_level_priv} 4 23${no_access_priv} 15 24${valid_password} 0penBmc1 25${max_password_length} 20 26${ipmi_setaccess_cmd} channel setaccess 27&{password_values} 16=0penBmc10penBmc2 17=0penBmc10penBmc2B 28 ... 20=0penBmc10penBmc2Bmc3 21=0penBmc10penBmc2Bmc34 29 ... 7=0penBmc 8=0penBmc0 30 31# User defined count. 32${USER_LOOP_COUNT} 20 33 34*** Test Cases *** 35 36Verify IPMI User Summary 37 [Documentation] Verify IPMI maximum supported IPMI user ID and 38 ... enabled user form user summary 39 [Tags] Verify_IPMI_User_Summary 40 [Teardown] Run Keywords FFDC On Test Case Fail AND Delete Created User ${random_userid} 41 42 # Create random user 43 ${random_userid} ${random_username}= Create Random IPMI User 44 Set Test Variable ${random_userid} 45 Run IPMI Standard Command user enable ${random_userid} 46 47 ${output}= Run IPMI Standard Command user summary ${CHANNEL_NUMBER} 48 # TODO: Verification of enabled IPMI user needs to be done. 49 # https://github.com/openbmc/openbmc-test-automation/issues/2189 50 51 ${maximum_ids}= Get Lines Containing String ${output} Maximum IDs 52 53 Should Contain ${maximum_ids} 15 54 55 56Verify IPMI User List 57 [Documentation] Verify user list via IPMI. 58 [Tags] Verify_IPMI_User_List 59 [Teardown] Run Keywords FFDC On Test Case Fail AND 60 ... Delete Created User ${random_userid} 61 62 ${random_userid} ${random_username}= Create Random IPMI User 63 Set Test Variable ${random_userid} 64 65 Run IPMI Standard Command 66 ... user set password ${random_userid} ${valid_password} 67 Run IPMI Standard Command user enable ${random_userid} 68 # Delay added for IPMI user to get enabled. 69 Sleep 5s 70 # Set admin privilege and enable IPMI messaging for newly created user. 71 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} 72 73 ${users_access}= Get User Access Ipmi ${CHANNEL_NUMBER} 74 Rprint Vars users_access 75 76 ${index}= Evaluate ${random_userid} - 1 77 # Verify the user access of created user. 78 Valid Value users_access[${index}]['id'] ['${random_userid}'] 79 Valid Value users_access[${index}]['name'] ['${random_username}'] 80 Valid Value users_access[${index}]['callin'] ['true'] 81 Valid Value users_access[${index}]['link'] ['false'] 82 Valid Value users_access[${index}]['auth'] ['true'] 83 Valid Value users_access[${index}]['ipmi'] ['ADMINISTRATOR'] 84 85 86Verify IPMI User Creation With Valid Name And ID 87 [Documentation] Create user via IPMI and verify. 88 [Tags] Verify_IPMI_User_Creation_With_Valid_Name_And_ID 89 [Teardown] Run Keywords FFDC On Test Case Fail AND 90 ... Delete Created User ${random_userid} 91 92 ${random_userid} ${random_username}= Create Random IPMI User 93 Set Test Variable ${random_userid} 94 95 96Verify IPMI User Creation With Invalid Name 97 [Documentation] Verify error while creating IPMI user with invalid 98 ... name(e.g. user name with special characters). 99 [Tags] Verify_IPMI_User_Creation_With_Invalid_Name 100 101 ${random_userid}= Evaluate random.randint(2, 15) modules=random 102 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command 103 ... user set name ${random_userid} ${invalid_username} 104 Should Contain ${msg} Invalid data 105 106 107Verify IPMI User Creation With Invalid ID 108 [Documentation] Verify error while creating IPMI user with invalid 109 ... ID(i.e. any number greater than 15 or 0). 110 [Tags] Verify_IPMI_User_Creation_With_Invalid_ID 111 112 @{id_list}= Create List 113 ${random_invalid_id}= Evaluate random.randint(16, 1000) modules=random 114 Append To List ${id_list} ${random_invalid_id} 115 Append To List ${id_list} 0 116 117 FOR ${id} IN @{id_list} 118 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command 119 ... user set name ${id} newuser 120 Should Contain Any ${msg} User ID is limited to range Parameter out of range 121 END 122 123Verify Setting IPMI User With Invalid Password 124 [Documentation] Verify error while setting IPMI user with invalid 125 ... password. 126 [Tags] Verify_Setting_IPMI_User_With_Invalid_Password 127 [Teardown] Run Keywords FFDC On Test Case Fail AND 128 ... Delete Created User ${random_userid} 129 130 ${random_userid} ${random_username}= Create Random IPMI User 131 Set Test Variable ${random_userid} 132 133 # Set invalid password for newly created user. 134 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command 135 ... user set password ${random_userid} ${invalid_password} 136 137 # Delay added for user password to get set. 138 Sleep 5s 139 140 Should Contain ${msg} Set User Password command failed 141 142Verify Setting IPMI Root User With New Name 143 [Documentation] Verify error while setting IPMI root user with new 144 ... name. 145 [Tags] Verify_Setting_IPMI_Root_User_With_New_Name 146 147 # Set invalid password for newly created user. 148 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command 149 ... user set name ${root_userid} abcd 150 151 Should Contain ${msg} Set User Name command failed 152 153 154Verify IPMI User Password Via Test Command 155 [Documentation] Verify IPMI user password using test command. 156 [Tags] Verify_IPMI_User_Password_Via_Test_Command 157 [Teardown] Run Keywords FFDC On Test Case Fail AND 158 ... Delete Created User ${random_userid} 159 160 ${random_userid} ${random_username}= Create Random IPMI User 161 Set Test Variable ${random_userid} 162 163 # Set valid password for newly created user. 164 Run IPMI Standard Command 165 ... user set password ${random_userid} ${valid_password} 166 167 # Verify newly set password using test command. 168 ${msg}= Run IPMI Standard Command 169 ... user test ${random_userid} ${max_password_length} ${valid_password} 170 171 Should Contain ${msg} Success 172 173 174Verify Setting Valid Password For IPMI User 175 [Documentation] Set valid password for IPMI user and verify. 176 [Tags] Verify_Setting_Valid_Password_For_IPMI_User 177 [Teardown] Run Keywords FFDC On Test Case Fail AND 178 ... Delete Created User ${random_userid} 179 180 ${random_userid} ${random_username}= Create Random IPMI User 181 Set Test Variable ${random_userid} 182 183 # Set valid password for newly created user. 184 Run IPMI Standard Command 185 ... user set password ${random_userid} ${valid_password} 186 187 Run IPMI Standard Command user enable ${random_userid} 188 189 # Delay added for IPMI user to get enable 190 Sleep 5s 191 192 # Set admin privilege and enable IPMI messaging for newly created user 193 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} 194 195 Verify IPMI Username And Password ${random_username} ${valid_password} 196 197 198Verify IPMI User Creation With Same Name 199 [Documentation] Verify error while creating two IPMI user with same name. 200 [Tags] Verify_IPMI_User_Creation_With_Same_Name 201 [Teardown] Run Keywords FFDC On Test Case Fail AND 202 ... Delete Created User 2 203 204 ${random_username}= Generate Random String 8 [LETTERS] 205 IPMI Create User 2 ${random_username} 206 207 # Set same username for another IPMI user. 208 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command 209 ... user set name 3 ${random_username} 210 Should Contain ${msg} Invalid data field in request 211 212 213Verify Setting IPMI User With Null Password 214 [Documentation] Verify error while setting IPMI user with null 215 ... password. 216 [Tags] Verify_Setting_IPMI_User_With_Null_Password 217 [Teardown] Run Keywords FFDC On Test Case Fail AND 218 ... Delete Created User ${random_userid} 219 220 ${random_userid} ${random_username}= Create Random IPMI User 221 Set Test Variable ${random_userid} 222 223 # Set null password for newly created user. 224 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command 225 ... user set password ${random_userid} "" 226 227 Should Contain ${msg} Invalid data field in request 228 229 230Verify IPMI User Deletion 231 [Documentation] Delete user via IPMI and verify. 232 [Tags] Verify_IPMI_User_Deletion 233 [Teardown] Run Keywords FFDC On Test Case Fail AND 234 ... Delete Created User ${random_userid} 235 236 ${random_userid} ${random_username}= Create Random IPMI User 237 Set Test Variable ${random_userid} 238 # Delete IPMI User and verify 239 Run IPMI Standard Command user set name ${random_userid} "" 240 ${user_info}= Get User Info ${random_userid} 241 Should Be Equal ${user_info['user_name']} ${EMPTY} 242 243 244Test IPMI User Privilege Level 245 [Documentation] Verify IPMI user with user privilege can only run user level commands. 246 [Tags] Test_IPMI_User_Privilege_Level 247 [Template] Test IPMI User Privilege 248 [Teardown] Run Keywords FFDC On Test Case Fail AND 249 ... Delete Created User ${random_userid} 250 251 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status 252 ${user_priv} Passed Failed Failed 253 254 255Test IPMI Operator Privilege Level 256 [Documentation] Verify IPMI user with operator privilege can only run user and operator levels commands. 257 ... level is set to operator. 258 [Tags] Test_IPMI_Operator_Privilege_Level 259 [Template] Test IPMI User Privilege 260 [Teardown] Run Keywords FFDC On Test Case Fail AND 261 ... Delete Created User ${random_userid} 262 263 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status 264 ${operator_priv} Passed Passed Failed 265 266 267Test IPMI Administrator Privilege Level 268 [Documentation] Verify IPMI user with admin privilege can run all levels command. 269 [Tags] Test_IPMI_Administrator_Privilege_Level 270 [Template] Test IPMI User Privilege 271 [Teardown] Run Keywords FFDC On Test Case Fail AND 272 ... Delete Created User ${random_userid} 273 274 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status 275 ${admin_level_priv} Passed Passed Passed 276 277 278Test IPMI No Access Privilege Level 279 [Documentation] Verify IPMI user with no access privilege can not run only any level command. 280 [Tags] Test_IPMI_No_Access_Privilege_Level 281 [Template] Test IPMI User Privilege 282 [Teardown] Run Keywords FFDC On Test Case Fail AND 283 ... Delete Created User ${random_userid} 284 285 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status 286 ${no_access_priv} Failed Failed Failed 287 288 289Enable IPMI User And Verify 290 [Documentation] Enable IPMI user and verify that the user is able 291 ... to run IPMI command. 292 [Tags] Enable_IPMI_User_And_Verify 293 [Teardown] Run Keywords FFDC On Test Case Fail AND 294 ... Delete Created User ${random_userid} 295 296 ${random_userid} ${random_username}= Create Random IPMI User 297 Set Test Variable ${random_userid} 298 Run IPMI Standard Command 299 ... user set password ${random_userid} ${valid_password} 300 301 # Set admin privilege and enable IPMI messaging for newly created user. 302 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} 303 304 # Delay added for user privilege to get set. 305 Sleep 5s 306 307 Enable IPMI User And Verify ${random_userid} 308 Wait And Confirm New Username And Password ${random_username} ${valid_password} 309 310 # Verify that enabled IPMI user is able to run IPMI command. 311 Verify IPMI Username And Password ${random_username} ${valid_password} 312 313 314Disable IPMI User And Verify 315 [Documentation] Disable IPMI user and verify that that the user 316 ... is unable to run IPMI command. 317 [Tags] Disable_IPMI_User_And_Verify 318 [Teardown] Run Keywords FFDC On Test Case Fail AND 319 ... Delete Created User ${random_userid} 320 321 ${random_userid} ${random_username}= Create Random IPMI User 322 Set Test Variable ${random_userid} 323 Run IPMI Standard Command 324 ... user set password ${random_userid} ${valid_password} 325 326 # Set admin privilege and enable IPMI messaging for newly created user. 327 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} 328 329 # Disable IPMI user and verify. 330 Run IPMI Standard Command user disable ${random_userid} 331 ${user_info}= Get User Info ${random_userid} 332 Should Be Equal ${user_info['enable_status']} disabled 333 334 # Verify that disabled IPMI user is unable to run IPMI command. 335 ${msg}= Run Keyword And Expect Error * Verify IPMI Username And Password 336 ... ${random_username} ${valid_password} 337 Should Contain ${msg} Unable to establish IPMI 338 339 340Verify IPMI Root User Password Change 341 [Documentation] Change IPMI root user password and verify that 342 ... root user is able to run IPMI command. 343 [Tags] Verify_IPMI_Root_User_Password_Change 344 [Teardown] Run Keywords FFDC On Test Case Fail AND 345 ... Wait Until Keyword Succeeds 15 sec 5 sec 346 ... Set Default Password For IPMI Root User 347 348 # User input password should be minimum 8 characters long. 349 Valid Length OPENBMC_PASSWORD min_length=8 350 # Set new password for root user. 351 Run IPMI Standard Command 352 ... user set password ${root_userid} ${valid_password} 353 354 # Delay added for user password to get set. 355 Sleep 5s 356 357 # Verify that root user is able to run IPMI command using new password. 358 Wait Until Keyword Succeeds 15 sec 5 sec Verify IPMI Username And Password 359 ... root ${valid_password} 360 361 362Verify Administrator And No Access Privilege For Different Channels 363 [Documentation] Set administrator and no access privilege for different channels and verify. 364 [Tags] Verify_Administrator_And_No_Access_Privilege_For_Different_Channels 365 [Setup] Check Active Ethernet Channels 366 [Teardown] Run Keywords FFDC On Test Case Fail AND 367 ... Delete Created User ${random_userid} 368 369 ${random_userid} ${random_username}= Create Random IPMI User 370 Set Test Variable ${random_userid} 371 Run IPMI Standard Command 372 ... user set password ${random_userid} ${valid_password} 373 374 # Set admin privilege for newly created user with channel 1. 375 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} ${CHANNEL_NUMBER} 376 377 # Set no access privilege for newly created user with channel 2. 378 Set Channel Access ${random_userid} ipmi=on privilege=${no_access_priv} ${secondary_channel_number} 379 380 Enable IPMI User And Verify ${random_userid} 381 382 # Verify that user is able to run administrator level IPMI command with channel 1. 383 Verify IPMI Command ${random_username} ${valid_password} Administrator ${CHANNEL_NUMBER} 384 385 # Verify that user is unable to run IPMI command with channel 2. 386 Run IPMI Standard Command sel info ${secondary_channel_number} expected_rc=${1} U=${random_username} P=${valid_password} 387 388 389Verify Operator And User Privilege For Different Channels 390 [Documentation] Set operator and user privilege for different channels and verify. 391 [Tags] Verify_Operator_And_User_Privilege_For_Different_Channels 392 [Setup] Check Active Ethernet Channels 393 [Teardown] Run Keywords FFDC On Test Case Fail AND 394 ... Delete Created User ${random_userid} 395 396 ${random_userid} ${random_username}= Create Random IPMI User 397 Set Test Variable ${random_userid} 398 Run IPMI Standard Command 399 ... user set password ${random_userid} ${valid_password} 400 401 # Set operator privilege for newly created user with channel 1. 402 Set Channel Access ${random_userid} ipmi=on privilege=${operator_priv} ${CHANNEL_NUMBER} 403 404 # Set user privilege for newly created user with channel 2. 405 Set Channel Access ${random_userid} ipmi=on privilege=${user_priv} ${secondary_channel_number} 406 407 Enable IPMI User And Verify ${random_userid} 408 409 # Verify that user is able to run operator level IPMI command with channel 1. 410 Verify IPMI Command ${random_username} ${valid_password} Operator ${CHANNEL_NUMBER} 411 412 # Verify that user is able to run user level IPMI command with channel 2. 413 Verify IPMI Command ${random_username} ${valid_password} User ${secondary_channel_number} 414 415 416Verify Setting IPMI User With Max Password Length 417 [Documentation] Verify IPMI user creation with password length of 20 characters. 418 [Tags] Verify_Setting_IPMI_User_With_Max_Password_Length 419 [Template] Set User Password And Verify 420 421 # password_length password_option expected_status 422 20 20 ${True} 423 424 425Verify Setting IPMI User With Invalid Password Length 426 [Documentation] Verify that IPMI user cannot be set with 21 character password using 16 char 427 ... or 20 char password option. 428 [Tags] Verify_Setting_IPMI_User_With_Invalid_Password_Length 429 [Template] Set User Password And Verify 430 431 # password_length password_option expected_status 432 21 16 ${False} 433 21 20 ${False} 434 435 436Verify Setting IPMI User With 16 Character Password 437 [Documentation] Verify that IPMI user can create a 16 character password using 16 char or 20 438 ... char password option. 439 [Tags] Verify_Setting_IPMI_User_With_16_Character_Password 440 [Template] Set User Password And Verify 441 442 # password_length password_option expected_status 443 16 16 ${True} 444 16 20 ${True} 445 446 447Verify Default Selection Of 16 Character Password For IPMI User 448 [Documentation] Verify that ipmitool by default opts for the 16 character option when given a 449 ... password whose length is in between 17 and 20. 450 [Tags] Verify_Default_Selection_Of_16_Character_Password_For_IPMI_User 451 [Template] Set User Password And Verify 452 453 # password_length password_option expected_status 454 17 16 ${True} 455 20 16 ${True} 456 457 458Verify Minimum Password Length For IPMI User 459 [Documentation] Verify minimum password length of 8 characters. 460 [Tags] Verify_Minimum_Password_Length_For_IPMI_User 461 [Template] Set User Password And Verify 462 463 # password_length password_option expected_status 464 7 16 ${False} 465 8 16 ${True} 466 7 20 ${False} 467 8 20 ${True} 468 469 470Verify Continuous IPMI Command Execution 471 [Documentation] Verify that continuous IPMI command execution runs fine. 472 [Tags] Verify_Continuous_IPMI_Command_Execution 473 474 FOR ${i} IN RANGE ${USER_LOOP_COUNT} 475 Run IPMI Standard Command lan print 476 Run IPMI Standard Command power status 477 Run IPMI Standard Command fru list 478 Run IPMI Standard Command sel list 479 END 480 481 482Modify IPMI User 483 [Documentation] Verify modified IPMI user is communicating via IPMI. 484 [Tags] Modify_IPMI_User 485 [Teardown] Run Keywords FFDC On Test Case Fail AND 486 ... Delete Created User ${random_userid} 487 488 ${random_userid} ${random_username}= Create Random IPMI User 489 Set Test Variable ${random_userid} 490 Run IPMI Standard Command 491 ... user set password ${random_userid} ${valid_password} 492 493 # Set admin privilege and enable IPMI messaging for newly created user. 494 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} 495 496 # Delay added for user privilege to get set. 497 Sleep 5s 498 499 Enable IPMI User And Verify ${random_userid} 500 501 # Verify that user is able to run administrator level IPMI command. 502 Verify IPMI Command ${random_username} ${valid_password} Administrator ${CHANNEL_NUMBER} 503 504 # Set different username for same IPMI user. 505 Run IPMI Standard Command 506 ... user set name ${random_userid} ${new_username} 507 Wait And Confirm New Username And Password ${new_username} ${valid_password} 508 509 # Verify that user is able to run administrator level IPMI command. 510 Verify IPMI Command ${new_username} ${valid_password} Administrator ${CHANNEL_NUMBER} 511 512 513*** Keywords *** 514 515Create Random IPMI User 516 [Documentation] Create IPMI user with random username and userid and return those fields. 517 518 ${random_username}= Generate Random String 8 [LETTERS] 519 ${random_userid}= Evaluate random.randint(2, 15) modules=random 520 IPMI Create User ${random_userid} ${random_username} 521 [Return] ${random_userid} ${random_username} 522 523 524Enable IPMI User And Verify 525 [Documentation] Enable the userid and verify that it has been enabled. 526 [Arguments] ${userid} 527 528 # Description of argument(s): 529 # userid A numeric userid (e.g. "4"). 530 531 Run IPMI Standard Command user enable ${userid} 532 ${user_info}= Get User Info ${userid} 533 Valid Value user_info['enable_status'] ['enabled'] 534 535 536Set Default Password For IPMI Root User 537 [Documentation] Set default password for IPMI root user (i.e. 0penBmc). 538 # Set default password for root user. 539 ${result}= Run External IPMI Standard Command 540 ... user set password ${root_userid} ${OPENBMC_PASSWORD} 541 ... P=${valid_password} 542 Should Contain ${result} Set User Password command successful 543 544 # Verify that root user is able to run IPMI command using default password. 545 Verify IPMI Username And Password root ${OPENBMC_PASSWORD} 546 547 548Test IPMI User Privilege 549 [Documentation] Test IPMI user privilege by executing IPMI command with different privileges. 550 [Arguments] ${privilege_level} ${user_cmd_status} ${operator_cmd_status} ${admin_cmd_status} 551 552 # Description of argument(s): 553 # privilege_level Privilege level of IPMI user (e.g. 4, 3). 554 # user_cmd_status Expected status of IPMI command run with the "User" 555 # privilege (i.e. "Passed" or "Failed"). 556 # operator_cmd_status Expected status of IPMI command run with the "Operator" 557 # privilege (i.e. "Passed" or "Failed"). 558 # admin_cmd_status Expected status of IPMI command run with the "Administrator" 559 # privilege (i.e. "Passed" or "Failed"). 560 561 # Create IPMI user and set valid password. 562 ${random_username}= Generate Random String 8 [LETTERS] 563 ${random_userid}= Evaluate random.randint(2, 15) modules=random 564 IPMI Create User ${random_userid} ${random_username} 565 Set Test Variable ${random_userid} 566 Run IPMI Standard Command 567 ... user set password ${random_userid} ${valid_password} 568 569 # Set privilege and enable IPMI messaging for newly created user. 570 Set Channel Access ${random_userid} ipmi=on privilege=${privilege_level} 571 572 # Delay added for user privilege to get set. 573 Sleep 5s 574 575 Enable IPMI User And Verify ${random_userid} 576 577 Verify IPMI Command ${random_username} ${valid_password} User 578 ... expected_status=${user_cmd_status} 579 Verify IPMI Command ${random_username} ${valid_password} Operator 580 ... expected_status=${operator_cmd_status} 581 Verify IPMI Command ${random_username} ${valid_password} Administrator 582 ... expected_status=${admin_cmd_status} 583 584 585Verify IPMI Command 586 [Documentation] Verify IPMI command execution with given username, 587 ... password, privilege and expected status. 588 [Arguments] ${username} ${password} ${privilege} ${channel}=${1} ${expected_status}=Passed 589 # Description of argument(s): 590 # username The user name (e.g. "root", "robert", etc.). 591 # password The user password (e.g. "0penBmc", "0penBmc1", etc.). 592 # privilege The session privilege for IPMI command (e.g. "User", "Operator", etc.). 593 # channel The user channel number (e.g. "1" or "2"). 594 # expected_status Expected status of IPMI command run with the user 595 # of above password and privilege (i.e. "Passed" or "Failed"). 596 597 ${expected_rc}= Set Variable If '${expected_status}' == 'Passed' ${0} ${1} 598 Wait Until Keyword Succeeds 15 sec 5 sec Run IPMI Standard Command 599 ... sel info ${channel} expected_rc=${expected_rc} U=${username} P=${password} 600 ... L=${privilege} 601 602 603Set User Password And Verify 604 [Documentation] Create a user and set its password with given length and option. 605 [Arguments] ${password_length} ${password_option} ${expected_result} 606 [Teardown] Run Keyword Delete Created User ${random_userid} 607 # Description of argument(s): 608 # password_length Length of password to be generated and used (e.g. "16"). 609 # password_option Password length option to be given in IPMI command (e.g. "16", "20"). 610 # expected_result Expected result for setting the user's password (e.g. "True", "False"). 611 612 Rprint Vars password_length password_option expected_result 613 ${random_userid} ${random_username}= Create Random IPMI User 614 Set Test Variable ${random_userid} 615 ${password}= Get From Dictionary ${password_values} ${password_length} 616 Rprint Vars random_userid password 617 618 # Set password for newly created user. 619 ${status}= Run Keyword And Return Status Run IPMI Standard Command 620 ... user set password ${random_userid} ${password} ${password_option} 621 Rprint Vars status 622 Valid Value status [${expected_result}] 623 Return From Keyword If '${expected_result}' == '${False}' 624 625 # Set admin privilege and enable IPMI messaging for newly created user. 626 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} 627 628 # Delay added for user privilege to get set. 629 Sleep 5s 630 631 Enable IPMI User And Verify ${random_userid} 632 633 # For password_option 16, passwords with length between 17 and 20 will be truncated. 634 # For all other cases, passwords will be retained as it is to verify. 635 ${truncated_password}= Set Variable ${password[:${password_option}]} 636 Rprint Vars truncated_password 637 ${status}= Run Keyword And Return Status Verify IPMI Username And Password ${random_username} 638 ... ${truncated_password} 639 Rprint Vars status 640 Valid Value status [${expected_result}] 641 642 643Test Teardown Execution 644 [Documentation] Do the test teardown execution. 645 646 FFDC On Test Case Fail 647 648 649Delete Created User 650 [Documentation] Delete created IPMI user. 651 [Arguments] ${userid} 652 # Description of argument(s): 653 # userid The user ID (e.g. "1", "2", etc.). 654 655 Run IPMI Standard Command user set name ${userid} "" 656 Sleep 5s 657 658 659Check Active Ethernet Channels 660 [Documentation] Check active ethernet channels and set suite variables. 661 662 ${channel_number_list}= Get Active Ethernet Channel List 663 ${channel_length}= Get Length ${channel_number_list} 664 Skip If '${channel_length}' == '1' 665 ... msg= Skips this test case as only one channel was in active. 666 667 FOR ${channel_num} IN @{channel_number_list} 668 ${secondary_channel_number}= Set Variable If ${channel_num} != ${CHANNEL_NUMBER} ${channel_num} 669 END 670 671 Set Suite Variable ${secondary_channel_number} 672 673 674Suite Setup Execution 675 [Documentation] Check for the enabled user. 676 677 # Check for the enabled user count 678 ${resp}= Run IPMI Standard Command user summary ${CHANNEL_NUMBER} 679 ${enabled_user_count}= 680 ... Get Lines Containing String ${resp} Enabled User Count 681 682 Should not contain ${enabled_user_count} 15 683 ... msg=IPMI have reached maximum user count 684 685 686Wait And Confirm New Username And Password 687 [Documentation] Wait in loop trying to to confirm Username And Password. 688 [Arguments] ${username} ${password} 689 690 # Give time for previous command to complete. 691 Sleep 5s 692 693 # Looping verify that root user is able to run IPMI command using new password. 694 Wait Until Keyword Succeeds 15 sec 5 sec Verify IPMI Username And Password 695 ... ${username} ${password} 696