1*** Settings *** 2 3Documentation Module to test IPMI asset tag functionality. 4Resource ../lib/ipmi_client.robot 5Resource ../lib/openbmc_ffdc.robot 6Variables ../data/ipmi_raw_cmd_table.py 7Variables ../data/ipmi_variable.py 8Library ../lib/bmc_network_utils.py 9Library ../lib/ipmi_utils.py 10 11Test Teardown FFDC On Test Case Fail 12 13*** Test Cases *** 14 15Verify Get DCMI Capabilities 16 [Documentation] Verify get DCMI capabilities command output. 17 [Tags] Verify_Get_DCMI_Capabilities 18 ${cmd_output}= Run IPMI Standard Command dcmi discover 19 20 @{supported_capabilities}= Create List 21 # Supported DCMI capabilities: 22 ... Mandatory platform capabilties 23 ... Optional platform capabilties 24 ... Power management available 25 ... Managebility access capabilties 26 ... In-band KCS channel available 27 # Mandatory platform attributes: 28 ... 200 SEL entries 29 ... SEL automatic rollover is enabled 30 # Optional Platform Attributes: 31 ... Slave address of device: 0h (8bits)(Satellite/External controller) 32 ... Channel number is 0h (Primary BMC) 33 ... Device revision is 0 34 # Manageability Access Attributes: 35 ... Primary LAN channel number: 1 is available 36 ... Secondary LAN channel is not available for OOB 37 ... No serial channel is available 38 39 FOR ${capability} IN @{supported_capabilities} 40 Should Contain ${cmd_output} ${capability} ignore_case=True 41 ... msg=Supported DCMI capabilities not present. 42 END 43 44 45Test Get Self Test Results via IPMI Raw Command 46 [Documentation] Get self test results via IPMI raw command and verify the output. 47 [Tags] Test_Get_Self_Test_Results_via_IPMI_Raw_Command 48 49 ${resp}= Run IPMI Standard Command raw ${IPMI_RAW_CMD['Self_Test_Results']['Get'][0]} 50 51 # 55h = No error. All Self Tests Passed. 52 # 56h = Self Test function not implemented in this controller. 53 Should Contain Any ${resp} 55 00 56 00 54 55 56Test Get Device GUID Via IPMI Raw Command 57 [Documentation] Get device GUID via IPMI raw command and verify it using Redfish. 58 [Tags] Test_Get_Device_GUID_Via_IPMI_Raw_Command 59 [Teardown] Run Keywords Redfish.Logout AND FFDC On Test Case Fail 60 # Get GUIDS via IPMI. 61 # This should match the /redfish/v1/Managers/bmc's UUID data. 62 ${guids}= Run IPMI Standard Command raw ${IPMI_RAW_CMD['Device GUID']['Get'][0]} 63 # Reverse the order and remove space delims. 64 ${guids}= Split String ${guids} 65 Reverse List ${guids} 66 ${guids}= Evaluate "".join(${guids}) 67 68 Redfish.Login 69 ${uuid}= Redfish.Get Attribute /redfish/v1/Managers/bmc UUID 70 ${uuid}= Remove String ${uuid} - 71 72 Rprint Vars guids uuid 73 Valid Value uuid ['${guids}'] 74 75 76Verify Get Channel Info via IPMI 77 [Documentation] Verify get channel info via IPMI. 78 [Tags] Verify_Get_Channel_Info_via_IPMI 79 80 # Get channel info via ipmi command "ipmitool channel info [channel number]". 81 # Verify channel info with files "channel_access_volatile.json", "channel_access_nv.json" 82 # and "channel_config.json" in BMC. 83 84 # Example output from 'Get Channel Info': 85 # channel_info: 86 # [channel_0x2_info]: 87 # [channel_medium_type]: 802.3 LAN 88 # [channel_protocol_type]: IPMB-1.0 89 # [session_support]: multi-session 90 # [active_session_count]: 0 91 # [protocol_vendor_id]: 7154 92 # [volatile(active)_settings]: 93 # [alerting]: enabled 94 # [per-message_auth]: enabled 95 # [user_level_auth]: enabled 96 # [access_mode]: always available 97 # [Non-Volatile Settings]: 98 # [alerting]: enabled 99 # [per-message_auth]: enabled 100 # [user_level_auth]: enabled 101 # [access_mode]: always available 102 103 ${channel_info_ipmi}= Get Channel Info ${CHANNEL_NUMBER} 104 ${active_channel_config}= Get Active Channel Config 105 ${channel_volatile_data_config}= Get Channel Access Config /run/ipmi/channel_access_volatile.json 106 ${channel_nv_data_config}= Get Channel Access Config /var/lib/ipmi/channel_access_nv.json 107 108 Rprint Vars channel_info_ipmi active_channel_config channel_volatile_data_config channel_nv_data_config 109 110 Valid Value medium_type_ipmi_conf_map['${channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['channel_medium_type']}'] 111 ... ['${active_channel_config['${CHANNEL_NUMBER}']['channel_info']['medium_type']}'] 112 113 Valid Value protocol_type_ipmi_conf_map['${channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['channel_protocol_type']}'] 114 ... ['${active_channel_config['${CHANNEL_NUMBER}']['channel_info']['protocol_type']}'] 115 116 Valid Value channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['session_support'] 117 ... ['${active_channel_config['${CHANNEL_NUMBER}']['channel_info']['session_supported']}'] 118 119 Valid Value channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['active_session_count'] 120 ... ['${active_channel_config['${CHANNEL_NUMBER}']['active_sessions']}'] 121 # IPMI Spec: The IPMI Enterprise Number is: 7154 (decimal) 122 Valid Value channel_info_ipmi['channel_0x${CHANNEL_NUMBER}_info']['protocol_vendor_id'] ['7154'] 123 124 # Verify volatile(active)_settings 125 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['volatile(active)_settings']['alerting']}'] 126 ... ['${channel_volatile_data_config['${CHANNEL_NUMBER}']['alerting_disabled']}'] 127 128 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['volatile(active)_settings']['per-message_auth']}'] 129 ... ['${channel_volatile_data_config['${CHANNEL_NUMBER}']['per_msg_auth_disabled']}'] 130 131 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['volatile(active)_settings']['user_level_auth']}'] 132 ... ['${channel_volatile_data_config['${CHANNEL_NUMBER}']['user_auth_disabled']}'] 133 134 Valid Value access_mode_ipmi_conf_map['${channel_info_ipmi['volatile(active)_settings']['access_mode']}'] 135 ... ['${channel_volatile_data_config['${CHANNEL_NUMBER}']['access_mode']}'] 136 137 # Verify Non-Volatile Settings 138 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['non-volatile_settings']['alerting']}'] 139 ... ['${channel_nv_data_config['${CHANNEL_NUMBER}']['alerting_disabled']}'] 140 141 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['non-volatile_settings']['per-message_auth']}'] 142 ... ['${channel_nv_data_config['${CHANNEL_NUMBER}']['per_msg_auth_disabled']}'] 143 144 Valid Value disabled_ipmi_conf_map['${channel_info_ipmi['non-volatile_settings']['user_level_auth']}'] 145 ... ['${channel_nv_data_config['${CHANNEL_NUMBER}']['user_auth_disabled']}'] 146 147 Valid Value access_mode_ipmi_conf_map['${channel_info_ipmi['non-volatile_settings']['access_mode']}'] 148 ... ['${channel_nv_data_config['${CHANNEL_NUMBER}']['access_mode']}'] 149 150 151Test Get Channel Authentication Capabilities via IPMI 152 [Documentation] Test get channel authentication capabilities via IPMI. 153 [Tags] Test_Get_Channel_Authentication_Capabilities_via_IPMI 154 155 ${channel_auth_cap}= Get Channel Auth Capabilities ${CHANNEL_NUMBER} 156 Rprint Vars channel_auth_cap 157 158 Valid Value channel_auth_cap['channel_number'] ['${CHANNEL_NUMBER}'] 159 Valid Value channel_auth_cap['kg_status'] ['default (all zeroes)'] 160 Valid Value channel_auth_cap['per_message_authentication'] ['enabled'] 161 Valid Value channel_auth_cap['user_level_authentication'] ['enabled'] 162 Valid Value channel_auth_cap['non-null_user_names_exist'] ['yes'] 163 Valid Value channel_auth_cap['null_user_names_exist'] ['no'] 164 Valid Value channel_auth_cap['anonymous_login_enabled'] ['no'] 165 Valid Value channel_auth_cap['channel_supports_ipmi_v1.5'] ['no'] 166 Valid Value channel_auth_cap['channel_supports_ipmi_v2.0'] ['yes'] 167 168 169Verify Set Session Privilege Level via IPMI Raw Command 170 [Documentation] Set session privilege with given privilege level and verify the response with 171 ... expected level. 172 [Tags] Verify_Set_Session_Privilege_Level_via_IPMI_Raw_Command 173 [Template] Set Session Privilege Level And Verify 174 175 # privilege_level expected_level 176 0x00 04 177 0x02 02 178 0x03 03 179 0x04 04 180 181 182Verify Set Invalid Session Privilege Level Via IPMI Raw Command 183 [Documentation] Verify set invalid session privilege level via IPMI raw command. 184 [Tags] Verify_Set_Invalid_Session_Privilege_Level_Via_IPMI_Raw_Command 185 [Template] Set Invalid Session Privilege Level And Verify 186 187 # invalid_privilege_level 188 0x05 189 0x06 190 0x07 191 0x0F 192 193 194Verify Close Session Via IPMI 195 [Documentation] Verify close session via IPMI. 196 [Tags] Verify_Close_Session_Via_IPMI 197 198 # The "close session command" can be tested with any out-of-band IPMI command. 199 # When the session is about to close, it will execute the close session command at the end. 200 201 ${cmd}= Catenate mc info -vvv 2>&1 | grep "Closed Session" 202 ${cmd_output}= Run External IPMI Standard Command ${cmd} 203 204 Should Contain ${cmd_output} Closed Session 205 206 207Verify Chassis Identify via IPMI 208 [Documentation] Set chassis identify using IPMI and verify. 209 [Tags] Verify_Chassis_Identify_via_IPMI 210 [Setup] Redfish.Login 211 [Teardown] Redfish.logout 212 213 # Set to default "chassis identify" and verify that LED blinks for 15s. 214 Run IPMI Standard Command chassis identify 215 Verify Identify LED State Via Redfish Lit 216 217 Sleep 18s 218 Verify Identify LED State Via Redfish Off 219 220 # Set "chassis identify" to 10s and verify that the LED blinks for 10s. 221 Run IPMI Standard Command chassis identify 10 222 Verify Identify LED State Via Redfish Lit 223 224 Sleep 12s 225 Verify Identify LED State Via Redfish Off 226 227 228Verify Chassis Identify Off And Force Identify On via IPMI 229 [Documentation] Set chassis identify to "off" and "force" using IPMI and verify. 230 [Tags] Verify_Chassis_Identify_Off_And_Force_Identify_On_via_IPMI 231 [Setup] Redfish.Login 232 [Teardown] Redfish.logout 233 234 # Set the LED to "Force Identify On". 235 Run IPMI Standard Command chassis identify force 236 Verify Identify LED State Via Redfish Lit 237 238 # Set "chassis identify" to 0 and verify that the LED turns off. 239 Run IPMI Standard Command chassis identify 0 240 Verify Identify LED State Via Redfish Off 241 242 243*** Keywords *** 244 245Set Session Privilege Level And Verify 246 [Documentation] Set session privilege with given privilege level and verify the response with 247 ... expected level. 248 [Arguments] ${privilege_level} ${expected_level} 249 # Description of argument(s): 250 # privilege_level Requested Privilege Level. 251 # expected_level New Privilege Level (or present level if ‘return present privilege level’ was selected). 252 253 ${resp}= Run External IPMI Raw Command 254 ... 0x06 0x3b ${privilege_level} 255 Should Contain ${resp} ${expected_level} 256 257 258Set Invalid Session Privilege Level And Verify 259 [Documentation] Set invalid session privilege level and verify the response. 260 [Arguments] ${privilege_level} 261 # Description of argument(s): 262 # privilege_level Requested Privilege Level. 263 264 # Verify requested level exceeds Channel and/or User Privilege Limit. 265 ${msg}= Run Keyword And Expect Error * Run External IPMI Raw Command 266 ... 0x06 0x3b ${privilege_level} 267 Should Contain ${msg} Unknown rsp=0x81 268 269 270Verify Identify LED State Via Redfish 271 [Documentation] Verify that Redfish identify LED system with given state. 272 [Arguments] ${expected_state} 273 # Description of argument(s): 274 # expected_led_status Expected value of Identify LED. 275 276 ${led_value}= Redfish.Get Attribute /redfish/v1/Systems/system IndicatorLED 277 Should Be True '${led_value}' == '${expected_state}' 278