Merge "Change docstring of compute client"
diff --git a/tempest/api/database/flavors/test_flavors.py b/tempest/api/database/flavors/test_flavors.py
index 62c1e05..f75b867 100644
--- a/tempest/api/database/flavors/test_flavors.py
+++ b/tempest/api/database/flavors/test_flavors.py
@@ -28,7 +28,7 @@
     @test.idempotent_id('c94b825e-0132-4686-8049-8a4a2bc09525')
     def test_get_db_flavor(self):
         # The expected flavor details should be returned
-        flavor = (self.client.get_db_flavor_details(self.db_flavor_ref)
+        flavor = (self.client.show_db_flavor(self.db_flavor_ref)
                   ['flavor'])
         self.assertEqual(self.db_flavor_ref, str(flavor['id']))
         self.assertIn('ram', flavor)
@@ -38,7 +38,7 @@
     @test.attr(type='smoke')
     @test.idempotent_id('685025d6-0cec-4673-8a8d-995cb8e0d3bb')
     def test_list_db_flavors(self):
-        flavor = (self.client.get_db_flavor_details(self.db_flavor_ref)
+        flavor = (self.client.show_db_flavor(self.db_flavor_ref)
                   ['flavor'])
         # List of all flavors should contain the expected flavor
         flavors = self.client.list_db_flavors()['flavors']
@@ -67,7 +67,7 @@
                          (os_flavors, db_flavors))
         for os_flavor in os_flavors:
             db_flavor =\
-                self.client.get_db_flavor_details(os_flavor['id'])['flavor']
+                self.client.show_db_flavor(os_flavor['id'])['flavor']
             self._check_values(['id', 'name', 'ram'], db_flavor, os_flavor)
             self._check_values(['disk', 'vcpus', 'swap'], db_flavor, os_flavor,
                                in_db=False)
diff --git a/tempest/api/database/flavors/test_flavors_negative.py b/tempest/api/database/flavors/test_flavors_negative.py
index 68cb7d6..3dee96f 100644
--- a/tempest/api/database/flavors/test_flavors_negative.py
+++ b/tempest/api/database/flavors/test_flavors_negative.py
@@ -31,4 +31,4 @@
     def test_get_non_existent_db_flavor(self):
         # flavor details are not returned for non-existent flavors
         self.assertRaises(lib_exc.NotFound,
-                          self.client.get_db_flavor_details, -1)
+                          self.client.show_db_flavor, -1)
diff --git a/tempest/api/identity/admin/v3/test_policies.py b/tempest/api/identity/admin/v3/test_policies.py
index 44e5c7b..f38d25d 100644
--- a/tempest/api/identity/admin/v3/test_policies.py
+++ b/tempest/api/identity/admin/v3/test_policies.py
@@ -64,7 +64,7 @@
             policy['id'], type=update_type)['policy']
         self.assertIn('type', data)
         # Assertion for updated value with fetched value
-        fetched_policy = self.policy_client.get_policy(policy['id'])['policy']
+        fetched_policy = self.policy_client.show_policy(policy['id'])['policy']
         self.assertIn('id', fetched_policy)
         self.assertIn('blob', fetched_policy)
         self.assertIn('type', fetched_policy)
diff --git a/tempest/api/volume/admin/test_volume_services.py b/tempest/api/volume/admin/test_volume_services.py
index 6692594..2b7ee45 100644
--- a/tempest/api/volume/admin/test_volume_services.py
+++ b/tempest/api/volume/admin/test_volume_services.py
@@ -39,9 +39,8 @@
 
     @test.idempotent_id('63a3e1ca-37ee-4983-826d-83276a370d25')
     def test_get_service_by_service_binary_name(self):
-        params = {'binary': self.binary_name}
-        services = (self.admin_volume_services_client.list_services(params)
-                    ['services'])
+        services = (self.admin_volume_services_client.list_services(
+            binary=self.binary_name)['services'])
         self.assertNotEqual(0, len(services))
         for service in services:
             self.assertEqual(self.binary_name, service['binary'])
