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