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