summaryrefslogtreecommitdiff
path: root/boto/regioninfo.py
diff options
context:
space:
mode:
authorJordonPhillips <phjordon@amazon.com>2016-12-20 13:20:27 -0800
committerJordonPhillips <phjordon@amazon.com>2017-02-10 10:18:00 -0800
commit74daf341e29618bac1b905b98fe783b09b2d389a (patch)
treeef2425a46c29d64abf6c05153ccb766d18e24519 /boto/regioninfo.py
parent0f6ac4d14366d5178f4967c4e4a3e8806912a413 (diff)
downloadboto-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.py38
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()