@@ -50,10 +49,9 @@
     def test_get_service_by_host_name(self):
         services_on_host = [service for service in self.services if
                             service['host'] == self.host_name]
-        params = {'host': self.host_name}
 
-        services = (self.admin_volume_services_client.list_services(params)
-                    ['services'])
+        services = (self.admin_volume_services_client.list_services(
+            host=self.host_name)['services'])
 
         # we could have a periodic job checkin between the 2 service
         # lookups, so only compare binary lists.
@@ -65,10 +63,10 @@
 
     @test.idempotent_id('ffa6167c-4497-4944-a464-226bbdb53908')
     def test_get_service_by_service_and_host_name(self):
-        params = {'host': self.host_name, 'binary': self.binary_name}
 
-        services = (self.admin_volume_services_client.list_services(params)
-                    ['services'])
+        services = (self.admin_volume_services_client.list_services(
+            host=self.host_name, binary=self.binary_name))['services']
+
         self.assertEqual(1, len(services))
         self.assertEqual(self.host_name, services[0]['host'])
         self.assertEqual(self.binary_name, services[0]['binary'])
diff --git a/tempest/clients.py b/tempest/clients.py
index 2b3f28d..0a3f2dd 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -124,38 +124,41 @@
 from tempest.services.telemetry.json.telemetry_client import \
     TelemetryClient
 from tempest.services.volume.v1.json.admin.hosts_client import \
-    VolumeHostsClient
+    HostsClient as VolumeHostsClient
 from tempest.services.volume.v1.json.admin.quotas_client import \
-    VolumeQuotasClient
+    QuotasClient as VolumeQuotasClient
 from tempest.services.volume.v1.json.admin.services_client import \
-    VolumesServicesClient
+    ServicesClient as VolumeServicesClient
 from tempest.services.volume.v1.json.admin.types_client import \
-    VolumeTypesClient
+    TypesClient as VolumeTypesClient
 from tempest.services.volume.v1.json.availability_zone_client import \
-    VolumeAvailabilityZoneClient
+    AvailabilityZoneClient as VolumeAvailabilityZoneClient
 from tempest.services.volume.v1.json.backups_client import BackupsClient
 from tempest.services.volume.v1.json.extensions_client import \
-    ExtensionsClient as VolumeExtensionClient
+    ExtensionsClient as VolumeExtensionsClient
 from tempest.services.volume.v1.json.qos_client import QosSpecsClient
 from tempest.services.volume.v1.json.snapshots_client import SnapshotsClient
 from tempest.services.volume.v1.json.volumes_client import VolumesClient
 from tempest.services.volume.v2.json.admin.hosts_client import \
-    VolumeHostsV2Client
+    HostsClient as VolumeHostsV2Client
 from tempest.services.volume.v2.json.admin.quotas_client import \
-    VolumeQuotasV2Client
+    QuotasClient as VolumeQuotasV2Client
 from tempest.services.volume.v2.json.admin.services_client import \
-    VolumesServicesV2Client
+    ServicesClient as VolumeServicesV2Client
 from tempest.services.volume.v2.json.admin.types_client import \
-    VolumeTypesV2Client
+    TypesClient as VolumeTypesV2Client
 from tempest.services.volume.v2.json.availability_zone_client import \
-    VolumeV2AvailabilityZoneClient
-from tempest.services.volume.v2.json.backups_client import BackupsClientV2
+    AvailabilityZoneClient as VolumeAvailabilityZoneV2Client
+from tempest.services.volume.v2.json.backups_client import \
+    BackupsClient as BackupsV2Client
 from tempest.services.volume.v2.json.extensions_client import \
-    ExtensionsV2Client as VolumeV2ExtensionClient
-from tempest.services.volume.v2.json.qos_client import QosSpecsV2Client
+    ExtensionsClient as VolumeExtensionsV2Client
+from tempest.services.volume.v2.json.qos_client import \
+    QosSpecsClient as QosSpecsV2Client
 from tempest.services.volume.v2.json.snapshots_client import \
