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