Use separate connect and data timeouts
This allows us to keep a very low connect timeout of 3 seconds, but also ensure that long commands (e.g. --wait or VM disable) can take as long as the API requires to complete. Avoids having to explicitly set very long single-instance timeouts for other functions which would block forever on an unreachable API.
This commit is contained in:
parent
799c3e8d5d
commit
e7d7378bae
|
@ -123,8 +123,10 @@ def call_api(
|
|||
params=None,
|
||||
data=None,
|
||||
files=None,
|
||||
timeout=3,
|
||||
):
|
||||
# Set the connect timeout to 3 seconds but extremely long (48 hour) data timeout
|
||||
timeout = (3, 172800)
|
||||
|
||||
# Craft the URI
|
||||
uri = "{}://{}{}{}".format(
|
||||
config["api_scheme"], config["api_host"], config["api_prefix"], request_uri
|
||||
|
|
|
@ -377,19 +377,12 @@ def vm_state(config, vm, target_state, force=False, wait=False):
|
|||
API arguments: state={state}, wait={wait}
|
||||
API schema: {"message":"{data}"}
|
||||
"""
|
||||
if wait or target_state == "disable":
|
||||
timeout = 300
|
||||
else:
|
||||
timeout = 3
|
||||
|
||||
params = {
|
||||
"state": target_state,
|
||||
"force": str(force).lower(),
|
||||
"wait": str(wait).lower(),
|
||||
}
|
||||
response = call_api(
|
||||
config, "post", "/vm/{vm}/state".format(vm=vm), params=params, timeout=timeout
|
||||
)
|
||||
response = call_api(config, "post", "/vm/{vm}/state".format(vm=vm), params=params)
|
||||
|
||||
if response.status_code == 200:
|
||||
retstatus = True
|
||||
|
|
Loading…
Reference in New Issue