Fix for unmanage and manage snapshot
The test for unmanage and manage snapshot in Tempest is only available for the LVM driver now. This patch aims to make the test more generic, and fit for more storage backend drivers. Change-Id: I6a1c0c391ad3b6ac1cf15e440267eec61f42f845
This commit is contained in:
parent
5aad8e753a
commit
ebc752b59d
@ -0,0 +1,7 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
A new config option 'manage_snapshot_ref' is added in the volume section,
|
||||
to specify snapshot ref parameter for different storage backend drivers
|
||||
when managing an existing snapshot. By default it is set to fit the LVM
|
||||
driver.
|
@ -13,8 +13,6 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import testtools
|
||||
|
||||
from tempest.api.volume import base
|
||||
from tempest.common import waiters
|
||||
from tempest import config
|
||||
@ -32,9 +30,18 @@ class SnapshotManageAdminTest(base.BaseVolumeAdminTest):
|
||||
managed by Cinder from a storage back end to Cinder
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def skip_checks(cls):
|
||||
super(SnapshotManageAdminTest, cls).skip_checks()
|
||||
|
||||
if not CONF.volume_feature_enabled.manage_snapshot:
|
||||
raise cls.skipException("Manage snapshot tests are disabled")
|
||||
|
||||
if len(CONF.volume.manage_snapshot_ref) != 2:
|
||||
raise cls.skipException("Manage snapshot ref is not correctly "
|
||||
"configured")
|
||||
|
||||
@decorators.idempotent_id('0132f42d-0147-4b45-8501-cc504bbf7810')
|
||||
@testtools.skipUnless(CONF.volume_feature_enabled.manage_snapshot,
|
||||
"Manage snapshot tests are disabled")
|
||||
def test_unmanage_manage_snapshot(self):
|
||||
# Create a volume
|
||||
volume = self.create_volume()
|
||||
@ -48,15 +55,13 @@ class SnapshotManageAdminTest(base.BaseVolumeAdminTest):
|
||||
self.admin_snapshots_client.unmanage_snapshot(snapshot['id'])
|
||||
self.admin_snapshots_client.wait_for_resource_deletion(snapshot['id'])
|
||||
|
||||
# Fetch snapshot ids
|
||||
snapshot_list = [
|
||||
snap['id'] for snap in
|
||||
self.snapshots_client.list_snapshots()['snapshots']
|
||||
]
|
||||
|
||||
# Verify snapshot does not exist in snapshot list
|
||||
self.assertNotIn(snapshot['id'], snapshot_list)
|
||||
# Verify the original snapshot does not exist in snapshot list
|
||||
params = {'all_tenants': 1}
|
||||
all_snapshots = self.admin_snapshots_client.list_snapshots(
|
||||
detail=True, params=params)['snapshots']
|
||||
self.assertNotIn(snapshot['id'], [v['id'] for v in all_snapshots])
|
||||
|
||||
# Manage the snapshot
|
||||
name = data_utils.rand_name(self.__class__.__name__ +
|
||||
'-Managed-Snapshot')
|
||||
description = data_utils.rand_name(self.__class__.__name__ +
|
||||
@ -64,12 +69,16 @@ class SnapshotManageAdminTest(base.BaseVolumeAdminTest):
|
||||
metadata = {"manage-snap-meta1": "value1",
|
||||
"manage-snap-meta2": "value2",
|
||||
"manage-snap-meta3": "value3"}
|
||||
|
||||
# Manage the snapshot
|
||||
snapshot_ref = '_snapshot-%s' % snapshot['id']
|
||||
snapshot_ref = {
|
||||
'volume_id': volume['id'],
|
||||
'ref': {CONF.volume.manage_snapshot_ref[0]:
|
||||
CONF.volume.manage_snapshot_ref[1] % snapshot['id']},
|
||||
'name': name,
|
||||
'description': description,
|
||||
'metadata': metadata
|
||||
}
|
||||
new_snapshot = self.admin_snapshot_manage_client.manage_snapshot(
|
||||
volume_id=volume['id'], ref={'source-name': snapshot_ref},
|
||||
name=name, description=description, metadata=metadata)['snapshot']
|
||||
**snapshot_ref)['snapshot']
|
||||
self.addCleanup(self.delete_snapshot, new_snapshot['id'],
|
||||
self.admin_snapshots_client)
|
||||
|
||||
@ -80,9 +89,8 @@ class SnapshotManageAdminTest(base.BaseVolumeAdminTest):
|
||||
|
||||
# Verify the managed snapshot has the expected parent volume
|
||||
# and the expected field values.
|
||||
new_snap_info = self.admin_snapshots_client.show_snapshot(
|
||||
new_snapshot_info = self.admin_snapshots_client.show_snapshot(
|
||||
new_snapshot['id'])['snapshot']
|
||||
self.assertEqual(volume['id'], new_snap_info['volume_id'])
|
||||
self.assertEqual(name, new_snap_info['name'])
|
||||
self.assertEqual(description, new_snap_info['description'])
|
||||
self.assertEqual(metadata, new_snap_info['metadata'])
|
||||
self.assertEqual(snapshot['size'], new_snapshot_info['size'])
|
||||
for key in ['volume_id', 'name', 'description', 'metadata']:
|
||||
self.assertEqual(snapshot_ref[key], new_snapshot_info[key])
|
||||
|
@ -768,6 +768,12 @@ VolumeGroup = [
|
||||
"It contains two elements, the first is ref type "
|
||||
"(like 'source-name', 'source-id', etc), the second is "
|
||||
"volume name template used in storage backend"),
|
||||
cfg.ListOpt('manage_snapshot_ref',
|
||||
default=['source-name', '_snapshot-%s'],
|
||||
help="A reference to existing snapshot for snapshot manage. "
|
||||
"It contains two elements, the first is ref type "
|
||||
"(like 'source-name', 'source-id', etc), the second is "
|
||||
"snapshot name template used in storage backend"),
|
||||
cfg.StrOpt('min_microversion',
|
||||
default=None,
|
||||
help="Lower version of the test target microversion range. "
|
||||
|
Loading…
x
Reference in New Issue
Block a user