Merge "Remove usage of six"
diff --git a/releasenotes/notes/remove-deprecated-volume-config-options-4b7ea93b88e5b982.yaml b/releasenotes/notes/remove-deprecated-volume-config-options-4b7ea93b88e5b982.yaml
new file mode 100644
index 0000000..f3002f9
--- /dev/null
+++ b/releasenotes/notes/remove-deprecated-volume-config-options-4b7ea93b88e5b982.yaml
@@ -0,0 +1,9 @@
+---
+upgrade:
+ - |
+ Deprecated config options to select the Volume API version have been
+ removed. Use ``CONF.volume.catalog_type`` to run volume tests under v3
+ or v2 APIs.
+
+ * ``CONF.volume-feature-enabled.api_v2``
+ * ``CONF.volume-feature-enabled.api_v3``
\ No newline at end of file
diff --git a/tempest/api/compute/admin/test_volume.py b/tempest/api/compute/admin/test_volume.py
index 342380e..cf8c560 100644
--- a/tempest/api/compute/admin/test_volume.py
+++ b/tempest/api/compute/admin/test_volume.py
@@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-import six
+import io
from tempest.api.compute import base
from tempest.common import waiters
@@ -51,7 +51,7 @@
image = self.image_client.show_image(CONF.compute.image_ref)
image_data = self.image_client.show_image_file(
CONF.compute.image_ref).data
- image_file = six.BytesIO(image_data)
+ image_file = io.BytesIO(image_data)
create_dict = {
'container_format': image['container_format'],
'disk_format': image['disk_format'],
diff --git a/tempest/api/compute/flavors/test_flavors_negative.py b/tempest/api/compute/flavors/test_flavors_negative.py
index 235049a..5d6a7d7 100644
--- a/tempest/api/compute/flavors/test_flavors_negative.py
+++ b/tempest/api/compute/flavors/test_flavors_negative.py
@@ -13,10 +13,9 @@
# License for the specific language governing permissions and limitations
# under the License.
+import io
import random
-import six
-
from tempest.api.compute import base
from tempest.common import image as common_image
from tempest.common import utils
@@ -44,7 +43,7 @@
CONF.compute.flavor_ref)['flavor']
min_img_ram = flavor['ram'] + 1
size = random.randint(1024, 4096)
- image_file = six.BytesIO(data_utils.random_bytes(size))
+ image_file = io.BytesIO(data_utils.random_bytes(size))
params = {
'name': data_utils.rand_name('image'),
'container_format': CONF.image.container_formats[0],
diff --git a/tempest/api/compute/images/test_image_metadata.py b/tempest/api/compute/images/test_image_metadata.py
index 561265f..ece983d 100644
--- a/tempest/api/compute/images/test_image_metadata.py
+++ b/tempest/api/compute/images/test_image_metadata.py
@@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-import six
+import io
from tempest.api.compute import base
from tempest.common import image as common_image
@@ -77,7 +77,7 @@
cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,
cls.glance_client.delete_image,
cls.image_id)
- image_file = six.BytesIO((b'*' * 1024))
+ image_file = io.BytesIO((b'*' * 1024))
if CONF.image_feature_enabled.api_v1:
cls.glance_client.update_image(cls.image_id, data=image_file)
else:
diff --git a/tempest/api/compute/images/test_list_image_filters.py b/tempest/api/compute/images/test_list_image_filters.py
index 7930c67..15b8a00 100644
--- a/tempest/api/compute/images/test_list_image_filters.py
+++ b/tempest/api/compute/images/test_list_image_filters.py
@@ -15,7 +15,7 @@
import time
-import six
+import io
import testtools
from tempest.api.compute import base
@@ -85,7 +85,7 @@
# Wait 1 second between creation and upload to ensure a delta
# between created_at and updated_at.
time.sleep(1)
- image_file = six.BytesIO((b'*' * 1024))
+ image_file = io.BytesIO((b'*' * 1024))
if CONF.image_feature_enabled.api_v1:
cls.glance_client.update_image(image_id, data=image_file)
else:
diff --git a/tempest/api/image/base.py b/tempest/api/image/base.py
index d3dc19a..d0d64a5 100644
--- a/tempest/api/image/base.py
+++ b/tempest/api/image/base.py
@@ -12,7 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-import six
+import io
from tempest.common import image as common_image
from tempest import config
@@ -113,7 +113,7 @@
cls.alt_tenant_id = cls.alt_image_member_client.tenant_id
def _create_image(self):
- image_file = six.BytesIO(data_utils.random_bytes())
+ image_file = io.BytesIO(data_utils.random_bytes())
image = self.create_image(container_format='bare',
disk_format='raw',
is_public=False,
diff --git a/tempest/api/image/v1/test_images.py b/tempest/api/image/v1/test_images.py
index 595717e..6fd6c4e 100644
--- a/tempest/api/image/v1/test_images.py
+++ b/tempest/api/image/v1/test_images.py
@@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-import six
+import io
from tempest.api.image import base
from tempest.common import image as common_image
@@ -72,7 +72,7 @@
self.assertEqual(val, image.get('properties')[key])
# Now try uploading an image file
- image_file = six.BytesIO(data_utils.random_bytes())
+ image_file = io.BytesIO(data_utils.random_bytes())
body = self.client.update_image(image['id'], data=image_file)['image']
self.assertIn('size', body)
self.assertEqual(1024, body.get('size'))
@@ -204,7 +204,7 @@
Note that the size of the new image is a random number between
1024 and 4096
"""
- image_file = six.BytesIO(data_utils.random_bytes(size))
+ image_file = io.BytesIO(data_utils.random_bytes(size))
name = 'New Standard Image %s' % name
image = cls.create_image(name=name,
container_format=container_format,
@@ -306,7 +306,7 @@
disk_format, size):
"""Create a new standard image and return newly-registered image-id"""
- image_file = six.BytesIO(data_utils.random_bytes(size))
+ image_file = io.BytesIO(data_utils.random_bytes(size))
name = 'New Standard Image %s' % name
image = cls.create_image(name=name,
container_format=container_format,
diff --git a/tempest/api/image/v2/admin/test_images.py b/tempest/api/image/v2/admin/test_images.py
index ad68d82..733c778 100644
--- a/tempest/api/image/v2/admin/test_images.py
+++ b/tempest/api/image/v2/admin/test_images.py
@@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-import six
+import io
from tempest.api.image import base
from tempest.common import waiters
@@ -99,7 +99,7 @@
self.assertEqual('queued', image['status'])
file_content = data_utils.random_bytes()
- image_file = six.BytesIO(file_content)
+ image_file = io.BytesIO(file_content)
self.client.store_image_file(image['id'], image_file)
body = self.client.show_image(image['id'])
diff --git a/tempest/api/image/v2/test_images.py b/tempest/api/image/v2/test_images.py
index ca72388..59067d1 100644
--- a/tempest/api/image/v2/test_images.py
+++ b/tempest/api/image/v2/test_images.py
@@ -14,10 +14,9 @@
# License for the specific language governing permissions and limitations
# under the License.
+import io
import random
-import six
-
from oslo_log import log as logging
from tempest.api.image import base
from tempest.common import waiters
@@ -82,7 +81,7 @@
image = self._create_image()
# Stage image data
file_content = data_utils.random_bytes()
- image_file = six.BytesIO(file_content)
+ image_file = io.BytesIO(file_content)
self.client.stage_image_file(image['id'], image_file)
# Check image status is 'uploading'
body = self.client.show_image(image['id'])
@@ -158,7 +157,7 @@
self.client.stage_image_file(
image['id'],
- six.BytesIO(data_utils.random_bytes()))
+ io.BytesIO(data_utils.random_bytes()))
# Check image status is 'uploading'
body = self.client.show_image(image['id'])
self.assertEqual(image['id'], body['id'])
@@ -240,7 +239,7 @@
# Now try uploading an image file
file_content = data_utils.random_bytes()
- image_file = six.BytesIO(file_content)
+ image_file = io.BytesIO(file_content)
self.client.store_image_file(image['id'], image_file)
# Now try to get image details
@@ -317,7 +316,7 @@
# Upload an image file
content = data_utils.random_bytes()
- image_file = six.BytesIO(content)
+ image_file = io.BytesIO(content)
self.client.store_image_file(image['id'], image_file)
# Deactivate image
@@ -367,7 +366,7 @@
1024 and 4096
"""
size = random.randint(1024, 4096)
- image_file = six.BytesIO(data_utils.random_bytes(size))
+ image_file = io.BytesIO(data_utils.random_bytes(size))
tags = [data_utils.rand_name('tag'), data_utils.rand_name('tag')]
image = cls.create_image(container_format=container_format,
disk_format=disk_format,
@@ -550,7 +549,7 @@
def test_list_images_param_member_status(self):
"""Test listing images by member_status and visibility"""
# Create an image to be shared using default visibility
- image_file = six.BytesIO(data_utils.random_bytes(2048))
+ image_file = io.BytesIO(data_utils.random_bytes(2048))
container_format = CONF.image.container_formats[0]
disk_format = CONF.image.disk_formats[0]
image = self.create_image(container_format=container_format,
diff --git a/tempest/api/volume/base.py b/tempest/api/volume/base.py
index c538e60..f6559f8 100644
--- a/tempest/api/volume/base.py
+++ b/tempest/api/volume/base.py
@@ -20,7 +20,6 @@
from tempest.lib.common import api_version_utils
from tempest.lib.common.utils import data_utils
from tempest.lib.common.utils import test_utils
-from tempest.lib import exceptions
import tempest.test
CONF = config.CONF
@@ -34,11 +33,6 @@
# https://bugs.launchpad.net/tempest/+bug/1844568
create_default_network = False
_api_version = 2
- # if api_v2 is not enabled while api_v3 is enabled, the volume v2 classes
- # should be transferred to volume v3 classes.
- if (not CONF.volume_feature_enabled.api_v2 and
- CONF.volume_feature_enabled.api_v3):
- _api_version = 3
credentials = ['primary']
@classmethod
@@ -48,17 +42,6 @@
if not CONF.service_available.cinder:
skip_msg = ("%s skipped as Cinder is not available" % cls.__name__)
raise cls.skipException(skip_msg)
- if cls._api_version == 2:
- if not CONF.volume_feature_enabled.api_v2:
- msg = "Volume API v2 is disabled"
- raise cls.skipException(msg)
- elif cls._api_version == 3:
- if not CONF.volume_feature_enabled.api_v3:
- msg = "Volume API v3 is disabled"
- raise cls.skipException(msg)
- else:
- msg = ("Invalid Cinder API version (%s)" % cls._api_version)
- raise exceptions.InvalidConfiguration(msg)
api_version_utils.check_skip_with_microversion(
cls.min_microversion, cls.max_microversion,
@@ -129,6 +112,13 @@
name = data_utils.rand_name(cls.__name__ + '-Volume')
kwargs['name'] = name
+ if CONF.volume.volume_type and 'volume_type' not in kwargs:
+ # If volume_type is not provided in config then no need to
+ # add a volume type and
+ # if volume_type has already been added by child class then
+ # no need to override.
+ kwargs['volume_type'] = CONF.volume.volume_type
+
if CONF.compute.compute_volume_common_az:
kwargs.setdefault('availability_zone',
CONF.compute.compute_volume_common_az)
diff --git a/tempest/api/volume/test_volumes_negative.py b/tempest/api/volume/test_volumes_negative.py
index 389d3be..35dd0ca 100644
--- a/tempest/api/volume/test_volumes_negative.py
+++ b/tempest/api/volume/test_volumes_negative.py
@@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-import six
+import io
from tempest.api.volume import base
from tempest.common import utils
@@ -50,7 +50,7 @@
self.images_client.delete_image, image['id'])
# Upload image with 1KB data
- image_file = six.BytesIO(data_utils.random_bytes())
+ image_file = io.BytesIO(data_utils.random_bytes())
self.images_client.store_image_file(image['id'], image_file)
waiters.wait_for_image_status(self.images_client,
image['id'], 'active')
diff --git a/tempest/clients.py b/tempest/clients.py
index 6d19a0c..9ff02ea 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -231,89 +231,85 @@
def _set_volume_clients(self):
- # if only api_v3 is enabled, all these clients should be available
- if (CONF.volume_feature_enabled.api_v2 or
- CONF.volume_feature_enabled.api_v3):
- self.backups_client_latest = self.volume_v3.BackupsClient()
- self.encryption_types_client_latest = \
- self.volume_v3.EncryptionTypesClient()
- self.snapshot_manage_client_latest = \
- self.volume_v3.SnapshotManageClient()
- self.snapshots_client_latest = self.volume_v3.SnapshotsClient()
- self.volume_capabilities_client_latest = \
- self.volume_v3.CapabilitiesClient()
- self.volume_manage_client_latest = (
- self.volume_v3.VolumeManageClient())
- self.volume_qos_client_latest = self.volume_v3.QosSpecsClient()
- self.volume_services_client_latest = (
- self.volume_v3.ServicesClient())
- self.volume_types_client_latest = self.volume_v3.TypesClient()
- self.volume_hosts_client_latest = self.volume_v3.HostsClient()
- self.volume_quotas_client_latest = self.volume_v3.QuotasClient()
- self.volume_quota_classes_client_latest = \
- self.volume_v3.QuotaClassesClient()
- self.volume_scheduler_stats_client_latest = \
- self.volume_v3.SchedulerStatsClient()
- self.volume_transfers_client_latest = \
- self.volume_v3.TransfersClient()
- self.volume_availability_zone_client_latest = \
- self.volume_v3.AvailabilityZoneClient()
- self.volume_limits_client_latest = self.volume_v3.LimitsClient()
- self.volumes_client_latest = self.volume_v3.VolumesClient()
- self.volumes_extension_client_latest = \
- self.volume_v3.ExtensionsClient()
- self.group_types_client_latest = self.volume_v3.GroupTypesClient()
- self.groups_client_latest = self.volume_v3.GroupsClient()
- self.group_snapshots_client_latest = \
- self.volume_v3.GroupSnapshotsClient()
- self.volume_messages_client_latest = (
- self.volume_v3.MessagesClient())
- self.volume_versions_client_latest = (
- self.volume_v3.VersionsClient())
- self.attachments_client_latest = (
- self.volume_v3.AttachmentsClient())
+ self.backups_client_latest = self.volume_v3.BackupsClient()
+ self.encryption_types_client_latest = \
+ self.volume_v3.EncryptionTypesClient()
+ self.snapshot_manage_client_latest = \
+ self.volume_v3.SnapshotManageClient()
+ self.snapshots_client_latest = self.volume_v3.SnapshotsClient()
+ self.volume_capabilities_client_latest = \
+ self.volume_v3.CapabilitiesClient()
+ self.volume_manage_client_latest = (
+ self.volume_v3.VolumeManageClient())
+ self.volume_qos_client_latest = self.volume_v3.QosSpecsClient()
+ self.volume_services_client_latest = (
+ self.volume_v3.ServicesClient())
+ self.volume_types_client_latest = self.volume_v3.TypesClient()
+ self.volume_hosts_client_latest = self.volume_v3.HostsClient()
+ self.volume_quotas_client_latest = self.volume_v3.QuotasClient()
+ self.volume_quota_classes_client_latest = \
+ self.volume_v3.QuotaClassesClient()
+ self.volume_scheduler_stats_client_latest = \
+ self.volume_v3.SchedulerStatsClient()
+ self.volume_transfers_client_latest = \
+ self.volume_v3.TransfersClient()
+ self.volume_availability_zone_client_latest = \
+ self.volume_v3.AvailabilityZoneClient()
+ self.volume_limits_client_latest = self.volume_v3.LimitsClient()
+ self.volumes_client_latest = self.volume_v3.VolumesClient()
+ self.volumes_extension_client_latest = \
+ self.volume_v3.ExtensionsClient()
+ self.group_types_client_latest = self.volume_v3.GroupTypesClient()
+ self.groups_client_latest = self.volume_v3.GroupsClient()
+ self.group_snapshots_client_latest = \
+ self.volume_v3.GroupSnapshotsClient()
+ self.volume_messages_client_latest = (
+ self.volume_v3.MessagesClient())
+ self.volume_versions_client_latest = (
+ self.volume_v3.VersionsClient())
+ self.attachments_client_latest = (
+ self.volume_v3.AttachmentsClient())
- # TODO(gmann): Below alias for service clients have been
- # deprecated and will be removed in future. Start using the alias
- # defined above with suffix _latest.
- # ****************Deprecated alias start from here***************
- self.backups_v2_client = self.volume_v3.BackupsClient()
- self.encryption_types_v2_client = \
- self.volume_v3.EncryptionTypesClient()
- self.snapshot_manage_v2_client = \
- self.volume_v3.SnapshotManageClient()
- self.snapshots_v2_client = self.volume_v3.SnapshotsClient()
- self.volume_capabilities_v2_client = \
- self.volume_v3.CapabilitiesClient()
- self.volume_manage_v2_client = self.volume_v3.VolumeManageClient()
- self.volume_qos_v2_client = self.volume_v3.QosSpecsClient()
- self.volume_services_v2_client = self.volume_v3.ServicesClient()
- self.volume_types_v2_client = self.volume_v3.TypesClient()
- self.volume_hosts_v2_client = self.volume_v3.HostsClient()
- self.volume_quotas_v2_client = self.volume_v3.QuotasClient()
- self.volume_quota_classes_v2_client = \
- self.volume_v3.QuotaClassesClient()
- self.volume_scheduler_stats_v2_client = \
- self.volume_v3.SchedulerStatsClient()
- self.volume_transfers_v2_client = self.volume_v3.TransfersClient()
- self.volume_v2_availability_zone_client = \
- self.volume_v3.AvailabilityZoneClient()
- self.volume_v2_limits_client = self.volume_v3.LimitsClient()
- self.volumes_v2_client = self.volume_v3.VolumesClient()
- self.volumes_v2_extension_client = \
- self.volume_v3.ExtensionsClient()
+ # TODO(gmann): Below alias for service clients have been
+ # deprecated and will be removed in future. Start using the alias
+ # defined above with suffix _latest.
+ # ****************Deprecated alias start from here***************
+ self.backups_v2_client = self.volume_v3.BackupsClient()
+ self.encryption_types_v2_client = \
+ self.volume_v3.EncryptionTypesClient()
+ self.snapshot_manage_v2_client = \
+ self.volume_v3.SnapshotManageClient()
+ self.snapshots_v2_client = self.volume_v3.SnapshotsClient()
+ self.volume_capabilities_v2_client = \
+ self.volume_v3.CapabilitiesClient()
+ self.volume_manage_v2_client = self.volume_v3.VolumeManageClient()
+ self.volume_qos_v2_client = self.volume_v3.QosSpecsClient()
+ self.volume_services_v2_client = self.volume_v3.ServicesClient()
+ self.volume_types_v2_client = self.volume_v3.TypesClient()
+ self.volume_hosts_v2_client = self.volume_v3.HostsClient()
+ self.volume_quotas_v2_client = self.volume_v3.QuotasClient()
+ self.volume_quota_classes_v2_client = \
+ self.volume_v3.QuotaClassesClient()
+ self.volume_scheduler_stats_v2_client = \
+ self.volume_v3.SchedulerStatsClient()
+ self.volume_transfers_v2_client = self.volume_v3.TransfersClient()
+ self.volume_v2_availability_zone_client = \
+ self.volume_v3.AvailabilityZoneClient()
+ self.volume_v2_limits_client = self.volume_v3.LimitsClient()
+ self.volumes_v2_client = self.volume_v3.VolumesClient()
+ self.volumes_v2_extension_client = \
+ self.volume_v3.ExtensionsClient()
- if CONF.volume_feature_enabled.api_v3:
- self.backups_v3_client = self.volume_v3.BackupsClient()
- self.group_types_v3_client = self.volume_v3.GroupTypesClient()
- self.groups_v3_client = self.volume_v3.GroupsClient()
- self.group_snapshots_v3_client = \
- self.volume_v3.GroupSnapshotsClient()
- self.snapshots_v3_client = self.volume_v3.SnapshotsClient()
- self.volume_v3_messages_client = self.volume_v3.MessagesClient()
- self.volume_v3_versions_client = self.volume_v3.VersionsClient()
- self.volumes_v3_client = self.volume_v3.VolumesClient()
- # ****************Deprecated alias end here***********************
+ self.backups_v3_client = self.volume_v3.BackupsClient()
+ self.group_types_v3_client = self.volume_v3.GroupTypesClient()
+ self.groups_v3_client = self.volume_v3.GroupsClient()
+ self.group_snapshots_v3_client = \
+ self.volume_v3.GroupSnapshotsClient()
+ self.snapshots_v3_client = self.volume_v3.SnapshotsClient()
+ self.volume_v3_messages_client = self.volume_v3.MessagesClient()
+ self.volume_v3_versions_client = self.volume_v3.VersionsClient()
+ self.volumes_v3_client = self.volume_v3.VolumesClient()
+ # ****************Deprecated alias end here***********************
def _set_object_storage_clients(self):
self.account_client = self.object_storage.AccountClient()
diff --git a/tempest/cmd/verify_tempest_config.py b/tempest/cmd/verify_tempest_config.py
index 235d8e3..0db1ab1 100644
--- a/tempest/cmd/verify_tempest_config.py
+++ b/tempest/cmd/verify_tempest_config.py
@@ -202,22 +202,8 @@
not CONF.identity_feature_enabled.api_v3, update)
-def verify_cinder_api_versions(os, update):
- # Check cinder api versions
- versions = _get_api_versions(os, 'cinder')
- if (CONF.volume_feature_enabled.api_v2 !=
- contains_version('v2.', versions)):
- print_and_or_update('api_v2', 'volume-feature-enabled',
- not CONF.volume_feature_enabled.api_v2, update)
- if (CONF.volume_feature_enabled.api_v3 !=
- contains_version('v3.', versions)):
- print_and_or_update('api_v3', 'volume-feature-enabled',
- not CONF.volume_feature_enabled.api_v3, update)
-
-
def verify_api_versions(os, service, update):
verify = {
- 'cinder': verify_cinder_api_versions,
'glance': verify_glance_api_versions,
'keystone': verify_keystone_api_versions,
}
diff --git a/tempest/config.py b/tempest/config.py
index 1367678..0df5045 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -972,6 +972,9 @@
default=['BACKEND_1', 'BACKEND_2'],
help='A list of backend names separated by comma. '
'The backend name must be declared in cinder.conf'),
+ cfg.StrOpt('volume_type',
+ default='',
+ help='Volume type to be used while creating volume.'),
cfg.StrOpt('storage_protocol',
default='iSCSI',
help='Backend protocol to target when creating volume types'),
@@ -1043,31 +1046,6 @@
help='A list of enabled volume extensions with a special '
'entry all which indicates every extension is enabled. '
'Empty list indicates all extensions are disabled'),
- cfg.BoolOpt('api_v2',
- default=True,
- help="Is the v2 volume API enabled",
- deprecated_for_removal=True,
- deprecated_reason="The v2 volume API has been deprecated "
- "since Pike release. Now Tempest run all "
- "the volume tests against v2 or v3 API "
- "based on CONF.volume.catalog_type which "
- "makes this config option unusable. If "
- "catalog_type is volumev2, then all the "
- "volume tests will run against v2 API. "
- "Use ``CONF.volume.catalog_type`` to run "
- "the Tempest against volume v2 or v3 API"),
- cfg.BoolOpt('api_v3',
- default=True,
- help="Is the v3 volume API enabled",
- deprecated_for_removal=True,
- deprecated_reason="Tempest run all the volume tests against "
- "v2 or v3 API based on "
- "CONF.volume.catalog_type which makes this "
- "config option unusable. If catalog_type is "
- "volumev3 which is default, then all the "
- "volume tests will run against v3 API. "
- "Use ``CONF.volume.catalog_type`` to run "
- "the Tempest against volume v2 or v3 API"),
cfg.BoolOpt('extend_attached_volume',
default=False,
help='Does the cloud support extending the size of a volume '
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index 4652af4..99a3f32 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -486,7 +486,7 @@
snapshot['id'])['snapshot']
return snapshot
- def _cleanup_volume_type(self, volume_type):
+ def cleanup_volume_type(self, volume_type):
"""Clean up a given volume type.
Ensuring all volumes associated to a type are first removed before
@@ -542,7 +542,7 @@
volume_type = volume_type_resp['volume_type']
self.assertIn('id', volume_type)
- self.addCleanup(self._cleanup_volume_type, volume_type)
+ self.addCleanup(self.cleanup_volume_type, volume_type)
return volume_type
def create_loginable_secgroup_rule(self, secgroup_id=None, rulesets=None):
diff --git a/tempest/tests/cmd/test_verify_tempest_config.py b/tempest/tests/cmd/test_verify_tempest_config.py
index 277e049..e19efb7 100644
--- a/tempest/tests/cmd/test_verify_tempest_config.py
+++ b/tempest/tests/cmd/test_verify_tempest_config.py
@@ -97,15 +97,15 @@
self.useFixture(fixtures.MockPatchObject(
verify_tempest_config, '_get_unversioned_endpoint',
return_value='http://fake_endpoint:5000'))
- fake_resp = {'versions': [{'id': 'v1.0'}, {'id': 'v2.0'}]}
+ fake_resp = {'versions': [{'id': 'v2.0'}, {'id': 'v3.0'}]}
fake_resp = json.dumps(fake_resp)
self.useFixture(fixtures.MockPatch(
'tempest.lib.common.http.ClosingHttp.request',
return_value=(None, fake_resp)))
fake_os = mock.MagicMock()
versions = verify_tempest_config._get_api_versions(fake_os, 'cinder')
- self.assertIn('v1.0', versions)
self.assertIn('v2.0', versions)
+ self.assertIn('v3.0', versions)
def test_get_nova_versions(self):
self.useFixture(fixtures.MockPatchObject(
@@ -145,7 +145,7 @@
self.assertTrue(mock_log_error.called)
def test_verify_api_versions(self):
- api_services = ['cinder', 'glance', 'keystone']
+ api_services = ['glance', 'keystone']
fake_os = mock.MagicMock()
for svc in api_services:
m = 'verify_%s_api_versions' % svc
@@ -154,7 +154,7 @@
verify_mock.assert_called_once_with(fake_os, True)
def test_verify_api_versions_not_implemented(self):
- api_services = ['cinder', 'glance', 'keystone']
+ api_services = ['glance', 'keystone']
fake_os = mock.MagicMock()
for svc in api_services:
m = 'verify_%s_api_versions' % svc
@@ -178,52 +178,6 @@
'identity-feature-enabled',
False, True)
- @mock.patch('tempest.lib.common.http.ClosingHttp.request')
- def test_verify_cinder_api_versions_no_v3(self, mock_request):
- self.useFixture(fixtures.MockPatchObject(
- verify_tempest_config, '_get_unversioned_endpoint',
- return_value='http://fake_endpoint:5000'))
- fake_resp = {'versions': [{'id': 'v2.0'}]}
- fake_resp = json.dumps(fake_resp)
- mock_request.return_value = (None, fake_resp)
- fake_os = mock.MagicMock()
- with mock.patch.object(verify_tempest_config,
- 'print_and_or_update') as print_mock:
- verify_tempest_config.verify_cinder_api_versions(fake_os, True)
- print_mock.assert_any_call('api_v3', 'volume-feature-enabled',
- False, True)
- self.assertEqual(1, print_mock.call_count)
-
- @mock.patch('tempest.lib.common.http.ClosingHttp.request')
- def test_verify_cinder_api_versions_no_v2(self, mock_request):
- self.useFixture(fixtures.MockPatchObject(
- verify_tempest_config, '_get_unversioned_endpoint',
- return_value='http://fake_endpoint:5000'))
- fake_resp = {'versions': [{'id': 'v3.0'}]}
- fake_resp = json.dumps(fake_resp)
- mock_request.return_value = (None, fake_resp)
- fake_os = mock.MagicMock()
- with mock.patch.object(verify_tempest_config,
- 'print_and_or_update') as print_mock:
- verify_tempest_config.verify_cinder_api_versions(fake_os, True)
- print_mock.assert_any_call('api_v2', 'volume-feature-enabled',
- False, True)
- self.assertEqual(1, print_mock.call_count)
-
- @mock.patch('tempest.lib.common.http.ClosingHttp.request')
- def test_verify_cinder_api_versions_no_v1(self, mock_request):
- self.useFixture(fixtures.MockPatchObject(
- verify_tempest_config, '_get_unversioned_endpoint',
- return_value='http://fake_endpoint:5000'))
- fake_resp = {'versions': [{'id': 'v2.0'}, {'id': 'v3.0'}]}
- fake_resp = json.dumps(fake_resp)
- mock_request.return_value = (None, fake_resp)
- fake_os = mock.MagicMock()
- with mock.patch.object(verify_tempest_config,
- 'print_and_or_update') as print_mock:
- verify_tempest_config.verify_cinder_api_versions(fake_os, True)
- print_mock.assert_not_called()
-
def test_verify_glance_version_no_v2_with_v1_1(self):
# This test verifies that wrong config api_v2 = True is detected
class FakeClient(object):
diff --git a/tempest/tests/lib/services/image/v2/test_images_client.py b/tempest/tests/lib/services/image/v2/test_images_client.py
index fe671bd..7ee61d2 100644
--- a/tempest/tests/lib/services/image/v2/test_images_client.py
+++ b/tempest/tests/lib/services/image/v2/test_images_client.py
@@ -12,7 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-import six
+import io
from tempest.lib.common.utils import data_utils
from tempest.lib.services.image.v2 import images_client
@@ -178,7 +178,7 @@
{}, image_id="e485aab9-0907-4973-921c-bb6da8a8fcf8", status=204)
def test_store_image_file(self):
- data = six.BytesIO(data_utils.random_bytes())
+ data = io.BytesIO(data_utils.random_bytes())
self.check_service_client_function(
self.client.store_image_file,