Use Cinder API V2 if V1 is disabled

Cinder API v1 will be removed in Mitaka. We should be able to run tests against APIv2 only.

Change-Id: I6916eb3e4b7c85f37be8b365b11ca8b48f88177c
Closes-Bug: #1479157
Related-Bug: #1467589
This commit is contained in:
Ivan Kolodyazhny 2015-08-06 13:31:36 +03:00
parent 0982f41597
commit bcfc32e676
5 changed files with 40 additions and 6 deletions

View File

@ -73,7 +73,6 @@ class BaseComputeTest(tempest.test.BaseTestCase):
cls.networks_client = cls.os.networks_client
cls.limits_client = cls.os.limits_client
cls.volumes_extensions_client = cls.os.volumes_extensions_client
cls.volumes_client = cls.os.volumes_client
cls.interfaces_client = cls.os.interfaces_client
cls.fixed_ips_client = cls.os.fixed_ips_client
cls.availability_zone_client = cls.os.availability_zone_client
@ -88,6 +87,11 @@ class BaseComputeTest(tempest.test.BaseTestCase):
cls.security_group_default_rules_client = (
cls.os.security_group_default_rules_client)
if CONF.volume_feature_enabled.api_v1:
cls.volumes_client = cls.os.volumes_client
else:
cls.volumes_client = cls.os.volumes_v2_client
@classmethod
def resource_setup(cls):
super(BaseComputeTest, cls).resource_setup()

View File

@ -144,6 +144,12 @@ def get_extension_client(os, service):
'neutron': os.network_client,
'swift': os.account_client,
}
# NOTE (e0ne): Use Cinder API v2 by default because v1 is deprecated
if CONF.volume_feature_enabled.api_v2:
extensions_client['cinder'] = os.volumes_v2_extension_client
else:
extensions_client['cinder'] = os.volumes_extension_client
if service not in extensions_client:
print('No tempest extensions client for %s' % service)
exit(1)

View File

@ -57,14 +57,19 @@ class ScenarioTest(tempest.test.BaseTestCase):
cls.security_group_rules_client = (
cls.manager.security_group_rules_client)
cls.servers_client = cls.manager.servers_client
cls.volumes_client = cls.manager.volumes_client
cls.snapshots_client = cls.manager.snapshots_client
cls.interface_client = cls.manager.interfaces_client
# Neutron network client
cls.network_client = cls.manager.network_client
# Heat client
cls.orchestration_client = cls.manager.orchestration_client
if CONF.volume_feature_enabled.api_v1:
cls.volumes_client = cls.manager.volumes_client
cls.snapshots_client = cls.manager.snapshots_client
else:
cls.volumes_client = cls.manager.volumes_v2_client
cls.snapshots_client = cls.manager.snapshots_v2_client
# ## Methods to handle sync and async deletes
def setUp(self):
@ -210,7 +215,11 @@ class ScenarioTest(tempest.test.BaseTestCase):
cleanup_callable=self.delete_wrapper,
cleanup_args=[self.volumes_client.delete_volume, volume['id']])
self.assertEqual(name, volume['display_name'])
# NOTE(e0ne): Cinder API v2 uses name instead of display_name
if 'display_name' in volume:
self.assertEqual(name, volume['display_name'])
else:
self.assertEqual(name, volume['name'])
self.volumes_client.wait_for_volume_status(volume['id'], 'available')
# The volume retrieved on creation has a non-up-to-date status.
# Retrieval after it becomes active ensures correct details.
@ -1262,7 +1271,10 @@ class EncryptionScenarioTest(ScenarioTest):
@classmethod
def setup_clients(cls):
super(EncryptionScenarioTest, cls).setup_clients()
cls.admin_volume_types_client = cls.os_adm.volume_types_client
if CONF.volume_feature_enabled.api_v1:
cls.admin_volume_types_client = cls.os_adm.volume_types_client
else:
cls.admin_volume_types_client = cls.os_adm.volume_types_v2_client
def _wait_for_volume_status(self, status):
self.status_timeout(

View File

@ -74,7 +74,13 @@ class TestVolumeBootPattern(manager.ScenarioTest):
self.snapshots_client.wait_for_resource_deletion, snap['id'])
self.addCleanup(self.snapshots_client.delete_snapshot, snap['id'])
self.snapshots_client.wait_for_snapshot_status(snap['id'], 'available')
self.assertEqual(snap_name, snap['display_name'])
# NOTE(e0ne): Cinder API v2 uses name instead of display_name
if 'display_name' in snap:
self.assertEqual(snap_name, snap['display_name'])
else:
self.assertEqual(snap_name, snap['name'])
return snap
def _create_volume_from_snapshot(self, snap_id):

View File

@ -240,7 +240,10 @@ class TestDiscovery(base.TestCase):
{'alias': 'fake2'},
{'alias': 'not_fake'}]}
fake_os = mock.MagicMock()
# NOTE (e0ne): mock both v1 and v2 APIs
fake_os.volumes_extension_client.list_extensions = fake_list_extensions
fake_os.volumes_v2_extension_client.list_extensions = (
fake_list_extensions)
self.useFixture(mockpatch.PatchObject(
verify_tempest_config, 'get_enabled_extensions',
return_value=(['fake1', 'fake2', 'fake3'])))
@ -262,7 +265,10 @@ class TestDiscovery(base.TestCase):
{'alias': 'fake2'},
{'alias': 'not_fake'}]}
fake_os = mock.MagicMock()
# NOTE (e0ne): mock both v1 and v2 APIs
fake_os.volumes_extension_client.list_extensions = fake_list_extensions
fake_os.volumes_v2_extension_client.list_extensions = (
fake_list_extensions)
self.useFixture(mockpatch.PatchObject(
verify_tempest_config, 'get_enabled_extensions',
return_value=(['all'])))