Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions libcloud/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
verification, depending on libcloud.security settings.
"""

import os
import warnings

import requests
Expand All @@ -42,9 +41,6 @@
# Default timeout for HTTP requests in seconds
DEFAULT_REQUEST_TIMEOUT = 60

HTTP_PROXY_ENV_VARIABLE_NAME = "http_proxy"
HTTPS_PROXY_ENV_VARIABLE_NAME = "https_proxy"


class SignedHTTPSAdapter(HTTPAdapter):
def __init__(self, cert_file, key_file):
Expand Down Expand Up @@ -88,6 +84,7 @@ def __init__(self):
def set_http_proxy(self, proxy_url):
"""
Set a HTTP proxy which will be used with this connection.
This will override any proxy environment variables.

:param proxy_url: Proxy URL (e.g. http://<hostname>:<port> without
authentication and
Expand Down Expand Up @@ -197,13 +194,8 @@ def __init__(self, host, port, secure=None, **kwargs):
":{}".format(port) if port not in (80, 443) else "",
)

# Support for HTTP(s) proxy
# NOTE: We always only use a single proxy (either HTTP or HTTPS)
https_proxy_url_env = os.environ.get(HTTPS_PROXY_ENV_VARIABLE_NAME, None)
http_proxy_url_env = os.environ.get(HTTP_PROXY_ENV_VARIABLE_NAME, https_proxy_url_env)

# Connection argument has precedence over environment variables
proxy_url = kwargs.pop("proxy_url", http_proxy_url_env)
# Connection argument has precedence over environment variables, which are handled downstream
proxy_url = kwargs.pop("proxy_url", None)

self._setup_verify()
self._setup_ca_cert()
Expand Down
15 changes: 3 additions & 12 deletions libcloud/test/test_connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,22 +104,12 @@ def test_parse_proxy_url(self):
)

def test_constructor(self):
proxy_url = "http://127.0.0.2:3128"
os.environ["http_proxy"] = proxy_url
conn = LibcloudConnection(host="localhost", port=80)
self.assertEqual(conn.proxy_scheme, "http")
self.assertEqual(conn.proxy_host, "127.0.0.2")
self.assertEqual(conn.proxy_port, 3128)
self.assertEqual(
conn.session.proxies,
{"http": "http://127.0.0.2:3128", "https": "http://127.0.0.2:3128"},
)

_ = os.environ.pop("http_proxy", None)
conn = LibcloudConnection(host="localhost", port=80)
self.assertIsNone(conn.proxy_scheme)
self.assertIsNone(conn.proxy_host)
self.assertIsNone(conn.proxy_port)
self.assertTrue(conn.session.proxies is None or not conn.session.proxies)

proxy_url = "http://127.0.0.3:3128"
conn.set_http_proxy(proxy_url=proxy_url)
Expand All @@ -143,7 +133,8 @@ def test_constructor(self):

os.environ["http_proxy"] = proxy_url
proxy_url = "http://127.0.0.5:3128"
conn = LibcloudConnection(host="localhost", port=80, proxy_url=proxy_url)
conn = LibcloudConnection(host="localhost", port=80)
conn.set_http_proxy(proxy_url=proxy_url)
self.assertEqual(conn.proxy_scheme, "http")
self.assertEqual(conn.proxy_host, "127.0.0.5")
self.assertEqual(conn.proxy_port, 3128)
Expand Down