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 61*** Keywords *** 62OpenBMC Get Request 63 [Arguments] ${uri} &{kwargs} 64 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 65 Log Request method=Get base_uri=${base_uri} args=&{kwargs} 66 Initialize OpenBMC 67 ${ret}= Get Request openbmc ${base_uri} &{kwargs} timeout=10 68 Log Response ${ret} 69 [Return] ${ret} 70 71OpenBMC Post Request 72 [Arguments] ${uri} &{kwargs} 73 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 74 ${headers}= Create Dictionary Content-Type=application/json 75 set to dictionary ${kwargs} headers ${headers} 76 Log Request method=Post base_uri=${base_uri} args=&{kwargs} 77 Initialize OpenBMC 78 ${ret}= Post Request openbmc ${base_uri} &{kwargs} timeout=10 79 Log Response ${ret} 80 [Return] ${ret} 81 82OpenBMC Put Request 83 [Arguments] ${uri} &{kwargs} 84 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 85 ${headers}= Create Dictionary Content-Type=application/json 86 set to dictionary ${kwargs} headers ${headers} 87 Log Request method=Put base_uri=${base_uri} args=&{kwargs} 88 Initialize OpenBMC 89 ${ret}= Put Request openbmc ${base_uri} &{kwargs} timeout=10 90 Log Response ${ret} 91 [Return] ${ret} 92 93OpenBMC Delete Request 94 [Arguments] ${uri} &{kwargs} 95 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 96 Log Request method=Delete base_uri=${base_uri} args=&{kwargs} 97 Initialize OpenBMC 98 ${ret}= Put Request openbmc ${base_uri} &{kwargs} timeout=10 99 Log Response ${ret} 100 [Return] ${ret} 101 102Initialize OpenBMC 103 Create Session openbmc ${AUTH_URI} timeout=5 max_retries=3 104 ${headers}= Create Dictionary Content-Type=application/json 105 @{credentials} = Create List ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 106 ${data} = create dictionary data=@{credentials} 107 ${resp} = Post Request openbmc /login data=${data} headers=${headers} 108 should be equal as strings ${resp.status_code} ${HTTP_OK} 109 110Log Request 111 [Arguments] &{kwargs} 112 ${msg}= Catenate SEPARATOR= URI: ${AUTH_URI} ${kwargs["base_uri"]} , method: 113 ... ${kwargs["method"]} , args: ${kwargs["args"]} 114 Logging ${msg} console=True 115 116Log Response 117 [Arguments] ${resp} 118 ${msg}= Catenate SEPARATOR= Response code: ${resp.status_code} , Content: ${resp.content} 119 Logging ${msg} console=True 120 121Logging 122 [Arguments] ${msg} ${console}=default False 123 Log ${msg} console=True 124 125Read Attribute 126 [arguments] ${uri} ${attr} 127 ${resp} = OpenBMC Get Request ${uri}/attr/${attr} 128 ${content}= To Json ${resp.content} 129 [return] ${content["data"]} 130 131Write Attribute 132 [Arguments] ${uri} ${attr} &{kwargs} 133 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 134 ${resp} = openbmc put request ${base_uri}/attr/${attr} &{kwargs} 135 should be equal as strings ${resp.status_code} ${HTTP_OK} 136 ${json} = to json ${resp.content} 137 138Read Properties 139 [arguments] ${uri} 140 ${resp} = OpenBMC Get Request ${uri} timeout=10 141 Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 142 ${content}= To Json ${resp.content} 143 [return] ${content["data"]} 144 145Call Method 146 [arguments] ${uri} ${method} &{kwargs} 147 ${base_uri}= Catenate SEPARATOR= ${DBUS_PREFIX} ${uri} 148 ${resp} = openbmc post request ${base_uri}/action/${method} &{kwargs} 149 [return] ${resp} 150