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