blob: 9c3aef01efd0ff18b513fef9d554c60c83d2a658 [file] [log] [blame]
chithrag015f7872022-03-21 09:42:01 +00001*** Settings ***
2
3Documentation Module to test IPMI System Info Parameters functionality.
4... Following parameters are verfied in the script,
5... 1. Set In Progress - param 0,
6... 2. System Firmware Version - param 1,
7... 3. System Name - param 2,
8... 4. Primary OS Name - param 3,
9... 5. OS Name - param 4,
10... 6. Present OS Version Number - param 5.
11
chithrag015f7872022-03-21 09:42:01 +000012Resource ../lib/ipmi_client.robot
13Resource ../lib/openbmc_ffdc.robot
ganesanbd0c4b802023-04-28 18:29:38 +000014Library Collections
15Library String
chithrag015f7872022-03-21 09:42:01 +000016Library ../lib/ipmi_utils.py
17Variables ../data/ipmi_raw_cmd_table.py
18
19Suite Setup Suite Setup Execution
nagarjunb22c46f7942022-05-11 10:33:17 +053020Test Teardown Run Keywords Restore Default Configuration AND FFDC On Test Case Fail
chithrag015f7872022-03-21 09:42:01 +000021
22
23*** Variables ***
24
25# Converting to hexadecimal provides 14 bytes so string length is 0e for param 3, 4, 5.
26${valid_os_version_name} Version2.12345
27${invalid_os_version} ${valid_os_version_name}${6789}
28
29
30*** Test Cases ***
31
32Verify System Info Set In Progress
33 [Documentation] Verify Set In Progress of System Info Parameter,
34 ... to set the set-in-progress and set complete state via IPMI,
35 ... and verify whether the state is updated and restored as expected.
36 [Tags] Verify_System_Info_Set_In_Progress
37
38 # Set In Progress - set complete.
39 Set System Info Set In Progress 0x00
40
41 # Get System Info Parameter for param 0 - Set In Progress.
42 # Check if set-in-progress set to set complete.
43 ${complete}= Get System Info Set In Progress
44 # ${complete[0]} - parameter version.
45 # ${complete[1]} - Configuration parameter data,
46 # here, 01h (set in progress).
47 Should Be Equal ${complete[1]} 00
48
49 # Set In Progress - set in progress.
50 Set System Info Set In Progress 0x01
51
52 # Get System Info Parameter for param 0 - Set In Progress.
53 # Check if set-in-progress set to set inprogress.
54 ${inprogress}= Get System Info Set In Progress
55 # ${inprogress[0]} - parameter version.
56 # ${inprogress[1]} - Configuration parameter data,
57 # here, 01h (set in progress).
58 Should Be Equal ${inprogress[1]} 01
59
60
61Verify System Info Set In Progress After BMC Reboot
62 [Documentation] Verify Set In Progress changes to default,
63 ... after bmc reboot of System Info Parameter via IPMI,
64 ... and verify whether the default setting is reflected.
65 [Tags] Verify_System_Info_Set_In_Progress_After_BMC_Reboot
66
67 # Set the parameter 0 - Set_In_Progress to set in progress state.
68 Set System Info Set In Progress 0x01
chithrag015f7872022-03-21 09:42:01 +000069 # Get System Info Parameter for param 0 - Set In Progress.
70 # Check if set-in-progress set to set in progress.
71 ${inprogress}= Get System Info Set In Progress
72 # ${inprogress[0]} - parameter version.
73 # ${inprogress[1]} - Configuration parameter data,
74 # here, 01h (set in progress).
75 Should Be Equal ${inprogress[1]} 01
76
77 # Reboot BMC.
nagarjunb22c46f7942022-05-11 10:33:17 +053078 IPMI MC Reset Cold (run)
chithrag015f7872022-03-21 09:42:01 +000079
80 # Since the param 0 - Set In Progress is volatile,
81 # Default value should be updated after BMC reboot.
82 ${state}= Get System Info Set In Progress
83 # ${state[0]} - parameter version.
84 # ${state[1]} - Configuration parameter data,
85 # here, 00h (set complete), 01h (set in progress),
86 # 10 (commit write), 11 (reserved).
87 Should Be Equal ${state[1]} ${set_in_progress}
88
89
90Verify Get System Info Set In Progress With Invalid Data Length
91 [Documentation] Verify Get System Info Parameter Set In Progress via IPMI with extra bytes,
92 ... and expect to get the error message for invalid length.
93 [Tags] Verify_Get_System_Info_Set_In_Progress_With_Invalid_Data_Length
94
George Keishing6e641262022-05-05 10:46:22 -050095 # Check if the Get System Info Parameter for param 0 - set in progress throws
96 # error for invalid data length.
chithrag015f7872022-03-21 09:42:01 +000097 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Get'][1]}*
98 ... Run IPMI Standard Command
99 ... raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Get'][0]} 0x00
100
101
102Verify Set System Info Set In Progress With Invalid Data Length
103 [Documentation] Verify Set System Info Parameter Set In Progress via IPMI with extra bytes,
104 ... and expect to get the error message for invalid length.
105 [Tags] Verify_Set_System_Info_Set_In_Progress_With_Invalid_Data_Length
106
George Keishing6e641262022-05-05 10:46:22 -0500107 # Check if the Set System Info Parameter for param 0 - set in progress throws
108 # error for invalid data length.
chithrag015f7872022-03-21 09:42:01 +0000109 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][1]}*
110 ... Run IPMI Standard Command
111 ... raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][0]} 0x00 0x00
112
113
114Verify Set System Info Set In Progress With Invalid State
115 [Documentation] Verify Set System Info Parameter Set In Progress via IPMI invalid state,
116 ... and expect to get the error message for invalid data.
117 [Tags] Verify_Set_System_Info_Set_In_Progress_With_Invalid_State
118
119 # Check if the Set System Info Parameter for param 0 - set in progress throws error for invalid State.
120 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][2]}*
121 ... Run IPMI Standard Command
122 ... raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][0]} 0x04
123
124
125Verify System Info System Firmware Version
126 [Documentation] Verify System Firmware Version of System Info Parameter via IPMI,
127 ... and verify whether the version is updated.
128 [Tags] Verify_System_Info_System_Firmware_Version
129
130 # Generate a random 14 byte data,
131 # i,e 16-byte block for system firmware name string data.
132 # data 1 - Encoding string type,
133 # data 2 - string length (in bytes, 1-based),
134 # data 3 to 16 - system firmware name string data - 14 bytes.
135 ${firmware_version}= Generate Random String 14 [LETTERS]
136 ${firmware_version} ${fw_hex_data}= Identify Request Data ${firmware_version}
137 # Consider random string generated is 'zwclMXwfczMvcY'.
138 # Set the System Firmware Version of System Info Parameter.
139 Set System Firmware Version ${firmware_version}
140 # Get the response of System Firmware Version,
141 # and compare against randomly generated data bytes.
142 ${fw_version}= Get System Firmware Version
143 # The response data will something be like,
144 # ${fw_version}= ["11","00","00","0e","7a","77","63","6c","4d","58","77","66","63","7a","4d","76"].
145 Should Be Equal ${fw_version[4:]} ${fw_hex_data}
146
147
148Verify Get System Info System Firmware Version With Invalid Data Length
149 [Documentation] Verify Get System Info Parameter System Firmware Version via IPMI with extra bytes,
150 ... and expect to get the error message for invalid length.
151 [Tags] Verify_Get_System_Info_System_Firmware_Version_With_Invalid_Data_Length
152
George Keishing6e641262022-05-05 10:46:22 -0500153 # Check if the Get System Info Parameter for param 1 - System Firmware Version throws
154 # error for invalid data length.
chithrag015f7872022-03-21 09:42:01 +0000155 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Get'][1]}*
156 ... Run IPMI Standard Command
157 ... raw ${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Get'][0]} 0x00
158
159
160Verify Set System Info System Firmware Version With Invalid Data Length
161 [Documentation] Verify Set System Info Parameter System Firmware Version via IPMI with extra bytes,
162 ... and expect to get the error message for invalid length.
163 [Tags] Verify_Set_System_Info_System_Firmware_Version_With_Invalid_Data_Length
164
165 # Generate a random 15 byte data,
166 # i,e 16-byte block for system firmware name string data,
167 # data 1 - Encoding string type,
168 # data 2 - string length (in bytes, 1-based),
169 # data 3 to 16 - system firmware name string data - 14 bytes,
170 # data 17 - extra byte.
171 ${firmware_version}= Generate Random String 15 [LETTERS]
172 ${firmware_version} ${fw_hex_data}= Identify Request Data ${firmware_version}
173 # Consider random string generated is 'zwclMXwfczMvcYz'.
174 # The request data bytes will be 15 bytes, in which 14 bytes are only expected.
George Keishing6e641262022-05-05 10:46:22 -0500175 # Check if the Set System Info Parameter for param 1 - System Firmware Version throws
176 # error for invalid request data.
chithrag015f7872022-03-21 09:42:01 +0000177 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Set'][1]}*
178 ... Run IPMI Standard Command
179 ... raw ${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Set'][0]} ${firmware_version}
180
181
182Verify System Info System Name
183 [Documentation] Verify System Name of System Info Parameter via IPMI by setting,
184 ... a random system name and verify whether it is updated as expected.
185 [Tags] Verify_System_Info_System_Name
186
187 # Generate a random 14 byte data,
188 # i,e 16-byte block for system firmware name string data,
189 # data 1 - Encoding string type,
190 # data 2 - string length (in bytes, 1-based),
191 # data 3 to 16 - system firmware name string data - 14 bytes.
192 ${system_name}= Generate Random String 14 [LETTERS]
193 ${system_name} ${name_hex_data}= Identify Request Data ${system_name}
194 # Consider random string generated is 'zwclMXwfczMvcY'.
195
196 # Set System Name for System Info Parameter.
197 Set System Name ${system_name}
198
199 # Get the response of System Name,
200 # and compare against randomly generated data bytes.
201 ${sys_name}= Get System Name
202 # The response data will something be like,
203 # ${sys_name}= ["11","00","00","0e","7a","77","63","6c","4d","58","77","66","63","7a","4d","76"].
204 Should Be Equal ${sys_name[4:]} ${name_hex_data}
205
206
207Verify Get System Info System Name With Invalid Data Length
208 [Documentation] Verify Get System Info Parameter System Name via IPMI with extra bytes,
209 ... and expect to get the error message for invalid length.
210 [Tags] Verify_Get_System_Info_System_Name_With_Invalid_Data_Length
211
George Keishing6e641262022-05-05 10:46:22 -0500212 # Check if the Get System Info Parameter for param 2 - System Name throws error
213 # for invalid request data length.
chithrag015f7872022-03-21 09:42:01 +0000214 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Get'][1]}*
215 ... Run IPMI Standard Command
216 ... raw ${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Get'][0]} 0x00
217
218
219Verify Set System Info System Name With Invalid Data Length
220 [Documentation] Verify Set System Info Parameter System Name via IPMI with extra bytes,
221 ... and expect to get the error message for invalid length.
222 [Tags] Verify_Set_System_Info_System_Name_With_Invalid_Data_Length
223
224 # Generate a random 15 byte data,
225 # i,e 16-byte block for system firmware name string data,
226 # data 1 - Encoding string type,
227 # data 2 - string length (in bytes, 1-based),
228 # data 3 to 16 - system firmware name string data - 14 bytes,
229 # data 17 - extra byte.
230 ${system_name}= Generate Random String 15 [LETTERS]
231 ${system_name} ${name_hex_data}= Identify Request Data ${system_name}
232 # Consider random string generated is 'zwclMXwfczMvcYz'.
George Keishinge16f1582022-12-15 07:32:21 -0600233 # The request data bytes will be 15 bytes, in which 14 bytes are only expected.
chithrag015f7872022-03-21 09:42:01 +0000234
235 # Check if the Set System Info Parameter for param 2 - System Name throws error for invalid request data.
236 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Set'][1]}*
237 ... Run IPMI Standard Command
238 ... raw ${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Set'][0]} ${system_name}
239
240
241Verify System Info Primary OS Name
242 [Documentation] Verify Primary OS Name of System Info Parameter via IPMI,
243 ... by setting a valid os version and verify whether it is updated as expected.
244 [Tags] Verify_System_Info_Primary_OS_Name
245
246 # os_version_name given in variable section which is a 14 byte data.
247 ${os_name} ${os_hex_data}= Identify Request Data ${valid_os_version_name}
248
249 # Set Primary OS Name of System Info Parameter.
250 Set Primary OS Name ${os_name}
251
252 # Get Primary OS Name of System Info Parameter.
253 # Compare with the assigned os version name data.
254 ${pr_os}= Get Primary OS Name
255 # The response data will something be like,
256 # ${pr_os}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
257 Should Be Equal ${pr_os[4:]} ${os_hex_data}
258
259
chithrag015f7872022-03-21 09:42:01 +0000260Verify Get System Info Primary OS Name With Invalid Data Length
261 [Documentation] Verify Get System Info Parameter Primary OS Name via IPMI with extra bytes,
262 ... and expect to get the error message for invalid length.
263 [Tags] Verify_Get_System_Info_Primary_OS_Name_With_Invalid_Data_Length
264
George Keishing6e641262022-05-05 10:46:22 -0500265 # Check if the Get System Info Parameter for param 3 - Primary OS Name throws
266 # error for invalid request data.
nagarjunb22c46f7942022-05-11 10:33:17 +0530267 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param3_Primary_Operating_System_Name']['Get'][1]}*
chithrag015f7872022-03-21 09:42:01 +0000268 ... Run IPMI Standard Command
nagarjunb22c46f7942022-05-11 10:33:17 +0530269 ... raw ${IPMI_RAW_CMD['System_Info']['param3_Primary_Operating_System_Name']['Get'][0]} 0x00
chithrag015f7872022-03-21 09:42:01 +0000270
271
272Verify Set System Info Primary OS Name With Invalid Data Length
273 [Documentation] Verify setting invalid os version name to Primary OS Name,
274 ... of Set System Info Parameter via IPMI,
275 ... and expect to get the error message for invalid length.
276 [Tags] Verify_Set_System_Info_Primary_OS_Name_With_Invalid_Data_Length
277
278 # invalid_os_version given in variable section which is a 15 byte data,
279 # The actual request byte should be 16 byte data where,
280 # data 1 - Encoding string type,
281 # data 2 - string length (in bytes, 1-based),
282 # data 3 to 16 - system firmware name string data - 14 bytes,
283 # Here 15 bytes so, data 17 - extra byte.
284 ${os_name} ${name_hex_data}= Identify Request Data ${invalid_os_version}
285
George Keishing6e641262022-05-05 10:46:22 -0500286 # Check if the Set System Info Parameter for param 3 - Primary OS Name throws error
287 # for invalid data request.
nagarjunb22c46f7942022-05-11 10:33:17 +0530288 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param3_Primary_Operating_System_Name']['Set'][1]}*
chithrag015f7872022-03-21 09:42:01 +0000289 ... Run IPMI Standard Command
nagarjunb22c46f7942022-05-11 10:33:17 +0530290 ... raw ${IPMI_RAW_CMD['System_Info']['param3_Primary_Operating_System_Name']['Set'][0]} ${os_name}
chithrag015f7872022-03-21 09:42:01 +0000291
292
293Verify System Info OS Name
294 [Documentation] Verify setting valid os version to OS Name,
295 ... of System Info Parameter via IPMI and verify whether it updates as expected.
296 [Tags] Verify_System_Info_OS_Name
297
298 # os_version_name given in variable section which is a 14 byte data.
299 ${os_name} ${os_hex_data}= Identify Request Data ${valid_os_version_name}
300
301 # Set OS Name of System Info Parameters.
302 Set OS Name ${os_name}
303
304 # Get the OS Name and compare against given os_version_name.
305 ${sysos}= Get OS Name
306 # The response data will something be like,
307 # ${sysos}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
308 Should Be Equal ${sysos[4:]} ${os_hex_data}
309
310
311Verify System Info OS Name After BMC Reboot
312 [Documentation] Verify setting valid os version name for OS Name,
313 ... of System Info Parameter and verify it changes to default after BMC Reboot via IPMI.
314 [Tags] Verify_System_Info_OS_Name_After_BMC_Reboot
315
316 # os_version_name given in variable section which is a 14 byte data.
317 ${os_name} ${os_hex_data}= Identify Request Data ${valid_os_version_name}
318
319 # Set OS Name of System Info Parameters.
320 Set OS Name ${os_name}
321
322 # Get the OS Name and compare against given os_version_name.
323 ${sysos}= Get OS Name
324 # The response data will something be like,
325 # ${sysos}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
326 Should Be Equal ${sysos[4:]} ${os_hex_data}
327
328 # Cold Reset via IPMI
nagarjunb22c46f7942022-05-11 10:33:17 +0530329 IPMI MC Reset Cold (run)
chithrag015f7872022-03-21 09:42:01 +0000330
331 # Since OS Name is volatile,
332 # compare with response data of Get OS Name,
333 # with default OS Name.
334 ${sysos}= Get OS Name
335 # Should return default response data.
336 Should Be Equal ${sysos[2:]} ${default_os_name}
337
338
339Verify Get System Info OS Name With Invalid Data Length
340 [Documentation] Verify OS Name of Get System Info Parameter via IPMI,
341 ... with extra bytes, and expect to get the error message for invalid length.
342 [Tags] Verify_Get_System_Info_OS_Name_With_Invalid_Data_Length
343
344 # Check if the Get System Info Parameter for param 4 - OS Name throws error for invalid request data.
nagarjunb22c46f7942022-05-11 10:33:17 +0530345 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param4_Operating_System_Name']['Get'][1]}*
chithrag015f7872022-03-21 09:42:01 +0000346 ... Run IPMI Standard Command
nagarjunb22c46f7942022-05-11 10:33:17 +0530347 ... raw ${IPMI_RAW_CMD['System_Info']['param4_Operating_System_Name']['Get'][0]} 0x00
chithrag015f7872022-03-21 09:42:01 +0000348
349
350Verify Set System Info OS Name With Invalid Data Length
351 [Documentation] Verify setting invalid os version name to OS Name,
352 ... of Get System Info Parameter via IPMI,
353 ... and expect to get the error message for invalid length.
354 [Tags] Verify_Set_System_Info_OS_Name_With_Invalid_Data_Length
355
356 # invalid_os_version given in variable section which is a 15 byte data,
357 # The actual request byte should be 16 byte data where,
358 # data 1 - Encoding string type,
359 # data 2 - string length (in bytes, 1-based),
360 # data 3 to 16 - system firmware name string data - 14 bytes,
361 # Here 15 bytes so, data 17 - extra byte.
362 ${os_name} ${name_hex_data}= Identify Request Data ${invalid_os_version}
363
364 # Check if the Set System Info Parameter for param 4 - OS Name throws error for invalid request data.
nagarjunb22c46f7942022-05-11 10:33:17 +0530365 Run Keyword and Expect Error *${IPMI_RAW_CMD['System_Info']['param4_Operating_System_Name']['Set'][1]}*
chithrag015f7872022-03-21 09:42:01 +0000366 ... Run IPMI Standard Command
nagarjunb22c46f7942022-05-11 10:33:17 +0530367 ... raw ${IPMI_RAW_CMD['System_Info']['param4_Operating_System_Name']['Set'][0]} ${os_name}
chithrag015f7872022-03-21 09:42:01 +0000368
369
370Verify System Info Present OS Version Number
371 [Documentation] Verify setting valid os version for Present OS Version Number,
372 ... of System Info Parameter via IPMI and verify whether it is updated as expected.
373 [Tags] Verify_System_Info_Present_OS_Version_Number
374
375 # os_version_name given in variable section which is a 14 byte data.
376 ${os_name} ${os_hex_data}= Identify Request Data ${valid_os_version_name}
377
378 # Set Present OS Version Number for System Info Parameters.
379 Set Present OS Version Number ${os_name}
380
381 # Get Present OS Version Number for System Info Parameters,
382 # compare with response data of Get OS Name,
383 # with assigned os version name.
384 ${os_version}= Get Present OS Version Number
385 # The response data will something be like,
386 # ${os_version}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
387 Should Be Equal ${os_version[4:]} ${os_hex_data}
388
389
390Verify Get System Info Present OS Version Number With Invalid Data Length
391 [Documentation] Verify Get System Info Parameter Present OS Version Number via IPMI,
392 ... with extra bytes, and expect to get the error message for invalid length.
393 [Tags] Verify_Get_System_Info_Present_OS_Version_Number_With_Invalid_Data_Length
394
George Keishing6e641262022-05-05 10:46:22 -0500395 # Check if the Get System Info Parameter for param 5 - Present OS Version Number throws
396 # error for invalid request data.
397 Run Keyword and Expect Error
398 ... *${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Get'][1]}*
chithrag015f7872022-03-21 09:42:01 +0000399 ... Run IPMI Standard Command
400 ... raw ${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Get'][0]} 0x00
401
402
403Verify Set System Info Present OS Version Number With Invalid Data Length
404 [Documentation] Verify setting invalid os version to Present OS Version Number
405 ... of Set System Info Parameter via IPMI,
406 ... and expect to get the error message for invalid length.
407 [Tags] Verify_Set_System_Info_Present_OS_Version_Number_With_Invalid_Data_Length
408
409 # invalid_os_version given in variable section which is a 15 byte data.
410 # The actual request byte should be 16 byte data where,
411 # data 1 - Encoding string type,
412 # data 2 - string length (in bytes, 1-based),
413 # data 3 to 16 - system firmware name string data - 14 bytes,
414 # Here 15 bytes so, data 17 - extra byte.
415 ${os_name} ${name_hex_data}= Identify Request Data ${invalid_os_version}
416
George Keishing6e641262022-05-05 10:46:22 -0500417 # Check if the Set System Info Parameter for param 5 - Present OS Version Number throws
418 # error for invalid request data.
419 Run Keyword and Expect Error
420 ... *${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Set'][1]}*
chithrag015f7872022-03-21 09:42:01 +0000421 ... Run IPMI Standard Command
422 ... raw ${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Set'][0]} ${os_name}
423
424
425*** Keywords ***
426
427Identify Request Data
428 [Documentation] Convert string to hexadecimal request data with and without prefix 0x.
429 [Arguments] ${string}
430
431 # Given a string, convert to hexadecimal and prefix with 0x.
432 # Consider random string generated ${string} is 'zwc'.
433 ${fw_ver_hex_list}= Create List
434 ${hex_data_list}= Create List
435 ${resp_data_list}= Split String With Index ${string} 1
436 # ${resp_data_list} will be ['z', 'w', 'c'].
437 FOR ${data} IN @{resp_data_list}
438 # prefixes 0x by default.
439 # Example : 0x00.
440 ${hex_value}= Evaluate hex(ord("${data}"))
441 # provides only hexadecimal bytes.
442 # Example : 00.
443 ${hex}= Evaluate hex(ord("${data}"))[2:]
444 # With prefix 0x.
445 Append To List ${fw_ver_hex_list} ${hex_value}
446 # Without prefix.
447 Append To List ${hex_data_list} ${hex}
448 END
449 ${fw_ver_hex}= Evaluate " ".join(${fw_ver_hex_list})
450
451 [Return] ${fw_ver_hex} ${hex_data_list}
452
453
454Get System Info Set In Progress
455 [Documentation] Run Get system info parameter command for set-in-progress and return response data.
456
457 # Get System Info Parameter for param 0 - Set In Progress.
458 ${resp}= Run IPMI Standard Command
459 ... raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Get'][0]}
460 ${resp}= Split String ${resp}
461
462 [Return] ${resp}
463
464
465Set System Info Set In Progress
466 [Documentation] Set System Info Set In Progress with valid state via IPMI.
467 [Arguments] ${state}
468
469 # Set System Info Parameter for param 0 - Set In Progress.
470 # ${state} can be can be any - 00 | 01 | 10 | 11.
471 Run IPMI Standard Command
472 ... raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][0]} ${state}
473
474
475Get System Firmware Version
George Keishing6e641262022-05-05 10:46:22 -0500476 [Documentation] Run Get system info parameter command for system firmware version
477 ... and return response data.
chithrag015f7872022-03-21 09:42:01 +0000478
479 # Get System Info Parameter for param 1 - System Firmware Version.
480 ${resp}= Run IPMI Standard Command
481 ... raw ${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Get'][0]}
482 ${resp}= Split String ${resp}
483
484 [Return] ${resp}
485
486
487Set System Firmware Version
488 [Documentation] Set System Firmware Version for System Info with valid version.
489 [Arguments] ${version}
490
491 # Set System Info Parameter for param 1 - System Firmware Version.
492 # ${version} can be any 14 data.
493 Run IPMI Standard Command
494 ... raw ${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Set'][0]} ${version}
495
496
497Get System Name
498 [Documentation] Run system info parameter command for system name and return response data.
499
500 # Get System Info Parameter for param 2 - System Name.
501 ${resp}= Run IPMI Standard Command
502 ... raw ${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Get'][0]}
503 ${resp}= Split String ${resp}
504
505 [Return] ${resp}
506
507
508Set System Name
509 [Documentation] Set System Name for System Info with valid name.
510 [Arguments] ${sys_name}
511
512 # Set System Info Parameter for param 2 - System Name.
513 # ${sys_name} can be any 14 byte data.
514 Run IPMI Standard Command
515 ... raw ${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Set'][0]} ${sys_name}
516
517
518Get Primary OS Name
519 [Documentation] Run Get System Info command for primary OS name and return response data.
520
521 # Get System Info Parameter for param 3 - Primary OS Name.
522 ${resp}= Run IPMI Standard Command
nagarjunb22c46f7942022-05-11 10:33:17 +0530523 ... raw ${IPMI_RAW_CMD['System_Info']['param3_Primary_Operating_System_Name']['Get'][0]}
chithrag015f7872022-03-21 09:42:01 +0000524 ${resp}= Split String ${resp}
525
526 [Return] ${resp}
527
528
529Set Primary OS Name
530 [Documentation] Set Primary OS Name for System Info with valid os name.
531 [Arguments] ${os_name}
532
533 # Set System Info Parameter for param 3 - Primary OS Name.
534 # ${os_name} can be any 14 byte data.
535 Run IPMI Standard Command
nagarjunb22c46f7942022-05-11 10:33:17 +0530536 ... raw ${IPMI_RAW_CMD['System_Info']['param3_Primary_Operating_System_Name']['Set'][0]} ${os_name}
chithrag015f7872022-03-21 09:42:01 +0000537
538
539Get OS Name
540 [Documentation] Run get System Info command for OS name and return response data.
541
542 # Get System Info Parameter for param 4 - OS Name.
543 ${resp}= Run IPMI Standard Command
nagarjunb22c46f7942022-05-11 10:33:17 +0530544 ... raw ${IPMI_RAW_CMD['System_Info']['param4_Operating_System_Name']['Get'][0]}
chithrag015f7872022-03-21 09:42:01 +0000545 ${resp}= Split String ${resp}
546
547 [Return] ${resp}
548
549
550Set OS Name
551 [Documentation] Set OS Name for System Info with valid os name.
552 [Arguments] ${os_name}
553
554 # Set System Info Parameter for param 4 - OS Name.
555 # ${os_name} can be any 14 byte data.
556 Run IPMI Standard Command
nagarjunb22c46f7942022-05-11 10:33:17 +0530557 ... raw ${IPMI_RAW_CMD['System_Info']['param4_Operating_System_Name']['Set'][0]} ${os_name}
chithrag015f7872022-03-21 09:42:01 +0000558
559
560Get Present OS Version Number
561 [Documentation] Run Get System Info command for present os version name and return response.
562
563 # Get System Info Parameter for param 5 - Present OS Version Number.
564 ${resp}= Run IPMI Standard Command
565 ... raw ${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Get'][0]}
566 ${resp}= Split String ${resp}
567
568 [Return] ${resp}
569
570
571Set Present OS Version Number
572 [Documentation] Set Present OS Version Number for System Info with valid os version.
573 [Arguments] ${os_name}
574
575 # Set System Info Parameter for param 5 - Present OS Version Number.
576 # ${os_name} can be any 14 byte data
577 Run IPMI Standard Command
578 ... raw ${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Set'][0]} ${os_name}
579
580
581Add Prefix To List Objects And Join String
582 [Documentation] Adding prefix '0x' to each list object and join the string.
583 [Arguments] ${list}
584
585 # ${list} contains list of hexadecimal data.
586
587 # Prefix Bytes with 0x for each data bytes and makes a string of request bytes.
588 # Prefix Bytes function under lib/ipmi_utils.py.
589 # Prefixes every list item with 0x and returns list of prefixed hexadecimal data.
590 ${prefix_list}= Prefix Bytes ${list}
591 ${prefix_list}= Evaluate " ".join(${prefix_list})
592
593 [Return] ${prefix_list}
594
595
596Suite Setup Execution
597 [Documentation] Suite setup execution to fetch all the default response bytes,
598 ... prefix each byte with 0x and make them a suite variable.
599
600 # Get Default Values of each parameters.
601 # Set In Progress - param 0.
602 ${resp}= Get System Info Set In Progress
603 # Configuration parameter data - 11 xx (xx can be any - 00 | 01 | 10 | 11).
604 ${set_in_progress}= Set Variable ${resp[1]}
605
606 Set Suite Variable ${set_in_progress}
607
608 # System Firmware Version - param 1.
609 ${resp}= Get System Firmware Version
610 # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
611 # x1 - encoding, x2 - string length in bytes.
612 ${sys_fw_version}= Set Variable ${resp[2:]}
613 # Prefix all bytes with 0x.
614 ${sys_fw_version_string}= Add Prefix To List Objects And Join String ${sys_fw_version}
615
616 Set Suite Variable ${sys_fw_version}
617 Set Suite Variable ${sys_fw_version_string}
618
619 # System Name - param 2.
620 ${resp}= Get System Name
621 # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
622 # x1 - encoding, x2 - string length in bytes.
623 ${sys_name_default}= Set Variable ${resp[2:]}
624 # Prefix all bytes with 0x.
625 ${sys_name_hex_default}= Add Prefix To List Objects And Join String ${sys_name_default}
626
627 Set Suite Variable ${sys_name_default}
628 Set Suite Variable ${sys_name_hex_default}
629
630 # Primary OS Name - param 3.
631 ${resp}= Get Primary OS Name
632 # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
633 # x1 - encoding, x2 - string length in bytes.
634 ${primary_os_name}= Set Variable ${resp[2:]}
635 # Prefix all bytes with 0x.
636 ${primary_os_name_hex}= Add Prefix To List Objects And Join String ${primary_os_name}
637
638 Set Suite Variable ${primary_os_name}
639 Set Suite Variable ${primary_os_name_hex}
640
641 # OS Name - param 4.
642 ${resp}= Get OS Name
643 # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
644 # x1 - encoding, x2 - string length in bytes.
645 ${default_os_name}= Set Variable ${resp[2:]}
646 # Prefix all bytes with 0x.
647 ${default_os_name_hex}= Add Prefix To List Objects And Join String ${default_os_name}
648
649 Set Suite Variable ${default_os_name}
650 Set Suite Variable ${default_os_name_hex}
651
652 # Present OS Version Number - param 5.
653 ${resp}= Get Present OS Version Number
654 # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
655 # x1 - encoding, x2 - string length in bytes.
656 ${present_os_num}= Set Variable ${resp[2:]}
657 # Prefix all bytes with 0x.
658 ${present_os_num_hex}= Add Prefix To List Objects And Join String ${present_os_num}
659
660 Set Suite Variable ${present_os_num}
661 Set Suite Variable ${present_os_num_hex}
662
663
664Restore Default Configuration
665 [Documentation] Restore all system info parameter response data to,
666 ... default data obtained from suite setup.
667
668 # All variable to set are suite variables declared in suite setup.
669
670 # Set In Progress - param 0.
671 Set System Info Set In Progress 0x${set_in_progress}
672
673 # System Firmware Version - param 1.
674 Run IPMI Standard Command raw 0x06 0x58 0x01 0x00 ${sys_fw_version_string}
675
676 # System Name - param 2.
677 Run IPMI Standard Command raw 0x06 0x58 0x02 0x00 ${sys_name_hex_default}
678
679 # Primary OS Name - param 3.
680 Run IPMI Standard Command raw 0x06 0x58 0x03 0x00 ${primary_os_name_hex}
681
682 # OS Name - param 4.
683 Run IPMI Standard Command raw 0x06 0x58 0x04 0x00 ${default_os_name_hex}
684
685 # Present OS Version Number - param 5.
686 Run IPMI Standard Command raw 0x06 0x58 0x05 0x00 ${present_os_num_hex}