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