Move _get_region() to NegativeRestClient
_get_region() was used for getting a region from CONF for each project,
but most projects' sections contain a region value and it is easy to
specify its value instead of _get_region().
In addition, RestClient will become a tempest-lib class and it is needed
to separate CONF values from a RestClient class.
This patch moves _get_region() to NegativeRestClient and makes each client
specify its own CONF value.
Change-Id: Ib26badf64e7cddf4158e4720e193b3129e8fdb12
diff --git a/tempest/common/rest_client.py b/tempest/common/rest_client.py
index ca87a75..4b80871 100644
--- a/tempest/common/rest_client.py
+++ b/tempest/common/rest_client.py
@@ -78,10 +78,12 @@
LOG = logging.getLogger(__name__)
- def __init__(self, auth_provider, service, endpoint_type='publicURL',
+ def __init__(self, auth_provider, service, region,
+ endpoint_type='publicURL',
build_interval=1, build_timeout=60):
self.auth_provider = auth_provider
self.service = service
+ self.region = region
self.endpoint_type = endpoint_type
self.build_interval = build_interval
self.build_timeout = build_timeout
@@ -124,21 +126,6 @@
str(self.token)[0:STRING_LIMIT],
str(self.get_headers())[0:STRING_LIMIT])
- def _get_region(self, service):
- """
- Returns the region for a specific service
- """
- service_region = None
- for cfgname in dir(CONF._config):
- # Find all config.FOO.catalog_type and assume FOO is a service.
- cfg = getattr(CONF, cfgname)
- catalog_type = getattr(cfg, 'catalog_type', None)
- if catalog_type == service:
- service_region = getattr(cfg, 'region', None)
- if not service_region:
- service_region = CONF.identity.region
- return service_region
-
@property
def user(self):
return self.auth_provider.credentials.username
@@ -172,7 +159,7 @@
_filters = dict(
service=self.service,
endpoint_type=self.endpoint_type,
- region=self._get_region(self.service)
+ region=self.region
)
if self.api_version is not None:
_filters['api_version'] = self.api_version
@@ -609,6 +596,27 @@
"""
Version of RestClient that does not raise exceptions.
"""
+
+ def __init__(self, auth_provider, service):
+ region = self._get_region(service)
+ super(NegativeRestClient, self).__init__(auth_provider,
+ service, region)
+
+ def _get_region(self, service):
+ """
+ Returns the region for a specific service
+ """
+ service_region = None
+ for cfgname in dir(CONF._config):
+ # Find all config.FOO.catalog_type and assume FOO is a service.
+ cfg = getattr(CONF, cfgname)
+ catalog_type = getattr(cfg, 'catalog_type', None)
+ if catalog_type == service:
+ service_region = getattr(cfg, 'region', None)
+ if not service_region:
+ service_region = CONF.identity.region
+ return service_region
+
def _error_checker(self, method, url,
headers, body, resp, resp_body):
pass
diff --git a/tempest/services/baremetal/base.py b/tempest/services/baremetal/base.py
index 4bcf2aa..c1ebba5 100644
--- a/tempest/services/baremetal/base.py
+++ b/tempest/services/baremetal/base.py
@@ -50,7 +50,9 @@
def __init__(self, auth_provider):
super(BaremetalClient, self).__init__(
- auth_provider, CONF.baremetal.catalog_type,
+ auth_provider,
+ CONF.baremetal.catalog_type,
+ CONF.identity.region,
endpoint_type=CONF.baremetal.endpoint_type)
self.uri_prefix = ''
diff --git a/tempest/services/compute/json/base.py b/tempest/services/compute/json/base.py
index 9187cc4..cb4915b 100644
--- a/tempest/services/compute/json/base.py
+++ b/tempest/services/compute/json/base.py
@@ -33,6 +33,7 @@
super(ComputeClient, self).__init__(
auth_provider,
CONF.compute.catalog_type,
+ CONF.compute.region or CONF.identity.region,
endpoint_type=CONF.compute.endpoint_type,
build_interval=build_interval,
build_timeout=build_timeout)
diff --git a/tempest/services/data_processing/v1_1/client.py b/tempest/services/data_processing/v1_1/client.py
index 6004b22..1b6842d 100644
--- a/tempest/services/data_processing/v1_1/client.py
+++ b/tempest/services/data_processing/v1_1/client.py
@@ -24,7 +24,9 @@
def __init__(self, auth_provider):
super(DataProcessingClient, self).__init__(
- auth_provider, CONF.data_processing.catalog_type,
+ auth_provider,
+ CONF.data_processing.catalog_type,
+ CONF.identity.region,
endpoint_type=CONF.data_processing.endpoint_type)
def _request_and_check_resp(self, request_func, uri, resp_status):
diff --git a/tempest/services/database/json/flavors_client.py b/tempest/services/database/json/flavors_client.py
index a57b045..01be29a 100644
--- a/tempest/services/database/json/flavors_client.py
+++ b/tempest/services/database/json/flavors_client.py
@@ -25,7 +25,9 @@
def __init__(self, auth_provider):
super(DatabaseFlavorsClientJSON, self).__init__(
- auth_provider, CONF.database.catalog_type)
+ auth_provider,
+ CONF.database.catalog_type,
+ CONF.identity.region)
def list_db_flavors(self, params=None):
url = 'flavors'
diff --git a/tempest/services/database/json/versions_client.py b/tempest/services/database/json/versions_client.py
index 911b55d..8a408e9 100644
--- a/tempest/services/database/json/versions_client.py
+++ b/tempest/services/database/json/versions_client.py
@@ -25,7 +25,9 @@
def __init__(self, auth_provider):
super(DatabaseVersionsClientJSON, self).__init__(
- auth_provider, CONF.database.catalog_type)
+ auth_provider,
+ CONF.database.catalog_type,
+ CONF.identity.region)
self.skip_path()
def list_db_versions(self, params=None):
diff --git a/tempest/services/identity/json/identity_client.py b/tempest/services/identity/json/identity_client.py
index c91b63e..5a4ce72 100644
--- a/tempest/services/identity/json/identity_client.py
+++ b/tempest/services/identity/json/identity_client.py
@@ -22,9 +22,11 @@
class IdentityClientJSON(rest_client.RestClient):
def __init__(self, auth_provider):
- super(IdentityClientJSON, self).__init__(auth_provider,
- CONF.identity.catalog_type,
- endpoint_type='adminURL')
+ super(IdentityClientJSON, self).__init__(
+ auth_provider,
+ CONF.identity.catalog_type,
+ CONF.identity.region,
+ endpoint_type='adminURL')
def has_admin_extensions(self):
"""
diff --git a/tempest/services/identity/v3/json/base.py b/tempest/services/identity/v3/json/base.py
index da8e287..30d3886 100644
--- a/tempest/services/identity/v3/json/base.py
+++ b/tempest/services/identity/v3/json/base.py
@@ -24,7 +24,9 @@
"""
def __init__(self, auth_provider):
- super(IdentityV3Client, self).__init__(auth_provider,
- CONF.identity.catalog_type,
- endpoint_type='adminURL')
+ super(IdentityV3Client, self).__init__(
+ auth_provider,
+ CONF.identity.catalog_type,
+ CONF.identity.region,
+ endpoint_type='adminURL')
self.api_version = "v3"
diff --git a/tempest/services/identity/v3/json/identity_client.py b/tempest/services/identity/v3/json/identity_client.py
index 48ba909..59902bb 100644
--- a/tempest/services/identity/v3/json/identity_client.py
+++ b/tempest/services/identity/v3/json/identity_client.py
@@ -523,7 +523,7 @@
class V3TokenClientJSON(rest_client.RestClient):
def __init__(self):
- super(V3TokenClientJSON, self).__init__(None, None)
+ super(V3TokenClientJSON, self).__init__(None, None, None)
auth_url = CONF.identity.uri_v3
if not auth_url:
raise exceptions.InvalidConfiguration('you must specify a v3 uri '
diff --git a/tempest/services/image/v1/json/image_client.py b/tempest/services/image/v1/json/image_client.py
index ba3a814..013784c 100644
--- a/tempest/services/image/v1/json/image_client.py
+++ b/tempest/services/image/v1/json/image_client.py
@@ -38,6 +38,7 @@
super(ImageClientJSON, self).__init__(
auth_provider,
CONF.image.catalog_type,
+ CONF.image.region or CONF.identity.region,
endpoint_type=CONF.image.endpoint_type)
self._http = None
diff --git a/tempest/services/image/v2/json/image_client.py b/tempest/services/image/v2/json/image_client.py
index 23810f9..2b3cb0e 100644
--- a/tempest/services/image/v2/json/image_client.py
+++ b/tempest/services/image/v2/json/image_client.py
@@ -32,6 +32,7 @@
super(ImageClientV2JSON, self).__init__(
auth_provider,
CONF.image.catalog_type,
+ CONF.image.region or CONF.identity.region,
endpoint_type=CONF.image.endpoint_type)
self._http = None
diff --git a/tempest/services/messaging/json/messaging_client.py b/tempest/services/messaging/json/messaging_client.py
index caed02f..45534c7 100644
--- a/tempest/services/messaging/json/messaging_client.py
+++ b/tempest/services/messaging/json/messaging_client.py
@@ -28,8 +28,10 @@
class MessagingClientJSON(rest_client.RestClient):
def __init__(self, auth_provider):
- super(MessagingClientJSON, self).__init__(auth_provider,
- CONF.messaging.catalog_type)
+ super(MessagingClientJSON, self).__init__(
+ auth_provider,
+ CONF.messaging.catalog_type,
+ CONF.identity.region)
self.version = '1'
self.uri_prefix = 'v{0}'.format(self.version)
diff --git a/tempest/services/network/json/network_client.py b/tempest/services/network/json/network_client.py
index c279efd..8f5ed5a 100644
--- a/tempest/services/network/json/network_client.py
+++ b/tempest/services/network/json/network_client.py
@@ -39,7 +39,9 @@
def __init__(self, auth_provider):
super(NetworkClientJSON, self).__init__(
- auth_provider, CONF.network.catalog_type,
+ auth_provider,
+ CONF.network.catalog_type,
+ CONF.network.region or CONF.identity.region,
endpoint_type=CONF.network.endpoint_type,
build_interval=CONF.network.build_interval,
build_timeout=CONF.network.build_timeout)
diff --git a/tempest/services/object_storage/base.py b/tempest/services/object_storage/base.py
index 3900e82..655596f 100644
--- a/tempest/services/object_storage/base.py
+++ b/tempest/services/object_storage/base.py
@@ -25,6 +25,8 @@
def __init__(self, auth_provider):
super(ObjectStorageClient, self).__init__(
- auth_provider, CONF.object_storage.catalog_type,
+ auth_provider,
+ CONF.object_storage.catalog_type,
+ CONF.object_storage.region or CONF.identity.region,
endpoint_type=CONF.object_storage.endpoint_type)
self.format = 'json'
diff --git a/tempest/services/orchestration/json/orchestration_client.py b/tempest/services/orchestration/json/orchestration_client.py
index 2dedf01..054f410 100644
--- a/tempest/services/orchestration/json/orchestration_client.py
+++ b/tempest/services/orchestration/json/orchestration_client.py
@@ -31,6 +31,7 @@
super(OrchestrationClient, self).__init__(
auth_provider,
CONF.orchestration.catalog_type,
+ CONF.orchestration.region or CONF.identity.region,
endpoint_type=CONF.orchestration.endpoint_type,
build_interval=CONF.orchestration.build_interval,
build_timeout=CONF.orchestration.build_timeout)
diff --git a/tempest/services/telemetry/json/telemetry_client.py b/tempest/services/telemetry/json/telemetry_client.py
index 622c996..2b5dc1a 100644
--- a/tempest/services/telemetry/json/telemetry_client.py
+++ b/tempest/services/telemetry/json/telemetry_client.py
@@ -28,6 +28,7 @@
super(TelemetryClientJSON, self).__init__(
auth_provider,
CONF.telemetry.catalog_type,
+ CONF.identity.region,
endpoint_type=CONF.telemetry.endpoint_type)
self.version = '2'
self.uri_prefix = "v%s" % self.version
diff --git a/tempest/services/volume/json/base.py b/tempest/services/volume/json/base.py
index 1800ee6..ef316f2 100644
--- a/tempest/services/volume/json/base.py
+++ b/tempest/services/volume/json/base.py
@@ -27,6 +27,7 @@
super(VolumeClient, self).__init__(
auth_provider,
CONF.volume.catalog_type,
+ CONF.volume.region or CONF.identity.region,
endpoint_type=CONF.volume.endpoint_type,
build_interval=CONF.volume.build_interval,
build_timeout=CONF.volume.build_timeout)
diff --git a/tempest/tests/test_rest_client.py b/tempest/tests/test_rest_client.py
index 42ba5a0..a7fa7cc 100644
--- a/tempest/tests/test_rest_client.py
+++ b/tempest/tests/test_rest_client.py
@@ -30,18 +30,13 @@
url = 'fake_endpoint'
- def _get_region(self):
- return 'fake region'
-
def setUp(self):
super(BaseRestClientTestClass, self).setUp()
self.useFixture(fake_config.ConfigFixture())
self.stubs.Set(config, 'TempestConfigPrivate', fake_config.FakePrivate)
self.rest_client = rest_client.RestClient(
- fake_auth_provider.FakeAuthProvider(), None)
+ fake_auth_provider.FakeAuthProvider(), None, None)
self.stubs.Set(httplib2.Http, 'request', self.fake_http.request)
- self.useFixture(mockpatch.PatchObject(self.rest_client, '_get_region',
- side_effect=self._get_region()))
self.useFixture(mockpatch.PatchObject(self.rest_client,
'_log_request'))
@@ -304,7 +299,7 @@
self.useFixture(fake_config.ConfigFixture())
self.stubs.Set(config, 'TempestConfigPrivate', fake_config.FakePrivate)
self.rest_client = rest_client.RestClient(
- fake_auth_provider.FakeAuthProvider(), None)
+ fake_auth_provider.FakeAuthProvider(), None, None)
def test_response_less_than_400(self):
self.rest_client._error_checker(**self.set_data("399"))