2020
2121import os
2222import requests
23+ from requests .utils import should_bypass_proxies
2324import six
2425from six .moves import range
2526from 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