Skip to content

Commit ec8f33e

Browse files
authored
Merge pull request #5500 from minsis/issues-5497/proxy_for_index
Add no_proxy to index searches
2 parents a56a9e6 + 9e975a9 commit ec8f33e

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

CHANGELOG.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ Fixed
169169

170170
Contributed by @khushboobhatia01
171171

172+
* Fixed issue where pack index searches are ignoring no_proxy #5497
173+
174+
Contributed by @minsis
175+
172176
3.6.0 - October 29, 2021
173177
------------------------
174178

st2common/st2common/services/packs.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import os
2222
import requests
23+
from requests.utils import should_bypass_proxies
2324
import six
2425
from six.moves import range
2526
from oslo_config import cfg
@@ -83,6 +84,7 @@ def _fetch_and_compile_index(index_urls, logger=None, proxy_config=None):
8384
if proxy_config:
8485
https_proxy = proxy_config.get("https_proxy", None)
8586
http_proxy = proxy_config.get("http_proxy", None)
87+
no_proxy = proxy_config.get("no_proxy", None)
8688
ca_bundle_path = proxy_config.get("proxy_ca_bundle_path", None)
8789

8890
if https_proxy:
@@ -92,7 +94,17 @@ def _fetch_and_compile_index(index_urls, logger=None, proxy_config=None):
9294
if http_proxy:
9395
proxies_dict["http"] = http_proxy
9496

97+
if no_proxy:
98+
proxies_dict["no"] = no_proxy
99+
95100
for index_url in index_urls:
101+
102+
# TODO:
103+
# Bug in requests doesn't bypass proxies, so we do it ourselves
104+
# If this issue ever gets fixed then we can remove it
105+
# https://github.com/psf/requests/issues/4871
106+
bypass_proxy = should_bypass_proxies(index_url, proxies_dict.get("no"))
107+
96108
index_status = {
97109
"url": index_url,
98110
"packs": 0,
@@ -102,7 +114,11 @@ def _fetch_and_compile_index(index_urls, logger=None, proxy_config=None):
102114
index_json = None
103115

104116
try:
105-
request = requests.get(index_url, proxies=proxies_dict, verify=verify)
117+
request = requests.get(
118+
index_url,
119+
proxies=proxies_dict if not bypass_proxy else None,
120+
verify=verify if not bypass_proxy else True,
121+
)
106122
request.raise_for_status()
107123
index_json = request.json()
108124
except ValueError as e:

0 commit comments

Comments
 (0)