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}= Put Request openbmc ${base_uri} &{kwargs} timeout=${timeout} 107 Log Response ${ret} 108 [Return] ${ret} 109 110Initialize OpenBMC 111 [Arguments] ${timeout}=10 ${quiet}=${1} 112 113 Create Session openbmc ${AUTH_URI} timeout=${timeout} max_retries=3 114 ${headers}= Create Dictionary Content-Type=application/json 115 @{credentials}= Create List ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 116 ${data}= create dictionary data=@{credentials} 117 118 ${status} ${resp}= Run Keyword And Ignore Error Post Request openbmc 119 ... /login data=${data} headers=${headers} 120 121 Should Be Equal ${status} PASS msg=${resp} 122 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 123 124Log Request 125 [Arguments] &{kwargs} 126 ${msg}= Catenate SEPARATOR= URI: ${AUTH_URI} ${kwargs["base_uri"]} 127 ... , method: ${kwargs["method"]} , args: ${kwargs["args"]} 128 Logging ${msg} console=True 129 130Log Response 131 [Arguments] ${resp} 132 ${msg}= Catenate SEPARATOR= Response code: ${resp.status_code} 133 ... , Content: ${resp.content} 134 Logging ${msg} console=True 135 136Logging 137 [Arguments] ${msg} ${console}=default False 138 Log ${msg} console=True 139 140Read Attribute 141 [Arguments] ${uri} ${attr} ${timeout}=10 ${quiet}=${QUIET} 142 ${resp}= OpenBMC Get Request ${uri}/attr/${attr} timeout=${timeout} 143 ... quiet=${quiet} 144 ${content}= To Json ${resp.content} 145 [Return] ${content["data"]} 146 147Write Attribute 148 [Arguments] ${uri} ${attr} ${timeout}=10 &{kwargs} 149 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 150 ${resp}= openbmc put request ${base_uri}/attr/${attr} 151 ... timeout=${timeout} &{kwargs} 152 should be equal as strings ${resp.status_code} ${HTTP_OK} 153 ${json}= to json ${resp.content} 154 155Read Properties 156 [Arguments] ${uri} ${timeout}=10 157 ${resp}= OpenBMC Get Request ${uri} timeout=${timeout} 158 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 159 ${content}= To Json ${resp.content} 160 [Return] ${content["data"]} 161 162Call Method 163 [Arguments] ${uri} ${method} ${timeout}=10 ${quiet}=${QUIET} &{kwargs} 164 165 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 166 ${resp}= OpenBmc Post Request ${base_uri}/action/${method} 167 ... timeout=${timeout} quiet=${quiet} &{kwargs} 168 [Return] ${resp} 169