Dont throw exception on missing service
We log exceptions to debug log, but checking for the existence of a service is normal flow. Don't throw an exception when we can just return None and have everything work without spamming logs. Change-Id: I35f431b12c16e085c0e256cad514134066e15a39
This commit is contained in:
parent
424cb017dd
commit
137458fc1c
@ -33,7 +33,6 @@ from keystoneauth1 import plugin as ksa_plugin
|
||||
from keystoneauth1 import session as ksa_session
|
||||
from keystoneclient.v2_0 import client as k2_client
|
||||
from keystoneclient.v3 import client as k3_client
|
||||
from keystoneclient import exceptions as keystone_exceptions
|
||||
from novaclient import client as nova_client
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
from neutronclient.common import exceptions as neutron_exceptions
|
||||
@ -724,25 +723,24 @@ class OpenStackCloud(object):
|
||||
service_key),
|
||||
interface=self.cloud_config.get_interface(service_key),
|
||||
region_name=self.region_name)
|
||||
except keystone_exceptions.EndpointNotFound as e:
|
||||
except keystoneauth1.exceptions.catalog.EndpointNotFound as e:
|
||||
self.log.debug(
|
||||
"Endpoint not found in %s cloud: %s", self.name, str(e))
|
||||
endpoint = None
|
||||
except Exception as e:
|
||||
raise OpenStackCloudException(
|
||||
"Error getting %s endpoint: %s" % (service_key, str(e)))
|
||||
if endpoint is None:
|
||||
raise OpenStackCloudUnavailableService(
|
||||
"Cloud {cloud} does not have a {service} service".format(
|
||||
cloud=self.name, service=service_key))
|
||||
return endpoint
|
||||
|
||||
def has_service(self, service_key):
|
||||
try:
|
||||
self.get_session_endpoint(service_key)
|
||||
return True
|
||||
endpoint = self.get_session_endpoint(service_key)
|
||||
except OpenStackCloudException:
|
||||
return False
|
||||
if endpoint:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
@_cache_on_arguments()
|
||||
def _nova_extensions(self):
|
||||
|
@ -47,10 +47,6 @@ class OpenStackCloudTimeout(OpenStackCloudException):
|
||||
pass
|
||||
|
||||
|
||||
class OpenStackCloudUnavailableService(OpenStackCloudException):
|
||||
pass
|
||||
|
||||
|
||||
class OpenStackCloudUnavailableExtension(OpenStackCloudException):
|
||||
pass
|
||||
|
||||
|
@ -768,10 +768,8 @@ class TestShadeOperator(base.TestCase):
|
||||
@mock.patch.object(shade.OpenStackCloud, 'keystone_session')
|
||||
def test_get_session_endpoint_unavailable(self, session_mock):
|
||||
session_mock.get_endpoint.return_value = None
|
||||
with testtools.ExpectedException(
|
||||
exc.OpenStackCloudUnavailableService,
|
||||
"Cloud.*does not have a image service"):
|
||||
self.cloud.get_session_endpoint("image")
|
||||
image_endpoint = self.cloud.get_session_endpoint("image")
|
||||
self.assertIsNone(image_endpoint)
|
||||
|
||||
@mock.patch.object(shade.OpenStackCloud, 'keystone_session')
|
||||
def test_get_session_endpoint_identity(self, session_mock):
|
||||
|
Loading…
x
Reference in New Issue
Block a user