From 63e8d55fb2023bf4e63c67727dc4b50380548cf0 Mon Sep 17 00:00:00 2001 From: Shay Halsband Date: Sun, 24 Jul 2016 17:39:02 +0300 Subject: [PATCH] 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 cb94db1933d4808d8b3dd2aa97deba3cbfec02b2) --- cinder/tests/unit/test_emc_xtremio.py | 69 ++++++++++++++++++++++++--- cinder/volume/drivers/emc/xtremio.py | 21 +------- 2 files changed, 64 insertions(+), 26 deletions(-) diff --git a/cinder/tests/unit/test_emc_xtremio.py b/cinder/tests/unit/test_emc_xtremio.py index 6a3668dfd..6d5bc2320 100644 --- a/cinder/tests/unit/test_emc_xtremio.py +++ b/cinder/tests/unit/test_emc_xtremio.py @@ -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 diff --git a/cinder/volume/drivers/emc/xtremio.py b/cinder/volume/drivers/emc/xtremio.py index d85b8763d..23b4d50b6 100644 --- a/cinder/volume/drivers/emc/xtremio.py +++ b/cinder/volume/drivers/emc/xtremio.py @@ -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: