xref: /openbmc/openbmc-test-automation/openpower/ext_interfaces/test_savearea_management.robot (revision 26206721706b89aef313989f19d8d6522565529a)
1 *** Settings ***
2 
3 Documentation     Test Save Area feature of Management Console on BMC.
4 
5 Resource          ../../lib/rest_client.robot
6 Resource          ../../lib/openbmc_ffdc.robot
7 Resource          ../../lib/resource.robot
8 Resource          ../../lib/bmc_redfish_utils.robot
9 Resource          ../../lib/utils.robot
10 Resource          ../../lib/bmc_redfish_resource.robot
11 
12 Suite Setup       Suite Setup Execution
13 Test Teardown     Test Teardown Execution
14 Suite Teardown    Suite Teardown Execution
15 
16 *** Variables ***
17 
18 ${MAXIMUM_FILE_SIZE_MESSAGE}        File size exceeds maximum allowed size[10MB]
19 ${MAXIMUM_DIR_SIZE_MESSAGE}
20 ...   File size does not fit in the savearea directory maximum allowed size[10MB]
21 ${FILE_UPLOAD_MESSAGE}              File Created
22 ${FILE_DELETED_MESSAGE}             File Deleted
23 ${FILE_UPDATED_MESSAGE}             File Updated
24 ${FORBIDDEN_MESSAGE}                Forbidden
25 ${ERROR_MESSAGE}                    Error while creating the file
26 ${RESOURCE_NOT_FOUND_MESSAGE}       Resource Not Found
27 ${MINIMUM_FILE_SIZE_MESSAGE}        File size is less than minimum allowed size[100B]
28 ${MAXIMUM_FILE_NAME_MESSAGE}        Filename must be maximum 20 characters
29 ${UNSUPPORTED_FILE_NAME_MESSAGE}    Unsupported character in filename
30 
31 ${content-1}                        Sample Content to test partition file upload
32 ...  Sample Content to test partition file upload
33 ...  Sample Content to test partition file upload
34 ${content-2}                        Sample Content to test partition file upload after reboot
35 ...  Sample Content to test partition file upload after reboot
36 ...  Sample Content to test partition file upload after reboot
37 
38 *** Test Cases ***
39 
40 Redfish Upload Lower Limit Partition File To BMC
41     [Documentation]  Upload lower limit of allowed partition file to BMC using Redfish.
42     [Tags]  Redfish_Upload_Lower_Limit_Partition_File_To_BMC
43     [Template]  Redfish Upload Partition File
44 
45     # file_name
46     100-file
47 
48 
49 Redfish Upload Partition File To BMC
50     [Documentation]  Upload partition file to BMC using Redfish.
51     [Tags]  Redfish_Upload_Partition_File_To_BMC
52     [Template]  Redfish Upload Partition File
53 
54     # file_name
55     500KB-file
56     501KB-file
57     550KB-file
58     10000KB-file
59 
60 
61 Test Upload Lower Limit Partition File To BMC And Expect Failure
62     [Documentation]  Fail to upload partition file to BMC with file size
63     ...  below the lower limit of allowed partition file size using Redfish.
64     [Tags]  Test_Upload_Lower_Limit_Partition_File_To_BMC_And_Expect_Failure
65     [Template]  Redfish Fail To Upload Partition File
66 
67     # file_name    status_code            partition_status    response_message
68     99-file        ${HTTP_BAD_REQUEST}    0                   ${MINIMUM_FILE_SIZE_MESSAGE}
69 
70 
71 Redfish Fail To Upload Partition File To BMC
72     [Documentation]  Fail to upload partition file to BMC using Redfish.
73     [Tags]  Redfish_Fail_To_Upload_Partition_File_To_BMC
74     [Template]  Redfish Fail To Upload Partition File
75 
76     # file_name     status_code            partition_status    response_message
77     10001KB-file    ${HTTP_BAD_REQUEST}    0                   ${MAXIMUM_FILE_SIZE_MESSAGE}
78 
79 
80 Redfish Upload Multiple Partition File To BMC
81     [Documentation]  Upload multiple partition file to BMC using Redfish.
82     [Tags]  Redfish_Upload_Multiple_Partition_File_To_BMC
83     [Template]  Redfish Upload Partition File
84 
85     # file_name
86     250KB-file,500KB-file
87 
88 
89 Redfish Fail To Upload Multiple Partition File To BMC
90     [Documentation]  Fail to upload multiple partition file to BMC using Redfish.
91     [Tags]  Redfish_Fail_To_Upload_Multiple_Partition_File_To_BMC
92     [Template]  Redfish Fail To Upload Partition File
93 
94     # file_name     status_code            partition_status    response_message
95     5000KB-file     ${HTTP_OK}             1                   ${FILE_UPLOAD_MESSAGE}
96     6000KB-file     ${HTTP_BAD_REQUEST}    0                   ${MAXIMUM_DIR_SIZE_MESSAGE}
97     10000KB-file    ${HTTP_OK}             1                   ${FILE_UPLOAD_MESSAGE}
98     100-file        ${HTTP_BAD_REQUEST}    0                   ${MAXIMUM_DIR_SIZE_MESSAGE}
99 
100 
101 Redfish Upload Same Partition File To BMC In Loop
102     [Documentation]  Upload same partition file to BMC using Redfish in loop.
103     [Tags]  Redfish_Upload_Same_Partition_File_To_BMC_In_Loop
104     [Template]  Redfish Upload Partition File In Loop
105 
106     # file_name
107     500KB-file
108 
109 
110 Redfish Upload And Delete Same Partition File To BMC In Loop
111     [Documentation]  Upload same partition file to BMC using Redfish in loop.
112     [Tags]  Redfish_Upload_And_Delete_Same_Partition_File_To_BMC_In_Loop
113     [Template]  Redfish Upload And Delete Partition File In Loop
114 
115     # file_name
116     500KB-file
117 
118 
119 Redfish Partition File Upload Post BMC Reboot
120     [Documentation]  Upload partition file to BMC using Redfish, after the BMC reboot.
121     [Tags]  Redfish_Partition_File_Upload_Post_BMC_Reboot
122     [Template]  Verify Partition File Upload Post BMC Reboot
123 
124     # file_name
125     500KB-file
126 
127 
128 Redfish Partition File Persistency On BMC Reboot
129     [Documentation]  Upload partition file to BMC using Redfish and is same after reboot.
130     [Tags]  Redfish_Partition_File_Persistency_On_BMC_Reboot
131     [Template]  Redfish Partition File Persistency
132 
133     # file_name
134     500KB-file
135 
136 
137 Redfish Multiple Partition File Persistency On BMC Reboot
138     [Documentation]  Upload multiple partition file to BMC using Redfish and is same after reboot.
139     [Tags]  Redfish_Multiple_Partition_File_Persistency_On_BMC_Reboot
140     [Template]  Redfish Partition File Persistency
141 
142     # file_name
143     250KB-file,500KB-file
144 
145 
146 Redfish Read Partition File On BMC
147     [Documentation]  Upload partition file to BMC using Redfish and verify the content.
148     [Tags]  Redfish_Read_Partition_File_On_BMC
149     [Template]  Redfish Read Partition File
150 
151     # file_name                      reboot_flag
152     testfile01-file                  False
153     testfile01-file,testfile02-file  False
154 
155 
156 Redfish Read Partition File On BMC Reboot
157     [Documentation]  Upload partition file to BMC using Redfish and verify the content after reboot.
158     [Tags]  Check_Redfish_Read_Partition_File_On_BMC_Reboot
159     [Template]  Redfish Read Partition File
160 
161     # file_name                      reboot_flag
162     testfile01-file                  True
163     testfile01-file,testfile02-file  True
164 
165 
166 Redfish Update Partition File On BMC
167     [Documentation]  Upload partition file to BMC using Redfish and verify the content.
168     [Tags]  Redfish_Update_Partition_File_On_BMC
169     [Template]  Redfish Update Partition File With Different Content
170 
171     # file_name                 reboot_flag
172     testfile01-file             False
173 
174 
175 Redfish Update Partition File On BMC Reboot
176     [Documentation]  Upload partition file to BMC using Redfish and verify the content after the reboot.
177     [Tags]  Redfish_Update_Partition_File_On_BMC_Reboot
178     [Template]  Redfish Update Partition File With Different Content
179 
180     # file_name                 reboot_flag
181     testfile01-file             True
182 
183 
184 Redfish Persistency Update Partition File On BMC
185     [Documentation]  Upload partition file to BMC using Redfish and verify the content.
186     [Tags]  Redfish_Persistency_Update_Partition_File_On_BMC
187     [Template]  Redfish Update Partition File With Same Content
188 
189     # file_name                 reboot_flag
190     testfile01-file             False
191 
192 
193 Redfish Persistency Update Partition File On BMC Reboot
194     [Documentation]  Upload partition file to BMC using Redfish and verify the content after the reboot.
195     [Tags]  Redfish_Persistency_Update_Partition_File_On_BMC_Reboot
196     [Template]  Redfish Update Partition File With Same Content
197 
198     # file_name                 reboot_flag
199     testfile01-file             True
200 
201 
202 Redfish Delete Non Existence Of Partition File
203     [Documentation]  Delete the partition file if do not exists.
204     [Tags]  Redfish_Delete_Non_Existence_Of_Partition_File
205     [Template]  Redfish Delete Non Existence Partition File
206 
207     # file_name
208     testfile01-file
209 
210 
211 Verify One Thousand Partitions File Upload
212     [Documentation]  Upload 1000 partition file to BMC.
213     [Tags]  Verify_One_Thousand_Partitions_File_Upload
214     [Template]  Redfish Upload Partition File With Range
215 
216     # range
217     1000
218 
219 
220 Non Admin Users Fail To Upload Partition File
221     [Documentation]  Non admin user will fail to upload the partition file.
222     [Tags]  Non_Admin_Users_Fail_To_Upload_Partition_File
223     [Template]  Non Admin User To Upload Partition File
224 
225     # file_name    username         password       role_id
226     500KB-file     operator_user    TestPwd123     Operator
227 
228 
229 Non Admin User Delete Non Existence Of Partition File
230     [Documentation]  Delete the partition file if does not exists.
231     [Tags]  Non_Admin_User_Delete_Non_Existence_Of_Partition_File
232     [Template]  Non Admin Delete Non Existence Partition File
233 
234     # file_name    username         password       role_id
235     500KB-file     operator_user    TestPwd123     Operator
236 
237 
238 Redfish Update Wrong Partition File To BMC
239     [Documentation]  Upload partition file to BMC by wrong URI using Redfish.
240     [Tags]  Redfish_Update_Wrong_Partition_File_To_BMC
241     [Template]  Verify Update Wrong Partition File To BMC
242 
243     # file_name
244     500KB-file
245 
246 
247 Test Redfish Upload Partition File Name With Character Limit To BMC
248     [Documentation]  Upload partition file to BMC with file name character allowed limit
249     ...  and above allowed limit using Redfish.
250     [Tags]  Test_Redfish_Upload_Partition_File_Name_With_Character_Limit_To_BMC
251     [Template]  Check Redfish Upload Partition File Name With Character Limit To BMC
252 
253     # file_name              status_code            message
254     50KB-testfilesavfile     ${HTTP_OK}             ${FILE_UPLOAD_MESSAGE}
255     50KB-testsaveareafile    ${HTTP_BAD_REQUEST}    ${MAXIMUM_FILE_NAME_MESSAGE}
256 
257 
258 Test Redfish Fail To Upload Partition File Name With Special Character To BMC
259     [Documentation]  Upload partition file to BMC with special character file name and
260     ...  Redfish through an error.
261     [Tags]  Test_Redfish_Fail_To_Upload_Partition_File_Name_With_Special_Character_To_BMC
262     [Template]  Check Redfish Fail To Upload Partition File Name With Special Character To BMC
263 
264     # file_name      status_code            message
265     1KB-*filename    ${HTTP_BAD_REQUEST}    ${UNSUPPORTED_FILE_NAME_MESSAGE}
266     1KB-!filename    ${HTTP_BAD_REQUEST}    ${UNSUPPORTED_FILE_NAME_MESSAGE}
267     1KB-@filename    ${HTTP_BAD_REQUEST}    ${UNSUPPORTED_FILE_NAME_MESSAGE}
268 
269 *** Keywords ***
270 
271 Suite Setup Execution
272     [Documentation]  Suite setup execution.
273 
274     Redfish.Login
275 
276 
277 Test Teardown Execution
278     [Documentation]  Test teardown execution.
279 
280     Delete All BMC Partition File  ${HTTP_OK}
281     FFDC On Test Case Fail
282 
283 
284 Suite Teardown Execution
285     [Documentation]  Suite teardown execution.
286 
287     Delete All Sessions
288 
289 
290 Delete Local Partition File
291     [Documentation]  Delete local partition file.
292     [Arguments]  ${file_name}
293 
294     # Description of argument(s):
295     # file_name    Partition file name.
296 
297     FOR  ${conf_file}  IN  @{file_name}
298       ${file_exist}=  Run Keyword And Return Status  OperatingSystem.File Should Exist  ${conf_file}
299       Run Keyword If  'True' == '${file_exist}'  Remove File  ${conf_file}
300     END
301 
302 
303 Delete Local Server Partition File
304     [Documentation]  Local partition files which is getting uploaded to BMC,
305     ...  will get deleted after the uploads. If partition file name consist
306     ...  of “-file” then partition file gets deleted.
307 
308     @{conf_file_list} =  OperatingSystem.List Files In Directory  ${EXECDIR}
309     ${match_conf_file_list}=  Get Matches  ${conf_file_list}  regexp=.*-file  case_insensitive=${True}
310 
311     ${num_records}=  Get Length  ${match_conf_file_list}
312     Return From Keyword If  ${num_records} == ${0}  ${EMPTY}
313 
314     FOR  ${conf_file}  IN  @{match_conf_file_list}
315       ${file_exist}=  Run Keyword And Return Status  OperatingSystem.File Should Exist  ${conf_file}
316       Run Keyword If  'True' == '${file_exist}'  Remove File  ${conf_file}
317     END
318 
319 
320 Create Partition File
321     [Documentation]  Create Partition file.
322     [Arguments]  ${file_name}
323 
324     # Description of argument(s):
325     # file_name    Partition file name.
326 
327     Delete Local Partition File  ${file_name}
328 
329     FOR  ${conf_file}  IN  @{file_name}
330       @{words}=  Split String  ${conf_file}  -
331       Run  dd if=/dev/zero of=${conf_file} bs=${words}[-0] count=1
332       OperatingSystem.File Should Exist  ${conf_file}
333     END
334 
335 
336 Delete BMC Partition File
337     [Documentation]  Delete single partition file on BMC via Redfish.
338     [Arguments]  ${file_name}  ${status_code}  ${expected_message}
339 
340     # Description of argument(s):
341     # file_name           Partition file name.
342     # status_code         HTTPS status code.
343     # expected_message    Expected message of URI.
344 
345     FOR  ${conf_file}  IN  @{file_name}
346       ${data}=  Create Dictionary
347       ${headers}=  Create Dictionary  X-Auth-Token=${XAUTH_TOKEN}
348       Set To Dictionary  ${data}  headers  ${headers}
349 
350       ${resp}=  Delete Request  openbmc  /ibm/v1/Host/ConfigFiles/${conf_file}  &{data}
351       Should Be Equal As Strings  ${resp.status_code}  ${status_code}
352 
353       ${description}=  Return Description Of Response  ${resp.text}
354       Should Be Equal As Strings  ${description}  ${expected_message}
355     END
356 
357 
358 Delete All BMC Partition File
359     [Documentation]  Delete multiple partition file on BMC via Redfish.
360     [Arguments]  ${status_code}
361 
362     # Description of argument(s):
363     # status_code       HTTPS status code.
364 
365     Initialize OpenBMC
366     ${data}=  Create Dictionary
367     ${headers}=  Create Dictionary  X-Auth-Token=${XAUTH_TOKEN}
368     Set To Dictionary  ${data}  headers  ${headers}
369 
370     ${resp}=  Post Request  openbmc  /ibm/v1/Host/ConfigFiles/Actions/IBMConfigFiles.DeleteAll  &{data}
371     Should Be Equal As Strings  ${resp.status_code}  ${status_code}
372 
373 
374 Return Description Of Response
375     [Documentation]  Return description of REST response.
376     [Arguments]  ${resp_text}
377 
378     # Description of argument(s):
379     # resp_text    REST response body.
380 
381     # resp_text after successful partition file upload looks like:
382     # {
383     #    "Description": "File Created"
384     # }
385 
386     ${status}=  Run Keyword And Return Status  Evaluate  isinstance(${resp_text}, dict)
387     Return From Keyword If  '${status}' == 'False'  ${resp_text}
388     ${message}=  Evaluate  json.loads('''${resp_text}''')  json
389 
390     [Return]  ${message["Description"]}
391 
392 
393 Upload Partition File To BMC
394     [Documentation]  Upload partition file to BMC.
395     [Arguments]  ${file_name}  ${status_code}  ${expected_message}  ${flag}=${True}
396 
397     # Description of argument(s):
398     # file_name           Partition file name.
399     # status_code         HTTPS status code.
400     # expected_message    Expected message of URI.
401     # flag                If True run part of program, else skip.
402 
403     Run Keyword If  '${flag}' == '${True}'  Initialize OpenBMC
404     FOR  ${conf_file}  IN  @{file_name}
405       # Get the content of the file and upload to BMC.
406       ${image_data}=  OperatingSystem.Get Binary File  ${conf_file}
407       ${headers}=  Create Dictionary  X-Auth-Token=${XAUTH_TOKEN}  Content-Type=application/octet-stream
408 
409       ${kwargs}=  Create Dictionary  data=${image_data}
410       Set To Dictionary  ${kwargs}  headers  ${headers}
411       ${resp}=  Put Request  openbmc  /ibm/v1/Host/ConfigFiles/${conf_file}  &{kwargs}  timeout=10
412       Should Be Equal As Strings  ${resp.status_code}  ${status_code}
413 
414       ${description}=  Return Description Of Response  ${resp.text}
415       Should Be Equal As Strings  ${description}  ${expected_message}
416     END
417 
418 
419 Verify Partition File On BMC
420     [Documentation]  Verify partition file on BMC.
421     [Arguments]  ${file_name}  ${Partition_status}
422 
423     # Description of argument(s):
424     # file_name           Partition file name.
425     # Partition_status    Partition file status on BMC.
426 
427     FOR  ${conf_file}  IN  @{file_name}
428       ${status}  ${stderr}  ${rc}=  BMC Execute Command
429       ...  ls -l /var/lib/bmcweb/ibm-management-console/configfiles/${conf_file} | wc -l
430       Valid Value  ${status}  [${Partition_status}]
431     END
432 
433 
434 Redfish Upload Partition File
435     [Documentation]  Upload the partition file.
436     [Arguments]  ${file_name}  ${file_size}=${EMPTY}
437 
438     # Description of argument(s):
439     # file_name    Partition file name.
440     # file_size    By Default is set to EMPTY,
441     #              if user pass small_file_size the create file with small
442     #              size keyword gets executed.
443 
444     @{Partition_file_list} =  Split String  ${file_name}  ,
445     ${num_records}=  Get Length  ${Partition_file_list}
446 
447     Create Partition File  ${Partition_file_list}
448 
449     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPLOAD_MESSAGE}
450     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
451     Run Keyword If  ${num_records} == ${1}
452     ...    Delete BMC Partition File  ${Partition_file_list}  ${HTTP_OK}  ${FILE_DELETED_MESSAGE}
453     ...  ELSE
454     ...    Delete All BMC Partition File  ${HTTP_OK}
455     Delete Local Partition File  ${Partition_file_list}
456 
457 
458 Redfish Fail To Upload Partition File
459     [Documentation]  Fail to upload the partition file.
460     [Arguments]  ${file_name}  ${status_code}  ${partition_status}  ${response_message}=${EMPTY}
461 
462     # Description of argument(s):
463     # file_name           Partition file name.
464     # status_code         HTTPS status code.
465     # partition_status    Partition status.
466     # response_message    By default is set to EMPTY,
467     #                     else user provide the information when user upload the partition with file size
468     #                     below lower linit of allowed partition or more than of large allowed partition.
469 
470     @{Partition_file_list} =  Split String  ${file_name}  ,
471 
472     Create Partition File  ${Partition_file_list}
473     Upload Partition File To BMC  ${Partition_file_list}  ${status_code}  ${response_message}
474     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=${partition_status}
475 
476     Run Keyword If  ${partition_status} == 0
477     ...  Run Keywords
478     ...  Delete BMC Partition File
479     ...  ${Partition_file_list}  ${HTTP_NOT_FOUND}  ${RESOURCE_NOT_FOUND_MESSAGE}  AND
480     ...  Delete All BMC Partition File  ${HTTP_OK}  AND
481     ...  Delete Local Server Partition File
482 
483     Delete Local Partition File  ${Partition_file_list}
484 
485 
486 Redfish Upload Partition File In Loop
487     [Documentation]  Upload the same partition file multiple times in loop to BMC.
488     [Arguments]  ${file_name}
489 
490     # Description of argument(s):
491     # file_name    Partition file name.
492 
493     @{Partition_file_list} =  Split String  ${file_name}  ,
494     Create Partition File  ${Partition_file_list}
495 
496     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPLOAD_MESSAGE}
497     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
498 
499     FOR  ${count}  IN RANGE  1  11
500       Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPDATED_MESSAGE}
501       Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
502     END
503 
504     Initialize OpenBMC
505     Delete BMC Partition File  ${Partition_file_list}  ${HTTP_OK}  ${FILE_DELETED_MESSAGE}
506     Delete Local Partition File  ${Partition_file_list}
507 
508 
509 Redfish Upload And Delete Partition File In Loop
510     [Documentation]  Upload the same partition file multiple times in loop to BMC.
511     [Arguments]  ${file_name}
512 
513     # Description of argument(s):
514     # file_name    Partition file name.
515 
516     FOR  ${count}  IN RANGE  1  11
517       Redfish Upload Partition File  ${file_name}
518     END
519 
520 
521 Verify Partition File Upload Post BMC Reboot
522     [Documentation]  Upload the partition file, after BMC reboot.
523     [Arguments]  ${file_name}
524 
525     # Description of argument(s):
526     # file_name    Partition file name.
527 
528     ${before_reboot_xauth_token}=  Set Variable  ${XAUTH_TOKEN}
529     Redfish BMC Reset Operation
530     Set Global Variable  ${XAUTH_TOKEN}  ${before_reboot_xauth_token}
531 
532     Is BMC Standby
533 
534     Redfish Upload Partition File  ${file_name}
535 
536 
537 Redfish Partition File Persistency
538     [Documentation]  Upload the partition file and check for persistency after reboot.
539     [Arguments]  ${file_name}
540 
541     # Description of argument(s):
542     # file_name    Partition file name.
543 
544     @{Partition_file_list} =  Split String  ${file_name}  ,
545     ${num_records}=  Get Length  ${Partition_file_list}
546     Create Partition File  ${Partition_file_list}
547     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPLOAD_MESSAGE}
548     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
549 
550     ${before_reboot_xauth_token}=  Set Variable  ${XAUTH_TOKEN}
551     Redfish BMC Reset Operation
552     Set Global Variable  ${XAUTH_TOKEN}  ${before_reboot_xauth_token}
553 
554     Is BMC Standby
555 
556     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
557     Initialize OpenBMC
558     Run Keyword If  ${num_records} == ${1}
559     ...    Delete BMC Partition File  ${Partition_file_list}  ${HTTP_OK}  ${FILE_DELETED_MESSAGE}
560     ...  ELSE
561     ...    Delete All BMC Partition File  ${HTTP_OK}
562     Delete Local Partition File  ${Partition_file_list}
563 
564 
565 Verify Redfish Partition File Content
566     [Documentation]  Verify partition file content.
567     [Arguments]  ${file_name}  ${content_dict}  ${status_code}
568 
569     # Description of argument(s):
570     # file_name       Partition file name.
571     # content_dict    Dict contain the content.
572     # status_code     HTTPS status code.
573 
574     FOR  ${conf_file}  IN  @{file_name}
575       ${resp}=  Get Request  openbmc  /ibm/v1/Host/ConfigFiles/${conf_file}
576       Should Be Equal As Strings  ${resp.status_code}  ${status_code}
577 
578       ${Partition_file_data}=  Remove String  ${resp.text}  \\n
579       ${Partition_file_data}=  Evaluate  json.loads('''${Partition_file_data}''')  json
580       Should Be Equal As Strings  ${Partition_file_data["Data"]}  ${content_dict['${conf_file}']}
581     END
582 
583 
584 Add Content To Files
585     [Documentation]  Add defined content in partition file.
586     [Arguments]  ${file_name}  ${index}=${0}
587 
588     # Description of argument(s):
589     # file_name    Partition file name.
590     # index        Index
591 
592     ${num_records}=  Get Length  ${file_name}
593     &{content_dict}=  Create Dictionary
594 
595     FOR  ${conf_file}  IN  @{file_name}
596        ${index}=  Get Index From List  ${file_name}  ${conf_file}
597        ${index}=  Evaluate  ${index} + 1
598 
599        Run  echo "${content-${index}}" > ${conf_file}
600        OperatingSystem.File Should Exist  ${conf_file}
601 
602        Set To Dictionary  ${content_dict}  ${conf_file}  ${content-${index}}
603     END
604 
605     [Return]  &{content_dict}
606 
607 
608 Redfish Read Partition File
609     [Documentation]  Read partition file content.
610     [Arguments]  ${file_name}  ${reboot_flag}=False
611 
612     # Description of argument(s):
613     # file_name      Partition file name.
614     # reboot_flag    Reboot flag.
615 
616     @{Partition_file_list} =  Split String  ${file_name}  ,
617     ${content_dict}=  Add Content To Files  ${Partition_file_list}
618 
619     ${num_records}=  Get Length  ${Partition_file_list}
620 
621     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPLOAD_MESSAGE}
622     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
623     Verify Redfish Partition File Content  ${Partition_file_list}  ${content_dict}  ${HTTP_OK}
624 
625     ${before_reboot_xauth_token}=  Set Variable  ${XAUTH_TOKEN}
626 
627     Run Keyword If  ${True} == ${reboot_flag}
628     ...  Run Keywords  Redfish BMC Reset Operation  AND
629     ...  Set Global Variable  ${XAUTH_TOKEN}  ${before_reboot_xauth_token}  AND
630     ...  Is BMC Standby  AND
631     ...  Initialize OpenBMC  AND
632     ...  Verify Redfish Partition File Content  ${Partition_file_list}  ${content_dict}  ${HTTP_OK}
633 
634     Run Keyword If  ${num_records} == ${1}
635     ...    Delete BMC Partition File  ${Partition_file_list}  ${HTTP_OK}  ${FILE_DELETED_MESSAGE}
636     ...  ELSE
637     ...    Delete All BMC Partition File  ${HTTP_OK}
638 
639     Delete Local Partition File  ${Partition_file_list}
640 
641 
642 Redfish Update Partition File With Same Content
643     [Documentation]  Update partition file with same content.
644     [Arguments]  ${file_name}  ${reboot_flag}=False
645 
646     # Description of argument(s):
647     # file_name      Partition file name.
648     # reboot_flag    Reboot flag.
649 
650     @{Partition_file_list} =  Split String  ${file_name}  ,
651     ${content_dict}=  Add Content To Files  ${Partition_file_list}  ${0}
652 
653     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPLOAD_MESSAGE}
654     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
655     Verify Redfish Partition File Content  ${Partition_file_list}  ${content_dict}  ${HTTP_OK}
656 
657     ${before_reboot_xauth_token}=  Set Variable  ${XAUTH_TOKEN}
658 
659     Run Keyword If  ${True} == ${reboot_flag}
660     ...  Run Keywords  Redfish BMC Reset Operation  AND
661     ...  Set Global Variable  ${XAUTH_TOKEN}  ${before_reboot_xauth_token}  AND
662     ...  Is BMC Standby  AND
663     ...  Initialize OpenBMC
664 
665     ${content_dict}=  Add Content To Files  ${Partition_file_list}  ${0}
666     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPDATED_MESSAGE}
667     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
668     Verify Redfish Partition File Content  ${Partition_file_list}  ${content_dict}  ${HTTP_OK}
669 
670     Delete BMC Partition File  ${Partition_file_list}  ${HTTP_OK}  ${FILE_DELETED_MESSAGE}
671     Delete Local Partition File  ${Partition_file_list}
672 
673 
674 Redfish Update Partition File With Different Content
675     [Documentation]  Update partition file with different content.
676     [Arguments]  ${file_name}  ${reboot_flag}=False
677 
678     # Description of argument(s):
679     # file_name      Partition file name.
680     # reboot_flag    Reboot flag.
681 
682     @{Partition_file_list} =  Split String  ${file_name}  ,
683     ${content_dict}=  Add Content To Files  ${Partition_file_list}  ${0}
684 
685     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPLOAD_MESSAGE}
686     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
687     Verify Redfish Partition File Content  ${Partition_file_list}  ${content_dict}  ${HTTP_OK}
688 
689     ${before_reboot_xauth_token}=  Set Variable  ${XAUTH_TOKEN}
690 
691     Run Keyword If  ${True} == ${reboot_flag}
692     ...  Run Keywords  Redfish BMC Reset Operation  AND
693     ...  Set Global Variable  ${XAUTH_TOKEN}  ${before_reboot_xauth_token}  AND
694     ...  Is BMC Standby  AND
695     ...  Initialize OpenBMC
696 
697     ${content_dict}=  Add Content To Files  ${Partition_file_list}  ${1}
698     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPDATED_MESSAGE}
699     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
700     Verify Redfish Partition File Content  ${Partition_file_list}  ${content_dict}  ${HTTP_OK}
701 
702     Delete BMC Partition File  ${Partition_file_list}  ${HTTP_OK}  ${FILE_DELETED_MESSAGE}
703     Delete Local Partition File  ${Partition_file_list}
704 
705 
706 Create File Names
707     [Documentation]  Create partition file names.
708     [Arguments]  ${range}
709 
710     # Description of argument(s):
711     # range    Range in numbers.
712 
713     @{file_name_list}=  Create List
714     Set Test Variable  ${file_name}  rangefile
715     FOR  ${count}  IN RANGE  ${range}
716       Append To List  ${file_name_list}  1KB-file${count}
717     END
718     [Return]  ${file_name_list}
719 
720 
721 Redfish Upload Partition File With Range
722     [Documentation]  Upload the partition file with the range of files.
723     [Arguments]  ${range}
724 
725     # Description of argument(s):
726     # range    Range in numbers.
727 
728     ${Partition_file_list}=  Create File Names  ${range}
729     Delete Local Partition File  ${Partition_file_list}
730     Create Partition File  ${Partition_file_list}
731     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_OK}  ${FILE_UPLOAD_MESSAGE}
732     Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
733     Delete All BMC Partition File  ${HTTP_OK}
734     Delete Local Partition File  ${Partition_file_list}
735 
736 
737 Redfish Delete Non Existence Partition File
738     [Documentation]  Delete the partition file if do not exists.
739     [Arguments]  ${file_name}
740 
741     # Description of argument(s):
742     # file_name    Partition file name.
743 
744     @{Partition_file_list} =  Split String  ${file_name}  ,
745     Delete BMC Partition File  ${Partition_file_list}  ${HTTP_NOT_FOUND}  ${RESOURCE_NOT_FOUND_MESSAGE}
746 
747 
748 Non Admin User To Upload Partition File
749     [Documentation]  Non admin user to upload the partition file.
750     [Arguments]  ${file_name}  ${username}  ${password}  ${role}  ${enabled}=${True}
751 
752     # Description of argument(s):
753     # file_name    Partition file name.
754     # username     Username.
755     # password     Password.
756     # role         Role of user.
757     # enabled      Value can be True or False.
758 
759     Redfish Create User  ${username}  ${password}  ${role}  ${enabled}
760     Delete All Sessions
761     Initialize OpenBMC  rest_username=${username}  rest_password=${password}
762     @{Partition_file_list} =  Split String  ${file_name}  ,
763     Create Partition File  ${Partition_file_list}
764     Upload Partition File To BMC  ${Partition_file_list}  ${HTTP_FORBIDDEN}  ${FORBIDDEN_MESSAGE}  ${False}
765     Delete Local Partition File  ${Partition_file_list}
766     Redfish.Delete  /redfish/v1/AccountService/Accounts/${username}
767 
768 
769 Non Admin Delete Non Existence Partition File
770     [Documentation]  Non admin user to upload the partition file.
771     [Arguments]  ${file_name}  ${username}  ${password}  ${role}  ${enabled}=${True}
772 
773     # Description of argument(s):
774     # file_name    Partition file name.
775     # username     Username.
776     # password     Password.
777     # role         Role of user.
778     # enabled      Value can be True or False.
779 
780     Redfish Create User  ${username}  ${password}  ${role}  ${enabled}
781     Delete All Sessions
782     Initialize OpenBMC  rest_username=${username}  rest_password=${password}
783     @{Partition_file_list} =  Split String  ${file_name}  ,
784     Delete BMC Partition File  ${Partition_file_list}  ${HTTP_FORBIDDEN}  ${FORBIDDEN_MESSAGE}
785 
786 
787 Verify Update Wrong Partition File To BMC
788     [Documentation]  Upload the wrong partition file to BMC.
789     [Arguments]  ${file_name}
790 
791     # Description of argument(s):
792     # file_name    Partition file name.
793 
794     Redfish.Login
795     ${resp}=  Run Keyword And Return Status
796     ...  Redfish.Put  /ibm/v1/Host/ConfigFiles/../../../../../etc/resolv.conf  body={"data": "test string"}
797     Should Be Equal As Strings  ${resp}  False
798 
799 
800 Check Redfish Upload Partition File Name With Character Limit To BMC
801     [Documentation]  Upload the partition file to BMC with file name character limit.
802     [Arguments]  ${file_name}  ${status_code}  ${message}
803 
804     # Description of argument(s):
805     # file_name       Partition file name.
806     # status_code     HTTPS status code.
807     # message         Expected message of from upload partition file URI.
808 
809     @{Partition_file_list} =  Split String  ${file_name}  ,
810     ${num_records}=  Get Length  ${Partition_file_list}
811     Create Partition File  ${Partition_file_list}
812 
813     ${file_name_length}=  Get Length  ${Partition_file_list}[0]
814 
815     Run Keyword If  ${file_name_length} == 20
816     ...  Run Keywords
817     ...    Upload Partition File To BMC  ${Partition_file_list}  ${status_code}  ${message}  AND
818     ...    Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1  AND
819     ...    Delete BMC Partition File  ${Partition_file_list}  ${HTTP_OK}  ${FILE_DELETED_MESSAGE}
820     ...  ELSE
821     ...    Upload Partition File To BMC  ${Partition_file_list}  ${status_code}  ${message}
822 
823     Delete Local Partition File  ${Partition_file_list}
824 
825 
826 Check Redfish Fail To Upload Partition File Name With Special Character To BMC
827     [Documentation]  Upload the partition file to BMC with special character file name.
828     [Arguments]  ${file_name}  ${status_code}  ${message}
829 
830     # Description of argument(s):
831     # file_name       Partition file name.
832     # status_code     HTTPS status code.
833     # message         Expected message from upload partition file URI.
834 
835     @{Partition_file_list} =  Split String  ${file_name}  ,
836     ${num_records}=  Get Length  ${Partition_file_list}
837 
838     Create Partition File  ${Partition_file_list}
839 
840     Upload Partition File To BMC  ${Partition_file_list}  ${status_code}  ${message}
841 
842     ${status}=  Run Keyword And Return Status
843     ...  Verify Partition File On BMC  ${Partition_file_list}  Partition_status=1
844     Should Be Equal As Strings  ${status}  False
845 
846     Delete Local Partition File  ${Partition_file_list}
847