From: Daniel Wilson Date: Thu, 27 Aug 2015 22:10:26 +0000 (-0700) Subject: Fix delete_snapshot error case in Pure driver X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=64301c2f97c3e8d068d5e6e503eecb6853031c42;p=openstack-build%2Fcinder-build.git Fix delete_snapshot error case in Pure driver Our previous error handling was incorrect for delete_snapshot. This adds a check on repsonse and correctly logs only a warning if required. Change-Id: Ic73d92eaa5869efe1dc0e56d3156edd7dbcac2e8 Closes-Bug: #1489635 --- diff --git a/cinder/tests/unit/test_pure.py b/cinder/tests/unit/test_pure.py index 83d385d62..0b49ba686 100644 --- a/cinder/tests/unit/test_pure.py +++ b/cinder/tests/unit/test_pure.py @@ -396,9 +396,10 @@ class PureBaseVolumeDriverTestCase(PureDriverTestCase): self.driver.delete_volume(VOLUME) expected = [mock.call.destroy_volume(vol_name)] self.array.assert_has_calls(expected) - self.array.destroy_volume.side_effect = \ - self.purestorage_module.PureHTTPError(code=400, text="reason") - self.driver.delete_snapshot(SNAPSHOT) + self.array.destroy_volume.side_effect = ( + self.purestorage_module.PureHTTPError(code=400, text="does not " + "exist")) + self.driver.delete_volume(VOLUME) self.array.destroy_volume.side_effect = None self.assert_error_propagates([self.array.destroy_volume], self.driver.delete_volume, VOLUME) @@ -441,8 +442,9 @@ class PureBaseVolumeDriverTestCase(PureDriverTestCase): self.driver.delete_snapshot(SNAPSHOT) expected = [mock.call.destroy_volume(snap_name)] self.array.assert_has_calls(expected) - self.array.destroy_volume.side_effect = \ - self.purestorage_module.PureHTTPError(code=400, text="reason") + self.array.destroy_volume.side_effect = ( + self.purestorage_module.PureHTTPError(code=400, text="does not " + "exist")) self.driver.delete_snapshot(SNAPSHOT) self.array.destroy_volume.side_effect = None self.assert_error_propagates([self.array.destroy_volume], diff --git a/cinder/volume/drivers/pure.py b/cinder/volume/drivers/pure.py index 66c6c8214..4616ad2ee 100644 --- a/cinder/volume/drivers/pure.py +++ b/cinder/volume/drivers/pure.py @@ -204,11 +204,12 @@ class PureBaseVolumeDriver(san.SanDriver): self._array.destroy_volume(snap_name) except purestorage.PureHTTPError as err: with excutils.save_and_reraise_exception() as ctxt: - if err.code == 400: + if err.code == 400 and ( + ERR_MSG_NOT_EXIST in err.text): # Happens if the snapshot does not exist. ctxt.reraise = False - LOG.error(_LE("Snapshot deletion failed with message:" - " %s"), err.text) + LOG.warning(_LW("Snapshot deletion failed with " + "message: %s"), err.text) def ensure_export(self, context, volume): pass