-    SnapshotsV2Client
-from tempest.services.volume.v2.json.volumes_client import VolumesV2Client
+    SnapshotsClient as SnapshotsV2Client
+from tempest.services.volume.v2.json.volumes_client import \
+    VolumesClient as VolumesV2Client
 
 CONF = config.CONF
 LOG = logging.getLogger(__name__)
@@ -471,10 +474,12 @@
                                                 **params)
         self.volume_qos_v2_client = QosSpecsV2Client(
             self.auth_provider, **params)
-        self.volume_services_v2_client = VolumesServicesV2Client(
+        self.volume_services_client = VolumeServicesClient(
+            self.auth_provider, **params)
+        self.volume_services_v2_client = VolumeServicesV2Client(
             self.auth_provider, **params)
         self.backups_client = BackupsClient(self.auth_provider, **params)
-        self.backups_v2_client = BackupsClientV2(self.auth_provider,
+        self.backups_v2_client = BackupsV2Client(self.auth_provider,
                                                  **params)
         self.snapshots_client = SnapshotsClient(self.auth_provider,
                                                 **params)
@@ -488,7 +493,7 @@
             **params)
         self.volume_types_client = VolumeTypesClient(self.auth_provider,
                                                      **params)
-        self.volume_services_client = VolumesServicesClient(
+        self.volume_types_v2_client = VolumeTypesV2Client(
             self.auth_provider, **params)
         self.volume_hosts_client = VolumeHostsClient(self.auth_provider,
                                                      **params)
@@ -498,16 +503,14 @@
                                                        **params)
         self.volume_quotas_v2_client = VolumeQuotasV2Client(self.auth_provider,
                                                             **params)
-        self.volumes_extension_client = VolumeExtensionClient(
+        self.volumes_extension_client = VolumeExtensionsClient(
             self.auth_provider, **params)
-        self.volumes_v2_extension_client = VolumeV2ExtensionClient(
+        self.volumes_v2_extension_client = VolumeExtensionsV2Client(
             self.auth_provider, **params)
         self.volume_availability_zone_client = \
             VolumeAvailabilityZoneClient(self.auth_provider, **params)
         self.volume_v2_availability_zone_client = \
-            VolumeV2AvailabilityZoneClient(self.auth_provider, **params)
-        self.volume_types_v2_client = VolumeTypesV2Client(
-            self.auth_provider, **params)
+            VolumeAvailabilityZoneV2Client(self.auth_provider, **params)
 
     def _set_object_storage_clients(self):
         params = {
diff --git a/tempest/common/api_version_request.py b/tempest/common/api_version_request.py
index 72a11ea..d8a5b56 100644
--- a/tempest/common/api_version_request.py
+++ b/tempest/common/api_version_request.py
@@ -54,6 +54,8 @@
             None value should be used to create Null APIVersionRequest,
             which is equal to 0.0
         """
+        # NOTE(gmann): 'version_string' as String "None" will be considered as
+        # invalid version string.
         self.ver_major = 0
         self.ver_minor = 0
 
diff --git a/tempest/config.py b/tempest/config.py
index 26dda2d..a6212fb 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -347,16 +347,18 @@
                     "The format is 'X.Y', where 'X' and 'Y' are int values. "
                     "Tempest selects tests based on the range between "
                     "min_microversion and max_microversion. "
-                    "If both values are None, Tempest avoids tests which "
-                    "require a microversion."),
+                    "If both values are not specified, Tempest avoids tests "
+                    "which require a microversion. Valid values are string "
+                    "with format 'X.Y' or string 'latest'"),
     cfg.StrOpt('max_microversion',
                default=None,
                help="Upper version of the test target microversion range. "
                     "The format is 'X.Y', where 'X' and 'Y' are int values. "
                     "Tempest selects tests based on the range between "
                     "min_microversion and max_microversion. "
-                    "If both values are None, Tempest avoids tests which "
-                    "require a microversion."),
+                    "If both values are not specified, Tempest avoids tests "
+                    "which require a microversion. Valid values are string "
+                    "with format 'X.Y' or string 'latest'"),
     cfg.BoolOpt('disk_config',
                 default=True,
                 help="If false, skip disk config tests"),
diff --git a/tempest/exceptions.py b/tempest/exceptions.py
index 8537898..1d725af 100644
--- a/tempest/exceptions.py
+++ b/tempest/exceptions.py
@@ -177,8 +177,8 @@
 
 
 class InvalidAPIVersionString(TempestException):
-    msg_fmt = ("API Version String %(version)s is of invalid format. Must "
-               "be of format MajorNum.MinorNum.")
+    message = ("API Version String %(version)s is of invalid format. Must "
+               "be of format MajorNum.MinorNum or string 'latest'.")
 
 
 class CommandFailed(Exception):
diff --git a/tempest/hacking/ignored_list_T110.txt b/tempest/hacking/ignored_list_T110.txt
index dd3e489..8de3151 100644
--- a/tempest/hacking/ignored_list_T110.txt
+++ b/tempest/hacking/ignored_list_T110.txt
@@ -1,6 +1,4 @@
-./tempest/services/database/json/flavors_client.py
 ./tempest/services/identity/v3/json/identity_client.py
-./tempest/services/identity/v3/json/policy_client.py
 ./tempest/services/messaging/json/messaging_client.py
 ./tempest/services/object_storage/object_client.py
 ./tempest/services/telemetry/json/alarming_client.py
diff --git a/tempest/services/database/json/flavors_client.py b/tempest/services/database/json/flavors_client.py
index 88feb17..34a91ba 100644
--- a/tempest/services/database/json/flavors_client.py
+++ b/tempest/services/database/json/flavors_client.py
@@ -31,8 +31,8 @@
         body = json.loads(body)
         return service_client.ResponseBody(resp, body)
 
-    def get_db_flavor_details(self, db_flavor_id):
-        resp, body = self.get("flavors/%s" % str(db_flavor_id))
+    def show_db_flavor(self, db_flavor_id):
+        resp, body = self.get("flavors/%s" % db_flavor_id)
         self.expected_success(200, resp.status)
         body = json.loads(body)
         return service_client.ResponseBody(resp, body)
diff --git a/tempest/services/identity/v3/json/policy_client.py b/tempest/services/identity/v3/json/policy_client.py
index ecc9df7..7927ed5 100644
--- a/tempest/services/identity/v3/json/policy_client.py
+++ b/tempest/services/identity/v3/json/policy_client.py
@@ -44,7 +44,7 @@
         body = json.loads(body)
         return service_client.ResponseBody(resp, body)
 
-    def get_policy(self, policy_id):
+    def show_policy(self, policy_id):
         """Lists out the given policy."""
         url = 'policies/%s' % policy_id
         resp, body = self.get(url)
diff --git a/tempest/services/image/v2/json/images_client.py b/tempest/services/image/v2/json/images_client.py
index 33bfcb8..cda0319 100644
--- a/tempest/services/image/v2/json/images_client.py
+++ b/tempest/services/image/v2/json/images_client.py
@@ -13,7 +13,6 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import jsonschema
 from oslo_serialization import jsonutils as json
 from six.moves.urllib import parse as urllib
 from tempest_lib import exceptions as lib_exc
@@ -49,14 +48,6 @@
                                       insecure=self.dscv,
                                       ca_certs=self.ca_certs)
 
-    def _validate_schema(self, body, type='image'):
-        if type in ['image', 'images']:
-            schema = self.show_schema(type)
-        else:
-            raise ValueError("%s is not a valid schema type" % type)
-
-        jsonschema.validate(body, schema)
-
     @property
     def http(self):
         if self._http is None:
@@ -65,8 +56,6 @@
 
     def update_image(self, image_id, patch):
         data = json.dumps(patch)
-        self._validate_schema(data)
-
         headers = {"Content-Type": "application/openstack-images-v2.0"
                                    "-json-patch"}
         resp, body = self.patch('v2/images/%s' % image_id, data, headers)
@@ -89,8 +78,6 @@
                 params[option] = value
 
         data = json.dumps(params)
-        self._validate_schema(data)
-
         resp, body = self.post('v2/images', data)
         self.expected_success(201, resp.status)
         body = json.loads(body)
@@ -123,7 +110,6 @@
         resp, body = self.get(url)
         self.expected_success(200, resp.status)
         body = json.loads(body)
-        self._validate_schema(body, type='images')
         return service_client.ResponseBody(resp, body)
 
     def show_image(self, image_id):
@@ -232,8 +218,6 @@
                               api-ref-image-v2.html#createNamespace-v2
         """
         data = json.dumps(kwargs)
-        self._validate_schema(data)
-
         resp, body = self.post('/v2/metadefs/namespaces', data)
         self.expected_success(201, resp.status)
         body = json.loads(body)
@@ -257,7 +241,6 @@
         params = {'namespace': namespace}
         params.update(kwargs)
         data = json.dumps(params)
-        self._validate_schema(data)
         url = '/v2/metadefs/namespaces/%s' % namespace
         resp, body = self.put(url, body=data)
         self.expected_success(200, resp.status)
diff --git a/tempest/services/volume/base/admin/base_hosts_client.py b/tempest/services/volume/base/admin/base_hosts_client.py
index 97bb007..074f87f 100644
--- a/tempest/services/volume/base/admin/base_hosts_client.py
+++ b/tempest/services/volume/base/admin/base_hosts_client.py
@@ -19,7 +19,7 @@
 from tempest.common import service_client
 
 
-class BaseVolumeHostsClient(service_client.ServiceClient):
+class BaseHostsClient(service_client.ServiceClient):
     """Client class to send CRUD Volume Hosts API requests"""
 
     def list_hosts(self, **params):
diff --git a/tempest/services/volume/base/admin/base_quotas_client.py b/tempest/services/volume/base/admin/base_quotas_client.py
index ad8ba03..e063a31 100644
--- a/tempest/services/volume/base/admin/base_quotas_client.py
+++ b/tempest/services/volume/base/admin/base_quotas_client.py
@@ -18,7 +18,7 @@
 from tempest.common import service_client
 
 
-class BaseVolumeQuotasClient(service_client.ServiceClient):
+class BaseQuotasClient(service_client.ServiceClient):
     """Client class to send CRUD Volume Quotas API requests"""
 
     TYPE = "json"
diff --git a/tempest/services/volume/base/admin/base_services_client.py b/tempest/services/volume/base/admin/base_services_client.py
index 1790421..3626469 100644
--- a/tempest/services/volume/base/admin/base_services_client.py
+++ b/tempest/services/volume/base/admin/base_services_client.py
@@ -19,9 +19,9 @@
 from tempest.common import service_client
 
 
-class BaseVolumesServicesClient(service_client.ServiceClient):
+class BaseServicesClient(service_client.ServiceClient):
 
-    def list_services(self, params=None):
+    def list_services(self, **params):
         url = 'os-services'
         if params:
             url += '?%s' % urllib.urlencode(params)
diff --git a/tempest/services/volume/base/admin/base_types_client.py b/tempest/services/volume/base/admin/base_types_client.py
index 8fcf57c..de6ea8a 100644
--- a/tempest/services/volume/base/admin/base_types_client.py
+++ b/tempest/services/volume/base/admin/base_types_client.py
@@ -20,7 +20,7 @@
 from tempest.common import service_client
 
 
-class BaseVolumeTypesClient(service_client.ServiceClient):
+class BaseTypesClient(service_client.ServiceClient):
     """Client class to send CRUD Volume Types API requests"""
 
     def is_resource_deleted(self, resource):
diff --git a/tempest/services/volume/base/base_availability_zone_client.py b/tempest/services/volume/base/base_availability_zone_client.py
index d5a2fda..b63fdc2 100644
--- a/tempest/services/volume/base/base_availability_zone_client.py
+++ b/tempest/services/volume/base/base_availability_zone_client.py
@@ -18,7 +18,7 @@
 from tempest.common import service_client
 
 
-class BaseVolumeAvailabilityZoneClient(service_client.ServiceClient):
+class BaseAvailabilityZoneClient(service_client.ServiceClient):
 
     def list_availability_zones(self):
         resp, body = self.get('os-availability-zone')
diff --git a/tempest/services/volume/v1/json/admin/hosts_client.py b/tempest/services/volume/v1/json/admin/hosts_client.py
index 1b685bd..3b52968 100644
--- a/tempest/services/volume/v1/json/admin/hosts_client.py
+++ b/tempest/services/volume/v1/json/admin/hosts_client.py
@@ -16,5 +16,5 @@
 from tempest.services.volume.base.admin import base_hosts_client
 
 
-class VolumeHostsClient(base_hosts_client.BaseVolumeHostsClient):
+class HostsClient(base_hosts_client.BaseHostsClient):
     """Client class to send CRUD Volume Host API V1 requests"""
diff --git a/tempest/services/volume/v1/json/admin/quotas_client.py b/tempest/services/volume/v1/json/admin/quotas_client.py
index 5ca074e..27fc301 100644
--- a/tempest/services/volume/v1/json/admin/quotas_client.py
+++ b/tempest/services/volume/v1/json/admin/quotas_client.py
@@ -15,5 +15,5 @@
 from tempest.services.volume.base.admin import base_quotas_client
 
 
-class VolumeQuotasClient(base_quotas_client.BaseVolumeQuotasClient):
+class QuotasClient(base_quotas_client.BaseQuotasClient):
     """Client class to send CRUD Volume Type API V1 requests"""
diff --git a/tempest/services/volume/v1/json/admin/services_client.py b/tempest/services/volume/v1/json/admin/services_client.py
index efe02d8..2bffd55 100644
--- a/tempest/services/volume/v1/json/admin/services_client.py
+++ b/tempest/services/volume/v1/json/admin/services_client.py
@@ -16,5 +16,5 @@
 from tempest.services.volume.base.admin import base_services_client
 
 
-class VolumesServicesClient(base_services_client.BaseVolumesServicesClient):
+class ServicesClient(base_services_client.BaseServicesClient):
     """Volume V1 volume services client"""
diff --git a/tempest/services/volume/v1/json/admin/types_client.py b/tempest/services/volume/v1/json/admin/types_client.py
index 4bd1579..0e84296 100644
--- a/tempest/services/volume/v1/json/admin/types_client.py
+++ b/tempest/services/volume/v1/json/admin/types_client.py
@@ -16,5 +16,5 @@
 from tempest.services.volume.base.admin import base_types_client
 
 
-class VolumeTypesClient(base_types_client.BaseVolumeTypesClient):
+class TypesClient(base_types_client.BaseTypesClient):
     """Volume V1 Volume Types client"""
diff --git a/tempest/services/volume/v1/json/availability_zone_client.py b/tempest/services/volume/v1/json/availability_zone_client.py
index d8180fa..3a27027 100644
--- a/tempest/services/volume/v1/json/availability_zone_client.py
+++ b/tempest/services/volume/v1/json/availability_zone_client.py
@@ -16,6 +16,6 @@
 from tempest.services.volume.base import base_availability_zone_client
 
 
-class VolumeAvailabilityZoneClient(
-        base_availability_zone_client.BaseVolumeAvailabilityZoneClient):
+class AvailabilityZoneClient(
+        base_availability_zone_client.BaseAvailabilityZoneClient):
     """Volume V1 availability zone client."""
diff --git a/tempest/services/volume/v2/json/admin/hosts_client.py b/tempest/services/volume/v2/json/admin/hosts_client.py
index 7bdc6f7..e092c6a 100644
--- a/tempest/services/volume/v2/json/admin/hosts_client.py
+++ b/tempest/services/volume/v2/json/admin/hosts_client.py
@@ -16,6 +16,6 @@
 from tempest.services.volume.base.admin import base_hosts_client
 
 
-class VolumeHostsV2Client(base_hosts_client.BaseVolumeHostsClient):
+class HostsClient(base_hosts_client.BaseHostsClient):
     """Client class to send CRUD Volume V2 API requests"""
     api_version = "v2"
diff --git a/tempest/services/volume/v2/json/admin/quotas_client.py b/tempest/services/volume/v2/json/admin/quotas_client.py
index b2d3604..11e0e22 100644
--- a/tempest/services/volume/v2/json/admin/quotas_client.py
+++ b/tempest/services/volume/v2/json/admin/quotas_client.py
@@ -16,6 +16,6 @@
 from tempest.services.volume.base.admin import base_quotas_client
 
 
-class VolumeQuotasV2Client(base_quotas_client.BaseVolumeQuotasClient):
+class QuotasClient(base_quotas_client.BaseQuotasClient):
     """Client class to send CRUD Volume V2 API requests"""
     api_version = "v2"
diff --git a/tempest/services/volume/v2/json/admin/services_client.py b/tempest/services/volume/v2/json/admin/services_client.py
index 3912c9d..db19ba9 100644
--- a/tempest/services/volume/v2/json/admin/services_client.py
+++ b/tempest/services/volume/v2/json/admin/services_client.py
@@ -16,6 +16,6 @@
 from tempest.services.volume.base.admin import base_services_client
 
 
-class VolumesServicesV2Client(base_services_client.BaseVolumesServicesClient):
+class ServicesClient(base_services_client.BaseServicesClient):
     """Client class to send CRUD Volume V2 API requests"""
     api_version = "v2"
diff --git a/tempest/services/volume/v2/json/admin/types_client.py b/tempest/services/volume/v2/json/admin/types_client.py
index d9eba7e..ecf5131 100644
--- a/tempest/services/volume/v2/json/admin/types_client.py
+++ b/tempest/services/volume/v2/json/admin/types_client.py
@@ -16,6 +16,6 @@
 from tempest.services.volume.base.admin import base_types_client
 
 
-class VolumeTypesV2Client(base_types_client.BaseVolumeTypesClient):
+class TypesClient(base_types_client.BaseTypesClient):
     """Client class to send CRUD Volume V2 API requests"""
     api_version = "v2"
diff --git a/tempest/services/volume/v2/json/availability_zone_client.py b/tempest/services/volume/v2/json/availability_zone_client.py
index a4fc9fe..905ebdc 100644
--- a/tempest/services/volume/v2/json/availability_zone_client.py
+++ b/tempest/services/volume/v2/json/availability_zone_client.py
@@ -16,6 +16,6 @@
 from tempest.services.volume.base import base_availability_zone_client
 
 
-class VolumeV2AvailabilityZoneClient(
-        base_availability_zone_client.BaseVolumeAvailabilityZoneClient):
+class AvailabilityZoneClient(
+        base_availability_zone_client.BaseAvailabilityZoneClient):
     api_version = "v2"
diff --git a/tempest/services/volume/v2/json/backups_client.py b/tempest/services/volume/v2/json/backups_client.py
index 15d363b..78bab82 100644
--- a/tempest/services/volume/v2/json/backups_client.py
+++ b/tempest/services/volume/v2/json/backups_client.py
@@ -16,6 +16,6 @@
 from tempest.services.volume.base import base_backups_client
 
 
-class BackupsClientV2(base_backups_client.BaseBackupsClient):
+class BackupsClient(base_backups_client.BaseBackupsClient):
     """Client class to send CRUD Volume V2 API requests"""
     api_version = "v2"
diff --git a/tempest/services/volume/v2/json/extensions_client.py b/tempest/services/volume/v2/json/extensions_client.py
index 004b232..245906f 100644
--- a/tempest/services/volume/v2/json/extensions_client.py
+++ b/tempest/services/volume/v2/json/extensions_client.py
@@ -16,5 +16,5 @@
 from tempest.services.volume.base import base_extensions_client
 
 
-class ExtensionsV2Client(base_extensions_client.BaseExtensionsClient):
+class ExtensionsClient(base_extensions_client.BaseExtensionsClient):
     api_version = "v2"
diff --git a/tempest/services/volume/v2/json/qos_client.py b/tempest/services/volume/v2/json/qos_client.py
index e8b680a..3c0f74f 100644
--- a/tempest/services/volume/v2/json/qos_client.py
+++ b/tempest/services/volume/v2/json/qos_client.py
@@ -15,5 +15,5 @@
 from tempest.services.volume.base import base_qos_client
 
 
-class QosSpecsV2Client(base_qos_client.BaseQosSpecsClient):
+class QosSpecsClient(base_qos_client.BaseQosSpecsClient):
     api_version = "v2"
diff --git a/tempest/services/volume/v2/json/snapshots_client.py b/tempest/services/volume/v2/json/snapshots_client.py
index 28a9e98..a2d415f 100644
--- a/tempest/services/volume/v2/json/snapshots_client.py
+++ b/tempest/services/volume/v2/json/snapshots_client.py
@@ -13,7 +13,7 @@
 from tempest.services.volume.base import base_snapshots_client
 
 
-class SnapshotsV2Client(base_snapshots_client.BaseSnapshotsClient):
+class SnapshotsClient(base_snapshots_client.BaseSnapshotsClient):
     """Client class to send CRUD Volume V2 API requests."""
     api_version = "v2"
     create_resp = 202
diff --git a/tempest/services/volume/v2/json/volumes_client.py b/tempest/services/volume/v2/json/volumes_client.py
index 51daa94..b7d9dfb 100644
--- a/tempest/services/volume/v2/json/volumes_client.py
+++ b/tempest/services/volume/v2/json/volumes_client.py
@@ -16,7 +16,7 @@
 from tempest.services.volume.base import base_volumes_client
 
 
-class VolumesV2Client(base_volumes_client.BaseVolumesClient):
+class VolumesClient(base_volumes_client.BaseVolumesClient):
     """Client class to send CRUD Volume V2 API requests"""
     api_version = "v2"
     create_resp = 202
diff --git a/tempest/tests/common/test_service_clients.py b/tempest/tests/common/test_service_clients.py
index 7e5f0cb..c313071 100644
--- a/tempest/tests/common/test_service_clients.py
+++ b/tempest/tests/common/test_service_clients.py
@@ -103,25 +103,25 @@
             telemetry_client.TelemetryClient,
             alarming_client.AlarmingClient,
             qos_client.QosSpecsClient,
-            volume_hosts_client.VolumeHostsClient,
-            volume_quotas_client.VolumeQuotasClient,
-            volume_services_client.VolumesServicesClient,
-            volume_types_client.VolumeTypesClient,
-            volume_az_client.VolumeAvailabilityZoneClient,
+            volume_hosts_client.HostsClient,
+            volume_quotas_client.QuotasClient,
+            volume_services_client.ServicesClient,
+            volume_types_client.TypesClient,
+            volume_az_client.AvailabilityZoneClient,
             backups_client.BackupsClient,
             volume_extensions_client.ExtensionsClient,
             snapshots_client.SnapshotsClient,
             volumes_client.VolumesClient,
-            volume_v2_hosts_client.VolumeHostsV2Client,
-            volume_v2_quotas_client.VolumeQuotasV2Client,
-            volume_v2_services_client.VolumesServicesV2Client,
-            volume_v2_types_client.VolumeTypesV2Client,
-            volume_v2_az_client.VolumeV2AvailabilityZoneClient,
-            volume_v2_backups_client.BackupsClientV2,
-            volume_v2_extensions_client.ExtensionsV2Client,
-            volume_v2_qos_client.QosSpecsV2Client,
-            volume_v2_snapshots_client.SnapshotsV2Client,
-            volume_v2_volumes_client.VolumesV2Client,
+            volume_v2_hosts_client.HostsClient,
+            volume_v2_quotas_client.QuotasClient,
+            volume_v2_services_client.ServicesClient,
+            volume_v2_types_client.TypesClient,
+            volume_v2_az_client.AvailabilityZoneClient,
+            volume_v2_backups_client.BackupsClient,
+            volume_v2_extensions_client.ExtensionsClient,
+            volume_v2_qos_client.QosSpecsClient,
+            volume_v2_snapshots_client.SnapshotsClient,
+            volume_v2_volumes_client.VolumesClient,
             identity_v2_identity_client.IdentityClient,
             credentials_client.CredentialsClient,
             endpoints_client.EndPointClient,
diff --git a/tox.ini b/tox.ini
index 41eece1..fedd04c 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist = pep8,py27,py34
+envlist = pep8,py34,py27
 minversion = 1.6
 skipsdist = True