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 387 ... sel info ${secondary_channel_number} expected_rc=${1} U=${random_username} P=${valid_password} 388 389 390Verify Operator And User Privilege For Different Channels 391 [Documentation] Set operator and user privilege for different channels and verify. 392 [Tags] Verify_Operator_And_User_Privilege_For_Different_Channels 393 [Setup] Check Active Ethernet Channels 394 [Teardown] Run Keywords FFDC On Test Case Fail AND 395 ... Delete Created User ${random_userid} 396 397 ${random_userid} ${random_username}= Create Random IPMI User 398 Set Test Variable ${random_userid} 399 Run IPMI Standard Command 400 ... user set password ${random_userid} ${valid_password} 401 402 # Set operator privilege for newly created user with channel 1. 403 Set Channel Access ${random_userid} ipmi=on privilege=${operator_priv} ${CHANNEL_NUMBER} 404 405 # Set user privilege for newly created user with channel 2. 406 Set Channel Access ${random_userid} ipmi=on privilege=${user_priv} ${secondary_channel_number} 407 408 Enable IPMI User And Verify ${random_userid} 409 410 # Verify that user is able to run operator level IPMI command with channel 1. 411 Verify IPMI Command ${random_username} ${valid_password} Operator ${CHANNEL_NUMBER} 412 413 # Verify that user is able to run user level IPMI command with channel 2. 414 Verify IPMI Command ${random_username} ${valid_password} User ${secondary_channel_number} 415 416 417Verify Setting IPMI User With Max Password Length 418 [Documentation] Verify IPMI user creation with password length of 20 characters. 419 [Tags] Verify_Setting_IPMI_User_With_Max_Password_Length 420 [Template] Set User Password And Verify 421 422 # password_length password_option expected_status 423 20 20 ${True} 424 425 426Verify Setting IPMI User With Invalid Password Length 427 [Documentation] Verify that IPMI user cannot be set with 21 character password using 16 char 428 ... or 20 char password option. 429 [Tags] Verify_Setting_IPMI_User_With_Invalid_Password_Length 430 [Template] Set User Password And Verify 431 432 # password_length password_option expected_status 433 21 16 ${False} 434 21 20 ${False} 435 436 437Verify Setting IPMI User With 16 Character Password 438 [Documentation] Verify that IPMI user can create a 16 character password using 16 char or 20 439 ... char password option. 440 [Tags] Verify_Setting_IPMI_User_With_16_Character_Password 441 [Template] Set User Password And Verify 442 443 # password_length password_option expected_status 444 16 16 ${True} 445 16 20 ${True} 446 447 448Verify Default Selection Of 16 Character Password For IPMI User 449 [Documentation] Verify that ipmitool by default opts for the 16 character option when given a 450 ... password whose length is in between 17 and 20. 451 [Tags] Verify_Default_Selection_Of_16_Character_Password_For_IPMI_User 452 [Template] Set User Password And Verify 453 454 # password_length password_option expected_status 455 17 16 ${True} 456 20 16 ${True} 457 458 459Verify Minimum Password Length For IPMI User 460 [Documentation] Verify minimum password length of 8 characters. 461 [Tags] Verify_Minimum_Password_Length_For_IPMI_User 462 [Template] Set User Password And Verify 463 464 # password_length password_option expected_status 465 7 16 ${False} 466 8 16 ${True} 467 7 20 ${False} 468 8 20 ${True} 469 470 471Verify Continuous IPMI Command Execution 472 [Documentation] Verify that continuous IPMI command execution runs fine. 473 [Tags] Verify_Continuous_IPMI_Command_Execution 474 475 FOR ${i} IN RANGE ${USER_LOOP_COUNT} 476 Run IPMI Standard Command lan print 477 Run IPMI Standard Command power status 478 Run IPMI Standard Command fru list 479 Run IPMI Standard Command sel list 480 END 481 482 483Modify IPMI User 484 [Documentation] Verify modified IPMI user is communicating via IPMI. 485 [Tags] Modify_IPMI_User 486 [Teardown] Run Keywords FFDC On Test Case Fail AND 487 ... Delete Created User ${random_userid} 488 489 ${random_userid} ${random_username}= Create Random IPMI User 490 Set Test Variable ${random_userid} 491 Run IPMI Standard Command 492 ... user set password ${random_userid} ${valid_password} 493 494 # Set admin privilege and enable IPMI messaging for newly created user. 495 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} 496 497 # Delay added for user privilege to get set. 498 Sleep 5s 499 500 Enable IPMI User And Verify ${random_userid} 501 502 # Verify that user is able to run administrator level IPMI command. 503 Verify IPMI Command ${random_username} ${valid_password} Administrator ${CHANNEL_NUMBER} 504 505 # Set different username for same IPMI user. 506 Run IPMI Standard Command 507 ... user set name ${random_userid} ${new_username} 508 Wait And Confirm New Username And Password ${new_username} ${valid_password} 509 510 # Verify that user is able to run administrator level IPMI command. 511 Verify IPMI Command ${new_username} ${valid_password} Administrator ${CHANNEL_NUMBER} 512 513 514*** Keywords *** 515 516Create Random IPMI User 517 [Documentation] Create IPMI user with random username and userid and return those fields. 518 519 ${random_username}= Generate Random String 8 [LETTERS] 520 ${random_userid}= Evaluate random.randint(2, 15) modules=random 521 IPMI Create User ${random_userid} ${random_username} 522 [Return] ${random_userid} ${random_username} 523 524 525Enable IPMI User And Verify 526 [Documentation] Enable the userid and verify that it has been enabled. 527 [Arguments] ${userid} 528 529 # Description of argument(s): 530 # userid A numeric userid (e.g. "4"). 531 532 Run IPMI Standard Command user enable ${userid} 533 ${user_info}= Get User Info ${userid} 534 Valid Value user_info['enable_status'] ['enabled'] 535 536 537Set Default Password For IPMI Root User 538 [Documentation] Set default password for IPMI root user (i.e. 0penBmc). 539 # Set default password for root user. 540 ${result}= Run External IPMI Standard Command 541 ... user set password ${root_userid} ${OPENBMC_PASSWORD} 542 ... P=${valid_password} 543 Should Contain ${result} Set User Password command successful 544 545 # Verify that root user is able to run IPMI command using default password. 546 Verify IPMI Username And Password root ${OPENBMC_PASSWORD} 547 548 549Test IPMI User Privilege 550 [Documentation] Test IPMI user privilege by executing IPMI command with different privileges. 551 [Arguments] ${privilege_level} ${user_cmd_status} ${operator_cmd_status} ${admin_cmd_status} 552 553 # Description of argument(s): 554 # privilege_level Privilege level of IPMI user (e.g. 4, 3). 555 # user_cmd_status Expected status of IPMI command run with the "User" 556 # privilege (i.e. "Passed" or "Failed"). 557 # operator_cmd_status Expected status of IPMI command run with the "Operator" 558 # privilege (i.e. "Passed" or "Failed"). 559 # admin_cmd_status Expected status of IPMI command run with the "Administrator" 560 # privilege (i.e. "Passed" or "Failed"). 561 562 # Create IPMI user and set valid password. 563 ${random_username}= Generate Random String 8 [LETTERS] 564 ${random_userid}= Evaluate random.randint(2, 15) modules=random 565 IPMI Create User ${random_userid} ${random_username} 566 Set Test Variable ${random_userid} 567 Run IPMI Standard Command 568 ... user set password ${random_userid} ${valid_password} 569 570 # Set privilege and enable IPMI messaging for newly created user. 571 Set Channel Access ${random_userid} ipmi=on privilege=${privilege_level} 572 573 # Delay added for user privilege to get set. 574 Sleep 5s 575 576 Enable IPMI User And Verify ${random_userid} 577 578 Verify IPMI Command ${random_username} ${valid_password} User 579 ... expected_status=${user_cmd_status} 580 Verify IPMI Command ${random_username} ${valid_password} Operator 581 ... expected_status=${operator_cmd_status} 582 Verify IPMI Command ${random_username} ${valid_password} Administrator 583 ... expected_status=${admin_cmd_status} 584 585 586Verify IPMI Command 587 [Documentation] Verify IPMI command execution with given username, 588 ... password, privilege and expected status. 589 [Arguments] ${username} ${password} ${privilege} ${channel}=${1} ${expected_status}=Passed 590 # Description of argument(s): 591 # username The user name (e.g. "root", "robert", etc.). 592 # password The user password (e.g. "0penBmc", "0penBmc1", etc.). 593 # privilege The session privilege for IPMI command (e.g. "User", "Operator", etc.). 594 # channel The user channel number (e.g. "1" or "2"). 595 # expected_status Expected status of IPMI command run with the user 596 # of above password and privilege (i.e. "Passed" or "Failed"). 597 598 ${expected_rc}= Set Variable If '${expected_status}' == 'Passed' ${0} ${1} 599 Wait Until Keyword Succeeds 15 sec 5 sec Run IPMI Standard Command 600 ... sel info ${channel} expected_rc=${expected_rc} U=${username} P=${password} 601 ... L=${privilege} 602 603 604Set User Password And Verify 605 [Documentation] Create a user and set its password with given length and option. 606 [Arguments] ${password_length} ${password_option} ${expected_result} 607 [Teardown] Run Keyword Delete Created User ${random_userid} 608 # Description of argument(s): 609 # password_length Length of password to be generated and used (e.g. "16"). 610 # password_option Password length option to be given in IPMI command (e.g. "16", "20"). 611 # expected_result Expected result for setting the user's password (e.g. "True", "False"). 612 613 Rprint Vars password_length password_option expected_result 614 ${random_userid} ${random_username}= Create Random IPMI User 615 Set Test Variable ${random_userid} 616 ${password}= Get From Dictionary ${password_values} ${password_length} 617 Rprint Vars random_userid password 618 619 # Set password for newly created user. 620 ${status}= Run Keyword And Return Status Run IPMI Standard Command 621 ... user set password ${random_userid} ${password} ${password_option} 622 Rprint Vars status 623 Valid Value status [${expected_result}] 624 Return From Keyword If '${expected_result}' == '${False}' 625 626 # Set admin privilege and enable IPMI messaging for newly created user. 627 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} 628 629 # Delay added for user privilege to get set. 630 Sleep 5s 631 632 Enable IPMI User And Verify ${random_userid} 633 634 # For password_option 16, passwords with length between 17 and 20 will be truncated. 635 # For all other cases, passwords will be retained as it is to verify. 636 ${truncated_password}= Set Variable ${password[:${password_option}]} 637 Rprint Vars truncated_password 638 ${status}= Run Keyword And Return Status Verify IPMI Username And Password ${random_username} 639 ... ${truncated_password} 640 Rprint Vars status 641 Valid Value status [${expected_result}] 642 643 644Test Teardown Execution 645 [Documentation] Do the test teardown execution. 646 647 FFDC On Test Case Fail 648 649 650Delete Created User 651 [Documentation] Delete created IPMI user. 652 [Arguments] ${userid} 653 # Description of argument(s): 654 # userid The user ID (e.g. "1", "2", etc.). 655 656 Run IPMI Standard Command user set name ${userid} "" 657 Sleep 5s 658 659 660Check Active Ethernet Channels 661 [Documentation] Check active ethernet channels and set suite variables. 662 663 ${channel_number_list}= Get Active Ethernet Channel List 664 ${channel_length}= Get Length ${channel_number_list} 665 Skip If '${channel_length}' == '1' 666 ... msg= Skips this test case as only one channel was in active. 667 668 FOR ${channel_num} IN @{channel_number_list} 669 ${secondary_channel_number}= Set Variable If ${channel_num} != ${CHANNEL_NUMBER} ${channel_num} 670 END 671 672 Set Suite Variable ${secondary_channel_number} 673 674 675Suite Setup Execution 676 [Documentation] Check for the enabled user. 677 678 # Check for the enabled user count 679 ${resp}= Run IPMI Standard Command user summary ${CHANNEL_NUMBER} 680 ${enabled_user_count}= 681 ... Get Lines Containing String ${resp} Enabled User Count 682 683 Should not contain ${enabled_user_count} 15 684 ... msg=IPMI have reached maximum user count 685 686 687Wait And Confirm New Username And Password 688 [Documentation] Wait in loop trying to to confirm Username And Password. 689 [Arguments] ${username} ${password} 690 691 # Give time for previous command to complete. 692 Sleep 5s 693 694 # Looping verify that root user is able to run IPMI command using new password. 695 Wait Until Keyword Succeeds 15 sec 5 sec Verify IPMI Username And Password 696 ... ${username} ${password} 697