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:
Shay Halsband 2016-07-24 17:39:02 +03:00
parent 9b8b4a8c6a
commit 63e8d55fb2
2 changed files with 64 additions and 26 deletions

View File

@ -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

View File

@ -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: