XtremIO: fix the returned value of CG actions
- create_consistencygroup_from_src
- create_cgsnapshot
- delete_cgsnapshot
Conflicts:
cinder/tests/unit/test_emc_xtremio.py
cinder/volume/drivers/emc/xtremio.py
Change-Id: Ied00d82ee3906e6eb7ad54b043f6137e10e62f14
(cherry picked from commit cb94db1933
)
This commit is contained in:
parent
9b8b4a8c6a
commit
63e8d55fb2
|
@ -571,10 +571,53 @@ class EMCXIODriverISCSITestCase(test.TestCase):
|
|||
self.driver.update_consistencygroup(d.context, d.group,
|
||||
remove_volumes=[d.test_volume2])
|
||||
self.assertEqual(1, len(xms_data['consistency-group-volumes']))
|
||||
|
||||
@mock.patch('cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot')
|
||||
def test_create_cg(self, get_all_for_cgsnapshot, req):
|
||||
req.side_effect = xms_request
|
||||
d = self.data
|
||||
snapshot_obj = fake_snapshot.fake_snapshot_obj(d.context)
|
||||
snapshot_obj.consistencygroup_id = d.group['id']
|
||||
get_all_for_cgsnapshot.return_value = [snapshot_obj]
|
||||
self.driver.create_consistencygroup(d.context, d.group)
|
||||
self.driver.update_consistencygroup(d.context, d.group,
|
||||
add_volumes=[d.test_volume,
|
||||
d.test_volume2])
|
||||
self.driver.db = mock.Mock()
|
||||
(self.driver.db.
|
||||
volume_get_all_by_group.return_value) = [mock.MagicMock()]
|
||||
self.driver.create_cgsnapshot(d.context, d.cgsnapshot, [])
|
||||
res = self.driver.create_cgsnapshot(d.context, d.cgsnapshot,
|
||||
[snapshot_obj])
|
||||
self.assertEqual((None, None), res)
|
||||
|
||||
@mock.patch('cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot')
|
||||
def test_cg_delete(self, get_all_for_cgsnapshot, req):
|
||||
req.side_effect = xms_request
|
||||
d = self.data
|
||||
snapshot_obj = fake_snapshot.fake_snapshot_obj(d.context)
|
||||
snapshot_obj.consistencygroup_id = d.group['id']
|
||||
get_all_for_cgsnapshot.return_value = [snapshot_obj]
|
||||
self.driver.create_consistencygroup(d.context, d.group)
|
||||
self.driver.update_consistencygroup(d.context, d.group,
|
||||
add_volumes=[d.test_volume,
|
||||
d.test_volume2])
|
||||
self.driver.db = mock.Mock()
|
||||
(self.driver.db.
|
||||
volume_get_all_by_group.return_value) = [mock.MagicMock()]
|
||||
self.driver.create_cgsnapshot(d.context, d.cgsnapshot, [snapshot_obj])
|
||||
self.driver.delete_consistencygroup(d.context, d.group, [])
|
||||
|
||||
@mock.patch('cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot')
|
||||
def test_cg_snapshot(self, get_all_for_cgsnapshot, req):
|
||||
req.side_effect = xms_request
|
||||
d = self.data
|
||||
snapshot_obj = fake_snapshot.fake_snapshot_obj(d.context)
|
||||
snapshot_obj.consistencygroup_id = d.group['id']
|
||||
get_all_for_cgsnapshot.return_value = [snapshot_obj]
|
||||
self.driver.create_consistencygroup(d.context, d.group)
|
||||
self.driver.update_consistencygroup(d.context, d.group,
|
||||
add_volumes=[d.test_volume,
|
||||
d.test_volume2])
|
||||
snapset_name = self.driver._get_cgsnap_name(d.cgsnapshot)
|
||||
self.assertEqual(snapset_name,
|
||||
'192eb39b6c2f420cbae33cfd117f0345192eb39b6c2f420cbae'
|
||||
|
@ -584,9 +627,19 @@ class EMCXIODriverISCSITestCase(test.TestCase):
|
|||
'name': snapset_name,
|
||||
'index': 1}
|
||||
xms_data['snapshot-sets'] = {snapset_name: snapset1, 1: snapset1}
|
||||
self.driver.delete_cgsnapshot(d.context, d.cgsnapshot, [])
|
||||
self.driver.delete_consistencygroup(d.context, d.group, [])
|
||||
xms_data['snapshot-sets'] = {}
|
||||
res = self.driver.delete_cgsnapshot(d.context, d.cgsnapshot,
|
||||
[snapshot_obj])
|
||||
self.assertEqual((None, None), res)
|
||||
|
||||
def test_delete_cgsnapshot(self, req):
|
||||
d = self.data
|
||||
snapshot_obj = fake_snapshot.fake_snapshot_obj(d.context)
|
||||
snapshot_obj.consistencygroup_id = d.group['id']
|
||||
self.driver.delete_cgsnapshot(d.context, d.cgsnapshot,
|
||||
[snapshot_obj])
|
||||
req.assert_called_once_with('snapshot-sets', 'DELETE', None,
|
||||
'192eb39b6c2f420cbae33cfd117f0345192eb39'
|
||||
'b6c2f420cbae33cfd117f9876', None, 'v2')
|
||||
|
||||
@mock.patch('cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot')
|
||||
def test_cg_from_src(self, get_all_for_cgsnapshot, req):
|
||||
|
@ -618,9 +671,11 @@ class EMCXIODriverISCSITestCase(test.TestCase):
|
|||
snapshot1 = (fake_snapshot
|
||||
.fake_snapshot_obj
|
||||
(d.context, volume_id=d.test_volume['id']))
|
||||
self.driver.create_consistencygroup_from_src(d.context, cg_obj,
|
||||
[new_vol1],
|
||||
d.cgsnapshot, [snapshot1])
|
||||
res = self.driver.create_consistencygroup_from_src(d.context, cg_obj,
|
||||
[new_vol1],
|
||||
d.cgsnapshot,
|
||||
[snapshot1])
|
||||
self.assertEqual((None, None), res)
|
||||
|
||||
new_cg_obj = fake_cg.fake_consistencyobject_obj(d.context, id=5)
|
||||
snapset2_name = new_cg_obj.id
|
||||
|
|
|
@ -41,7 +41,6 @@ import six
|
|||
from cinder import context
|
||||
from cinder import exception
|
||||
from cinder.i18n import _, _LE, _LI, _LW
|
||||
from cinder import objects
|
||||
from cinder.objects import fields
|
||||
from cinder import utils
|
||||
from cinder.volume import driver
|
||||
|
@ -728,30 +727,14 @@ class XtremIOVolumeDriver(san.SanDriver):
|
|||
'snapshot-set-name': self._get_cgsnap_name(cgsnapshot)}
|
||||
self.client.req('snapshots', 'POST', data, ver='v2')
|
||||
|
||||
snapshots = objects.SnapshotList().get_all_for_cgsnapshot(
|
||||
context, cgsnapshot['id'])
|
||||
|
||||
for snapshot in snapshots:
|
||||
snapshot.status = 'available'
|
||||
|
||||
model_update = {'status': 'available'}
|
||||
|
||||
return model_update, snapshots
|
||||
return None, None
|
||||
|
||||
def delete_cgsnapshot(self, context, cgsnapshot, snapshots):
|
||||
"""Deletes a cgsnapshot."""
|
||||
self.client.req('snapshot-sets', 'DELETE',
|
||||
name=self._get_cgsnap_name(cgsnapshot), ver='v2')
|
||||
|
||||
snapshots = objects.SnapshotList().get_all_for_cgsnapshot(
|
||||
context, cgsnapshot['id'])
|
||||
|
||||
for snapshot in snapshots:
|
||||
snapshot.status = 'deleted'
|
||||
|
||||
model_update = {'status': cgsnapshot.status}
|
||||
|
||||
return model_update, snapshots
|
||||
return None, None
|
||||
|
||||
def _get_ig(self, name):
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue