Merge "Use keystoneclient functions to receive endpoint"

This commit is contained in:
Jenkins 2016-02-12 00:37:23 +00:00 committed by Gerrit Code Review
commit 132906146d
1 changed files with 11 additions and 20 deletions

View File

@ -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)