1*** Settings *** 2Library Collections 3Library String 4Library RequestsLibrary.RequestsKeywords 5Library OperatingSystem 6Resource ../lib/resource.txt 7Library ../lib/disable_warning_urllib.py 8 9*** Variables *** 10# Response codes 11${HTTP_CONTINUE} 100 12${HTTP_SWITCHING_PROTOCOLS} 101 13${HTTP_PROCESSING} 102 14${HTTP_OK} 200 15${HTTP_CREATED} 201 16${HTTP_ACCEPTED} 202 17${HTTP_NON_AUTHORITATIVE_INFORMATION} 203 18${HTTP_NO_CONTENT} 204 19${HTTP_RESET_CONTENT} 205 20${HTTP_PARTIAL_CONTENT} 206 21${HTTP_MULTI_STATUS} 207 22${HTTP_IM_USED} 226 23${HTTP_MULTIPLE_CHOICES} 300 24${HTTP_MOVED_PERMANENTLY} 301 25${HTTP_FOUND} 302 26${HTTP_SEE_OTHER} 303 27${HTTP_NOT_MODIFIED} 304 28${HTTP_USE_PROXY} 305 29${HTTP_TEMPORARY_REDIRECT} 307 30${HTTP_BAD_REQUEST} 400 31${HTTP_UNAUTHORIZED} 401 32${HTTP_PAYMENT_REQUIRED} 402 33${HTTP_FORBIDDEN} 403 34${HTTP_NOT_FOUND} 404 35${HTTP_METHOD_NOT_ALLOWED} 405 36${HTTP_NOT_ACCEPTABLE} 406 37${HTTP_PROXY_AUTHENTICATION_REQUIRED} 407 38${HTTP_REQUEST_TIMEOUT} 408 39${HTTP_CONFLICT} 409 40${HTTP_GONE} 410 41${HTTP_LENGTH_REQUIRED} 411 42${HTTP_PRECONDITION_FAILED} 412 43${HTTP_REQUEST_ENTITY_TOO_LARGE} 413 44${HTTP_REQUEST_URI_TOO_LONG} 414 45${HTTP_UNSUPPORTED_MEDIA_TYPE} 415 46${HTTP_REQUESTED_RANGE_NOT_SATISFIABLE} 416 47${HTTP_EXPECTATION_FAILED} 417 48${HTTP_UNPROCESSABLE_ENTITY} 422 49${HTTP_LOCKED} 423 50${HTTP_FAILED_DEPENDENCY} 424 51${HTTP_UPGRADE_REQUIRED} 426 52${HTTP_INTERNAL_SERVER_ERROR} 500 53${HTTP_NOT_IMPLEMENTED} 501 54${HTTP_BAD_GATEWAY} 502 55${HTTP_SERVICE_UNAVAILABLE} 503 56${HTTP_GATEWAY_TIMEOUT} 504 57${HTTP_HTTP_VERSION_NOT_SUPPORTED} 505 58${HTTP_INSUFFICIENT_STORAGE} 507 59${HTTP_NOT_EXTENDED} 510 60# Assign default value to QUIET for programs which may not define it. 61${QUIET} ${0} 62 63*** Keywords *** 64OpenBMC Get Request 65 [Arguments] ${uri} ${timeout}=10 ${quiet}=${QUIET} &{kwargs} 66 67 Initialize OpenBMC ${timeout} quiet=${quiet} 68 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 69 Run Keyword If '${quiet}' == '${0}' Log Request method=Get 70 ... base_uri=${base_uri} args=&{kwargs} 71 ${ret}= Get Request openbmc ${base_uri} &{kwargs} timeout=${timeout} 72 Run Keyword If '${quiet}' == '${0}' Log Response ${ret} 73 [Return] ${ret} 74 75OpenBMC Post Request 76 [Arguments] ${uri} ${timeout}=10 ${quiet}=${QUIET} &{kwargs} 77 78 Initialize OpenBMC ${timeout} quiet=${quiet} 79 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 80 ${headers}= Create Dictionary Content-Type=application/json 81 set to dictionary ${kwargs} headers ${headers} 82 Run Keyword If '${quiet}' == '${0}' Log Request method=Post 83 ... base_uri=${base_uri} args=&{kwargs} 84 ${ret}= Post Request openbmc ${base_uri} &{kwargs} timeout=${timeout} 85 Run Keyword If '${quiet}' == '${0}' Log Response ${ret} 86 [Return] ${ret} 87 88OpenBMC Put Request 89 [Arguments] ${uri} ${timeout}=10 &{kwargs} 90 91 Initialize OpenBMC ${timeout} 92 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 93 ${headers}= Create Dictionary Content-Type=application/json 94 set to dictionary ${kwargs} headers ${headers} 95 Log Request method=Put base_uri=${base_uri} args=&{kwargs} 96 ${ret}= Put Request openbmc ${base_uri} &{kwargs} timeout=${timeout} 97 Log Response ${ret} 98 [Return] ${ret} 99 100OpenBMC Delete Request 101 [Arguments] ${uri} ${timeout}=10 &{kwargs} 102 103 Initialize OpenBMC ${timeout} 104 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 105 Log Request method=Delete base_uri=${base_uri} args=&{kwargs} 106 ${ret}= Delete Request openbmc ${base_uri} &{kwargs} timeout=${timeout} 107 Log Response ${ret} 108 [Return] ${ret} 109 110Initialize OpenBMC 111 [Arguments] ${timeout}=20 ${quiet}=${1} 112 113 # Description of argument(s): 114 # timeout REST login attempt time out. 115 # quiet Supress console log if set. 116 117 # TODO : Task to revert this changes openbmc/openbmc-test-automation#532 118 # This will retry at 20 second interval. 119 Wait Until Keyword Succeeds 40 sec 20 sec 120 ... Post Login Request ${timeout} ${quiet} 121 122Post Login Request 123 [Arguments] ${timeout}=20 ${quiet}=${1} 124 125 # Description of argument(s): 126 # timeout REST login attempt time out. 127 # quiet Supress console log if set. 128 129 Create Session openbmc ${AUTH_URI} timeout=${timeout} max_retries=3 130 ${headers}= Create Dictionary Content-Type=application/json 131 @{credentials}= Create List ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 132 ${data}= create dictionary data=@{credentials} 133 ${status} ${resp}= Run Keyword And Ignore Error Post Request openbmc 134 ... /login data=${data} headers=${headers} 135 136 Should Be Equal ${status} PASS msg=${resp} 137 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 138 139Log Out OpenBMC 140 [Documentation] Log out REST connection with active session "openbmc". 141 142 ${headers}= Create Dictionary Content-Type=application/json 143 ${data}= Create dictionary data=@{EMPTY} 144 145 # If there is no active sesion it will throw the following exception 146 # "Non-existing index or alias 'openbmc'" 147 ${resp}= Post Request openbmc 148 ... /logout data=${data} headers=${headers} 149 150 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 151 ... msg=${resp} 152 153Log Request 154 [Arguments] &{kwargs} 155 ${msg}= Catenate SEPARATOR= URI: ${AUTH_URI} ${kwargs["base_uri"]} 156 ... , method: ${kwargs["method"]} , args: ${kwargs["args"]} 157 Logging ${msg} console=True 158 159Log Response 160 [Arguments] ${resp} 161 ${msg}= Catenate SEPARATOR= Response code: ${resp.status_code} 162 ... , Content: ${resp.content} 163 Logging ${msg} console=True 164 165Logging 166 [Arguments] ${msg} ${console}=default False 167 Log ${msg} console=True 168 169Read Attribute 170 [Arguments] ${uri} ${attr} ${timeout}=10 ${quiet}=${QUIET} 171 ${resp}= OpenBMC Get Request ${uri}/attr/${attr} timeout=${timeout} 172 ... quiet=${quiet} 173 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 174 ${content}= To Json ${resp.content} 175 [Return] ${content["data"]} 176 177Write Attribute 178 [Arguments] ${uri} ${attr} ${timeout}=10 &{kwargs} 179 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 180 ${resp}= openbmc put request ${base_uri}/attr/${attr} 181 ... timeout=${timeout} &{kwargs} 182 should be equal as strings ${resp.status_code} ${HTTP_OK} 183 ${json}= to json ${resp.content} 184 185Read Properties 186 [Arguments] ${uri} ${timeout}=10 187 ${resp}= OpenBMC Get Request ${uri} timeout=${timeout} 188 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 189 ${content}= To Json ${resp.content} 190 [Return] ${content["data"]} 191 192Call Method 193 [Arguments] ${uri} ${method} ${timeout}=10 ${quiet}=${QUIET} &{kwargs} 194 195 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 196 ${resp}= OpenBmc Post Request ${base_uri}/action/${method} 197 ... timeout=${timeout} quiet=${quiet} &{kwargs} 198 [Return] ${resp} 199