def __init__(self, pool_connections=DEFAULT_POOLSIZE, pool_maxsize=DEFAULT_POOLSIZE, max_retries=DEFAULT_RETRIES, pool_block=DEFAULT_POOLBLOCK): if max_retries == DEFAULT_RETRIES: self.max_retries = Retry(0, read=False) else: self.max_retries = Retry.from_int(max_retries) self.config = {} self.proxy_manager = {} super(HTTPAdapter, self).__init__() self._pool_connections = pool_connections self._pool_maxsize = pool_maxsize self._pool_block = pool_block self.init_poolmanager(pool_connections, pool_maxsize, block=pool_block)
def _set_region_from_instance_metadata_service(region): # Check if region information from IMDS has already been read if _get_source_has_been_read(ExternalSources.IMDS): # Return False to allow fallback return False # Set source as read _set_source_has_been_read(ExternalSources.IMDS) try: retry_strategy = Retry(total=3, status_forcelist=[429, 500, 502, 503, 504], read=0, connect=3, status=3) s = requests.Session() s.mount(GET_REGION_URL, HTTPAdapter(max_retries=retry_strategy)) response = s.get(GET_REGION_URL, timeout=(10, 60), headers=METADATA_AUTH_HEADERS) region_metadata_raw = response.text logger.debug("Region metadata blob from IMDS is: {}".format( region_metadata_raw)) except (HTTPError, ConnectionError, RetryError) as e: logger.debug( "Failed to call IMDS service because of error: {}".format(e)) return False if response.status_code != 200: logger.debug( "HTTP Get Failed: URL: {}, Status: {}, Message: {}".format( GET_REGION_URL, response.status_code, response.text)) return False try: from json.decoder import JSONDecodeError except ImportError: JSONDecodeError = ValueError try: region_metadata = json.loads(region_metadata_raw) except JSONDecodeError as e: # Unable to parse the raw response logger.debug( "Decoding JSON from IMDS service because of error: {}".format(e)) return False if _check_valid_schema(region_metadata): return _add_region_information_to_lookup(region_metadata, region) return False