diff options
author | JordonPhillips <phjordon@amazon.com> | 2016-12-20 13:20:27 -0800 |
---|---|---|
committer | JordonPhillips <phjordon@amazon.com> | 2017-02-10 10:18:00 -0800 |
commit | 74daf341e29618bac1b905b98fe783b09b2d389a (patch) | |
tree | ef2425a46c29d64abf6c05153ccb766d18e24519 /boto/regioninfo.py | |
parent | 0f6ac4d14366d5178f4967c4e4a3e8806912a413 (diff) | |
download | boto-74daf341e29618bac1b905b98fe783b09b2d389a.tar.gz |
Use generic connect function
This points all the existing `connect_to_region` functions to the
generic `connect` function within regioninfo.
Diffstat (limited to 'boto/regioninfo.py')
-rw-r--r-- | boto/regioninfo.py | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/boto/regioninfo.py b/boto/regioninfo.py index c7b24a4c..caf1b6e7 100644 --- a/boto/regioninfo.py +++ b/boto/regioninfo.py @@ -205,27 +205,41 @@ def connect(service_name, region_name, region_cls=None, :returns: A configured connection class. """ - endpoints = load_endpoint_json(boto.ENDPOINTS_PATH) - resolver = BotoEndpointResolver(endpoints) + region = _get_region(service_name, region_name, region_cls, connection_cls) - if not _use_endpoint_heuristics(): - available_regions = resolver.get_all_available_regions(service_name) - if region_name not in available_regions: - return None + if region is None and _use_endpoint_heuristics(): + region = _get_region_with_heuristics( + service_name, region_name, region_cls, connection_cls + ) - hostname = resolver.resolve_hostname(service_name, region_name) + if region is None: + return None + + return region.connect(**kw_params) - if region_cls is None: - region_cls = RegionInfo - region = region_cls( +def _get_region(service_name, region_name, region_cls=None, + connection_cls=None): + """Finds the region by searching through the known regions.""" + for region in get_regions(service_name, region_cls, connection_cls): + if region.name == region_name: + return region + return None + + +def _get_region_with_heuristics(service_name, region_name, region_cls=None, + connection_cls=None): + """Finds the region using known regions and heuristics.""" + endpoints = load_endpoint_json(boto.ENDPOINTS_PATH) + resolver = BotoEndpointResolver(endpoints) + hostname = resolver.resolve_hostname(service_name, region_name) + + return region_cls( name=region_name, endpoint=hostname, connection_cls=connection_cls ) - return region.connect(**kw_params) - def _use_endpoint_heuristics(): env_var = os.environ.get('BOTO_USE_ENDPOINT_HEURISTICS', 'false').lower() |