Beispiel #1
0
        def body_producer(write):
            def on_data(data):
                write(data)

            req = HTTPRequest(url=file_info['path'],
                              method="GET",
                              connect_timeout=60,
                              request_timeout=1800,
                              streaming_callback=on_data,
                              validate_cert=False)
            cli = AsyncHTTPClient()
            cli.max_body_size = MAX_IMAGE_SIZE
            yield cli.fetch(req)
Beispiel #2
0
def connect_request(session,
                    type,
                    url,
                    method,
                    response_key=None,
                    body=None,
                    body_producer=None,
                    streaming_callback=None,
                    interface=INTF_TYPE_ADMIN,
                    token=None,
                    content_length=None,
                    request_timeout=600,
                    max_body_size=None,
                    content_type="application/json"):
    """
     请求openstack接口方法
    :param response_key:
    :param session:{'url':url,'token':token,'token_id':"uuid"}
    :param type 服务类型
    :param url: url参数
    :param method:
    :param body:
    :param content_type
    :return:
    :param interface: 接口类型 'admin' - default, 'public', 'internal'
    :param token: private token
    """

    token = token if token else session.id
    result = None
    intf_key = interface + 'URL'
    if type in session.urls and intf_key in session.urls[type]:
        service_url = session.urls[type][intf_key]
    else:
        raise OpenStackException()
    try:
        if body:
            body = json.dumps(body)
        req_url = service_url + url
        headers = {"X-Auth-Token": token, "Content-Type": content_type}
        if content_length:
            headers['Content-Length'] = str(content_length)
        req = HTTPRequest(url=req_url,
                          method=method,
                          body=body,
                          body_producer=body_producer,
                          streaming_callback=streaming_callback,
                          headers=headers,
                          connect_timeout=200,
                          request_timeout=request_timeout,
                          validate_cert=False)
        cli = AsyncHTTPClient()
        if max_body_size:
            cli.max_body_size = max_body_size
        rep = yield cli.fetch(req)
        if rep.body:
            result = json.loads(rep.body)
            if response_key:
                result = result[response_key]
    except Exception as e:
        LOG.error("request url [%s] body [%s] error %s", req_url, body,
                  e.response.body)
        raise OpenStackException(e)
    raise gen.Return(result)