Merge "create snapshot with generic group fail with XtremIO Driver."
This commit is contained in:
commit
2decc903c4
@ -304,13 +304,16 @@ class CommonData(object):
|
|||||||
'name': 'cg1',
|
'name': 'cg1',
|
||||||
'status': 'OK',
|
'status': 'OK',
|
||||||
}
|
}
|
||||||
cgsnapshot = mock.Mock(id='192eb39b-6c2f-420c-bae3-3cfd117f9876',
|
|
||||||
consistencygroup_id=group['id'])
|
|
||||||
|
|
||||||
def cgsnap_getitem(self, val):
|
cgsnapshot = {
|
||||||
return self.__dict__[val]
|
'id': '192eb39b-6c2f-420c-bae3-3cfd117f9876',
|
||||||
|
'consistencygroup_id': group['id'],
|
||||||
|
'group_id': None, }
|
||||||
|
|
||||||
cgsnapshot.__getitem__ = cgsnap_getitem
|
cgsnapshot_as_group_id = {
|
||||||
|
'id': '192eb39b-6c2f-420c-bae3-3cfd117f9876',
|
||||||
|
'consistencygroup_id': None,
|
||||||
|
'group_id': group['id'], }
|
||||||
|
|
||||||
|
|
||||||
class BaseXtremIODriverTestCase(test.TestCase):
|
class BaseXtremIODriverTestCase(test.TestCase):
|
||||||
@ -1019,6 +1022,30 @@ class XtremIODriverISCSITestCase(BaseXtremIODriverTestCase):
|
|||||||
[snapshot_obj])
|
[snapshot_obj])
|
||||||
self.assertEqual((None, None), res)
|
self.assertEqual((None, None), res)
|
||||||
|
|
||||||
|
def test_group_snapshot_with_generic_group(self, req):
|
||||||
|
"""test group snapshot shot with generic group ."""
|
||||||
|
req.side_effect = xms_request
|
||||||
|
d = self.data
|
||||||
|
snapshot_obj = fake_snapshot.fake_snapshot_obj(d.context)
|
||||||
|
snapshot_obj.consistencygroup_id = d.group['id']
|
||||||
|
self.driver.create_group(d.context, d.group)
|
||||||
|
self.driver.update_group(d.context, d.group,
|
||||||
|
add_volumes=[d.test_volume,
|
||||||
|
d.test_volume2])
|
||||||
|
|
||||||
|
snapset_name = self.driver._get_cgsnap_name(d.cgsnapshot_as_group_id)
|
||||||
|
self.assertEqual(snapset_name,
|
||||||
|
'192eb39b6c2f420cbae33cfd117f0345192eb39b6c2f420cbae'
|
||||||
|
'33cfd117f9876')
|
||||||
|
snapset1 = {'ancestor-vol-id': ['', d.test_volume['id'], 2],
|
||||||
|
'consistencygroup_id': d.group['id'],
|
||||||
|
'name': snapset_name,
|
||||||
|
'index': 1}
|
||||||
|
xms_data['snapshot-sets'] = {snapset_name: snapset1, 1: snapset1}
|
||||||
|
res = self.driver.delete_group_snapshot(d.context, d.cgsnapshot,
|
||||||
|
[snapshot_obj])
|
||||||
|
self.assertEqual((None, None), res)
|
||||||
|
|
||||||
def test_delete_group_snapshot(self, req):
|
def test_delete_group_snapshot(self, req):
|
||||||
"""test delete group snapshot."""
|
"""test delete group snapshot."""
|
||||||
d = self.data
|
d = self.data
|
||||||
@ -1030,6 +1057,17 @@ class XtremIODriverISCSITestCase(BaseXtremIODriverTestCase):
|
|||||||
'192eb39b6c2f420cbae33cfd117f0345192eb39'
|
'192eb39b6c2f420cbae33cfd117f0345192eb39'
|
||||||
'b6c2f420cbae33cfd117f9876', None, 'v2')
|
'b6c2f420cbae33cfd117f9876', None, 'v2')
|
||||||
|
|
||||||
|
def test_delete_group_snapshot_with_generic_group(self, req):
|
||||||
|
"""test delete group snapshot."""
|
||||||
|
d = self.data
|
||||||
|
snapshot_obj = fake_snapshot.fake_snapshot_obj(d.context)
|
||||||
|
snapshot_obj.consistencygroup_id = d.group['id']
|
||||||
|
self.driver.delete_group_snapshot(d.context, d.cgsnapshot_as_group_id,
|
||||||
|
[snapshot_obj])
|
||||||
|
req.assert_called_once_with('snapshot-sets', 'DELETE', None,
|
||||||
|
'192eb39b6c2f420cbae33cfd117f0345192eb39'
|
||||||
|
'b6c2f420cbae33cfd117f9876', None, 'v2')
|
||||||
|
|
||||||
def test_group_from_src_snapshot(self, req):
|
def test_group_from_src_snapshot(self, req):
|
||||||
"""test group from source snapshot."""
|
"""test group from source snapshot."""
|
||||||
req.side_effect = xms_request
|
req.side_effect = xms_request
|
||||||
|
@ -776,13 +776,23 @@ class XtremIOVolumeDriver(san.SanDriver):
|
|||||||
return None, None, None
|
return None, None, None
|
||||||
|
|
||||||
def _get_cgsnap_name(self, cgsnapshot):
|
def _get_cgsnap_name(self, cgsnapshot):
|
||||||
return '%(cg)s%(snap)s' % {'cg': cgsnapshot['consistencygroup_id']
|
|
||||||
|
group_id = cgsnapshot.get('group_id')
|
||||||
|
if group_id is None:
|
||||||
|
group_id = cgsnapshot.get('consistencygroup_id')
|
||||||
|
|
||||||
|
return '%(cg)s%(snap)s' % {'cg': group_id
|
||||||
.replace('-', ''),
|
.replace('-', ''),
|
||||||
'snap': cgsnapshot['id'].replace('-', '')}
|
'snap': cgsnapshot['id'].replace('-', '')}
|
||||||
|
|
||||||
def create_cgsnapshot(self, context, cgsnapshot, snapshots):
|
def create_cgsnapshot(self, context, cgsnapshot, snapshots):
|
||||||
"""Creates a cgsnapshot."""
|
"""Creates a cgsnapshot."""
|
||||||
data = {'consistency-group-id': cgsnapshot['consistencygroup_id'],
|
|
||||||
|
group_id = cgsnapshot.get('group_id')
|
||||||
|
if group_id is None:
|
||||||
|
group_id = cgsnapshot.get('consistencygroup_id')
|
||||||
|
|
||||||
|
data = {'consistency-group-id': group_id,
|
||||||
'snapshot-set-name': self._get_cgsnap_name(cgsnapshot)}
|
'snapshot-set-name': self._get_cgsnap_name(cgsnapshot)}
|
||||||
self.client.req('snapshots', 'POST', data, ver='v2')
|
self.client.req('snapshots', 'POST', data, ver='v2')
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user