in ec2stack/providers/cloudstack/requester.py [0:0]
def make_request_async(args, poll_period=2, timeout=3600):
"""
Makes an async request to Cloudstack.
@param args: Request payload.
@param poll_period: Poll time period.
@param timeout: Time before giving up on the request.
@return: Response.
"""
response = make_request(args)
responsekey = response.keys()[0]
if 'jobid' in response[responsekey]:
args = {'command': 'queryAsyncJobResult',
'jobid': response[responsekey]['jobid']}
response = make_request(args)
response = response['queryasyncjobresultresponse']
job_status = response['jobstatus']
if job_status in [1, 2]:
return response['jobresult']
elif job_status == 0:
time.sleep(poll_period)
timeout -= poll_period
return make_request_async(args, poll_period=poll_period,
timeout=timeout)
else:
return response[responsekey]