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 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 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