1579d8253Smanashsarma*** Settings ***
2579d8253Smanashsarma
3579d8253Smanashsarma
4579d8253SmanashsarmaDocumentation   Utilities for Redfishtool testing.
5579d8253Smanashsarma
6579d8253SmanashsarmaResource        resource.robot
7579d8253SmanashsarmaResource        bmc_redfish_resource.robot
8579d8253SmanashsarmaLibrary         OperatingSystem
9579d8253SmanashsarmaLibrary         String
10579d8253SmanashsarmaLibrary         Collections
11579d8253Smanashsarma
12579d8253Smanashsarma
13579d8253Smanashsarma*** Keywords ***
14579d8253Smanashsarma
15579d8253SmanashsarmaRedfishtool Get
16579d8253Smanashsarma    [Documentation]  Execute redfishtool for GET operation.
17579d8253Smanashsarma    [Arguments]  ${uri}  ${cmd_args}=${root_cmd_args}  ${expected_error}=200
18579d8253Smanashsarma
19579d8253Smanashsarma    # Description of argument(s):
20579d8253Smanashsarma    # uri             URI for GET operation (e.g. /redfish/v1/AccountService/Accounts/).
21579d8253Smanashsarma    # cmd_args        Commandline arguments.
22579d8253Smanashsarma    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
23579d8253Smanashsarma    #                 authentication error, etc. ).
24579d8253Smanashsarma
25*85c22656Sganesanb    ${cmd}=  Catenate  ${cmd_args} GET ${uri}
26*85c22656Sganesanb    Log  ${cmd}
27*85c22656Sganesanb    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd}
28*85c22656Sganesanb    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
29579d8253Smanashsarma
30579d8253Smanashsarma    [Return]  ${cmd_output}
31579d8253Smanashsarma
32579d8253Smanashsarma
33579d8253SmanashsarmaRedfishtool Patch
34579d8253Smanashsarma    [Documentation]  Execute redfishtool for  Patch operation.
35579d8253Smanashsarma    [Arguments]  ${payload}  ${uri}  ${cmd_args}=${root_cmd_args}  ${expected_error}=200
36579d8253Smanashsarma
37579d8253Smanashsarma    # Description of argument(s):
38579d8253Smanashsarma    # payload         Payload with POST operation (e.g. data for user name, role, etc. ).
39579d8253Smanashsarma    # uri             URI for PATCH operation (e.g. /redfish/v1/AccountService/Accounts/ ).
40579d8253Smanashsarma    # cmd_args        Commandline arguments.
41579d8253Smanashsarma    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
42579d8253Smanashsarma    #                 authentication error, etc. ).
43579d8253Smanashsarma
44*85c22656Sganesanb    ${cmd}=  Catenate  ${cmd_args} PATCH ${uri} --data=${payload}
45*85c22656Sganesanb    Log  ${cmd}
46*85c22656Sganesanb    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd}
47*85c22656Sganesanb    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
48579d8253Smanashsarma
49579d8253Smanashsarma    [Return]  ${cmd_output}
50579d8253Smanashsarma
51579d8253Smanashsarma
52579d8253SmanashsarmaRedfishtool Post
53579d8253Smanashsarma    [Documentation]  Execute redfishtool for  Post operation.
54579d8253Smanashsarma    [Arguments]  ${payload}  ${uri}  ${cmd_args}=${root_cmd_args}  ${expected_error}=200
55579d8253Smanashsarma
56579d8253Smanashsarma    # Description of argument(s):
57579d8253Smanashsarma    # payload         Payload with POST operation (e.g. data for user name, password, role,
58579d8253Smanashsarma    #                 enabled attribute)
59579d8253Smanashsarma    # uri             URI for POST operation (e.g. /redfish/v1/AccountService/Accounts/).
60579d8253Smanashsarma    # cmd_args        Commandline arguments.
61579d8253Smanashsarma    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
62579d8253Smanashsarma    #                 authentication error, etc. ).
63579d8253Smanashsarma
64*85c22656Sganesanb    ${cmd}=  Catenate  ${cmd_args} POST ${uri} --data=${payload}
65*85c22656Sganesanb    Log  ${cmd}
66*85c22656Sganesanb    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd}
67*85c22656Sganesanb    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
68579d8253Smanashsarma
69579d8253Smanashsarma    [Return]  ${cmd_output}
70579d8253Smanashsarma
71579d8253Smanashsarma
72579d8253SmanashsarmaRedfishtool Delete
73579d8253Smanashsarma    [Documentation]  Execute redfishtool for  Post operation.
74579d8253Smanashsarma    [Arguments]  ${uri}  ${cmd_args}=${root_cmd_args}  ${expected_error}=200
75579d8253Smanashsarma
76579d8253Smanashsarma    # Description of argument(s):
77579d8253Smanashsarma    # uri             URI for DELETE operation.
78579d8253Smanashsarma    # cmd_args        Commandline arguments.
79579d8253Smanashsarma    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
80579d8253Smanashsarma    #                 authentication error, etc. ).
81579d8253Smanashsarma
82*85c22656Sganesanb    ${cmd}=  Catenate  ${cmd_args} DELETE ${uri}
83*85c22656Sganesanb    Log  ${cmd}
84*85c22656Sganesanb    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd}
85*85c22656Sganesanb    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
86579d8253Smanashsarma
87579d8253Smanashsarma    [Return]  ${cmd_output}
88579d8253Smanashsarma
89579d8253Smanashsarma
90579d8253SmanashsarmaIs HTTP error Expected
91579d8253Smanashsarma    [Documentation]  Check if the HTTP error is expected.
92579d8253Smanashsarma    [Arguments]  ${cmd_output}  ${error_expected}
93579d8253Smanashsarma
94579d8253Smanashsarma    # Description of argument(s):
95579d8253Smanashsarma    # cmd_output      Output of an HTTP operation.
96579d8253Smanashsarma    # error_expected  Expected error.
97579d8253Smanashsarma
98*85c22656Sganesanb    ${cmd_rsp}=  Get Regexp Matches  ${cmd_output}  200|204
99*85c22656Sganesanb    ${cmd_rsp_status}=  Run Keyword And Return Status  Should Not Be Empty  ${cmd_rsp}
100*85c22656Sganesanb    Return From Keyword IF  ${cmd_rsp_status} == True
101*85c22656Sganesanb    ${matches}=  Get Regexp Matches  ${error_expected}  200|204
102*85c22656Sganesanb    ${rsp_status}=  Run Keyword And Return Status  Should Be Empty  ${matches}
103*85c22656Sganesanb    Run Keyword If  ${rsp_status} == False
104*85c22656Sganesanb    ...  Fail  msg=${cmd_output}
105579d8253Smanashsarma    @{words} =  Split String  ${error_expected}  ,
106579d8253Smanashsarma    @{errorString}=  Split String  ${cmd_output}  ${SPACE}
107*85c22656Sganesanb    FOR  ${error}  IN  @{words}
108*85c22656Sganesanb      ${status}=  Run Keyword And Return Status  Should Contain Any  ${errorString}  ${error}
109*85c22656Sganesanb      Return From Keyword If  ${status} == True
110*85c22656Sganesanb    END
111*85c22656Sganesanb    ${rsp_code}=  Run Keyword If  ${status} == False  Get Regexp Matches  ${cmd_output}  [0-9][0-9][0-9]
112*85c22656Sganesanb    ${rsp_code_status}=  Run Keyword And Return Status  Should Not Be Empty  ${rsp_code}
113*85c22656Sganesanb    Run Keyword If  ${rsp_code_status} == True
114*85c22656Sganesanb    ...    Fail  msg=Getting status code as ${rsp_code[0]} instead of ${error_expected}, status code mismatch.
115*85c22656Sganesanb    ...  ELSE
116*85c22656Sganesanb    ...    Fail  msg=${cmd_output}
117*85c22656Sganesanb
118