From: Xi Yang Date: Tue, 27 Oct 2015 04:11:15 +0000 (+0800) Subject: Remove db access in VNX driver X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=a113b1877c01ec52511481856d3a50915be7ea3e;p=openstack-build%2Fcinder-build.git Remove db access in VNX driver DB access should be removed in all CG related operations. This patch is removing the DB access in VNX driver. Change-Id: Ifee0cdcaba41d39500c1ce7aef0d15b2737e6a20 Closes-Bug: 1511663 --- diff --git a/cinder/tests/unit/test_emc_vnxdirect.py b/cinder/tests/unit/test_emc_vnxdirect.py index 336508fed..8e23887d0 100644 --- a/cinder/tests/unit/test_emc_vnxdirect.py +++ b/cinder/tests/unit/test_emc_vnxdirect.py @@ -3868,12 +3868,9 @@ Time Remaining: 0 second(s) self.testData.LUN_DELETE_CMD('vol1')] results = [SUCCEED, SUCCEED] fake_cli = self.driverSetup(commands, results) - self.driver.db = mock.MagicMock() - self.driver.db.volume_get_all_by_group.return_value =\ - self.testData.CONSISTENCY_GROUP_VOLUMES() - self.driver.delete_consistencygroup(None, - self.testData.test_cg, - []) + self.driver.delete_consistencygroup( + None, self.testData.test_cg, + self.testData.CONSISTENCY_GROUP_VOLUMES()) expect_cmd = [ mock.call( *self.testData.DELETE_CONSISTENCYGROUP_CMD( @@ -3882,9 +3879,7 @@ Time Remaining: 0 second(s) mock.call(*self.testData.LUN_DELETE_CMD('vol1'))] fake_cli.assert_has_calls(expect_cmd) - @mock.patch( - 'cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot') - def test_create_cgsnapshot(self, get_all_for_cgsnapshot): + def test_create_cgsnapshot(self): cgsnapshot = self.testData.test_cgsnapshot['id'] cg_name = self.testData.test_cgsnapshot['consistencygroup_id'] commands = [self.testData.CREATE_CG_SNAPSHOT(cg_name, cgsnapshot)] @@ -3893,17 +3888,15 @@ Time Remaining: 0 second(s) snapshot_obj = fake_snapshot.fake_snapshot_obj( self.testData.SNAPS_IN_SNAP_GROUP()) snapshot_obj.consistencygroup_id = cg_name - get_all_for_cgsnapshot.return_value = [snapshot_obj] - self.driver.create_cgsnapshot(None, self.testData.test_cgsnapshot, []) + self.driver.create_cgsnapshot(None, self.testData.test_cgsnapshot, + [snapshot_obj]) expect_cmd = [ mock.call( *self.testData.CREATE_CG_SNAPSHOT( cg_name, cgsnapshot))] fake_cli.assert_has_calls(expect_cmd) - @mock.patch( - 'cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot') - def test_delete_cgsnapshot(self, get_all_for_cgsnapshot): + def test_delete_cgsnapshot(self): snap_name = self.testData.test_cgsnapshot['id'] commands = [self.testData.DELETE_CG_SNAPSHOT(snap_name)] results = [SUCCEED] @@ -3912,10 +3905,9 @@ Time Remaining: 0 second(s) self.testData.SNAPS_IN_SNAP_GROUP()) cg_name = self.testData.test_cgsnapshot['consistencygroup_id'] snapshot_obj.consistencygroup_id = cg_name - get_all_for_cgsnapshot.return_value = [snapshot_obj] self.driver.delete_cgsnapshot(None, self.testData.test_cgsnapshot, - []) + [snapshot_obj]) expect_cmd = [ mock.call( *self.testData.DELETE_CG_SNAPSHOT( diff --git a/cinder/volume/drivers/emc/emc_cli_fc.py b/cinder/volume/drivers/emc/emc_cli_fc.py index eb221a95d..37737b51c 100644 --- a/cinder/volume/drivers/emc/emc_cli_fc.py +++ b/cinder/volume/drivers/emc/emc_cli_fc.py @@ -233,16 +233,17 @@ class EMCCLIFCDriver(driver.FibreChannelDriver): def delete_consistencygroup(self, context, group, volumes): """Deletes a consistency group.""" return self.cli.delete_consistencygroup( - self, context, group) + context, group, volumes) def create_cgsnapshot(self, context, cgsnapshot, snapshots): """Creates a cgsnapshot.""" return self.cli.create_cgsnapshot( - self, context, cgsnapshot) + context, cgsnapshot, snapshots) def delete_cgsnapshot(self, context, cgsnapshot, snapshots): """Deletes a cgsnapshot.""" - return self.cli.delete_cgsnapshot(self, context, cgsnapshot) + return self.cli.delete_cgsnapshot( + context, cgsnapshot, snapshots) def get_pool(self, volume): """Returns the pool name of a volume.""" diff --git a/cinder/volume/drivers/emc/emc_cli_iscsi.py b/cinder/volume/drivers/emc/emc_cli_iscsi.py index 861df396a..eb6bc221b 100644 --- a/cinder/volume/drivers/emc/emc_cli_iscsi.py +++ b/cinder/volume/drivers/emc/emc_cli_iscsi.py @@ -212,16 +212,17 @@ class EMCCLIISCSIDriver(driver.ISCSIDriver): def delete_consistencygroup(self, context, group, volumes): """Deletes a consistency group.""" return self.cli.delete_consistencygroup( - self, context, group) + context, group, volumes) def create_cgsnapshot(self, context, cgsnapshot, snapshots): """Creates a cgsnapshot.""" return self.cli.create_cgsnapshot( - self, context, cgsnapshot) + context, cgsnapshot, snapshots) def delete_cgsnapshot(self, context, cgsnapshot, snapshots): """Deletes a cgsnapshot.""" - return self.cli.delete_cgsnapshot(self, context, cgsnapshot) + return self.cli.delete_cgsnapshot( + context, cgsnapshot, snapshots) def get_pool(self, volume): """Returns the pool name of a volume.""" diff --git a/cinder/volume/drivers/emc/emc_vnx_cli.py b/cinder/volume/drivers/emc/emc_vnx_cli.py index dce80b224..8614921c1 100644 --- a/cinder/volume/drivers/emc/emc_vnx_cli.py +++ b/cinder/volume/drivers/emc/emc_vnx_cli.py @@ -40,7 +40,6 @@ from taskflow.types import failure from cinder import exception from cinder.i18n import _, _LE, _LI, _LW -from cinder import objects from cinder import utils from cinder.volume import configuration as config from cinder.volume.drivers.san import san @@ -3043,12 +3042,12 @@ class EMCVnxCliBase(object): return model_update - def delete_consistencygroup(self, driver, context, group): + def delete_consistencygroup(self, context, group, volumes): """Deletes a consistency group.""" cg_name = group['id'] - volumes = driver.db.volume_get_all_by_group(context, group['id']) model_update = {} + volumes_model_update = [] model_update['status'] = group['status'] LOG.info(_LI('Start to delete consistency group: %(cg_name)s'), {'cg_name': cg_name}) @@ -3061,12 +3060,13 @@ class EMCVnxCliBase(object): for volume_ref in volumes: try: self._client.delete_lun(volume_ref['name']) - volume_ref['status'] = 'deleted' + volumes_model_update.append( + {'id': volume_ref['id'], 'status': 'deleted'}) except Exception: - volume_ref['status'] = 'error_deleting' - model_update['status'] = 'error_deleting' + volumes_model_update.append( + {'id': volume_ref['id'], 'status': 'error_deleting'}) - return model_update, volumes + return model_update, volumes_model_update def update_consistencygroup(self, context, group, @@ -3103,13 +3103,12 @@ class EMCVnxCliBase(object): ids_later) return model_update, None, None - def create_cgsnapshot(self, driver, context, cgsnapshot): + def create_cgsnapshot(self, context, cgsnapshot, snapshots): """Creates a cgsnapshot (snap group).""" cgsnapshot_id = cgsnapshot['id'] - snapshots = objects.SnapshotList().get_all_for_cgsnapshot( - context, cgsnapshot_id) model_update = {} + snapshots_model_update = [] LOG.info(_LI('Start to create cgsnapshot for consistency group' ': %(group_name)s'), {'group_name': cgsnapshot['consistencygroup_id']}) @@ -3118,7 +3117,8 @@ class EMCVnxCliBase(object): self._client.create_cgsnapshot(cgsnapshot['consistencygroup_id'], cgsnapshot['id']) for snapshot in snapshots: - snapshot['status'] = 'available' + snapshots_model_update.append( + {'id': snapshot['id'], 'status': 'available'}) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_LE('Create cg snapshot %s failed.'), @@ -3126,15 +3126,14 @@ class EMCVnxCliBase(object): model_update['status'] = 'available' - return model_update, snapshots + return model_update, snapshots_model_update - def delete_cgsnapshot(self, driver, context, cgsnapshot): + def delete_cgsnapshot(self, context, cgsnapshot, snapshots): """Deletes a cgsnapshot (snap group).""" cgsnapshot_id = cgsnapshot['id'] - snapshots = objects.SnapshotList().get_all_for_cgsnapshot( - context, cgsnapshot_id) model_update = {} + snapshots_model_update = [] model_update['status'] = cgsnapshot['status'] LOG.info(_LI('Delete cgsnapshot %(snap_name)s for consistency group: ' '%(group_name)s'), {'snap_name': cgsnapshot['id'], @@ -3143,13 +3142,14 @@ class EMCVnxCliBase(object): try: self._client.delete_cgsnapshot(cgsnapshot['id']) for snapshot in snapshots: - snapshot['status'] = 'deleted' + snapshots_model_update.append( + {'id': snapshot['id'], 'status': 'deleted'}) except Exception: with excutils.save_and_reraise_exception(): LOG.error(_LE('Delete cgsnapshot %s failed.'), cgsnapshot_id) - return model_update, snapshots + return model_update, snapshots_model_update def get_lun_id(self, volume): lun_id = None