Merge "Use keystoneclient functions to receive endpoint"
This commit is contained in:
commit
132906146d
|
@ -29,6 +29,7 @@ Keystone (an identity management system).
|
||||||
http://service_endpoint/
|
http://service_endpoint/
|
||||||
"""
|
"""
|
||||||
import httplib2
|
import httplib2
|
||||||
|
from keystoneclient import service_catalog as ks_service_catalog
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
# NOTE(jokke): simplified transition to py3, behaves like py2 xrange
|
# NOTE(jokke): simplified transition to py3, behaves like py2 xrange
|
||||||
|
@ -268,24 +269,14 @@ def get_endpoint(service_catalog, service_type='image', endpoint_region=None,
|
||||||
only one -- successful match in the catalog,
|
only one -- successful match in the catalog,
|
||||||
otherwise we will raise an exception.
|
otherwise we will raise an exception.
|
||||||
"""
|
"""
|
||||||
endpoint = None
|
endpoints = ks_service_catalog.ServiceCatalogV2(
|
||||||
for service in service_catalog:
|
{'serviceCatalog': service_catalog}
|
||||||
s_type = None
|
).get_urls(service_type=service_type,
|
||||||
try:
|
region_name=endpoint_region,
|
||||||
s_type = service['type']
|
endpoint_type=endpoint_type)
|
||||||
except KeyError:
|
if endpoints is None:
|
||||||
msg = _('Encountered service with no "type": %s') % s_type
|
|
||||||
LOG.warn(msg)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if s_type == service_type:
|
|
||||||
for ep in service['endpoints']:
|
|
||||||
if endpoint_region is None or endpoint_region == ep['region']:
|
|
||||||
if endpoint is not None:
|
|
||||||
# This is a second match, abort
|
|
||||||
raise exception.RegionAmbiguity(region=endpoint_region)
|
|
||||||
endpoint = ep
|
|
||||||
if endpoint and endpoint.get(endpoint_type):
|
|
||||||
return endpoint[endpoint_type]
|
|
||||||
else:
|
|
||||||
raise exception.NoServiceEndpoint()
|
raise exception.NoServiceEndpoint()
|
||||||
|
elif len(endpoints) == 1:
|
||||||
|
return endpoints[0]
|
||||||
|
else:
|
||||||
|
raise exception.RegionAmbiguity(region=endpoint_region)
|
||||||
|
|
Loading…
Reference in New Issue