Merge "cloud_config:get_session_endpoint: catch Keystone EndpointNotFound"

This commit is contained in:
Jenkins 2016-10-12 23:50:03 +00:00 committed by Gerrit Code Review
commit 6c252384c2
2 changed files with 22 additions and 5 deletions

View File

@ -16,6 +16,7 @@ import importlib
import warnings
from keystoneauth1 import adapter
import keystoneauth1.exceptions.catalog
from keystoneauth1 import plugin
from keystoneauth1 import session
import requestsexceptions
@ -251,11 +252,18 @@ class CloudConfig(object):
if service_key == 'identity':
endpoint = session.get_endpoint(interface=plugin.AUTH_INTERFACE)
else:
endpoint = session.get_endpoint(
service_type=self.get_service_type(service_key),
service_name=self.get_service_name(service_key),
interface=self.get_interface(service_key),
region_name=self.region)
args = {
'service_type': self.get_service_type(service_key),
'service_name': self.get_service_name(service_key),
'interface': self.get_interface(service_key),
'region_name': self.region
}
try:
endpoint = session.get_endpoint(**args)
except keystoneauth1.exceptions.catalog.EndpointNotFound:
self.log.warning("Keystone catalog entry not found (%s)",
args)
endpoint = None
return endpoint
def get_legacy_client(

View File

@ -12,6 +12,7 @@
import copy
from keystoneauth1 import exceptions as ksa_exceptions
from keystoneauth1 import plugin as ksa_plugin
from keystoneauth1 import session as ksa_session
import mock
@ -235,6 +236,14 @@ class TestCloudConfig(base.TestCase):
region_name='region-al',
service_type='orchestration')
@mock.patch.object(cloud_config.CloudConfig, 'get_session')
def test_session_endpoint_not_found(self, mock_get_session):
exc_to_raise = ksa_exceptions.catalog.EndpointNotFound
mock_get_session.return_value.get_endpoint.side_effect = exc_to_raise
cc = cloud_config.CloudConfig(
"test1", "region-al", {}, auth_plugin=mock.Mock())
self.assertIsNone(cc.get_session_endpoint('notfound'))
@mock.patch.object(cloud_config.CloudConfig, 'get_api_version')
@mock.patch.object(cloud_config.CloudConfig, 'get_auth_args')
@mock.patch.object(cloud_config.CloudConfig, 'get_session_endpoint')