Add Ceilometer client for scenarios tests
Ceilometer client is needed for scenario test
of ceilometer features.
blueprint add-ceilometer-scenario-tests
Change-Id: Ic1b8b7ea41cdabd74e9be951625b74298312880b
diff --git a/tempest/clients.py b/tempest/clients.py
index 7532bf2..4050a20 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -456,6 +456,7 @@
HEATCLIENT_VERSION = '1'
IRONICCLIENT_VERSION = '1'
SAHARACLIENT_VERSION = '1.1'
+ CEILOMETERCLIENT_VERSION = '2'
def __init__(self, credentials):
# FIXME(andreaf) Auth provider for client_type 'official' is
@@ -476,6 +477,8 @@
credentials)
self.data_processing_client = self._get_data_processing_client(
credentials)
+ self.ceilometer_client = self._get_ceilometer_client(
+ credentials)
def _get_roles(self):
admin_credentials = auth.get_default_credentials('identity_admin')
@@ -696,3 +699,34 @@
auth_url=auth_url)
return client
+
+ def _get_ceilometer_client(self, credentials):
+ if not CONF.service_available.ceilometer:
+ return None
+
+ import ceilometerclient.client
+
+ keystone = self._get_identity_client(credentials)
+ region = CONF.identity.region
+
+ endpoint_type = CONF.telemetry.endpoint_type
+ service_type = CONF.telemetry.catalog_type
+ auth_url = CONF.identity.uri
+
+ try:
+ keystone.service_catalog.url_for(
+ attr='region',
+ filter_value=region,
+ service_type=service_type,
+ endpoint_type=endpoint_type)
+ except keystoneclient.exceptions.EndpointNotFound:
+ return None
+ else:
+ return ceilometerclient.client.get_client(
+ self.CEILOMETERCLIENT_VERSION,
+ os_username=credentials.username,
+ os_password=credentials.password,
+ os_tenant_name=credentials.tenant_name,
+ os_auth_url=auth_url,
+ os_service_type=service_type,
+ os_endpoint_type=endpoint_type)
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index db26bda..c836227 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -82,6 +82,7 @@
cls.object_storage_client = cls.manager.object_storage_client
cls.orchestration_client = cls.manager.orchestration_client
cls.data_processing_client = cls.manager.data_processing_client
+ cls.ceilometer_client = cls.manager.ceilometer_client
cls.resource_keys = {}
cls.os_resources = []
diff --git a/tempest/test.py b/tempest/test.py
index bc94bcd..73dc870 100644
--- a/tempest/test.py
+++ b/tempest/test.py
@@ -107,6 +107,7 @@
'identity': True,
'object_storage': CONF.service_available.swift,
'dashboard': CONF.service_available.horizon,
+ 'ceilometer': CONF.service_available.ceilometer,
}
def decorator(f):
diff --git a/tempest/tests/test_tenant_isolation.py b/tempest/tests/test_tenant_isolation.py
index 7a9b6be..485beff 100644
--- a/tempest/tests/test_tenant_isolation.py
+++ b/tempest/tests/test_tenant_isolation.py
@@ -59,6 +59,8 @@
'_get_object_storage_client'))
self.useFixture(mockpatch.PatchObject(clients.OfficialClientManager,
'_get_orchestration_client'))
+ self.useFixture(mockpatch.PatchObject(clients.OfficialClientManager,
+ '_get_ceilometer_client'))
iso_creds = isolated_creds.IsolatedCreds('test class',
tempest_client=False)
self.assertTrue(isinstance(iso_creds.identity_admin_client,