16c998f75STony Lee*** Settings *** 26c998f75STony LeeDocumentation This suite tests IPMI Payload in OpenBMC. 36c998f75STony Lee 46c998f75STony LeeResource ../lib/ipmi_client.robot 56c998f75STony LeeResource ../lib/openbmc_ffdc.robot 6a2255de5Snagarjunb22Resource ../lib/bmc_network_utils.robot 76c998f75STony LeeVariables ../data/ipmi_raw_cmd_table.py 8a2255de5Snagarjunb22Library ../lib/ipmi_utils.py 9a2255de5Snagarjunb22 10765535acSnagarjunbSuite Setup IPMI Payload Setup Execution 11a2255de5Snagarjunb22Test Teardown FFDC On Test Case Fail 12a2255de5Snagarjunb22 13*6fb70d98SMatt FischerTest Tags IPMI_Payload 14a2255de5Snagarjunb22 15a2255de5Snagarjunb22*** Variables *** 1687dc442cSGeorge Keishing 17a2255de5Snagarjunb22${user_priv} 2 18a2255de5Snagarjunb22${operator_priv} 3 19a2255de5Snagarjunb22${admin_level_priv} 4 20a2255de5Snagarjunb22${new_user_passwd} 0penBmc1 2193e6e242Snagarjunb22${standard_payload_type_resp} 03 00 2293e6e242Snagarjunb22${session_setup_payload_resp} 3f 00 2393e6e242Snagarjunb22&{standard_payload_types} ipmi_message=0 sol=1 2493e6e242Snagarjunb22&{session_setup_payload_types} RMCP+open_session_request=0x10 2593e6e242Snagarjunb22 ... RMCP+open_session_response=0x11 2693e6e242Snagarjunb22 ... RAKP_msg_1=0x12 2793e6e242Snagarjunb22 ... RAKP_msg_2=0x13 2893e6e242Snagarjunb22 ... RAKP_msg_3=0x14 2993e6e242Snagarjunb22 ... RAKP_msg_4=0x15 306c998f75STony Lee 316c998f75STony Lee 326c998f75STony Lee*** Test Cases *** 336c998f75STony Lee 346c998f75STony LeeTest Get Payload Activation Status 356c998f75STony Lee [Documentation] Test get payload activation status. 366c998f75STony Lee [Tags] Test_Get_Payload_Activation_Status 376c998f75STony Lee 386c998f75STony Lee # SOL is the payload currently supported for payload status. 396c998f75STony Lee # Currently supports only one SOL session. 406c998f75STony Lee # Response Data 416c998f75STony Lee # 01 instance 1 is activated. 426c998f75STony Lee # 00 instance 1 is deactivated. 436c998f75STony Lee ${payload_status}= Get Payload Activation Status 446c998f75STony Lee Should Contain Any ${payload_status} 01 00 456c998f75STony Lee 466c998f75STony Lee 476c998f75STony LeeTest Activate Payload 486c998f75STony Lee [Documentation] Test activate payload via IPMI raw command. 496c998f75STony Lee [Tags] Test_Activate_Payload 506c998f75STony Lee 516c998f75STony Lee ${payload_status}= Get Payload Activation Status 526c998f75STony Lee Run Keyword If '${payload_status}' == '01' Deactivate Payload 536c998f75STony Lee 546c998f75STony Lee Activate Payload 556c998f75STony Lee 566c998f75STony Lee ${payload_status}= Get Payload Activation Status 576c998f75STony Lee Should Contain ${payload_status} 01 586c998f75STony Lee 596c998f75STony Lee 606c998f75STony LeeTest Deactivate Payload 616c998f75STony Lee [Documentation] Test deactivate payload via IPMI raw command. 626c998f75STony Lee [Tags] Test_Deactivate_Payload 636c998f75STony Lee 646c998f75STony Lee ${payload_status}= Get Payload Activation Status 656c998f75STony Lee Run Keyword If '${payload_status}' == '00' Activate Payload 666c998f75STony Lee 676c998f75STony Lee Deactivate Payload 686c998f75STony Lee 696c998f75STony Lee ${payload_status}= Get Payload Activation Status 706c998f75STony Lee Should Contain ${payload_status} 00 716c998f75STony Lee 726c998f75STony Lee 736c998f75STony LeeTest Get Payload Instance Info 746c998f75STony Lee [Documentation] Test Get Payload Instance via IPMI raw command. 756c998f75STony Lee [Tags] Test_Get_Payload_Instance_Info 766c998f75STony Lee 776c998f75STony Lee ${payload_status}= Get Payload Activation Status 786c998f75STony Lee Run keyword If '${payload_status}' == '01' 796c998f75STony Lee ... Deactivate Payload 806c998f75STony Lee 816c998f75STony Lee # First four bytes should be 00 if given instance is not activated. 826c998f75STony Lee ${resp}= Run IPMI Command 836c998f75STony Lee ... ${IPMI_RAW_CMD['Payload']['Get_Payload_Instance_Info'][0]} 846c998f75STony Lee Should Contain ${resp} ${IPMI_RAW_CMD['Payload']['Get_Payload_Instance_Info'][1]} 856c998f75STony Lee Activate Payload 866c998f75STony Lee 876c998f75STony Lee # First four bytes should be session ID when payload is activated. 886c998f75STony Lee ${resp}= Run IPMI Command 896c998f75STony Lee ... ${IPMI_RAW_CMD['Payload']['Get_Payload_Instance_Info'][0]} 906c998f75STony Lee Should Not Contain ${resp} ${IPMI_RAW_CMD['Payload']['Get_Payload_Instance_Info'][1]} 916c998f75STony Lee 926c998f75STony Lee 93a2255de5Snagarjunb22Verify Set User Access Payload For Standard Payload SOL 94a2255de5Snagarjunb22 [Documentation] Disable standard payload for SOL and verify IPMI sol activate command does not work. 95a2255de5Snagarjunb22 [Tags] Verify_Set_User_Access_Payload_For_Standard_Payload_SOL 96a2255de5Snagarjunb22 [Teardown] Run Keywords Set User Access Payload For Given User ${user_id_in_hex} 97a2255de5Snagarjunb22 ... AND Delete Created User ${userid} 98a2255de5Snagarjunb22 ... AND FFDC On Test Case Fail 99a2255de5Snagarjunb22 100a2255de5Snagarjunb22 ${userid} ${username}= Create And Verify IPMI User 101a2255de5Snagarjunb22 ${user_id_in_hex}= Convert To Hex ${userid} 102a2255de5Snagarjunb22 ${userid_in_hex_format}= Convert To Hex ${userid} prefix=0x length=2 103a2255de5Snagarjunb22 104a2255de5Snagarjunb22 # Get default user access payload values. 105a2255de5Snagarjunb22 ${default_user_access_payload}= Get User Access Payload For Given Channel ${userid_in_hex_format} 106a2255de5Snagarjunb22 107a2255de5Snagarjunb22 # Disable Standard payload 1 via set user access payload command. 108a2255de5Snagarjunb22 Set User Access Payload For Given User ${user_id_in_hex} Disable 109a2255de5Snagarjunb22 110a2255de5Snagarjunb22 Verify Standard Payload ${userid_in_hex_format} ${username} Disabled 111a2255de5Snagarjunb22 112a2255de5Snagarjunb22 113a2255de5Snagarjunb22Verify Set User Access Payload For Operator Privileged User 114a2255de5Snagarjunb22 [Documentation] Try to set user access payload using operator privileged user and expect error. 115a2255de5Snagarjunb22 [Tags] Verify_Set_User_Access_Payload_For_Operator_Privileged_User 116a2255de5Snagarjunb22 [Teardown] Run Keywords Delete Created User ${userid} AND FFDC On Test Case Fail 117a2255de5Snagarjunb22 118a2255de5Snagarjunb22 ${userid} ${username}= Create And Verify IPMI User ${operator_priv} Operator 119a2255de5Snagarjunb22 120a2255de5Snagarjunb22 ${payload_raw_cmd}= Catenate ${IPMI_RAW_CMD['Payload']['Set_User_Access_Payload'][0]} 121a2255de5Snagarjunb22 ... ${CHANNEL_NUMBER} 0x${user_id} 0x02 0x00 0x00 0x00 122a2255de5Snagarjunb22 123a2255de5Snagarjunb22 Run Keyword and Expect Error *Unable to establish IPMI* 124a2255de5Snagarjunb22 ... Run External IPMI Raw Command ${payload_raw_cmd} U=${userid} P=${new_user_passwd} L=Operator 125a2255de5Snagarjunb22 126a2255de5Snagarjunb22 127765535acSnagarjunbVerify Set User Access Payload For Invalid User 128765535acSnagarjunb [Documentation] Verify set user access payload IPMI command for invalid user. 129765535acSnagarjunb [Tags] Verify_Set_User_Access_Payload_For_Invalid_User 130765535acSnagarjunb 131765535acSnagarjunb # Get Random invalid user ID. 132765535acSnagarjunb ${invalid_userid}= Get Invalid User ID 133765535acSnagarjunb 134765535acSnagarjunb ${raw_cmd}= Catenate ${IPMI_RAW_CMD['Payload']['Set_User_Access_Payload'][0]} 135765535acSnagarjunb ... ${CHANNEL_NUMBER} ${invalid_userid} 0x02 0x00 0x00 0x00 136765535acSnagarjunb 137765535acSnagarjunb Verify Invalid IPMI Command ${raw_cmd} 0xcc 138765535acSnagarjunb 139765535acSnagarjunb 140765535acSnagarjunbVerify Set User Access Payload For Invalid Channel Number 141765535acSnagarjunb [Documentation] Verify set user access payload IPMI command for invalid channel number. 142f6b4d534SGeorge Keishing [Tags] Verify_Set_User_Access_Payload_For_Invalid_Channel_Number 143765535acSnagarjunb [Teardown] Delete Created User ${userid} 144765535acSnagarjunb 145765535acSnagarjunb ${userid} ${username}= Create And Verify IPMI User 146765535acSnagarjunb 147765535acSnagarjunb FOR ${channel} IN @{inactive_channel_list} 148765535acSnagarjunb 149765535acSnagarjunb Verify Set User Access Payload For Invalid Channel ${userid} ${channel} 150765535acSnagarjunb END 151765535acSnagarjunb 152765535acSnagarjunb 153765535acSnagarjunbVerify Get User Access Payload For User Access privilege 154765535acSnagarjunb [Documentation] Verify get user access payload for user access(Read-only) privileged user. 155765535acSnagarjunb [Tags] Verify_Get_User_Access_Payload_For_User_Access_privilege 156765535acSnagarjunb [Teardown] Delete Created User ${userid} 157765535acSnagarjunb 158765535acSnagarjunb ${userid} ${username}= Create And Verify IPMI User ${user_priv} User 159765535acSnagarjunb 160765535acSnagarjunb ${raw_command}= Catenate ${IPMI_RAW_CMD['Payload']['Get_User_Access_Payload'][0]} 161765535acSnagarjunb ... ${CHANNEL_NUMBER} ${user_id} 162765535acSnagarjunb 163765535acSnagarjunb Run Keyword and Expect Error *Unable to establish IPMI* 164765535acSnagarjunb ... Run External IPMI Raw Command ${raw_command} U=${userid} P=${new_user_passwd} L=User 165765535acSnagarjunb 166765535acSnagarjunb 167765535acSnagarjunbVerify Get User Access Payload For Invalid User 168765535acSnagarjunb [Documentation] Verify get user access payload IPMI command for invalid user. 169765535acSnagarjunb [Tags] Verify_Get_User_Access_Payload_For_Invalid_User 170765535acSnagarjunb 171765535acSnagarjunb ${invalid_userid}= Get Invalid User ID 172765535acSnagarjunb 173765535acSnagarjunb Verify Get User Access Payload For Invalid User Or Channel ${invalid_userid} ${CHANNEL_NUMBER} 174765535acSnagarjunb 175765535acSnagarjunb 176765535acSnagarjunbVerify Get User Access Payload For Invalid Channel Number 177765535acSnagarjunb [Documentation] Verify get user access payload IPMI command for invalid channel number. 178765535acSnagarjunb [Tags] Verify_Get_User_Access_Payload_For_Invalid_Channel_Number 179765535acSnagarjunb [Teardown] Delete Created User ${userid} 180765535acSnagarjunb 181765535acSnagarjunb ${userid} ${username}= Create And Verify IPMI User 182765535acSnagarjunb #${invalid_channels}= Get Invalid Channel Number 183765535acSnagarjunb 184765535acSnagarjunb FOR ${channel} IN @{inactive_channel_list} 185765535acSnagarjunb Verify Get User Access Payload For Invalid User Or Channel ${userid} ${channel} 186765535acSnagarjunb END 187765535acSnagarjunb 188765535acSnagarjunb 18993e6e242Snagarjunb22Verify Get Channel Payload Version 19093e6e242Snagarjunb22 [Documentation] Verify payload version for all supported payload type in 19193e6e242Snagarjunb22 ... all active channels. 19293e6e242Snagarjunb22 [Tags] Verify_Get_Channel_Payload_Version 19393e6e242Snagarjunb22 [Template] Verify Payload Version 19493e6e242Snagarjunb22 19593e6e242Snagarjunb22 FOR ${channel} IN @{active_channel_list} 19693e6e242Snagarjunb22 # Input Channel. 19793e6e242Snagarjunb22 ${channel} 19893e6e242Snagarjunb22 END 19993e6e242Snagarjunb22 20093e6e242Snagarjunb22Verify Get Channel Payload Version For Invalid Channel 20193e6e242Snagarjunb22 [Documentation] Verify get channel payload version IPMI command for invalid channel. 20293e6e242Snagarjunb22 [Tags] Verify_Get_Channel_Payload_Version_For_Invalid_Channel 20393e6e242Snagarjunb22 [Template] Verify Payload Version For Invalid Channel 20493e6e242Snagarjunb22 20593e6e242Snagarjunb22 FOR ${invalid_channel_number} IN @{inactive_channel_list} 20693e6e242Snagarjunb22 # channel number payload types. 20793e6e242Snagarjunb22 ${invalid_channel_number} &{standard_payload_types} 20893e6e242Snagarjunb22 ${invalid_channel_number} &{session_setup_payload_types} 20993e6e242Snagarjunb22 END 21093e6e242Snagarjunb22 21193e6e242Snagarjunb22 21293e6e242Snagarjunb22Verify Get Channel Payload Support 21393e6e242Snagarjunb22 [Documentation] Verify get channel payload support IPMI command for active channels. 21493e6e242Snagarjunb22 [Tags] Verify_Get_Channel_Payload_Support 21593e6e242Snagarjunb22 [Template] Verify Payload Support 21693e6e242Snagarjunb22 21793e6e242Snagarjunb22 FOR ${channel} IN @{active_channel_list} 21893e6e242Snagarjunb22 # Input channel. 21993e6e242Snagarjunb22 ${channel} 22093e6e242Snagarjunb22 END 22193e6e242Snagarjunb22 22293e6e242Snagarjunb22Verify Get Channel Payload Support For Invalid Channel 22393e6e242Snagarjunb22 [Documentation] Verify get channel payload support IPMI command for invalid channels. 22493e6e242Snagarjunb22 [Tags] Verify_Get_Channel_Payload_Support_For_Invalid_Channel 22593e6e242Snagarjunb22 [Template] Verify Payload Support 22693e6e242Snagarjunb22 22793e6e242Snagarjunb22 FOR ${channel} IN @{inactive_channel_list} 22893e6e242Snagarjunb22 # Input channel. Invalid channel intimation. 22993e6e242Snagarjunb22 ${channel} ${1} 23093e6e242Snagarjunb22 END 23193e6e242Snagarjunb22 23293e6e242Snagarjunb22 2336c998f75STony Lee*** Keywords *** 2346c998f75STony Lee 235765535acSnagarjunbIPMI Payload Setup Execution 236765535acSnagarjunb [Documentation] Get active and inactive/invalid channels from channel_config.json file 237765535acSnagarjunb ... in list type and set it as suite variable. 238765535acSnagarjunb 239765535acSnagarjunb # Get active channel list and set as a suite variable. 240765535acSnagarjunb @{active_channel_list}= Get Active Ethernet Channel List current_channel=1 241765535acSnagarjunb Set Suite Variable @{active_channel_list} 242765535acSnagarjunb 243765535acSnagarjunb # Get Inactive/Invalid channel list and set as a suite variable. 244765535acSnagarjunb @{inactive_channel_list}= Get Invalid Channel Number List 245765535acSnagarjunb Set Suite Variable @{inactive_channel_list} 246765535acSnagarjunb 247765535acSnagarjunb 2486c998f75STony LeeGet Payload Activation Status 2496c998f75STony Lee [Documentation] Get payload activation status. 2506c998f75STony Lee 2516c998f75STony Lee ${resp}= Run IPMI Command 2526c998f75STony Lee ... ${IPMI_RAW_CMD['Payload']['Get_Payload_Activation_Status'][0]} 2536c998f75STony Lee 2546c998f75STony Lee @{resp}= Split String ${resp} 2556c998f75STony Lee 2566c998f75STony Lee ${payload_status}= Set Variable ${resp[1]} 2576c998f75STony Lee 258409df05dSGeorge Keishing RETURN ${payload_status} 2596c998f75STony Lee 2606c998f75STony Lee 2616c998f75STony LeeActivate Payload 2626c998f75STony Lee [Documentation] Activate Payload. 2636c998f75STony Lee 2646c998f75STony Lee ${resp}= Run IPMI Command 2656c998f75STony Lee ... ${IPMI_RAW_CMD['Payload']['Activate_Payload'][0]} 2666c998f75STony Lee Should Contain ${resp} ${IPMI_RAW_CMD['Payload']['Activate_Payload'][1]} 2676c998f75STony Lee 2686c998f75STony Lee 2696c998f75STony LeeDeactivate Payload 2706c998f75STony Lee [Documentation] Deactivate Payload. 2716c998f75STony Lee 2726c998f75STony Lee ${resp}= Run IPMI Command 2736c998f75STony Lee ... ${IPMI_RAW_CMD['Payload']['Deactivate_Payload'][0]} 2746c998f75STony Lee Should Be Empty ${resp} 275a2255de5Snagarjunb22 276a2255de5Snagarjunb22 277a2255de5Snagarjunb22Get User Access Payload For Given Channel 278a2255de5Snagarjunb22 [Documentation] Execute get user access payload IPMI command for given channel 279a2255de5Snagarjunb22 ... and return response. 280a2255de5Snagarjunb22 [Arguments] ${user_id} ${channel_number}=${CHANNEL_NUMBER} 281a2255de5Snagarjunb22 282a2255de5Snagarjunb22 # Description of argument(s): 283a2255de5Snagarjunb22 # user_id The user ID (e.g. "1", "2", etc.). 284a2255de5Snagarjunb22 # channel_number Input channel number(e.g. "1", "2"). 285a2255de5Snagarjunb22 286a2255de5Snagarjunb22 ${raw_command}= Catenate ${IPMI_RAW_CMD['Payload']['Get_User_Access_Payload'][0]} 287a2255de5Snagarjunb22 ... ${channel_number} ${user_id} 288372cd862Sishwaryamathim ${resp}= Run IPMI Command ${raw_command} 289409df05dSGeorge Keishing RETURN ${resp} 290a2255de5Snagarjunb22 291a2255de5Snagarjunb22 292a2255de5Snagarjunb22Create And Verify IPMI User 293a2255de5Snagarjunb22 [Documentation] Create IPMI User, set password, set privilege and enable the user. 294a2255de5Snagarjunb22 [Arguments] ${user_privilege_level}=${admin_level_priv} ${privilege}=Administrator 295a2255de5Snagarjunb22 296a2255de5Snagarjunb22 # Description of argument(s): 297a2255de5Snagarjunb22 # user_privilege_level User Privilege level in integer. 298a2255de5Snagarjunb22 # (e.g. 4-Administrator, 3-Operator, 2-Readonly). 299a2255de5Snagarjunb22 # privilege User Privilege in Wordings. 300a2255de5Snagarjunb22 # (e.g. "Administrator", "Operator", "ReadOnly"). 301a2255de5Snagarjunb22 302a2255de5Snagarjunb22 ${random_user_id} ${random_user_name}= Create Random IPMI User 303a2255de5Snagarjunb22 Set User Password ${random_user_id} ${new_user_passwd} 16 304a2255de5Snagarjunb22 Set And Verify User Access Privilege ${random_user_id} ${user_privilege_level} 305a2255de5Snagarjunb22 Verify Username And Password ${random_user_name} ${new_user_passwd} L=${privilege} 306a2255de5Snagarjunb22 307409df05dSGeorge Keishing RETURN ${random_user_id} ${random_user_name} 308a2255de5Snagarjunb22 309a2255de5Snagarjunb22 310a2255de5Snagarjunb22Set User Password 311a2255de5Snagarjunb22 [Documentation] Set user password for given user ID. 312a2255de5Snagarjunb22 [Arguments] ${user_id} ${password} ${password_option} 313a2255de5Snagarjunb22 314a2255de5Snagarjunb22 # Description of argument(s): 315a2255de5Snagarjunb22 # user_id The user ID (e.g. "1", "2", etc.). 316a2255de5Snagarjunb22 # password The user password (e.g. "0penBmc", "0penBmc1", etc.). 317a2255de5Snagarjunb22 # password_option Password length option to be given in IPMI command (e.g. "16", "20"). 318a2255de5Snagarjunb22 319a2255de5Snagarjunb22 Run IPMI Standard Command user set password ${user_id} ${password} ${password_option} 320a2255de5Snagarjunb22 321a2255de5Snagarjunb22Set And Verify User Access Privilege 322a2255de5Snagarjunb22 [Documentation] Set User Access Privilege, enable and verify user for given user ID. 323a2255de5Snagarjunb22 [Arguments] ${user_id} ${privilege_level} 324a2255de5Snagarjunb22 325a2255de5Snagarjunb22 # Description of argument(s): 326a2255de5Snagarjunb22 # user_id The user ID (e.g. "1", "2", etc.). 327a2255de5Snagarjunb22 # privilege_level User Privilege level in hex value. 328a2255de5Snagarjunb22 # (e.g. 0x04-Administrator, 0x03-Operator, 0x02-Readonly). 329a2255de5Snagarjunb22 330a2255de5Snagarjunb22 Set Channel Access ${_user_id} ipmi=on privilege=${privilege_level} 331a2255de5Snagarjunb22 332a2255de5Snagarjunb22 # Delay added for user privilege to get set. 333a2255de5Snagarjunb22 Sleep 5s 334a2255de5Snagarjunb22 335a2255de5Snagarjunb22 Enable IPMI User And Verify ${user_id} 336a2255de5Snagarjunb22 337a2255de5Snagarjunb22 338a2255de5Snagarjunb22Verify Username And Password 339a2255de5Snagarjunb22 [Documentation] Verify that newly created user is able to run IPMI command 340a2255de5Snagarjunb22 ... with given username and password. 341a2255de5Snagarjunb22 [Arguments] ${username} ${password} &{options} 342a2255de5Snagarjunb22 343a2255de5Snagarjunb22 # Description of argument(s): 344a2255de5Snagarjunb22 # username The user name (e.g. "root", "robert", etc.). 345a2255de5Snagarjunb22 # password The user password (e.g. "0penBmc", "0penBmc1", etc.). 346a2255de5Snagarjunb22 # options Additional ipmitool command options (e.g "-L=Operator","-C=3"). 347a2255de5Snagarjunb22 348372cd862Sishwaryamathim Wait Until Keyword Succeeds 15 sec 5 sec Run IPMI Command 349a2255de5Snagarjunb22 ... ${IPMI_RAW_CMD['Device GUID']['Get'][0]} U=${username} P=${password} &{options} 350a2255de5Snagarjunb22 351a2255de5Snagarjunb22 352a2255de5Snagarjunb22Verify Standard Payload 353a2255de5Snagarjunb22 [Documentation] Verify standard payload is disabled or enabled. 354a2255de5Snagarjunb22 [Arguments] ${user_id} ${user_name} ${standard_payload}=Enabled 355a2255de5Snagarjunb22 356a2255de5Snagarjunb22 # Description of argument(s): 357a2255de5Snagarjunb22 # user_id The user ID (e.g. "1", "2", etc.). 358a2255de5Snagarjunb22 # username The user name (e.g. "root", "robert", etc.). 359a2255de5Snagarjunb22 # standard_payload Enabled or Disabled. 360a2255de5Snagarjunb22 361a2255de5Snagarjunb22 # Verify the standard payload 1 (sol) is disabled. 362a2255de5Snagarjunb22 ${get_user_access_payload}= Get User Access Payload For Given Channel ${user_id} 363a2255de5Snagarjunb22 @{get_user_access_cmd_resp_list}= Split String ${get_user_access_payload} 364a2255de5Snagarjunb22 365a2255de5Snagarjunb22 Run Keyword If '${standard_payload}' == 'Disabled' 366a2255de5Snagarjunb22 ... Should Be Equal ${get_user_access_cmd_resp_list}[0] 00 367a2255de5Snagarjunb22 ... ELSE 368a2255de5Snagarjunb22 ... Should Be Equal ${get_user_access_cmd_resp_list}[0] 02 369a2255de5Snagarjunb22 370a2255de5Snagarjunb22 Run Keyword If '${standard_payload}' == 'Disabled' 371a2255de5Snagarjunb22 ... Verify Sol Activate Disabled ${user_name} 372a2255de5Snagarjunb22 373a2255de5Snagarjunb22 374a2255de5Snagarjunb22Verify Sol Activate Disabled 375a2255de5Snagarjunb22 [Documentation] Verify SOL activate IPMI command is not working. 376a2255de5Snagarjunb22 [Arguments] ${user_name} 377a2255de5Snagarjunb22 378a2255de5Snagarjunb22 # Description of argument(s): 379a2255de5Snagarjunb22 # username The user name (e.g. "root", "robert", etc.). 380a2255de5Snagarjunb22 381a2255de5Snagarjunb22 ${resp}= Run External IPMI Standard Command 382a2255de5Snagarjunb22 ... sol activate expected_rc=${1} U=${username} P=${new_user_passwd} 383a2255de5Snagarjunb22 384a2255de5Snagarjunb22 Should Contain ${resp} SOL payload disabled 385a2255de5Snagarjunb22 386a2255de5Snagarjunb22 387a2255de5Snagarjunb22Set User Access Payload For Given User 388a2255de5Snagarjunb22 [Documentation] Set the user access payload on given user, channel and return response. 389a91601b1SGeorge Keishing [Arguments] ${user_id} ${operation_mode}=Enable ${oempayload_value}=0x00 390a91601b1SGeorge Keishing ... ${standard_payload_value}=0x02 391a2255de5Snagarjunb22 392a2255de5Snagarjunb22 # Description of argument(s): 393a2255de5Snagarjunb22 # user_id The user ID (e.g. "1", "2", etc.). 394a2255de5Snagarjunb22 # operation_mode Enable or Disable payload type. 395a2255de5Snagarjunb22 # oempayload_value Oempayload in hex (e.g. "0x00", "0x01", "0x02", "0x04" etc). 396a2255de5Snagarjunb22 # standard_payload_value Standard payload type IPMI or SOL. 397a2255de5Snagarjunb22 # (e.g. 0x01 - IPMI, 0x02- SOL). 398a2255de5Snagarjunb22 399a2255de5Snagarjunb22 # If operation mode is disable 2nd byte of raw command is 4${user_id}. 400a2255de5Snagarjunb22 # (e.g) 2n byte will be 0x4a (if user_id is a). 401a2255de5Snagarjunb22 # If operation mode is enable 2nd byte of raw command is 0${user_id}. 402a2255de5Snagarjunb22 # (e.g.) 3rd byte will be 0x0a (if user_id is a). 403a2255de5Snagarjunb22 # 0x02- standard payload for SOL, 0x01 standard payload for IPMI. 404a2255de5Snagarjunb22 # 3rd byte represent standard payload enables 1 (SOL). 405a2255de5Snagarjunb22 # 4th to 6th byte represent standard payload enables 2 and OEM payload 1 & 2 respectively. 406a2255de5Snagarjunb22 407a2255de5Snagarjunb22 ${operation_mode_value}= Set Variable If '${operation_mode}' == 'Enable' 408a2255de5Snagarjunb22 ... 0 4 409a2255de5Snagarjunb22 ${set_cmd}= Catenate ${IPMI_RAW_CMD['Payload']['Set_User_Access_Payload'][0]} 410a2255de5Snagarjunb22 ... ${CHANNEL_NUMBER} 0x${operation_mode_value}${user_id} ${standard_payload_value} 0x00 ${oempayload_value} 0x00 411a2255de5Snagarjunb22 412a2255de5Snagarjunb22 ${resp}= Run IPMI Command ${set_cmd} 413a2255de5Snagarjunb22 414409df05dSGeorge Keishing RETURN ${resp} 415765535acSnagarjunb 416765535acSnagarjunb 417765535acSnagarjunbGet Invalid User ID 418765535acSnagarjunb [Documentation] Get random invalid user ID using "channel getaccess" IPMI standard command. 419765535acSnagarjunb 420765535acSnagarjunb # Python module: get_user_info(userid, channel_number=1) 42126499145SNagarjun B ${user_info}= Get User Info ${EMPTY} ${CHANNEL_NUMBER} 422765535acSnagarjunb ${user_info}= Filter Struct ${user_info} [('user_name', None)] invert=1 423765535acSnagarjunb ${empty_user_info}= Filter Struct ${user_info} [('user_name', '')] 424765535acSnagarjunb @{invalid_userid_list}= Create List 425765535acSnagarjunb FOR ${user_record} IN @{empty_user_info} 426765535acSnagarjunb Append To List ${invalid_userid_list} ${user_record['user_id']} 427765535acSnagarjunb END 428765535acSnagarjunb ${invalid_user_id}= Evaluate random.choice(${invalid_userid_list}) random 429765535acSnagarjunb 430409df05dSGeorge Keishing RETURN ${invalid_user_id} 431765535acSnagarjunb 432765535acSnagarjunb 433765535acSnagarjunbVerify Set User Access Payload For Invalid Channel 434765535acSnagarjunb [Documentation] Verify set user payload command for invalid channels. 435765535acSnagarjunb [Arguments] ${user_id} ${channel_number} 436765535acSnagarjunb 437765535acSnagarjunb # Description of argument(s): 438765535acSnagarjunb # user_id The user ID (e.g. "1", "2", etc.). 439765535acSnagarjunb # channel_number Input channel number. 440765535acSnagarjunb 441765535acSnagarjunb ${channel_number}= Convert To Hex ${channel_number} prefix=0x 442765535acSnagarjunb ${user_id}= Convert To Hex ${user_id} prefix=0x 443765535acSnagarjunb ${raw_cmd}= Catenate ${IPMI_RAW_CMD['Payload']['Set_User_Access_Payload'][0]} 444765535acSnagarjunb ... ${channel_number} ${user_id} 0x02 0x00 0x00 0x00 445765535acSnagarjunb 446765535acSnagarjunb Verify Invalid IPMI Command ${raw_cmd} 0xcc 447765535acSnagarjunb 448765535acSnagarjunb 449765535acSnagarjunbVerify Get User Access Payload For Invalid User Or Channel 450765535acSnagarjunb [Documentation] Verify get user payload command for invalid userid or invalid channels. 451765535acSnagarjunb [Arguments] ${user_id} ${channel_number} 452765535acSnagarjunb 453765535acSnagarjunb # Description of argument(s): 454765535acSnagarjunb # user_id The user ID (e.g. "1", "2", etc.). 455765535acSnagarjunb # channel_number Input channel number. 456765535acSnagarjunb 457765535acSnagarjunb ${channel_number}= Convert To Hex ${channel_number} prefix=0x 458765535acSnagarjunb ${user_id}= Convert To Hex ${user_id} prefix=0x 459765535acSnagarjunb ${raw_cmd}= Catenate ${IPMI_RAW_CMD['Payload']['Get_User_Access_Payload'][0]} 460765535acSnagarjunb ... ${channel_number} ${user_id} 461765535acSnagarjunb 462765535acSnagarjunb Verify Invalid IPMI Command ${raw_cmd} 0xcc 46393e6e242Snagarjunb22 46493e6e242Snagarjunb22 46593e6e242Snagarjunb22Verify Payload Type Version 46693e6e242Snagarjunb22 [Documentation] Verify supported payload version. 46793e6e242Snagarjunb22 [Arguments] ${channel_number} &{payload_type_dict} 46893e6e242Snagarjunb22 46993e6e242Snagarjunb22 # Description of argument(s): 47093e6e242Snagarjunb22 # channel_number Input channel number. 47193e6e242Snagarjunb22 # payload_type_dict Supported payload type in dictionary type. 47293e6e242Snagarjunb22 # standard_payload_types and session_setup_payload_types which we use 47393e6e242Snagarjunb22 # in this keyword are defined in variable section. 47493e6e242Snagarjunb22 47593e6e242Snagarjunb22 FOR ${payload_type_name} ${payload_type_number} IN &{payload_type_dict} 47693e6e242Snagarjunb22 ${get_cmd}= Catenate ${IPMI_RAW_CMD['Payload']['Get_Channel_Payload_Version'][0]} 47793e6e242Snagarjunb22 ... ${channel_number} ${payload_type_number} 47893e6e242Snagarjunb22 479372cd862Sishwaryamathim ${resp}= Run IPMI Command ${get_cmd} 48093e6e242Snagarjunb22 ${resp}= Strip String ${resp} 48193e6e242Snagarjunb22 Should Be Equal ${resp} 10 48293e6e242Snagarjunb22 END 48393e6e242Snagarjunb22 48493e6e242Snagarjunb22 48593e6e242Snagarjunb22Verify Payload Version For Invalid Channel 48693e6e242Snagarjunb22 [Documentation] Verify payload version for invalid channel. 48793e6e242Snagarjunb22 [Arguments] ${channel_number} &{payload_type_dict} 48893e6e242Snagarjunb22 48993e6e242Snagarjunb22 # Description of argument(s): 49093e6e242Snagarjunb22 # channel_number Input channel number. 49193e6e242Snagarjunb22 # payload_type_dict Supported payload type in dictionary type. 49293e6e242Snagarjunb22 # standard_payload_types and session_setup_payload_types which we use 49393e6e242Snagarjunb22 # in this keyword are defined in variable section. 49493e6e242Snagarjunb22 49593e6e242Snagarjunb22 ${channel_number}= Convert To Hex ${channel_number} prefix=0x 49693e6e242Snagarjunb22 FOR ${payload_type_name} ${payload_type_number} IN &{payload_type_dict} 49793e6e242Snagarjunb22 ${get_cmd}= Catenate ${IPMI_RAW_CMD['Payload']['Get_Channel_Payload_Version'][0]} 49893e6e242Snagarjunb22 ... ${channel_number} ${payload_type_number} 49993e6e242Snagarjunb22 50093e6e242Snagarjunb22 Verify Invalid IPMI Command ${get_cmd} 0xcc 50193e6e242Snagarjunb22 END 50293e6e242Snagarjunb22 50393e6e242Snagarjunb22 50493e6e242Snagarjunb22Verify Payload Version 50593e6e242Snagarjunb22 [Documentation] Verify supported payload version on given channel number. 50693e6e242Snagarjunb22 [Arguments] ${channel_number} 50793e6e242Snagarjunb22 50893e6e242Snagarjunb22 # Description of argument(s): 50993e6e242Snagarjunb22 # channel_number Input channel number. 51093e6e242Snagarjunb22 51193e6e242Snagarjunb22 Verify Payload Type Version ${channel_number} &{standard_payload_types} 51293e6e242Snagarjunb22 Verify Payload Type Version ${channel_number} &{session_setup_payload_types} 51393e6e242Snagarjunb22 51493e6e242Snagarjunb22 51593e6e242Snagarjunb22Verify Payload Support 51693e6e242Snagarjunb22 [Documentation] Verify payload support on given channel number. 51793e6e242Snagarjunb22 [Arguments] ${channel_number} ${invalid_channel}=${0} 51893e6e242Snagarjunb22 51993e6e242Snagarjunb22 # Description of argument(s): 52093e6e242Snagarjunb22 # channel_number Input channel number. 52193e6e242Snagarjunb22 # invalid_channel This argument indicates whether we checking payload support command 52293e6e242Snagarjunb22 # for Invalid channel or not. 52393e6e242Snagarjunb22 # (e.g. 1 indicates checking for invalid channel, 0 indicates valid channel). 52493e6e242Snagarjunb22 52593e6e242Snagarjunb22 ${channel_number}= Convert To Hex ${channel_number} prefix=0x 52693e6e242Snagarjunb22 ${raw_cmd}= Catenate ${IPMI_RAW_CMD['Payload']['Get_Channel_Payload_Support'][0]} ${channel_number} 52793e6e242Snagarjunb22 52893e6e242Snagarjunb22 Run Keyword And Return If '${invalid_channel}' == '${1}' 52993e6e242Snagarjunb22 ... Verify Invalid IPMI Command ${raw_cmd} 0xcc 53093e6e242Snagarjunb22 53193e6e242Snagarjunb22 # will be executed only if invalid_channel == 0. 532372cd862Sishwaryamathim ${resp}= Run IPMI Command ${raw_cmd} 53393e6e242Snagarjunb22 53493e6e242Snagarjunb22 ${resp}= Strip String ${resp} 53593e6e242Snagarjunb22 ${expected_resp}= Catenate ${standard_payload_type_resp} ${session_setup_payload_resp} 00 00 00 00 53693e6e242Snagarjunb22 Should Be Equal ${expected_resp} ${resp} 537