summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChandan Kumar <chkumar@redhat.com>2014-09-12 07:26:19 -0400
committerChandan Kumar <chkumar@redhat.com>2014-10-15 11:47:11 -0400
commit449e4c07a687ded2629dd67e7f7d641d1bc3f8b2 (patch)
tree57f0c17cb07c84a127afc96056fda78ae4ca7ea4
parent7aecb4665e7cbc0b6e2fc869ab68e610eec8d601 (diff)
downloadtempest-449e4c07a687ded2629dd67e7f7d641d1bc3f8b2.tar.gz
enable cinder v2 api for test_multi_backend
volume_type_client for v2 is added. Partially implements: blueprint cinder-v2-api-tests Change-Id: I0729eaf30946bd291f2fdaee8e99bf125e47be83
-rw-r--r--tempest/api/volume/admin/test_multi_backend.py17
-rw-r--r--tempest/api/volume/base.py5
-rw-r--r--tempest/clients.py4
-rw-r--r--tempest/services/volume/json/admin/volume_types_client.py8
-rw-r--r--tempest/services/volume/v2/json/admin/__init__.py0
-rw-r--r--tempest/services/volume/v2/json/admin/volume_types_client.py28
6 files changed, 53 insertions, 9 deletions
diff --git a/tempest/api/volume/admin/test_multi_backend.py b/tempest/api/volume/admin/test_multi_backend.py
index 6f2ee0660..042cde9f8 100644
--- a/tempest/api/volume/admin/test_multi_backend.py
+++ b/tempest/api/volume/admin/test_multi_backend.py
@@ -21,19 +21,19 @@ CONF = config.CONF
LOG = logging.getLogger(__name__)
-class VolumeMultiBackendTest(base.BaseVolumeV1AdminTest):
+class VolumeMultiBackendV2Test(base.BaseVolumeAdminTest):
_interface = "json"
@classmethod
def resource_setup(cls):
- super(VolumeMultiBackendTest, cls).resource_setup()
+ super(VolumeMultiBackendV2Test, cls).resource_setup()
if not CONF.volume_feature_enabled.multi_backend:
raise cls.skipException("Cinder multi-backend feature disabled")
cls.backend1_name = CONF.volume.backend1_name
cls.backend2_name = CONF.volume.backend2_name
- cls.volume_client = cls.os_adm.volumes_client
+ cls.name_field = cls.special_fields['name_field']
cls.volume_type_id_list = []
cls.volume_id_list_with_prefix = []
cls.volume_id_list_without_prefix = []
@@ -64,8 +64,9 @@ class VolumeMultiBackendTest(base.BaseVolumeV1AdminTest):
type_name, extra_specs=extra_specs)
self.volume_type_id_list.append(self.type['id'])
- _, self.volume = self.volume_client.create_volume(
- size=1, display_name=vol_name, volume_type=type_name)
+ params = {self.name_field: vol_name, 'volume_type': type_name}
+
+ _, self.volume = self.volume_client.create_volume(size=1, **params)
if with_prefix:
self.volume_id_list_with_prefix.append(self.volume['id'])
else:
@@ -92,7 +93,7 @@ class VolumeMultiBackendTest(base.BaseVolumeV1AdminTest):
for volume_type_id in volume_type_id_list:
cls.volume_types_client.delete_volume_type(volume_type_id)
- super(VolumeMultiBackendTest, cls).resource_cleanup()
+ super(VolumeMultiBackendV2Test, cls).resource_cleanup()
@test.attr(type='smoke')
def test_backend_name_reporting(self):
@@ -149,3 +150,7 @@ class VolumeMultiBackendTest(base.BaseVolumeV1AdminTest):
msg = ("volumes %s and %s were created in the same backend" %
(volume1_id, volume2_id))
self.assertNotEqual(volume1_host, volume2_host, msg)
+
+
+class VolumeMultiBackendV1Test(VolumeMultiBackendV2Test):
+ _api_version = 1
diff --git a/tempest/api/volume/base.py b/tempest/api/volume/base.py
index 5815f6868..d78ddb60d 100644
--- a/tempest/api/volume/base.py
+++ b/tempest/api/volume/base.py
@@ -167,18 +167,21 @@ class BaseVolumeAdminTest(BaseVolumeTest):
cls.hosts_client = cls.os_adm.volume_hosts_client
cls.quotas_client = cls.os_adm.volume_quotas_client
- cls.volume_types_client = cls.os_adm.volume_types_client
if cls._api_version == 1:
if not CONF.volume_feature_enabled.api_v1:
msg = "Volume API v1 is disabled"
raise cls.skipException(msg)
cls.volume_qos_client = cls.os_adm.volume_qos_client
+ cls.volume_types_client = cls.os_adm.volume_types_client
+ cls.volume_client = cls.os_adm.volumes_client
elif cls._api_version == 2:
if not CONF.volume_feature_enabled.api_v2:
msg = "Volume API v2 is disabled"
raise cls.skipException(msg)
cls.volume_qos_client = cls.os_adm.volume_qos_v2_client
+ cls.volume_types_client = cls.os_adm.volume_types_v2_client
+ cls.volume_client = cls.os_adm.volumes_v2_client
@classmethod
def resource_cleanup(cls):
diff --git a/tempest/clients.py b/tempest/clients.py
index 2d07852a2..cf049295d 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -181,6 +181,8 @@ from tempest.services.volume.json.extensions_client import \
from tempest.services.volume.json.qos_client import QosSpecsClientJSON
from tempest.services.volume.json.snapshots_client import SnapshotsClientJSON
from tempest.services.volume.json.volumes_client import VolumesClientJSON
+from tempest.services.volume.v2.json.admin.volume_types_client import \
+ VolumeTypesV2ClientJSON
from tempest.services.volume.v2.json.availability_zone_client import \
VolumeV2AvailabilityZoneClientJSON
from tempest.services.volume.v2.json.extensions_client import \
@@ -332,6 +334,8 @@ class Manager(manager.Manager):
self.volumes_v2_client = VolumesV2ClientJSON(self.auth_provider)
self.volume_types_client = VolumeTypesClientJSON(
self.auth_provider)
+ self.volume_types_v2_client = VolumeTypesV2ClientJSON(
+ self.auth_provider)
self.identity_client = IdentityClientJSON(self.auth_provider)
self.identity_v3_client = IdentityV3ClientJSON(
self.auth_provider)
diff --git a/tempest/services/volume/json/admin/volume_types_client.py b/tempest/services/volume/json/admin/volume_types_client.py
index 44ef9febc..6f79d2056 100644
--- a/tempest/services/volume/json/admin/volume_types_client.py
+++ b/tempest/services/volume/json/admin/volume_types_client.py
@@ -23,13 +23,13 @@ from tempest import exceptions
CONF = config.CONF
-class VolumeTypesClientJSON(rest_client.RestClient):
+class BaseVolumeTypesClientJSON(rest_client.RestClient):
"""
Client class to send CRUD Volume Types API requests to a Cinder endpoint
"""
def __init__(self, auth_provider):
- super(VolumeTypesClientJSON, self).__init__(auth_provider)
+ super(BaseVolumeTypesClientJSON, self).__init__(auth_provider)
self.service = CONF.volume.catalog_type
self.build_interval = CONF.volume.build_interval
@@ -188,3 +188,7 @@ class VolumeTypesClientJSON(rest_client.RestClient):
resp, body = self.delete(
"/types/%s/encryption/provider" % str(vol_type_id))
self.expected_success(202, resp.status)
+
+
+class VolumeTypesClientJSON(BaseVolumeTypesClientJSON):
+ """Volume V1 Volume Types client"""
diff --git a/tempest/services/volume/v2/json/admin/__init__.py b/tempest/services/volume/v2/json/admin/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tempest/services/volume/v2/json/admin/__init__.py
diff --git a/tempest/services/volume/v2/json/admin/volume_types_client.py b/tempest/services/volume/v2/json/admin/volume_types_client.py
new file mode 100644
index 000000000..76fa45df7
--- /dev/null
+++ b/tempest/services/volume/v2/json/admin/volume_types_client.py
@@ -0,0 +1,28 @@
+# Copyright 2012 OpenStack Foundation
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+
+from tempest.services.volume.json.admin import volume_types_client
+
+
+class VolumeTypesV2ClientJSON(volume_types_client.BaseVolumeTypesClientJSON):
+ """
+ Client class to send CRUD Volume V2 API requests to a Cinder endpoint
+ """
+
+ def __init__(self, auth_provider):
+ super(VolumeTypesV2ClientJSON, self).__init__(auth_provider)
+
+ self.api_version = "v2"