Run functional tests when no ceilometer endpoint
Currently if there is no metering endpoint in the service
catalog then no functional/integration tests can be done.
This change tolerates missing ceilometer endpoint.
Change-Id: I55d45048284c4e78b9a1a94a35ef3cddc7bc3a37
diff --git a/common/clients.py b/common/clients.py
index 6042456..c7a7f60 100644
--- a/common/clients.py
+++ b/common/clients.py
@@ -144,22 +144,26 @@
dscv = self.conf.disable_ssl_certificate_validation
keystone = self._get_identity_client()
- endpoint = keystone.service_catalog.url_for(
- attr='region',
- filter_value=self.conf.region,
- service_type='metering',
- endpoint_type='publicURL')
+ try:
+ endpoint = keystone.service_catalog.url_for(
+ attr='region',
+ filter_value=self.conf.region,
+ service_type='metering',
+ endpoint_type='publicURL')
- args = {
- 'username': self.conf.username,
- 'password': self.conf.password,
- 'tenant_name': self.conf.tenant_name,
- 'auth_url': self.conf.auth_url,
- 'insecure': dscv,
- 'region_name': self.conf.region,
- 'endpoint_type': 'publicURL',
- 'service_type': 'metering',
- }
+ except keystoneclient.exceptions.EndpointNotFound:
+ return None
+ else:
+ args = {
+ 'username': self.conf.username,
+ 'password': self.conf.password,
+ 'tenant_name': self.conf.tenant_name,
+ 'auth_url': self.conf.auth_url,
+ 'insecure': dscv,
+ 'region_name': self.conf.region,
+ 'endpoint_type': 'publicURL',
+ 'service_type': 'metering',
+ }
- return ceilometerclient.client.Client(self.CEILOMETER_VERSION,
- endpoint, **args)
+ return ceilometerclient.client.Client(self.CEILOMETER_VERSION,
+ endpoint, **args)