def make_request_async()

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]