diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 6770482b3a..c1091ef86a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -169,6 +169,10 @@ Fixed Contributed by @khushboobhatia01 +* Fixed issue where pack index searches are ignoring no_proxy #5497 + + Contributed by @minsis + 3.6.0 - October 29, 2021 ------------------------ diff --git a/st2common/st2common/services/packs.py b/st2common/st2common/services/packs.py index 6633fbefde..ee2d937758 100644 --- a/st2common/st2common/services/packs.py +++ b/st2common/st2common/services/packs.py @@ -20,6 +20,7 @@ import os import requests +from requests.utils import should_bypass_proxies import six from six.moves import range from oslo_config import cfg @@ -83,6 +84,7 @@ def _fetch_and_compile_index(index_urls, logger=None, proxy_config=None): if proxy_config: https_proxy = proxy_config.get("https_proxy", None) http_proxy = proxy_config.get("http_proxy", None) + no_proxy = proxy_config.get("no_proxy", None) ca_bundle_path = proxy_config.get("proxy_ca_bundle_path", None) if https_proxy: @@ -92,7 +94,17 @@ def _fetch_and_compile_index(index_urls, logger=None, proxy_config=None): if http_proxy: proxies_dict["http"] = http_proxy + if no_proxy: + proxies_dict["no"] = no_proxy + for index_url in index_urls: + + # TODO: + # Bug in requests doesn't bypass proxies, so we do it ourselves + # If this issue ever gets fixed then we can remove it + # https://github.com/psf/requests/issues/4871 + bypass_proxy = should_bypass_proxies(index_url, proxies_dict.get("no")) + index_status = { "url": index_url, "packs": 0, @@ -102,7 +114,11 @@ def _fetch_and_compile_index(index_urls, logger=None, proxy_config=None): index_json = None try: - request = requests.get(index_url, proxies=proxies_dict, verify=verify) + request = requests.get( + index_url, + proxies=proxies_dict if not bypass_proxy else None, + verify=verify if not bypass_proxy else True, + ) request.raise_for_status() index_json = request.json() except ValueError as e: