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 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_and_Verify_via_Redfish 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 207*** Keywords *** 208 209Set Session Privilege Level And Verify 210 [Documentation] Set session privilege with given privilege level and verify the response with 211 ... expected level. 212 [Arguments] ${privilege_level} ${expected_level} 213 # Description of argument(s): 214 # privilege_level Requested Privilege Level. 215 # expected_level New Privilege Level (or present level if ‘return present privilege level’ was selected). 216 217 ${resp}= Run IPMI Command 218 ... 0x06 0x3b ${privilege_level} 219 Should Contain ${resp} ${expected_level} 220 221 222Set Invalid Session Privilege Level And Verify 223 [Documentation] Set invalid session privilege level and verify the response. 224 [Arguments] ${privilege_level} 225 # Description of argument(s): 226 # privilege_level Requested Privilege Level. 227 228 # Verify requested level exceeds Channel and/or User Privilege Limit. 229 ${msg}= Run Keyword And Expect Error * Run IPMI Command 230 ... 0x06 0x3b ${privilege_level} 231 Should Contain ${msg} Unknown rsp=0x81 232