Merge "CoprHD: Handle create volume from CG snapshot error"

This commit is contained in:
Jenkins 2016-08-31 14:04:54 +00:00 committed by Gerrit Code Review
commit c35c8cc5f3
2 changed files with 23 additions and 1 deletions

View File

@ -16,6 +16,7 @@
from mock import Mock from mock import Mock
from cinder import context from cinder import context
from cinder import exception
from cinder.objects import fields from cinder.objects import fields
from cinder import test from cinder import test
from cinder.volume.drivers.coprhd import common as coprhd_common from cinder.volume.drivers.coprhd import common as coprhd_common
@ -263,7 +264,8 @@ def get_test_CG_snap_data(volume_type_id):
'consistencygroup_id': '123456789', 'consistencygroup_id': '123456789',
'status': fields.ConsistencyGroupStatus.AVAILABLE, 'status': fields.ConsistencyGroupStatus.AVAILABLE,
'snapshots': [], 'snapshots': [],
'consistencygroup': get_test_CG_data(volume_type_id) 'consistencygroup': get_test_CG_data(volume_type_id),
'cgsnapshot_id': '1',
} }
return test_CG_snapshot return test_CG_snapshot
@ -641,6 +643,20 @@ class EMCCoprHDFCDriverTest(test.TestCase):
self.driver.delete_volume(src_vol_data) self.driver.delete_volume(src_vol_data)
self.driver.delete_volume(volume_data) self.driver.delete_volume(volume_data)
def test_create_volume_from_cg_snapshot(self):
ctx = context.get_admin_context()
volume_data = get_test_volume_data(self.volume_type_id)
cg_snap_data = get_test_CG_snap_data(self.volume_type_id)
self.driver.create_cgsnapshot(ctx, cg_snap_data, [])
self.assertRaises(exception.VolumeBackendAPIException,
self.driver.create_volume_from_snapshot,
volume_data, cg_snap_data)
self.driver.delete_cgsnapshot(ctx, cg_snap_data, [])
self.driver.delete_volume(volume_data)
def test_extend_volume(self): def test_extend_volume(self):
volume_data = get_test_volume_data(self.volume_type_id) volume_data = get_test_volume_data(self.volume_type_id)
self.driver.create_volume(volume_data) self.driver.create_volume(volume_data)

View File

@ -750,6 +750,12 @@ class EMCCoprHDDriverCommon(object):
self.create_cloned_volume(volume, snapshot, truncate_name) self.create_cloned_volume(volume, snapshot, truncate_name)
return return
if snapshot.get('cgsnapshot_id'):
raise coprhd_utils.CoprHdError(
coprhd_utils.CoprHdError.SOS_FAILURE_ERR,
_("Volume cannot be created individually from a snapshot "
"that is part of a Consistency Group"))
src_snapshot_name = None src_snapshot_name = None
src_vol_ref = snapshot['volume'] src_vol_ref = snapshot['volume']
new_volume_name = self._get_resource_name(volume, truncate_name) new_volume_name = self._get_resource_name(volume, truncate_name)