Skip to content

Commit ca6d493

Browse files
committed
Remove explicit handling of proxy env variables in favor of downstream handling through Requests library
1 parent c899034 commit ca6d493

2 files changed

Lines changed: 6 additions & 23 deletions

File tree

libcloud/http.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
verification, depending on libcloud.security settings.
1919
"""
2020

21-
import os
2221
import warnings
2322

2423
import requests
@@ -42,9 +41,6 @@
4241
# Default timeout for HTTP requests in seconds
4342
DEFAULT_REQUEST_TIMEOUT = 60
4443

45-
HTTP_PROXY_ENV_VARIABLE_NAME = "http_proxy"
46-
HTTPS_PROXY_ENV_VARIABLE_NAME = "https_proxy"
47-
4844

4945
class SignedHTTPSAdapter(HTTPAdapter):
5046
def __init__(self, cert_file, key_file):
@@ -88,6 +84,7 @@ def __init__(self):
8884
def set_http_proxy(self, proxy_url):
8985
"""
9086
Set a HTTP proxy which will be used with this connection.
87+
This will override any proxy environment variables.
9188
9289
:param proxy_url: Proxy URL (e.g. http://<hostname>:<port> without
9390
authentication and
@@ -197,13 +194,8 @@ def __init__(self, host, port, secure=None, **kwargs):
197194
":{}".format(port) if port not in (80, 443) else "",
198195
)
199196

200-
# Support for HTTP(s) proxy
201-
# NOTE: We always only use a single proxy (either HTTP or HTTPS)
202-
https_proxy_url_env = os.environ.get(HTTPS_PROXY_ENV_VARIABLE_NAME, None)
203-
http_proxy_url_env = os.environ.get(HTTP_PROXY_ENV_VARIABLE_NAME, https_proxy_url_env)
204-
205-
# Connection argument has precedence over environment variables
206-
proxy_url = kwargs.pop("proxy_url", http_proxy_url_env)
197+
# Connection argument has precedence over environment variables, which are handled downstream
198+
proxy_url = kwargs.pop("proxy_url", None)
207199

208200
self._setup_verify()
209201
self._setup_ca_cert()

libcloud/test/test_connection.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,22 +104,12 @@ def test_parse_proxy_url(self):
104104
)
105105

106106
def test_constructor(self):
107-
proxy_url = "http://127.0.0.2:3128"
108-
os.environ["http_proxy"] = proxy_url
109-
conn = LibcloudConnection(host="localhost", port=80)
110-
self.assertEqual(conn.proxy_scheme, "http")
111-
self.assertEqual(conn.proxy_host, "127.0.0.2")
112-
self.assertEqual(conn.proxy_port, 3128)
113-
self.assertEqual(
114-
conn.session.proxies,
115-
{"http": "http://127.0.0.2:3128", "https": "http://127.0.0.2:3128"},
116-
)
117-
118107
_ = os.environ.pop("http_proxy", None)
119108
conn = LibcloudConnection(host="localhost", port=80)
120109
self.assertIsNone(conn.proxy_scheme)
121110
self.assertIsNone(conn.proxy_host)
122111
self.assertIsNone(conn.proxy_port)
112+
self.assertTrue(conn.session.proxies is None or not conn.session.proxies)
123113

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

144134
os.environ["http_proxy"] = proxy_url
145135
proxy_url = "http://127.0.0.5:3128"
146-
conn = LibcloudConnection(host="localhost", port=80, proxy_url=proxy_url)
136+
conn = LibcloudConnection(host="localhost", port=80)
137+
conn.set_http_proxy(proxy_url=proxy_url)
147138
self.assertEqual(conn.proxy_scheme, "http")
148139
self.assertEqual(conn.proxy_host, "127.0.0.5")
149140
self.assertEqual(conn.proxy_port, 3128)

0 commit comments

Comments
 (0)